Beispiel #1
0
    def test_unknown_error(self):
        """
        Unknown error occurs. It is logged and not propagated.
        """
        del_pol_ids = set()
        self.maybe_exec_policy.return_value = defer.fail(ValueError(4))

        d = execute_event("disp", self.mock_store, self.log, self.event, del_pol_ids)

        self.assertIsNone(self.successResultOf(d))
        self.assertEqual(len(del_pol_ids), 0)
        self.log.err.assert_called_with(CheckFailure(ValueError), "sch-exec-pol-err", cloud_feed=True, **self.log_args)
Beispiel #2
0
    def test_deleted_group_event(self):
        """
        Executing event whose group has been deleted. It captures policyId in
        deleted_policy_ids and does not call maybe_execute_scaling_policy
        """
        del_pol_ids = set()
        self.mock_group.modify_state.side_effect = lambda *_: defer.fail(NoSuchScalingGroupError(1, 2))

        d = execute_event(self.mock_store, self.log, self.event, del_pol_ids)

        self.assertIsNone(self.successResultOf(d))
        self.assertEqual(del_pol_ids, set(['pol44']))
        self.assertFalse(self.maybe_exec_policy.called)
Beispiel #3
0
    def test_deleted_group_event(self):
        """This event's group has been deleted.

        Its policyId is logged, and no attempt is made to execute it.
        """
        del_pol_ids = set()
        self.mock_mt.side_effect = lambda *_, **__: defer.fail(NoSuchScalingGroupError(1, 2))

        d = execute_event("disp", self.mock_store, self.log, self.event, del_pol_ids)

        self.assertIsNone(self.successResultOf(d))
        self.assertEqual(del_pol_ids, set(["pol44"]))
        self.assertFalse(self.maybe_exec_policy.called)
Beispiel #4
0
    def test_unknown_error(self):
        """
        Unknown error occurs. It is logged and not propogated
        """
        del_pol_ids = set()
        self.log.bind.return_value.err.return_value = None
        self.maybe_exec_policy.return_value = defer.fail(ValueError(4))

        d = execute_event(self.mock_store, self.log, self.event, del_pol_ids)

        self.assertIsNone(self.successResultOf(d))
        self.assertEqual(len(del_pol_ids), 0)
        self.log.bind.return_value.err.assert_called_with(
            CheckFailure(ValueError), 'Scheduler failed to execute policy {policy_id}')
Beispiel #5
0
    def test_deleted_policy_event(self):
        """
        Policy corresponding to the event has deleted. It captures
        policyId in deleted_policy_ids and does not call maybe_execute_scaling_policy
        """
        del_pol_ids = set()
        self.mock_group.modify_state.side_effect = (
            lambda *_: defer.fail(NoSuchPolicyError(1, 2, 3)))

        d = execute_event(self.mock_store, self.log, self.event, del_pol_ids)

        self.assertIsNone(self.successResultOf(d))
        self.assertEqual(del_pol_ids, set(['pol44']))
        self.assertFalse(self.maybe_exec_policy.called)
Beispiel #6
0
    def test_semantic_prob(self):
        """
        Policy execution causes semantic error like cooldowns not met.
        i.e. CannotExecutePolicyError is captured and logged
        """
        del_pol_ids = set()
        self.maybe_exec_policy.return_value = defer.fail(CannotExecutePolicyError(*range(4)))

        d = execute_event(self.mock_store, self.log, self.event, del_pol_ids)

        self.assertIsNone(self.successResultOf(d))
        self.assertEqual(len(del_pol_ids), 0)
        self.log.bind.return_value.msg.assert_called_with(
            'Scheduler cannot execute policy {policy_id}',
            reason=CheckFailure(CannotExecutePolicyError))
Beispiel #7
0
    def test_deleted_group_event(self):
        """This event's group has been deleted.

        Its policyId is logged, and no attempt is made to execute it.
        """
        del_pol_ids = set()
        self.mock_mt.side_effect = \
            lambda *_, **__: defer.fail(NoSuchScalingGroupError(1, 2))

        d = execute_event("disp", self.mock_store, self.log, self.event,
                          del_pol_ids)

        self.assertIsNone(self.successResultOf(d))
        self.assertEqual(del_pol_ids, set(['pol44']))
        self.assertFalse(self.maybe_exec_policy.called)
