class SchedulingPolicyTest(DbTestCase): @classmethod def setUpClass(cls): super(SchedulingPolicyTest, cls).setUpClass() for _, fixture in six.iteritems(FIXTURES['runners']): instance = RunnerTypeAPI(**fixture) RunnerType.add_or_update(RunnerTypeAPI.to_model(instance)) for _, fixture in six.iteritems(FIXTURES['actions']): instance = ActionAPI(**fixture) Action.add_or_update(ActionAPI.to_model(instance)) for _, fixture in six.iteritems(FIXTURES['policytypes']): instance = PolicyTypeAPI(**fixture) PolicyType.add_or_update(PolicyTypeAPI.to_model(instance)) for _, fixture in six.iteritems(FIXTURES['policies']): instance = PolicyAPI(**fixture) Policy.add_or_update(PolicyAPI.to_model(instance)) @mock.patch.object(FakeConcurrencyApplicator, 'apply_before', mock.MagicMock(side_effect=FakeConcurrencyApplicator( None, None, threshold=3).apply_before)) @mock.patch.object( RaiseExceptionApplicator, 'apply_before', mock.MagicMock( side_effect=RaiseExceptionApplicator(None, None).apply_before)) @mock.patch.object(FakeConcurrencyApplicator, 'apply_after', mock.MagicMock(side_effect=FakeConcurrencyApplicator( None, None, threshold=3).apply_after)) @mock.patch.object( RaiseExceptionApplicator, 'apply_after', mock.MagicMock( side_effect=RaiseExceptionApplicator(None, None).apply_after)) def test_apply(self): liveaction = LiveActionDB(action='wolfpack.action-1', parameters={'actionstr': 'foo'}) liveaction, _ = action_service.request(liveaction) liveaction = LiveAction.get_by_id(str(liveaction.id)) self.assertEqual(liveaction.status, action_constants.LIVEACTION_STATUS_SUCCEEDED) FakeConcurrencyApplicator.apply_before.assert_called_once_with( liveaction) RaiseExceptionApplicator.apply_before.assert_called_once_with( liveaction) FakeConcurrencyApplicator.apply_after.assert_called_once_with( liveaction) RaiseExceptionApplicator.apply_after.assert_called_once_with( liveaction) @mock.patch.object(FakeConcurrencyApplicator, 'get_threshold', mock.MagicMock(return_value=0)) def test_enforce(self): liveaction = LiveActionDB(action='wolfpack.action-1', parameters={'actionstr': 'foo'}) liveaction, _ = action_service.request(liveaction) liveaction = LiveAction.get_by_id(str(liveaction.id)) self.assertEqual(liveaction.status, action_constants.LIVEACTION_STATUS_CANCELED)
class SchedulingPolicyTest(ExecutionDbTestCase): @classmethod def setUpClass(cls): super(SchedulingPolicyTest, cls).setUpClass() # Register runners runners_registrar.register_runners() for _, fixture in six.iteritems(FIXTURES['actions']): instance = ActionAPI(**fixture) Action.add_or_update(ActionAPI.to_model(instance)) for _, fixture in six.iteritems(FIXTURES['policytypes']): instance = PolicyTypeAPI(**fixture) PolicyType.add_or_update(PolicyTypeAPI.to_model(instance)) for _, fixture in six.iteritems(FIXTURES['policies']): instance = PolicyAPI(**fixture) Policy.add_or_update(PolicyAPI.to_model(instance)) def tearDown(self): # Ensure all liveactions are canceled at end of each test. for liveaction in LiveAction.get_all(): action_service.update_status( liveaction, action_constants.LIVEACTION_STATUS_CANCELED) @mock.patch.object(FakeConcurrencyApplicator, 'apply_before', mock.MagicMock(side_effect=FakeConcurrencyApplicator( None, None, threshold=3).apply_before)) @mock.patch.object( RaiseExceptionApplicator, 'apply_before', mock.MagicMock( side_effect=RaiseExceptionApplicator(None, None).apply_before)) @mock.patch.object(FakeConcurrencyApplicator, 'apply_after', mock.MagicMock(side_effect=FakeConcurrencyApplicator( None, None, threshold=3).apply_after)) @mock.patch.object( RaiseExceptionApplicator, 'apply_after', mock.MagicMock( side_effect=RaiseExceptionApplicator(None, None).apply_after)) def test_apply(self): liveaction = LiveActionDB(action='wolfpack.action-1', parameters={'actionstr': 'foo'}) liveaction, _ = action_service.request(liveaction) liveaction = self._wait_on_status( liveaction, action_constants.LIVEACTION_STATUS_SUCCEEDED) FakeConcurrencyApplicator.apply_before.assert_called_once_with( liveaction) RaiseExceptionApplicator.apply_before.assert_called_once_with( liveaction) FakeConcurrencyApplicator.apply_after.assert_called_once_with( liveaction) RaiseExceptionApplicator.apply_after.assert_called_once_with( liveaction) @mock.patch.object(FakeConcurrencyApplicator, 'get_threshold', mock.MagicMock(return_value=0)) def test_enforce(self): liveaction = LiveActionDB(action='wolfpack.action-1', parameters={'actionstr': 'foo'}) liveaction, _ = action_service.request(liveaction) liveaction = self._wait_on_status( liveaction, action_constants.LIVEACTION_STATUS_CANCELED)