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

Unified Diff: client/bin/job.py

Issue 6539001: Merge remote branch 'cros/upstream' into master. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/autotest.git@master
Patch Set: patch Created 9 years, 10 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/harness_unittest.py ('k') | client/bin/job_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/bin/job.py
diff --git a/client/bin/job.py b/client/bin/job.py
index 3e285c6a270c09be1c30a8a369bf9633c69bfd0b..8b8997ecf491b474fef705c3e0c7bd0dd8525008 100644
--- a/client/bin/job.py
+++ b/client/bin/job.py
@@ -179,20 +179,10 @@ class base_client_job(base_job.base_job):
self._next_step_index = 0
self._load_state()
- # harness is chosen by following rules:
- # 1. explicitly specified via command line
- # 2. harness stored in state file (if continuing job '-c')
- # 3. default harness
- selected_harness = None
- if options.harness:
- selected_harness = options.harness
- self._state.set('client', 'harness', selected_harness)
- else:
- stored_harness = self._state.get('client', 'harness', None)
- if stored_harness:
- selected_harness = stored_harness
+ _harness = self.handle_persistent_option(options, 'harness')
+ _harness_args = self.handle_persistent_option(options, 'harness_args')
- self.harness = harness.select(selected_harness, self)
+ self.harness = harness.select(_harness, self, _harness_args)
# set up the status logger
def client_job_record_hook(entry):
@@ -388,8 +378,8 @@ class base_client_job(base_job.base_job):
self.control = os.path.abspath(control)
- def harness_select(self, which):
- self.harness = harness.select(which, self)
+ def harness_select(self, which, harness_args):
+ self.harness = harness.select(which, self, harness_args)
def config_set(self, name, value):
@@ -601,24 +591,25 @@ class base_client_job(base_job.base_job):
try:
self.record('START', subdir, testname)
self._state.set('client', 'unexpected_reboot', (subdir, testname))
- result = function(*args, **dargs)
- self.record('END GOOD', subdir, testname)
- return result
- except error.TestBaseException, e:
- self.record('END %s' % e.exit_status, subdir, testname)
- raise
- except error.JobError, e:
- self.record('END ABORT', subdir, testname)
- raise
- except Exception, e:
- # This should only ever happen due to a bug in the given
- # function's code. The common case of being called by
- # run_test() will never reach this. If a control file called
- # run_group() itself, bugs in its function will be caught
- # here.
- err_msg = str(e) + '\n' + traceback.format_exc()
- self.record('END ERROR', subdir, testname, err_msg)
- raise
+ try:
+ result = function(*args, **dargs)
+ self.record('END GOOD', subdir, testname)
+ return result
+ except error.TestBaseException, e:
+ self.record('END %s' % e.exit_status, subdir, testname)
+ raise
+ except error.JobError, e:
+ self.record('END ABORT', subdir, testname)
+ raise
+ except Exception, e:
+ # This should only ever happen due to a bug in the given
+ # function's code. The common case of being called by
+ # run_test() will never reach this. If a control file called
+ # run_group() itself, bugs in its function will be caught
+ # here.
+ err_msg = str(e) + '\n' + traceback.format_exc()
+ self.record('END ERROR', subdir, testname, err_msg)
+ raise
finally:
self._state.discard('client', 'unexpected_reboot')
@@ -924,6 +915,29 @@ class base_client_job(base_job.base_job):
self._state.set('client', 'steps', [])
+ def handle_persistent_option(self, options, option_name):
+ """
+ Select option from command line or persistent state.
+ Store selected option to allow standalone client to continue
+ after reboot with previously selected options.
+ Priority:
+ 1. explicitly specified via command line
+ 2. stored in state file (if continuing job '-c')
+ 3. default == None
+ """
+ option = None
+ cmd_line_option = getattr(options, option_name)
+ if cmd_line_option:
+ option = cmd_line_option
+ self._state.set('client', option_name, option)
+ else:
+ stored_option = self._state.get('client', option_name, None)
+ if stored_option:
+ option = stored_option
+ logging.debug('Persistent option %s now set to %s', option_name, option)
+ return option
+
+
def __create_step_tuple(self, fn, args, dargs):
# Legacy code passes in an array where the first arg is
# the function or its name.
« no previous file with comments | « client/bin/harness_unittest.py ('k') | client/bin/job_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698