예제 #1
0
 def test_get_inhibitor_list_PENDING_DEP(self):
     # verify that jobs that depend on another job or wait (via after) for
     # another  that hasn't been invoked yet produce the PENDING_DEP
     # inhibitor
     j1 = JobDefinition({
         'id': 'j1',
         'depends': 'j2',
         'after': 'j3',
     })
     j2 = JobDefinition({'id': 'j2'})
     j3 = JobDefinition({'id': 'j3'})
     session_state = mock.MagicMock(spec=SessionState)
     session_state.job_state_map = {
         'j1': mock.Mock(spec_set=JobState),
         'j2': mock.Mock(spec_set=JobState),
         'j3': mock.Mock(spec_set=JobState),
     }
     jsm_j2 = session_state.job_state_map['j2']
     jsm_j2.job = j2
     jsm_j2.result.outcome = IJobResult.OUTCOME_NONE
     jsm_j3 = session_state.job_state_map['j3']
     jsm_j3.job = j3
     jsm_j3.result.outcome = IJobResult.OUTCOME_NONE
     self.assertEqual(self.ctrl.get_inhibitor_list(session_state, j1), [
         JobReadinessInhibitor(InhibitionCause.PENDING_DEP, j2, None),
         JobReadinessInhibitor(InhibitionCause.PENDING_DEP, j3, None),
     ])
예제 #2
0
 def test_get_inhibitor_list_FAILED_DEP(self):
     # verify that jobs that depend on another job that ran but
     # didn't result in OUTCOME_PASS produce the FAILED_DEP
     # inhibitor.
     j1 = JobDefinition({
         'id': 'j1',
         'depends': 'j2',
         'after': 'j3',
     })
     j2 = JobDefinition({'id': 'j2'})
     j3 = JobDefinition({'id': 'j3'})
     session_state = mock.MagicMock(spec=SessionState)
     session_state.job_state_map = {
         'j1': mock.Mock(spec_set=JobState),
         'j2': mock.Mock(spec_set=JobState),
         'j3': mock.Mock(spec_set=JobState),
     }
     jsm_j2 = session_state.job_state_map['j2']
     jsm_j2.job = j2
     jsm_j2.result.outcome = IJobResult.OUTCOME_FAIL
     jsm_j3 = session_state.job_state_map['j3']
     jsm_j3.job = j3
     jsm_j3.result.outcome = IJobResult.OUTCOME_FAIL
     self.assertEqual(
         self.ctrl.get_inhibitor_list(session_state, j1),
         [JobReadinessInhibitor(InhibitionCause.FAILED_DEP, j2, None)])
예제 #3
0
 def test_unknown(self):
     obj = JobReadinessInhibitor(JobReadinessInhibitor.UNDESIRED)
     self.assertEqual(
         repr(obj), (
             "<JobReadinessInhibitor cause:UNDESIRED"
             " related_job:None"
             " related_expression:None>"))
     self.assertEqual(str(obj), "undesired")
예제 #4
0
 def test_failed_dep(self):
     job = make_job("A")
     obj = JobReadinessInhibitor(JobReadinessInhibitor.FAILED_DEP,
                                 related_job=job)
     self.assertEqual(
         repr(obj), ("<JobReadinessInhibitor cause:FAILED_DEP"
                     " related_job:<JobDefinition name:'A' plugin:'dummy'>"
                     " related_expression:None>"))
     self.assertEqual(str(obj), "required dependency 'A' has failed")
예제 #5
0
 def test_pending_dep(self):
     job = make_job("A")
     obj = JobReadinessInhibitor(JobReadinessInhibitor.PENDING_DEP,
                                 related_job=job)
     self.assertEqual(
         repr(obj), ("<JobReadinessInhibitor cause:PENDING_DEP"
                     " related_job:<JobDefinition name:'A' plugin:'dummy'>"
                     " related_expression:None>"))
     self.assertEqual(str(obj), "required dependency 'A' did not run yet")
