From 573c6abcb56dd8e4ff480d5fb54367842487d5e6 Mon Sep 17 00:00:00 2001 From: Sergei Trofimov Date: Tue, 29 May 2018 09:20:52 +0100 Subject: [PATCH] fw/signal: add job signals Add matched signals for before-after job execution. These are the equivalent of "spec" signals in WA2. --- wa/framework/execution.py | 7 ++++--- wa/framework/instrument.py | 4 ++++ wa/framework/signal.py | 4 ++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/wa/framework/execution.py b/wa/framework/execution.py index a2ebdb54..5e27ca77 100644 --- a/wa/framework/execution.py +++ b/wa/framework/execution.py @@ -509,9 +509,10 @@ class Runner(object): self.logger.info('Rebooting on new spec.') self.context.tm.target.reboot() - context.tm.start() - self.do_run_job(job, context) - job.set_status(Status.OK) + with signal.wrap('JOB', self, context): + context.tm.start() + self.do_run_job(job, context) + job.set_status(Status.OK) except (Exception, KeyboardInterrupt) as e: # pylint: disable=broad-except log.log_error(e, self.logger) if isinstance(e, KeyboardInterrupt): diff --git a/wa/framework/instrument.py b/wa/framework/instrument.py index 38c024ec..a3313839 100644 --- a/wa/framework/instrument.py +++ b/wa/framework/instrument.py @@ -131,6 +131,10 @@ SIGNAL_MAP = OrderedDict([ ('teardown', signal.AFTER_WORKLOAD_TEARDOWN), ('finalize', signal.RUN_FINALIZED), + ('before_job', signal.BEFORE_JOB), + ('on_successful_job', signal.SUCCESSFUL_JOB), + ('after_job', signal.AFTER_JOB), + # ('on_run_start', signal.RUN_START), # ('on_run_end', signal.RUN_END), # ('on_workload_spec_start', signal.WORKLOAD_SPEC_START), diff --git a/wa/framework/signal.py b/wa/framework/signal.py index c35e496b..b579b736 100644 --- a/wa/framework/signal.py +++ b/wa/framework/signal.py @@ -143,6 +143,10 @@ BEFORE_RUN_INIT = Signal('before-run-init', invert_priority=True) SUCCESSFUL_RUN_INIT = Signal('successful-run-init') AFTER_RUN_INIT = Signal('after-run-init') +BEFORE_JOB = Signal('before-job', invert_priority=True) +SUCCESSFUL_JOB = Signal('successful-job') +AFTER_JOB = Signal('after-job') + BEFORE_JOB_TARGET_CONFIG = Signal('before-job-target-config', invert_priority=True) SUCCESSFUL_JOB_TARGET_CONFIG = Signal('successful-job-target-config') AFTER_JOB_TARGET_CONFIG = Signal('after-job-target-config')