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

Unified Diff: client/bin/factory_ui

Issue 3340013: Fix status reporting and auto-seq logic. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/autotest.git
Patch Set: address comment, and patch factory_Verify Created 10 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « client/bin/factory.py ('k') | client/site_tests/factory_Verify/factory_Verify.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/bin/factory_ui
diff --git a/client/bin/factory_ui b/client/bin/factory_ui
index a70ab258ea42b739bcdd21aa88af8f1057d37d89..f752994db0cf87167b63980c31761a0469289c3b 100755
--- a/client/bin/factory_ui
+++ b/client/bin/factory_ui
@@ -163,7 +163,7 @@ class SubTestLabelBox(gtk.EventBox):
class UiState():
- def __init__(self, status_map, test_widget_box):
+ def __init__(self, test_widget_box, automated_sequence_set):
def make_empty_test_label_widget():
label_box = gtk.EventBox()
@@ -173,17 +173,16 @@ class UiState():
label_box.add(label)
return label_box
- def make_automated_seq_label_widget(subtest_list):
+ def make_automated_sequence_label_widget(subtest_list):
vbox = gtk.VBox()
vbox.set_spacing(0)
for subtest in subtest_list:
label_box = SubTestLabelBox(subtest)
- status_map.set_label_box(subtest, label_box)
- vbox.pack_start(status_map.lookup_label_box(subtest),
- False, False)
+ self.set_label_box(subtest, label_box)
+ vbox.pack_start(label_box, False, False)
return vbox
- self._status_map = status_map
+ self._label_box_map = {}
self._test_widget_box = test_widget_box
self._empty_test_widget = make_empty_test_label_widget()
self._active_test_widget = self._empty_test_widget
@@ -192,10 +191,18 @@ class UiState():
self._test_widget_box.add(self._empty_test_widget)
self._automated_seq_widget_map = dict(
- (t, make_automated_seq_label_widget(t.subtest_list))
- for t in self._status_map.test_db.seq_test_set)
+ (test, make_automated_sequence_label_widget(test.subtest_list))
+ for test in automated_sequence_set)
- def set_active_test(self, test):
+ def status_change_callback(self, test, status):
+ label_box = self._label_box_map.get(test)
+ if label_box:
+ label_box.update(status)
+
+ def set_label_box(self, test, label_box):
+ self._label_box_map[test] = label_box
+
+ def set_active_test(self, test_db, test):
'''Control what kind of widget is shown in the testing area of
the screen. For normal operator tests, this is just a label
saying there is no active test. The expectation is that the
@@ -205,11 +212,10 @@ class UiState():
subtest status.'''
if test is None or test == self.active_test:
return
- factory.log('UI active test -> %s' %
- self._status_map.test_db.get_unique_details(test))
+ factory.log('UI active test is %s' % test_db.get_unique_id_str(test))
self.active_test = test
self._test_widget_box.remove(self._active_test_widget)
- active_widget = (test in self._status_map.test_db.seq_test_set
+ active_widget = (isinstance(test, factory.AutomatedSequence)
and self._automated_seq_widget_map[test]
or self._empty_test_widget)
self._test_widget_box.add(active_widget)
@@ -217,10 +223,10 @@ class UiState():
self._test_widget_box.show_all()
-def refresh_status(status_map, ui_state):
+def refresh_status(status_map, test_db, ui_state):
status_map.read_new_data()
active_test = status_map.get_active_top_level_test()
- ui_state.set_active_test(active_test)
+ ui_state.set_active_test(test_db, active_test)
return True
@@ -265,7 +271,7 @@ def main(test_list, status_file_path, control_pid):
value is logged with log_shared_data() and a SIGUSR1 is sent to
the control program.'''
- status_map = factory.StatusMap(test_list, status_file_path)
+ test_db = factory.TestDatabase(test_list)
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.connect('destroy', lambda _: gtk.main_quit())
@@ -294,8 +300,6 @@ def main(test_list, status_file_path, control_pid):
test_widget_box = gtk.Alignment(xalign=0.5, yalign=0.5)
test_widget_box.set_size_request(-1, -1)
- ui_state = UiState(status_map, test_widget_box)
-
lhs_box = gtk.VBox()
lhs_box.pack_end(console_box, False, False)
lhs_box.pack_start(test_widget_box)
@@ -309,19 +313,26 @@ def main(test_list, status_file_path, control_pid):
window.connect('key-release-event', handle_key_release_event)
window.add_events(gtk.gdk.KEY_RELEASE_MASK)
- gobject.timeout_add(_STATUS_REFRESH_MS, refresh_status,
- status_map, ui_state)
+ ui_state = UiState(test_widget_box, test_db.get_automated_sequences())
for test in test_list:
label_box = TestLabelBox(test)
- status_map.set_label_box(test, label_box)
+ ui_state.set_label_box(test, label_box)
label_trough.pack_start(label_box, False, False)
label_trough.pack_start(ful.make_hsep(), False, False)
window.add(base_box)
window.show_all()
- grab_shortcut_keys(status_map.test_db.kbd_shortcut_set, control_pid)
+ status_map = factory.StatusMap(
+ test_list, status_file_path, test_db=test_db,
+ status_change_callback=ui_state.status_change_callback)
+
+ gobject.timeout_add(_STATUS_REFRESH_MS, refresh_status,
+ status_map, test_db, ui_state)
+
+ kbd_shortcut_db = factory.KbdShortcutDatabase(test_list, test_db)
+ grab_shortcut_keys(kbd_shortcut_db.get_shortcut_keys(), control_pid)
ful.hide_cursor(window.window)
« no previous file with comments | « client/bin/factory.py ('k') | client/site_tests/factory_Verify/factory_Verify.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698