예제 #6
0
 def test_get_inhibitor_list_PENDING_RESOURCE(self):
     # verify that jobs that require a resource that hasn't been
     # invoked yet produce the PENDING_RESOURCE inhibitor
     j1 = JobDefinition({'id': 'j1', 'requires': 'j2.attr == "ok"'})
     j2 = JobDefinition({'id': 'j2'})
     session_state = mock.MagicMock(spec=SessionState)
     session_state.job_state_map['j2'].job = j2
     session_state.resource_map = {}
     self.assertEqual(self.ctrl.get_inhibitor_list(session_state, j1), [
         JobReadinessInhibitor(JobReadinessInhibitor.PENDING_RESOURCE, j2,
                               ResourceExpression('j2.attr == "ok"'))
     ])
예제 #7
0
 def test_get_inhibitor_list_PENDING_DEP(self):
     # verify that jobs that depend on another job that hasn't
     # been invoked yet produce the PENDING_DEP inhibitor
     j1 = JobDefinition({'id': 'j1', 'depends': 'j2'})
     j2 = JobDefinition({'id': 'j2'})
     session_state = mock.MagicMock(spec=SessionState)
     jsm_j2 = session_state.job_state_map['j2']
     jsm_j2.job = j2
     jsm_j2.result.outcome = IJobResult.OUTCOME_NONE
     self.assertEqual(self.ctrl.get_inhibitor_list(session_state, j1), [
         JobReadinessInhibitor(JobReadinessInhibitor.PENDING_DEP, j2, None)
     ])
예제 #8
0
 def test_get_inhibitor_list_FAILED_RESOURCE(self):
     # verify that jobs that require a resource that has been
     # invoked and produced resources but the expression dones't
     # evaluate to True produce the FAILED_RESOURCE inhibitor
     j1 = JobDefinition({'id': 'j1', 'requires': 'j2.attr == "ok"'})
     j2 = JobDefinition({'id': 'j2'})
     session_state = mock.MagicMock(spec=SessionState)
     session_state.job_state_map['j2'].job = j2
     session_state.resource_map = {'j2': [Resource({'attr': 'not-ok'})]}
     self.assertEqual(self.ctrl.get_inhibitor_list(session_state, j1), [
         JobReadinessInhibitor(JobReadinessInhibitor.FAILED_RESOURCE, j2,
                               ResourceExpression('j2.attr == "ok"'))
     ])
예제 #9
0
 def test_failed_resource(self):
     job = make_job("A", requires="resource.attr == 'value'")
     expr = job.get_resource_program().expression_list[0]
     obj = JobReadinessInhibitor(JobReadinessInhibitor.FAILED_RESOURCE,
                                 related_job=job,
                                 related_expression=expr)
     self.assertEqual(
         repr(obj),
         ("<JobReadinessInhibitor cause:FAILED_RESOURCE"
          " related_job:<JobDefinition name:'A' plugin:'dummy'>"
          " related_expression:"
          "<ResourceExpression text:\"resource.attr == 'value'\">>"))
     self.assertEqual(str(obj),
                      ("resource expression \"resource.attr == 'value'\""
                       " evaluates to false"))
예제 #10
0
 def test_pending_resource(self):
     job = make_job("A", requires="resource.attr == 'value'")
     expr = job.get_resource_program().expression_list[0]
     obj = JobReadinessInhibitor(JobReadinessInhibitor.PENDING_RESOURCE,
                                 related_job=job,
                                 related_expression=expr)
     self.assertEqual(
         repr(obj),
         ("<JobReadinessInhibitor cause:PENDING_RESOURCE"
          " related_job:<JobDefinition name:'A' plugin:'dummy'>"
          " related_expression:"
          "<ResourceExpression text:\"resource.attr == 'value'\">>"))
     self.assertEqual(
         str(obj),
         ("resource expression \"resource.attr == 'value'\" could not be"
          " evaluated because the resource it depends on did not run"
          " yet"))
예제 #11
0
 def test_setting_readiness_inhibitor_list(self):
     inhibitor = JobReadinessInhibitor(JobReadinessInhibitor.UNDESIRED)
     self.job_state.readiness_inhibitor_list = [inhibitor]
     self.assertEqual(self.job_state.readiness_inhibitor_list, [inhibitor])