Index: client/site_tests/suite_Factory/control |
diff --git a/client/site_tests/suite_Factory/control b/client/site_tests/suite_Factory/control |
index 64e7f777e136db3d5ceaf3145e4e2a9bd13ba870..269031eafef6744c7ccc16ed219d86107436e5d9 100644 |
--- a/client/site_tests/suite_Factory/control |
+++ b/client/site_tests/suite_Factory/control |
@@ -24,9 +24,28 @@ control process). """ |
import imp |
+import os |
+ |
imp.load_source('common', job.autodir + '/bin/common.py') |
+ |
from autotest_lib.client.bin import factory |
-from autotest_lib.client.bin import utils |
+from autotest_lib.client.bin import parallel |
+ |
+ |
+FACTORY_UI_PATH = job.autodir + '/bin/factory_ui' |
+STATUS_FILE_PATH = job.autodir + '/results/default/status' |
+TEST_LIST_PATH = job.autodir + '/site_tests/suite_Factory/test_list' |
+ |
+ |
+# Hack to grab the pid for forked tests. |
+ |
+from autotest_lib.client.bin.parallel import fork_waitfor as orig_fork_waitfor |
+ |
+def new_fork_waitfor(tmp, pid): |
+ factory.log_shared_data('active_test_data', (tmp, pid)) |
+ orig_fork_waitfor(tmp, pid) |
+ |
+parallel.fork_waitfor = new_fork_waitfor |
# These definitions are expose these classes directly into this |
@@ -42,7 +61,7 @@ AutomatedRebootSubTest = factory.AutomatedRebootSubTest |
# This exec defines TEST_LIST in global scope. |
-execfile(job.autodir + '/site_tests/suite_Factory/test_list') |
+execfile(TEST_LIST_PATH) |
# Hack to work around autotest's obsession with GRUB. |
@@ -63,13 +82,15 @@ def step_reboot_seq(tag_prefix, total_iterations, i=0): |
def step_init(intentional_reboot_subtest_tag_prefix=None): |
job.next_step([step_init]) |
- factory_ui_path = job.autodir + '/bin/factory_ui' |
- status_file_path = job.autodir + '/results/default/status' |
+ ui_proc_args = [FACTORY_UI_PATH, TEST_LIST_PATH, |
+ STATUS_FILE_PATH, str(os.getpid())] |
+ factory.log('starting ui -- %s' % repr(ui_proc_args)) |
+ ui_proc = subprocess.Popen(ui_proc_args) |
- status_map = factory.StatusMap(TEST_LIST, status_file_path) |
- ui = factory.UiClient(TEST_LIST, factory_ui_path, status_file_path) |
- control_state = factory.ControlState(job, TEST_LIST, ui, status_map, |
- status_file_path) |
+ status_map = factory.StatusMap(TEST_LIST, STATUS_FILE_PATH) |
+ control_state = factory.ControlState( |
+ job, TEST_LIST, status_map, STATUS_FILE_PATH, |
+ parallel.fork_nuke_subprocess) |
if intentional_reboot_subtest_tag_prefix: |
reboot_subtest = status_map.test_db.get_subtest_by_tag_prefix( |
@@ -79,6 +100,8 @@ def step_init(intentional_reboot_subtest_tag_prefix=None): |
test = status_map.next_untested() |
while test is not None: |
+ factory.log('next test = %s' % |
+ status_map.test_db.get_unique_details(test)) |
if isinstance(test, factory.AutomatedSequence): |
for subtest in test.subtest_list: |
if isinstance(subtest, factory.AutomatedRebootSubTest): |