示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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)