OLD | NEW |
1 # -*- coding: utf-8 -*- | 1 # -*- coding: utf-8 -*- |
2 # | 2 # |
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 | 7 |
8 # DESCRIPTION : | 8 # DESCRIPTION : |
9 # | 9 # |
10 # This is a factory test to test external SD and USB ports. | 10 # This is a factory test to test external SD and USB ports. |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 def expose_event(self, widget, event): | 64 def expose_event(self, widget, event): |
65 context = widget.window.cairo_create() | 65 context = widget.window.cairo_create() |
66 context.set_source_surface(self._image, 0, 0) | 66 context.set_source_surface(self._image, 0, 0) |
67 context.paint() | 67 context.paint() |
68 return True | 68 return True |
69 | 69 |
70 def register_callbacks(self, window): | 70 def register_callbacks(self, window): |
71 window.connect('key-release-event', self.key_release_callback) | 71 window.connect('key-release-event', self.key_release_callback) |
72 window.add_events(gtk.gdk.KEY_RELEASE_MASK) | 72 window.add_events(gtk.gdk.KEY_RELEASE_MASK) |
73 | 73 |
74 def rescan_storage(self, test_tag): | 74 def rescan_storage(self, subtest_tag): |
75 if self._state == _STATE_WAIT_INSERT: | 75 if self._state == _STATE_WAIT_INSERT: |
76 new_devices = find_all_storage_dev() | 76 new_devices = find_all_storage_dev() |
77 diff = new_devices - self._devices | 77 diff = new_devices - self._devices |
78 if diff: | 78 if diff: |
79 self._devices = new_devices | 79 self._devices = new_devices |
80 factory.log('found new devs : %s' % diff) | 80 factory.log('found new devs : %s' % diff) |
81 self._target_device = diff.pop() | 81 self._target_device = diff.pop() |
82 devpath = '/dev/%s' % self._target_device | 82 devpath = '/dev/%s' % self._target_device |
83 self._prompt.set_text(_TESTING_FMT_STR(devpath)) | 83 self._prompt.set_text(_TESTING_FMT_STR(devpath)) |
84 self._image = self.testing_image | 84 self._image = self.testing_image |
85 self._pictogram.queue_draw() | 85 self._pictogram.queue_draw() |
86 gtk.main_iteration() | 86 gtk.main_iteration() |
87 test._result = self.job.run_test('hardware_StorageFio', | 87 test._result = self.job.run_test('hardware_StorageFio', |
88 dev=devpath, | 88 dev=devpath, |
89 quicktest=True, | 89 quicktest=True, |
90 tag=test_tag) | 90 tag=subtest_tag) |
91 self._prompt.set_text(_REMOVE_FMT_STR(self._media)) | 91 self._prompt.set_text(_REMOVE_FMT_STR(self._media)) |
92 self._state = _STATE_WAIT_REMOVE | 92 self._state = _STATE_WAIT_REMOVE |
93 self._image = self.removal_image | 93 self._image = self.removal_image |
94 self._pictogram.queue_draw() | 94 self._pictogram.queue_draw() |
95 else: | 95 else: |
96 diff = self._devices - find_all_storage_dev() | 96 diff = self._devices - find_all_storage_dev() |
97 if len(diff) > 1: | 97 if len(diff) > 1: |
98 self._error += _ERR_TOO_MANY_REMOVE_FMT_STR( | 98 self._error += _ERR_TOO_MANY_REMOVE_FMT_STR( |
99 self._target_device, diff) | 99 self._target_device, diff) |
100 if diff and self._target_device not in diff: | 100 if diff and self._target_device not in diff: |
101 self._error += _ERR_DEV_NOT_REMOVE_FMT_STR( | 101 self._error += _ERR_DEV_NOT_REMOVE_FMT_STR( |
102 self._target_device) | 102 self._target_device) |
103 if diff: | 103 if diff: |
104 gtk.main_quit() | 104 gtk.main_quit() |
105 return True | 105 return True |
106 | 106 |
107 def run_once(self, | 107 def run_once(self, |
108 test_widget_size=None, | 108 test_widget_size=None, |
109 trigger_set=None, | 109 trigger_set=None, |
110 test_tag_prefix=None, | 110 subtest_tag=None, |
111 test_count=None, | |
112 media=None): | 111 media=None): |
113 | 112 |
114 factory.log('%s run_once' % self.__class__) | 113 factory.log('%s run_once' % self.__class__) |
115 | 114 |
116 self._error = '' | 115 self._error = '' |
117 | 116 |
118 os.chdir(self.srcdir) | 117 os.chdir(self.srcdir) |
119 | 118 |
120 self._media = media | 119 self._media = media |
121 factory.log('media = %s' % media) | 120 factory.log('media = %s' % media) |
122 | 121 |
123 self.insertion_image = cairo.ImageSurface.create_from_png( | 122 self.insertion_image = cairo.ImageSurface.create_from_png( |
124 '%s_insert.png' % media) | 123 '%s_insert.png' % media) |
125 self.removal_image = cairo.ImageSurface.create_from_png( | 124 self.removal_image = cairo.ImageSurface.create_from_png( |
126 '%s_remove.png' % media) | 125 '%s_remove.png' % media) |
127 self.testing_image = cairo.ImageSurface.create_from_png( | 126 self.testing_image = cairo.ImageSurface.create_from_png( |
128 '%s_testing.png' % media) | 127 '%s_testing.png' % media) |
129 | 128 |
130 image_size_set = set([(i.get_width(), i.get_height()) for | 129 image_size_set = set([(i.get_width(), i.get_height()) for |
131 i in [self.insertion_image, | 130 i in [self.insertion_image, |
132 self.removal_image, | 131 self.removal_image, |
133 self.testing_image]]) | 132 self.testing_image]]) |
134 assert len(image_size_set) == 1 | 133 assert len(image_size_set) == 1 |
135 image_size = image_size_set.pop() | 134 image_size = image_size_set.pop() |
136 | 135 |
137 test_tag = '%s_%s' % (test_tag_prefix, test_count) | 136 factory.log('subtest_tag = %s' % subtest_tag) |
138 factory.log('test_tag = %s' % test_tag) | |
139 | 137 |
140 self._ft_state = ful.State(trigger_set) | 138 self._ft_state = ful.State(trigger_set) |
141 | 139 |
142 label = gtk.Label('') | 140 label = gtk.Label('') |
143 label.modify_font(pango.FontDescription('courier new condensed 20')) | 141 label.modify_font(pango.FontDescription('courier new condensed 20')) |
144 label.set_alignment(0.5, 0.5) | 142 label.set_alignment(0.5, 0.5) |
145 label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse('light green')) | 143 label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse('light green')) |
146 self._prompt = label | 144 self._prompt = label |
147 | 145 |
148 self._prompt.set_text(_INSERT_FMT_STR(self._media)) | 146 self._prompt.set_text(_INSERT_FMT_STR(self._media)) |
149 self._state = _STATE_WAIT_INSERT | 147 self._state = _STATE_WAIT_INSERT |
150 self._image = self.insertion_image | 148 self._image = self.insertion_image |
151 self._result = False | 149 self._result = False |
152 self._devices = find_all_storage_dev() | 150 self._devices = find_all_storage_dev() |
153 gobject.timeout_add(250, self.rescan_storage, test_tag) | 151 gobject.timeout_add(250, self.rescan_storage, subtest_tag) |
154 | 152 |
155 drawing_area = gtk.DrawingArea() | 153 drawing_area = gtk.DrawingArea() |
156 drawing_area.set_size_request(*image_size) | 154 drawing_area.set_size_request(*image_size) |
157 drawing_area.connect('expose_event', self.expose_event) | 155 drawing_area.connect('expose_event', self.expose_event) |
158 self._pictogram = drawing_area | 156 self._pictogram = drawing_area |
159 | 157 |
160 vbox = gtk.VBox() | 158 vbox = gtk.VBox() |
161 vbox.pack_start(drawing_area, False, False) | 159 vbox.pack_start(drawing_area, False, False) |
162 vbox.pack_start(label, False, False) | 160 vbox.pack_start(label, False, False) |
163 | 161 |
164 test_widget = gtk.EventBox() | 162 test_widget = gtk.EventBox() |
165 test_widget.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('black')) | 163 test_widget.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('black')) |
166 test_widget.add(vbox) | 164 test_widget.add(vbox) |
167 | 165 |
168 self._ft_state.run_test_widget( | 166 self._ft_state.run_test_widget( |
169 test_widget=test_widget, | 167 test_widget=test_widget, |
170 test_widget_size=test_widget_size, | 168 test_widget_size=test_widget_size, |
171 window_registration_callback=self.register_callbacks) | 169 window_registration_callback=self.register_callbacks) |
172 | 170 |
173 if self._error: | 171 if self._error: |
174 raise error.TestFail(self._error) | 172 raise error.TestFail(self._error) |
175 | 173 |
176 factory.log('%s run_once finished' % self.__class__) | 174 factory.log('%s run_once finished' % self.__class__) |
OLD | NEW |