def test_claim_lost_custom_handler(self): job = self._post_claim_job('test') f = self._make_dummy_flow(10) e = self._make_engine(f) handler = mock.MagicMock() ran_states = [] try_destroy = True destroyed_at = -1 with claims.CheckingClaimListener(e, job, self.board, self.board.name, on_job_loss=handler): for i, state in enumerate(e.run_iter()): ran_states.append(state) if state == states.SCHEDULING and try_destroy: destroyed = bool(self._destroy_locks()) if destroyed: destroyed_at = i try_destroy = False self.assertTrue(handler.called) self.assertEqual(10, ran_states.count(states.SCHEDULING)) self.assertNotEqual(-1, destroyed_at) after_states = ran_states[destroyed_at:] self.assertGreater(0, len(after_states))
def test_claim_lost_new_owner(self): job = self._post_claim_job('test') f = self._make_dummy_flow(10) e = self._make_engine(f) change_owner = True ran_states = [] with claims.CheckingClaimListener(e, job, self.board, self.board.name): for state in e.run_iter(): ran_states.append(state) if state == states.SCHEDULING and change_owner: change_owner = bool(self._change_owner('test-2')) self.assertEqual(states.SUSPENDED, e.storage.get_flow_state()) self.assertEqual(1, ran_states.count(states.ANALYZING)) self.assertEqual(1, ran_states.count(states.SCHEDULING)) self.assertEqual(1, ran_states.count(states.WAITING))
def test_claim_lost_suspended(self): job = self._post_claim_job('test') f = self._make_dummy_flow(10) e = self._make_engine(f) try_destroy = True ran_states = [] with claims.CheckingClaimListener(e, job, self.board, self.board.name): for state in e.run_iter(): ran_states.append(state) if state == states.SCHEDULING and try_destroy: try_destroy = bool(self._destroy_locks()) self.assertEqual(states.SUSPENDED, e.storage.get_flow_state()) self.assertEqual(1, ran_states.count(states.ANALYZING)) self.assertEqual(1, ran_states.count(states.SCHEDULING)) self.assertEqual(1, ran_states.count(states.WAITING))