Beispiel #1
0
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)
Beispiel #2
0
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)