Beispiel #8
0
    def test_semantic_prob(self):
        """
        Policy execution causes semantic error like cooldowns not met.
        i.e. CannotExecutePolicyError is captured and logged.
        """
        del_pol_ids = set()
        self.maybe_exec_policy.return_value = defer.fail(CannotExecutePolicyError(*range(4)))

        d = execute_event("disp", self.mock_store, self.log, self.event, del_pol_ids)

        self.assertIsNone(self.successResultOf(d))
        self.assertEqual(len(del_pol_ids), 0)
        self.log.msg.assert_called_with(
            "sch-cannot-exec", reason=CheckFailure(CannotExecutePolicyError), cloud_feed=True, **self.log_args
        )
Beispiel #9
0
    def test_unknown_error(self):
        """
        Unknown error occurs. It is logged and not propagated.
        """
        del_pol_ids = set()
        self.maybe_exec_policy.return_value = defer.fail(ValueError(4))

        d = execute_event("disp", self.mock_store, self.log, self.event,
                          del_pol_ids)

        self.assertIsNone(self.successResultOf(d))
        self.assertEqual(len(del_pol_ids), 0)
        self.log.err.assert_called_with(CheckFailure(ValueError),
                                        "sch-exec-pol-err",
                                        cloud_feed=True,
                                        **self.log_args)
Beispiel #10
0
    def test_event_executed(self):
        """
        Event is executed successfully and appropriate logs logged
        """
        del_pol_ids = set()
        d = execute_event(self.mock_store, self.log, self.event, del_pol_ids)

        self.assertIsNone(self.successResultOf(d))
        self.log.bind.assert_called_with(**self.log_args)
        log = self.log.bind.return_value
        log.msg.assert_called_once_with('Scheduler executing policy {policy_id}')
        self.maybe_exec_policy.assert_called_once_with(
            log, 'transaction-id', self.mock_group, self.mock_state,
            policy_id=self.event['policyId'], version=self.event['version'])
        self.assertTrue(self.mock_group.modify_state.called)
        self.assertEqual(self.new_state, 'newstate')
        self.assertEqual(len(del_pol_ids), 0)
Beispiel #11
0
    def test_semantic_prob(self):
        """
        Policy execution causes semantic error like cooldowns not met.
        i.e. CannotExecutePolicyError is captured and logged.
        """
        del_pol_ids = set()
        self.maybe_exec_policy.return_value = defer.fail(
            CannotExecutePolicyError(*range(4)))

        d = execute_event("disp", self.mock_store, self.log, self.event,
                          del_pol_ids)

        self.assertIsNone(self.successResultOf(d))
        self.assertEqual(len(del_pol_ids), 0)
        self.log.msg.assert_called_with(
            "sch-cannot-exec",
            reason=CheckFailure(CannotExecutePolicyError),
            cloud_feed=True,
            **self.log_args)
Beispiel #12
0
    def test_event_executed(self):
        """
        Event is executed successfully and appropriate logs logged.
        """
        del_pol_ids = set()
        d = execute_event("disp", self.mock_store, self.log, self.event, del_pol_ids)

        self.assertIsNone(self.successResultOf(d))
        self.log.msg.assert_called_once_with("sch-exec-pol", cloud_feed=True, **self.log_args)
        self.maybe_exec_policy.assert_called_once_with(
            matches(IsBoundWith(**self.log_args)),
            "transaction-id",
            self.mock_group,
            "state",
            policy_id=self.event["policyId"],
            version=self.event["version"],
        )
        self.assertTrue(self.mock_mt.called)
        self.assertEqual(self.new_state, "newstate")
        self.assertEqual(len(del_pol_ids), 0)
Beispiel #13
0
    def test_event_executed(self):
        """
        Event is executed successfully and appropriate logs logged.
        """
        del_pol_ids = set()
        d = execute_event("disp", self.mock_store, self.log, self.event,
                          del_pol_ids)

        self.assertIsNone(self.successResultOf(d))
        self.log.msg.assert_called_once_with("sch-exec-pol",
                                             cloud_feed=True,
                                             **self.log_args)
        self.maybe_exec_policy.assert_called_once_with(
            matches(IsBoundWith(**self.log_args)),
            'transaction-id',
            self.mock_group,
            "state",
            policy_id=self.event['policyId'],
            version=self.event['version'])
        self.assertTrue(self.mock_mt.called)
        self.assertEqual(self.new_state, 'newstate')
        self.assertEqual(len(del_pol_ids), 0)