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)
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)
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)
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}')
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)
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))
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)
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 )
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)
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)
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)
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)