예제 #1
0
파일: __init__.py 프로젝트: szopu/whylog
 def add_rule(self, user_rule_intent):
     created_rule = RegexRuleFactory.create_from_intent(user_rule_intent)
     self._save_rule_definition(created_rule.serialize())
     created_parsers = created_rule.get_new_parsers(self._parsers)
     self._save_parsers_definition(parser.serialize() for parser in created_parsers)
     self._rules.append(created_rule)
     for parser in created_parsers:
         self._parsers[parser.name] = parser
예제 #2
0
 def add_rule(self, user_rule_intent):
     created_rule = RegexRuleFactory.create_from_intent(user_rule_intent)
     self._save_rule_definition(created_rule.serialize())
     created_parsers = created_rule.get_new_parsers(self._parser_name_generator)
     self._save_parsers_definition(parser.serialize() for parser in created_parsers)
     self._rules[created_rule.get_effect_name()].append(created_rule)
     for parser in created_parsers:
         self._parsers[parser.name] = parser
         self._parsers_grouped_by_log_type[parser.log_type].append(parser)
     self._parser_name_generator = ParserNameGenerator(self._parsers)
예제 #3
0
 def add_rule(self, user_rule_intent):
     created_rule = RegexRuleFactory.create_from_intent(user_rule_intent)
     self._save_rule_definition(created_rule.serialize())
     created_parsers = created_rule.get_new_parsers(
         self._parser_name_generator)
     self._save_parsers_definition(parser.serialize()
                                   for parser in created_parsers)
     self._rules[created_rule.get_effect_name()].append(created_rule)
     for parser in created_parsers:
         self._parsers[parser.name] = parser
         self._parsers_grouped_by_log_type[parser.log_type].append(parser)
     self._parser_name_generator = ParserNameGenerator(self._parsers)
예제 #4
0
    def test_order_causes_list(self):
        cause_1 = RegexParser('cause_a', None, '', None, None, None)
        cause_2 = RegexParser('cause_b', None, '', None, None, None)
        cause_3 = RegexParser('cause_c', None, '', None, None, None)

        causes = [cause_2, cause_3, cause_2, cause_1]
        constraints = [
            {
                'clues_groups': [[0, 1], [1, 3], [2, 4], [3, 7], [4, 2]],
                'name': 'identical',
                'params': {}
            }, {
                'clues_groups': [[0, 1], [4, 2]],
                'name': 'identical',
                'params': {}
            }
        ]

        sorted_causes, modified_constrains = RegexRuleFactory._order_causes_list(
            causes, constraints
        )

        option_1 = [
            {
                'clues_groups': [[0, 1], [2, 3], [4, 4], [3, 7], [1, 2]],
                'name': 'identical',
                'params': {}
            }, {
                'clues_groups': [[0, 1], [1, 2]],
                'name': 'identical',
                'params': {}
            }
        ]
        option_2 = [
            {
                'clues_groups': [[0, 1], [3, 3], [4, 4], [2, 7], [1, 2]],
                'name': 'identical',
                'params': {}
            }, {
                'clues_groups': [[0, 1], [1, 2]],
                'name': 'identical',
                'params': {}
            }
        ]
        assert all(
            sorted_causes[i].name <= sorted_causes[i + 1].name
            for i in six.moves.range(len(sorted_causes) - 1)
        )
        assert modified_constrains in [option_1, option_2]
예제 #5
0
파일: test_rule.py 프로젝트: wlixin/whylog
    def test_order_causes_list(self):
        cause_1 = RegexParser('cause_a', None, '', None, None, None)
        cause_2 = RegexParser('cause_b', None, '', None, None, None)
        cause_3 = RegexParser('cause_c', None, '', None, None, None)

        causes = [cause_2, cause_3, cause_2, cause_1]
        constraints = [{
            'clues_groups': [[0, 1], [1, 3], [2, 4], [3, 7], [4, 2]],
            'name': 'identical',
            'params': {}
        }, {
            'clues_groups': [[0, 1], [4, 2]],
            'name': 'identical',
            'params': {}
        }]

        sorted_causes, modified_constrains = RegexRuleFactory._order_causes_list(
            causes, constraints)

        option_1 = [{
            'clues_groups': [[0, 1], [2, 3], [4, 4], [3, 7], [1, 2]],
            'name': 'identical',
            'params': {}
        }, {
            'clues_groups': [[0, 1], [1, 2]],
            'name': 'identical',
            'params': {}
        }]
        option_2 = [{
            'clues_groups': [[0, 1], [3, 3], [4, 4], [2, 7], [1, 2]],
            'name': 'identical',
            'params': {}
        }, {
            'clues_groups': [[0, 1], [1, 2]],
            'name': 'identical',
            'params': {}
        }]
        assert all(sorted_causes[i].name <= sorted_causes[i + 1].name
                   for i in six.moves.range(len(sorted_causes) - 1))
        assert modified_constrains in [option_1, option_2]
예제 #6
0
파일: __init__.py 프로젝트: szopu/whylog
    def test_simple_transform(self):
        rule = RegexRuleFactory.create_from_intent(self.user_intent)

        assert rule._effect.regex_str == self.regex3
        assert sorted(cause.regex_str for cause in rule._causes) == [self.regex1, self.regex2]
예제 #7
0
 def _load_rules(self):
     loaded_rules = defaultdict(list)
     for serialized_rule in self._load_file_with_config(self._rules_path):
         rule = RegexRuleFactory.from_dao(serialized_rule, self._parsers)
         loaded_rules[serialized_rule["effect"]].append(rule)
     return loaded_rules
예제 #8
0
 def _load_rules(self):
     loaded_rules = defaultdict(list)
     for serialized_rule in self._load_file_with_config(self._rules_path):
         rule = RegexRuleFactory.from_dao(serialized_rule, self._parsers)
         loaded_rules[serialized_rule["effect"]].append(rule)
     return loaded_rules
예제 #9
0
파일: __init__.py 프로젝트: wlixin/whylog
    def test_simple_transform(self):
        rule = RegexRuleFactory.create_from_intent(self.user_intent)

        assert rule._effect.regex_str == self.regex3
        assert sorted(cause.regex_str for cause in rule._causes) == [self.regex1, self.regex2]
예제 #10
0
파일: __init__.py 프로젝트: szopu/whylog
 def _load_rules(self):
     return [
         RegexRuleFactory.from_dao(serialized_rule, self._parsers)
         for serialized_rule in self._load_file_with_config(self._rules_path)
     ]