def test_rule_enforcement_is_created_on_exception_3(self): # 1. Exception in payload_lookup.get_value rule_enforcement_dbs = list(RuleEnforcement.get_all()) self.assertEqual(rule_enforcement_dbs, []) self._setup_sample_trigger('st2.test.trigger4') rule_4_db = self._setup_sample_rule(RULE_4) rules = [rule_4_db] trigger_instance = container_utils.create_trigger_instance( 'dummy_pack_1.st2.test.trigger4', {'k1': 't2_p_v', 'k2': 'v2'}, date_utils.get_datetime_utc_now() ) trigger = get_trigger_db_by_ref(trigger_instance.trigger) rules_matcher = RulesMatcher(trigger_instance, trigger, rules) matching_rules = rules_matcher.get_matching_rules() self.assertEqual(matching_rules, []) self.assertEqual(len(matching_rules), 0) rule_enforcement_dbs = list(RuleEnforcement.get_all()) self.assertEqual(len(rule_enforcement_dbs), 1) expected_failure = ('Failed to match rule "yoyohoneysingh.st2.test.rule4" against trigger ' 'instance "%s": There might be a problem with the criteria in rule ' 'yoyohoneysingh.st2.test.rule4: exception in equals' % (str(trigger_instance.id))) self.assertEqual(rule_enforcement_dbs[0].failure_reason, expected_failure) self.assertEqual(rule_enforcement_dbs[0].trigger_instance_id, str(trigger_instance.id)) self.assertEqual(rule_enforcement_dbs[0].rule['id'], str(rule_4_db.id)) self.assertEqual(rule_enforcement_dbs[0].status, RULE_ENFORCEMENT_STATUS_FAILED)
def test_rule_enforcement_is_created_on_exception_3(self): # 1. Exception in payload_lookup.get_value rule_enforcement_dbs = list(RuleEnforcement.get_all()) self.assertEqual(rule_enforcement_dbs, []) self._setup_sample_trigger("st2.test.trigger4") rule_4_db = self._setup_sample_rule(RULE_4) rules = [rule_4_db] trigger_instance = container_utils.create_trigger_instance( "dummy_pack_1.st2.test.trigger4", {"k1": "t2_p_v", "k2": "v2"}, date_utils.get_datetime_utc_now(), ) trigger = get_trigger_db_by_ref(trigger_instance.trigger) rules_matcher = RulesMatcher(trigger_instance, trigger, rules) matching_rules = rules_matcher.get_matching_rules() self.assertEqual(matching_rules, []) self.assertEqual(len(matching_rules), 0) rule_enforcement_dbs = list(RuleEnforcement.get_all()) self.assertEqual(len(rule_enforcement_dbs), 1) expected_failure = ( 'Failed to match rule "yoyohoneysingh.st2.test.rule4" against trigger ' 'instance "%s": There might be a problem with the criteria in rule ' "yoyohoneysingh.st2.test.rule4: exception in equals" % (str(trigger_instance.id)) ) self.assertEqual(rule_enforcement_dbs[0].failure_reason, expected_failure) self.assertEqual( rule_enforcement_dbs[0].trigger_instance_id, str(trigger_instance.id) ) self.assertEqual(rule_enforcement_dbs[0].rule["id"], str(rule_4_db.id)) self.assertEqual(rule_enforcement_dbs[0].status, RULE_ENFORCEMENT_STATUS_FAILED)
def test_rule_enforcement_is_created_on_exception_2(self): # 1. Exception in payload_lookup.get_value rule_enforcement_dbs = list(RuleEnforcement.get_all()) self.assertEqual(rule_enforcement_dbs, []) self._setup_sample_trigger('st2.test.trigger4') rule_4_db = self._setup_sample_rule(RULE_4) rules = [rule_4_db] trigger_instance = container_utils.create_trigger_instance( 'dummy_pack_1.st2.test.trigger4', { 'k1': 't2_p_v', 'k2': 'v2' }, date_utils.get_datetime_utc_now()) trigger = get_trigger_db_by_ref(trigger_instance.trigger) rules_matcher = RulesMatcher(trigger_instance, trigger, rules) matching_rules = rules_matcher.get_matching_rules() self.assertEqual(matching_rules, []) self.assertEqual(len(matching_rules), 0) rule_enforcement_dbs = list(RuleEnforcement.get_all()) self.assertEqual(len(rule_enforcement_dbs), 1) expected_failure = ( 'Failed to match rule "yoyohoneysingh.st2.test.rule4" against trigger ' 'instance "%s": Failed transforming criteria key trigger.k1: ' 'exception in get_value' % (str(trigger_instance.id))) self.assertEqual(rule_enforcement_dbs[0].failure_reason, expected_failure) self.assertEqual(rule_enforcement_dbs[0].trigger_instance_id, str(trigger_instance.id)) self.assertEqual(rule_enforcement_dbs[0].rule['id'], str(rule_4_db.id)) self.assertEqual(rule_enforcement_dbs[0].status, RULE_ENFORCEMENT_STATUS_FAILED)
def test_purge(self): now = date_utils.get_datetime_utc_now() TestPurgeRuleEnforcement._create_save_rule_enforcement( enforced_at=now - timedelta(days=20), ) TestPurgeRuleEnforcement._create_save_rule_enforcement( enforced_at=now - timedelta(days=5), ) self.assertEqual(len(RuleEnforcement.get_all()), 2) purge_rule_enforcements(logger=LOG, timestamp=now - timedelta(days=10)) self.assertEqual(len(RuleEnforcement.get_all()), 1)
def test_no_timestamp_doesnt_delete(self): now = date_utils.get_datetime_utc_now() TestPurgeRuleEnforcement._create_save_rule_enforcement( enforced_at=now - timedelta(days=20), ) self.assertEqual(len(RuleEnforcement.get_all()), 1) expected_msg = "Specify a valid timestamp" self.assertRaisesRegexp( ValueError, expected_msg, purge_rule_enforcements, logger=LOG, timestamp=None, ) self.assertEqual(len(RuleEnforcement.get_all()), 1)