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
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)
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)
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]
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]
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]
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
def _load_rules(self): return [ RegexRuleFactory.from_dao(serialized_rule, self._parsers) for serialized_rule in self._load_file_with_config(self._rules_path) ]