def test_job_state_transitions_pass(self): '''Tests state equality when the job passes first try''' job = Job(self.job_spec, 1, self.context) job.workload = Mock() self.context.cm._joblist = [job] self.context.run_state.add_job(job) runner = Runner(self.context, MockProcessorManager()) runner.run()
def test_job_state_transitions_retry(self): '''Tests state equality when job fails initially''' job = Job_force_retry(1, self.job_spec, 1, self.context) job.workload = Mock() self.context.cm._joblist = [job] self.context.run_state.add_job(job) runner = Runner(self.context, MockProcessorManager()) runner.run()
def test_job_retry_status(self): job_spec = JobSpec() job_spec.augmentations = {} job_spec.finalize() self.job = Job_force_retry(2, job_spec, 1, self.context) self.job.workload = Mock() self.context.cm._joblist = [self.job] self.context.run_state.add_job(self.job) runner = Runner(self.context, MockProcessorManager()) runner.run()
def test_normal_job_finalized(self): # Test that a job is initialized then finalized normally job_spec = get_jobspec() context = get_context() job = Job_force_retry(0, job_spec, 1, context) job.workload = Mock() context.cm._joblist = [job] context.run_state.add_job(job) runner = Runner(context, MockProcessorManager()) runner.run() assert_equal(job.initialized, True) assert_equal(job.finalized, True)
def test_job_retry_status(self): job_spec = get_jobspec() context = get_context() job = Job_force_retry(2, job_spec, 1, context) job.workload = Mock() context.cm._joblist = [job] context.run_state.add_job(job) verifier = lambda _: assert_equal(job.status, Status.PENDING) signal.connect(verifier, signal.JOB_RESTARTED) runner = Runner(context, MockProcessorManager()) runner.run() signal.disconnect(verifier, signal.JOB_RESTARTED)
def test_failed_job_finalized(self): # Test that a failed job, while the bail parameter is set, # is finalized job_spec = get_jobspec() context = get_context() context.cm.run_config.bail_on_job_failure = True job1 = Job_force_retry(3, job_spec, 1, context) job1.workload = Mock() context.cm._joblist = [job1] context.run_state.add_job(job1) runner = Runner(context, MockProcessorManager()) try: runner.run() except ExecutionError: assert_equal(job1.finalized, True) else: assert False, "ExecutionError not raised"
def test_skipped_job_finalized(self): # Test that a skipped job has been finalized job_spec = get_jobspec() context = get_context() context.cm.run_config.bail_on_job_failure = True job1 = Job_force_retry(3, job_spec, 1, context) job2 = Job_force_retry(0, job_spec, 1, context) job1.workload = Mock() job2.workload = Mock() context.cm._joblist = [job1, job2] context.run_state.add_job(job1) context.run_state.add_job(job2) runner = Runner(context, MockProcessorManager()) try: runner.run() except ExecutionError: assert_equal(job2.finalized, True) else: assert False, "ExecutionError not raised"
def test_skipped_job_state(self): # Test, if the first job fails and the bail parameter set, # that the remaining jobs have status: SKIPPED job_spec = get_jobspec() context = get_context() context.cm.run_config.bail_on_job_failure = True job1 = Job_force_retry(3, job_spec, 1, context) job2 = Job(job_spec, 1, context) job1.workload = Mock() job2.workload = Mock() context.cm._joblist = [job1, job2] context.run_state.add_job(job1) context.run_state.add_job(job2) runner = Runner(context, MockProcessorManager()) try: runner.run() except ExecutionError: assert_equal(job2.status, Status.SKIPPED) else: assert False, "ExecutionError not raised"