Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(546)

Side by Side Diff: client/site_tests/factory_ExternalStorage/factory_ExternalStorage.py

Issue 2805052: Relocate library files for wider access and re-use; also associated cleanup. (Closed) Base URL: ssh://gitrw.chromium.org/autotest.git
Patch Set: address nicks comment Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 5
6 # DESCRIPTION : 6 # DESCRIPTION :
7 # 7 #
8 # This is an example factory test that does not really do anything -- 8 # This is an example factory test that does not really do anything --
9 # it displays a message in the center of the testing area, as 9 # it displays a message in the center of the testing area, as
10 # communicated by arguments to run_once(). This test makes use of the 10 # communicated by arguments to run_once(). This test makes use of the
11 # factory_test library to display its UI, and to monitor keyboard 11 # factory_test library to display its UI, and to monitor keyboard
12 # events for test-switching triggers. This test can be terminated by 12 # events for test-switching triggers. This test can be terminated by
13 # typing SHIFT-Q. 13 # typing SHIFT-Q.
14 14
15 from autotest_lib.client.bin import test
16 from autotest_lib.client.bin import utils
17 from autotest_lib.client.common_lib import error
18 from autotest_lib.client.common_lib import factory_test
19 15
20 import gobject 16 import gobject
21 import gtk 17 import gtk
22 import pango 18 import pango
23 import os 19 import os
24 import sys 20 import sys
25 21
22 from autotest_lib.client.bin import factory
23 from autotest_lib.client.bin import factory_test
24 from autotest_lib.client.bin import test
25 from autotest_lib.client.bin import utils
26 from autotest_lib.client.common_lib import error
27
26 28
27 _STATE_WAIT_INSERT = 1 29 _STATE_WAIT_INSERT = 1
28 _STATE_WAIT_REMOVE = 2 30 _STATE_WAIT_REMOVE = 2
29 31
30 32
31 def find_root_dev(): 33 def find_root_dev():
32 rootdev = utils.system_output('rootdev') 34 rootdev = utils.system_output('rootdev')
33 return os.path.basename(rootdev[:-1]) 35 return os.path.basename(rootdev[:-1])
34 36
35 37
36 def find_all_storage_dev(): 38 def find_all_storage_dev():
37 lssys = utils.run('ls -d /sys/block/sd*') 39 lssys = utils.run('ls -d /sys/block/sd*')
38 devices = lssys.stdout.rsplit('\n') 40 devices = lssys.stdout.rsplit('\n')
39 new_devices = set(os.path.basename(d.rstrip()) for d in devices if d) 41 new_devices = set(os.path.basename(d.rstrip()) for d in devices if d)
40 return new_devices 42 return new_devices
41 43
42 44
43 class factory_ExternalStorage(test.test): 45 class factory_ExternalStorage(test.test):
44 version = 1 46 version = 1
45 47
46 def key_release_callback(self, widget, event): 48 def key_release_callback(self, widget, event):
47 char = event.keyval in range(32,127) and chr(event.keyval) or None 49 char = event.keyval in range(32,127) and chr(event.keyval) or None
48 factory_test.XXX_log('key_release_callback %s(%s)' % 50 factory.log('key_release_callback %s(%s)' %
49 (event.keyval, char)) 51 (event.keyval, char))
50 factory_test.test_switch_on_trigger(event) 52 self._ft_state.exit_on_trigger(event)
51 return True 53 return True
52 54
53 def register_callbacks(self, window): 55 def register_callbacks(self, window):
54 window.connect('key-release-event', self.key_release_callback) 56 window.connect('key-release-event', self.key_release_callback)
55 window.add_events(gtk.gdk.KEY_RELEASE_MASK) 57 window.add_events(gtk.gdk.KEY_RELEASE_MASK)
56 58
57 def rescan_storage(self, test_tag): 59 def rescan_storage(self, test_tag):
58 if self._state == _STATE_WAIT_INSERT: 60 if self._state == _STATE_WAIT_INSERT:
59 new_devices = find_all_storage_dev() 61 new_devices = find_all_storage_dev()
60 diff = new_devices - self._devices 62 diff = new_devices - self._devices
61 if diff: 63 if diff:
62 self._devices = new_devices 64 self._devices = new_devices
63 factory_test.XXX_log('found new devs : %s' % diff) 65 factory.log('found new devs : %s' % diff)
64 self._target_device = diff.pop() 66 self._target_device = diff.pop()
65 devpath = '/dev/%s' % self._target_device 67 devpath = '/dev/%s' % self._target_device
66 self._prompt.set_test('testing drive %s...', devpath) 68 self._prompt.set_test('testing drive %s...', devpath)
67 gtk.main_iteration() 69 gtk.main_iteration()
68 test._result = self.job.run_test('hardware_StorageFio', 70 test._result = self.job.run_test('hardware_StorageFio',
69 dev=devpath, tag=test_tag) 71 dev=devpath, tag=test_tag)
70 self._prompt.set_test('remove USB drive...') 72 self._prompt.set_test('remove USB drive...')
71 self._state = _STATE_WAIT_REMOVE 73 self._state = _STATE_WAIT_REMOVE
72 else: 74 else:
73 diff = self._devices - find_all_storage_dev() 75 diff = self._devices - find_all_storage_dev()
74 if diff: 76 if diff:
75 if diff != set(self._target_device): 77 if diff != set(self._target_device):
76 raise error.TestFail('too many devs removed (%s vs %s)' % 78 raise error.TestFail('too many devs removed (%s vs %s)' %
77 (diff, self._target_device)) 79 (diff, self._target_device))
78 gtk.main_quit() 80 gtk.main_quit()
79 return True 81 return True
80 82
81 def run_once(self, test_widget_size=None, trigger_set=None, 83 def run_once(self, test_widget_size=None, trigger_set=None,
82 result_file_path=None, test_tag_prefix=None, test_count=None): 84 result_file_path=None, test_tag_prefix=None, test_count=None):
83 85
84 factory_test.XXX_log('factory_ExternalStorage %s %s' % 86 factory.log('%s run_once' % self.__class__)
85 (test_tag_prefix, test_count))
86 87
87 test_tag = '%s_%s' % (test_tag_prefix, test_count) 88 test_tag = '%s_%s' % (test_tag_prefix, test_count)
89 factory.log('test_tag = %s' % test_tag)
88 90
89 factory_test.init(trigger_set=trigger_set, 91 self._ft_state = factory_test.State(
90 result_file_path=result_file_path) 92 trigger_set=trigger_set,
93 result_file_path=result_file_path)
91 94
92 label = gtk.Label('') 95 label = gtk.Label('')
93 label.modify_font(pango.FontDescription('courier new condensed 20')) 96 label.modify_font(pango.FontDescription('courier new condensed 20'))
94 label.set_alignment(0.5, 0.5) 97 label.set_alignment(0.5, 0.5)
95 label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse('light green')) 98 label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse('light green'))
96 self._prompt = label 99 self._prompt = label
97 100
98 test_widget = gtk.EventBox() 101 test_widget = gtk.EventBox()
99 test_widget.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('black')) 102 test_widget.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('black'))
100 test_widget.add(label) 103 test_widget.add(label)
101 104
102 self._prompt.set_text('insert USB drive...') 105 self._prompt.set_text('insert USB drive...')
103 self._state = _STATE_WAIT_INSERT 106 self._state = _STATE_WAIT_INSERT
104 self._result = False 107 self._result = False
105 self._devices = find_all_storage_dev() 108 self._devices = find_all_storage_dev()
106 gobject.timeout_add(250, self.rescan_storage, test_tag) 109 gobject.timeout_add(250, self.rescan_storage, test_tag)
107 110
108 factory_test.run_test_widget( 111 self._ft_state.run_test_widget(
109 test_widget=test_widget, 112 test_widget=test_widget,
110 test_widget_size=test_widget_size, 113 test_widget_size=test_widget_size,
111 window_registration_callback=self.register_callbacks) 114 window_registration_callback=self.register_callbacks)
112 115
113 factory_test.XXX_log('exiting factory_ExternalStorage') 116 factory.log('%s run_once finished' % self.__class__)
OLDNEW
« no previous file with comments | « client/site_tests/factory_Dummy/factory_Dummy.py ('k') | client/site_tests/factory_Keyboard/KeyboardTest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698