)]}'
{"vitrage/entity_graph/mappings/datasource_info_mapper.py":[{"author":{"_account_id":19209,"name":"Liat","email":"liat.har-tal@nokia.com","username":"liat"},"change_message_id":"ad8bba9704bd60d56bc64bd10c6432056da24e64","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                new_vertex, self.UNDEFINED_DATASOURCE)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def get_datasource_priorities(self, ds_name\u003dNone):"},{"line_number":90,"context_line":"        if ds_name:"},{"line_number":91,"context_line":"            return self.datasources_state_confs[ds_name][self.PRIORITY_VALUES]"},{"line_number":92,"context_line":"        else:"},{"line_number":93,"context_line":"            priorities_dict \u003d \\"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_a85def48","line":90,"range":{"start_line":90,"start_character":11,"end_line":90,"end_character":18},"updated":"2016-05-31 10:35:44.000000000","message":"It is important to be consistently with variables names.\nTherefor I would change ds_name to datasource_name or all other variable to ds_???","commit_id":"b9a8dcdf42acf2ee2f94ebb12dac72c8634ceee2"}],"vitrage/evaluator/scenario_evaluator.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"a111a88b3f49f7ad38081105d328c081fb79c895","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        :type action: ActionInfo"},{"line_number":285,"context_line":"        \"\"\""},{"line_number":286,"context_line":"        # actions are unique in their trigger and scenario_ids"},{"line_number":287,"context_line":"        comp \u003d lambda entry: entry.trigger_id \u003d\u003d action.trigger_id and \\"},{"line_number":288,"context_line":"            entry.scenario_id \u003d\u003d action.scenario_id"},{"line_number":289,"context_line":"        to_remove \u003d next(action_entry for action_entry in self._tracker[key]"},{"line_number":290,"context_line":"                         if comp(action_entry))"},{"line_number":291,"context_line":"        self._tracker[key].remove(to_remove)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_0d94f440","line":288,"range":{"start_line":287,"start_character":7,"end_line":288,"end_character":51},"updated":"2016-05-26 10:18:38.000000000","message":"why not define an inner function","commit_id":"bb6d9a7bcbc9e5c395270c105edd3d52dfe65370"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"a111a88b3f49f7ad38081105d328c081fb79c895","unresolved":false,"context_lines":[{"line_number":294,"context_line":"        return self._tracker[key][0] if self._tracker.get(key, None) else None"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"class CausalTools(object):"},{"line_number":298,"context_line":"    @staticmethod"},{"line_number":299,"context_line":"    def get_score(action_info):"},{"line_number":300,"context_line":"        return 1"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    @staticmethod"},{"line_number":303,"context_line":"    def get_key(action_specs):"},{"line_number":304,"context_line":"        target_ids \u003d {k: v.vertex_id for k, v in action_specs.targets.items()}"},{"line_number":305,"context_line":"        return action_specs.type, hash(tuple(sorted(target_ids.items())))"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"class RaiseAlarmTools(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_6dd94022","line":305,"range":{"start_line":297,"start_character":0,"end_line":305,"end_character":73},"updated":"2016-05-26 10:18:38.000000000","message":"why a class and not functions","commit_id":"bb6d9a7bcbc9e5c395270c105edd3d52dfe65370"},{"author":{"_account_id":19233,"name":"Elisha Rosensweig","email":"elisha@chorus.ai","username":"elisha.rosensweig"},"change_message_id":"ba1410b85e0eec921d73d27acbbfc8d359115e4d","unresolved":false,"context_lines":[{"line_number":303,"context_line":"    def get_key(action_specs):"},{"line_number":304,"context_line":"        target_ids \u003d {k: v.vertex_id for k, v in action_specs.targets.items()}"},{"line_number":305,"context_line":"        return action_specs.type, hash(tuple(sorted(target_ids.items())))"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"class RaiseAlarmTools(object):"},{"line_number":309,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_bff34772","line":306,"updated":"2016-05-26 11:46:58.000000000","message":"because for each type (causal, raise alarm, set state) we have two functions which should match. I\u0027m using classes here to cluster them together.","commit_id":"bb6d9a7bcbc9e5c395270c105edd3d52dfe65370"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"a111a88b3f49f7ad38081105d328c081fb79c895","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        return action_specs.type, hash(tuple(sorted(target_ids.items())))"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"class RaiseAlarmTools(object):"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def __init__(self, scores):"},{"line_number":311,"context_line":"        self.scores \u003d scores"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_4ded5cb6","line":308,"range":{"start_line":308,"start_character":6,"end_line":308,"end_character":21},"updated":"2016-05-26 10:18:38.000000000","message":"did u forget to inherit  CausalTools ?","commit_id":"bb6d9a7bcbc9e5c395270c105edd3d52dfe65370"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"a111a88b3f49f7ad38081105d328c081fb79c895","unresolved":false,"context_lines":[{"line_number":321,"context_line":"            hash(action_specs.targets[TemplateFields.TARGET].vertex_id)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"class SetStateTools(object):"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    def __init__(self, scores):"},{"line_number":327,"context_line":"        self.scores \u003d scores"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_8d18e4d4","line":324,"range":{"start_line":324,"start_character":6,"end_line":324,"end_character":19},"updated":"2016-05-26 10:18:38.000000000","message":"same as above","commit_id":"bb6d9a7bcbc9e5c395270c105edd3d52dfe65370"},{"author":{"_account_id":19209,"name":"Liat","email":"liat.har-tal@nokia.com","username":"liat"},"change_message_id":"ad8bba9704bd60d56bc64bd10c6432056da24e64","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"ActionInfo \u003d \\"},{"line_number":38,"context_line":"    namedtuple(\u0027ActionInfo\u0027, [\u0027specs\u0027, \u0027mode\u0027, \u0027scenario_id\u0027, \u0027trigger_id\u0027])"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_931e5c5d","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":10},"updated":"2016-05-31 10:35:44.000000000","message":"I think you should add an explanation for the ActionInfo fields","commit_id":"b9a8dcdf42acf2ee2f94ebb12dac72c8634ceee2"},{"author":{"_account_id":19209,"name":"Liat","email":"liat.har-tal@nokia.com","username":"liat"},"change_message_id":"ad8bba9704bd60d56bc64bd10c6432056da24e64","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            ActionType.ADD_CAUSAL_RELATIONSHIP: CausalTools"},{"line_number":261,"context_line":"        }"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def get_key(self, action):"},{"line_number":264,"context_line":"        \"\"\"Returns unique identifier the the type \u0026 target of this action"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        :param action:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_330cd0ec","line":263,"range":{"start_line":263,"start_character":22,"end_line":263,"end_character":28},"updated":"2016-05-31 10:35:44.000000000","message":"you should pass action.specs","commit_id":"b9a8dcdf42acf2ee2f94ebb12dac72c8634ceee2"},{"author":{"_account_id":19209,"name":"Liat","email":"liat.har-tal@nokia.com","username":"liat"},"change_message_id":"ad8bba9704bd60d56bc64bd10c6432056da24e64","unresolved":false,"context_lines":[{"line_number":261,"context_line":"        }"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def get_key(self, action):"},{"line_number":264,"context_line":"        \"\"\"Returns unique identifier the the type \u0026 target of this action"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        :param action:"},{"line_number":267,"context_line":"        :type action: ActionInfo"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_d3df4467","line":264,"range":{"start_line":264,"start_character":41,"end_line":264,"end_character":44},"updated":"2016-05-31 10:35:44.000000000","message":"extra \u0027the\u0027","commit_id":"b9a8dcdf42acf2ee2f94ebb12dac72c8634ceee2"},{"author":{"_account_id":19209,"name":"Liat","email":"liat.har-tal@nokia.com","username":"liat"},"change_message_id":"ad8bba9704bd60d56bc64bd10c6432056da24e64","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        return self._action_tools[action.specs.type].get_key(action.specs)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def insert_action(self, key, action):"},{"line_number":272,"context_line":"        \"\"\"Inserts action into tracker. Assumes this action is new in tracker."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        :param action:"},{"line_number":275,"context_line":"        :type action: ActionInfo"},{"line_number":276,"context_line":"        \"\"\""},{"line_number":277,"context_line":"        actions \u003d self._tracker.get(key, [])"},{"line_number":278,"context_line":"        actions.append(action)"},{"line_number":279,"context_line":"        scorer \u003d self._action_tools[action.specs.type].get_score"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_333850ef","line":276,"range":{"start_line":272,"start_character":8,"end_line":276,"end_character":11},"updated":"2016-05-31 10:35:44.000000000","message":"unnecessary comment - please remove it","commit_id":"b9a8dcdf42acf2ee2f94ebb12dac72c8634ceee2"},{"author":{"_account_id":19209,"name":"Liat","email":"liat.har-tal@nokia.com","username":"liat"},"change_message_id":"ad8bba9704bd60d56bc64bd10c6432056da24e64","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        self._tracker[key] \u003d sorted(actions, key\u003dscorer, reverse\u003dTrue)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    def remove_action(self, key, action):"},{"line_number":283,"context_line":"        \"\"\"Removes action from tracker."},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        :param action:"},{"line_number":286,"context_line":"        :type action: ActionInfo"},{"line_number":287,"context_line":"        \"\"\""},{"line_number":288,"context_line":"        # actions are unique in their trigger and scenario_ids"},{"line_number":289,"context_line":"        def _is_equivalent(entry):"},{"line_number":290,"context_line":"            return entry.trigger_id \u003d\u003d action.trigger_id and \\"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_d37904ca","line":287,"range":{"start_line":283,"start_character":8,"end_line":287,"end_character":11},"updated":"2016-05-31 10:35:44.000000000","message":"unnecessary comment - please remove it","commit_id":"b9a8dcdf42acf2ee2f94ebb12dac72c8634ceee2"},{"author":{"_account_id":19209,"name":"Liat","email":"liat.har-tal@nokia.com","username":"liat"},"change_message_id":"ad8bba9704bd60d56bc64bd10c6432056da24e64","unresolved":false,"context_lines":[{"line_number":301,"context_line":"        return self._tracker[key][0] if self._tracker.get(key, None) else None"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"class ActionTools(object):"},{"line_number":305,"context_line":"    @staticmethod"},{"line_number":306,"context_line":"    def get_score(action_info):"},{"line_number":307,"context_line":"        pass"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    @staticmethod"},{"line_number":310,"context_line":"    def get_key(action_specs):"},{"line_number":311,"context_line":"        pass"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"class CausalTools(ActionTools):"},{"line_number":315,"context_line":"    @staticmethod"},{"line_number":316,"context_line":"    def get_score(action_info):"},{"line_number":317,"context_line":"        return 1  # no priorities"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    @staticmethod"},{"line_number":320,"context_line":"    def get_key(action_specs):"},{"line_number":321,"context_line":"        target_ids \u003d {k: v.vertex_id for k, v in action_specs.targets.items()}"},{"line_number":322,"context_line":"        return action_specs.type, hash(tuple(sorted(target_ids.items())))"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"class RaiseAlarmTools(ActionTools):"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    def __init__(self, scores):"},{"line_number":328,"context_line":"        self.scores \u003d scores"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    def get_score(self, action_info):"},{"line_number":331,"context_line":"        severity \u003d action_info.specs.properties[TemplateFields.SEVERITY]"},{"line_number":332,"context_line":"        return self.scores[severity.upper()]"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    @staticmethod"},{"line_number":335,"context_line":"    def get_key(action_specs):"},{"line_number":336,"context_line":"        return action_specs.type, \\"},{"line_number":337,"context_line":"            action_specs.properties[TemplateFields.ALARM_NAME], \\"},{"line_number":338,"context_line":"            hash(action_specs.targets[TemplateFields.TARGET].vertex_id)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"class SetStateTools(ActionTools):"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def __init__(self, scores):"},{"line_number":344,"context_line":"        self.scores \u003d scores"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"    def get_score(self, action_info):"},{"line_number":347,"context_line":"        state \u003d action_info.specs.properties[TemplateFields.STATE].upper()"},{"line_number":348,"context_line":"        target_resource \u003d action_info.specs.targets[TemplateFields.TARGET]"},{"line_number":349,"context_line":"        return self.scores[target_resource[VProps.TYPE]][state]"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"    @staticmethod"},{"line_number":352,"context_line":"    def get_key(action_specs):"},{"line_number":353,"context_line":"        return action_specs.type, \\"},{"line_number":354,"context_line":"            hash(action_specs.targets[TemplateFields.TARGET].vertex_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_4e844b5d","line":354,"range":{"start_line":304,"start_character":0,"end_line":354,"end_character":71},"updated":"2016-05-31 10:35:44.000000000","message":"move it to new module - evaluator_action_tools","commit_id":"b9a8dcdf42acf2ee2f94ebb12dac72c8634ceee2"}],"vitrage/tests/functional/evaluator/test_scenario_evaluator.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"a111a88b3f49f7ad38081105d328c081fb79c895","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        self.assertEqual(\u0027RUNNING\u0027, host_v[VProps.AGGREGATED_STATE],"},{"line_number":101,"context_line":"                         \u0027host should be RUNNING when starting\u0027)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        # generate nagios alarm to trigger"},{"line_number":104,"context_line":"        test_vals \u003d {\u0027status\u0027: \u0027WARNING\u0027, \u0027resource_name\u0027: target_host,"},{"line_number":105,"context_line":"                     \u0027service\u0027: \u0027cause_suboptimal_state\u0027}"},{"line_number":106,"context_line":"        generator \u003d mock_driver.simple_nagios_alarm_generators(1, 1, test_vals)"},{"line_number":107,"context_line":"        nagios_event \u003d mock_driver.generate_random_events_list(generator)[0]"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        host_v \u003d self.get_host_after_event(event_queue, nagios_event,"},{"line_number":110,"context_line":"                                           processor, target_host)"},{"line_number":111,"context_line":"        self.assertEqual(\u0027SUBOPTIMAL\u0027, host_v[VProps.AGGREGATED_STATE],"},{"line_number":112,"context_line":"                         \u0027host should be SUBOPTIMAL after nagios alarm event\u0027)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # generate CRITICAL nagios alarm to trigger"},{"line_number":115,"context_line":"        test_vals \u003d {\u0027status\u0027: \u0027CRITICAL\u0027, \u0027resource_name\u0027: target_host,"},{"line_number":116,"context_line":"                     \u0027service\u0027: \u0027cause_error_state\u0027}"},{"line_number":117,"context_line":"        generator \u003d mock_driver.simple_nagios_alarm_generators(1, 1, test_vals)"},{"line_number":118,"context_line":"        nagios_event_2 \u003d mock_driver.generate_random_events_list(generator)[0]"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        host_v \u003d self.get_host_after_event(event_queue, nagios_event_2,"},{"line_number":121,"context_line":"                                           processor, target_host)"},{"line_number":122,"context_line":"        self.assertEqual(\u0027ERROR\u0027, host_v[VProps.AGGREGATED_STATE],"},{"line_number":123,"context_line":"                         \u0027host should be ERROR after critical alarm\u0027)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        # next disable the critical alarm"},{"line_number":126,"context_line":"        nagios_event_2[\u0027status\u0027] \u003d \u0027OK\u0027"},{"line_number":127,"context_line":"        host_v \u003d self.get_host_after_event(event_queue, nagios_event_2,"},{"line_number":128,"context_line":"                                           processor, target_host)"},{"line_number":129,"context_line":"        self.assertEqual(\u0027SUBOPTIMAL\u0027, host_v[VProps.AGGREGATED_STATE],"},{"line_number":130,"context_line":"                         \u0027host should be SUBOPTIMAL with only warning alarm\u0027)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        # next disable the alarm"},{"line_number":133,"context_line":"        nagios_event[\u0027status\u0027] \u003d \u0027OK\u0027"},{"line_number":134,"context_line":"        host_v \u003d self.get_host_after_event(event_queue, nagios_event,"},{"line_number":135,"context_line":"                                           processor, target_host)"},{"line_number":136,"context_line":"        self.assertEqual(\u0027RUNNING\u0027, host_v[VProps.AGGREGATED_STATE],"},{"line_number":137,"context_line":"                         \u0027host should be RUNNING after nagios alarm OK\u0027)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def test_overlapping_deduced_state_2(self):"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_ad61683b","line":137,"range":{"start_line":103,"start_character":7,"end_line":137,"end_character":72},"updated":"2016-05-26 10:18:38.000000000","message":"instead of comments extract functions with the same name","commit_id":"bb6d9a7bcbc9e5c395270c105edd3d52dfe65370"},{"author":{"_account_id":19233,"name":"Elisha Rosensweig","email":"elisha@chorus.ai","username":"elisha.rosensweig"},"change_message_id":"ba1410b85e0eec921d73d27acbbfc8d359115e4d","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                                           processor, target_host)"},{"line_number":136,"context_line":"        self.assertEqual(\u0027RUNNING\u0027, host_v[VProps.AGGREGATED_STATE],"},{"line_number":137,"context_line":"                         \u0027host should be RUNNING after nagios alarm OK\u0027)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def test_overlapping_deduced_state_2(self):"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        # Test Setup"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_1f57f35a","line":138,"updated":"2016-05-26 11:46:58.000000000","message":"The code is I think clear as is, but the comments help give overview of steps","commit_id":"bb6d9a7bcbc9e5c395270c105edd3d52dfe65370"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"87544caf9a481fc517b9c9bc3be5f2f4a067fd99","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_deduced_state(self):"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        # Test Setup"},{"line_number":57,"context_line":"        processor \u003d self._create_processor_with_graph(self.conf)"},{"line_number":58,"context_line":"        event_queue \u003d queue.Queue()"},{"line_number":59,"context_line":"        ScenarioEvaluator(self.conf,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_72593bfe","line":56,"updated":"2016-05-31 08:28:58.000000000","message":"Whole test setup paragraph is duplicated too many times","commit_id":"b9a8dcdf42acf2ee2f94ebb12dac72c8634ceee2"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"87544caf9a481fc517b9c9bc3be5f2f4a067fd99","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def test_overlapping_deduced_state_1(self):"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        # Test Setup"},{"line_number":92,"context_line":"        processor \u003d self._create_processor_with_graph(self.conf)"},{"line_number":93,"context_line":"        event_queue \u003d queue.Queue()"},{"line_number":94,"context_line":"        ScenarioEvaluator(self.conf,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_525cf7ec","line":91,"updated":"2016-05-31 08:28:58.000000000","message":"Whole test setup paragraph is duplicated too many times","commit_id":"b9a8dcdf42acf2ee2f94ebb12dac72c8634ceee2"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"87544caf9a481fc517b9c9bc3be5f2f4a067fd99","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        host_v \u003d self.get_host_after_event(event_queue, critical_test,"},{"line_number":123,"context_line":"                                           processor, target_host)"},{"line_number":124,"context_line":"        self.assertEqual(\u0027ERROR\u0027, host_v[VProps.AGGREGATED_STATE],"},{"line_number":125,"context_line":"                         \u0027host should be ERROR after critical alarm\u0027)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        # next disable the critical alarm"},{"line_number":128,"context_line":"        critical_test[\u0027status\u0027] \u003d \u0027OK\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_f2788bf4","line":125,"updated":"2016-05-31 08:28:58.000000000","message":"\"host should be ERROR after critical alarm event\"\n(or discard \"event\" in other warnings)\nSame with all other assert exceptions in this class.","commit_id":"b9a8dcdf42acf2ee2f94ebb12dac72c8634ceee2"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"87544caf9a481fc517b9c9bc3be5f2f4a067fd99","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def test_overlapping_deduced_state_2(self):"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        # Test Setup"},{"line_number":144,"context_line":"        processor \u003d self._create_processor_with_graph(self.conf)"},{"line_number":145,"context_line":"        event_queue \u003d queue.Queue()"},{"line_number":146,"context_line":"        ScenarioEvaluator(self.conf,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_b273a37f","line":143,"updated":"2016-05-31 08:28:58.000000000","message":"Whole test setup paragraph is duplicated too many times","commit_id":"b9a8dcdf42acf2ee2f94ebb12dac72c8634ceee2"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"87544caf9a481fc517b9c9bc3be5f2f4a067fd99","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                         \u0027host should be SUBOPTIMAL with only warning alarm\u0027)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def test_deduced_alarm(self):"},{"line_number":188,"context_line":"        # Test Setup"},{"line_number":189,"context_line":"        processor \u003d self._create_processor_with_graph(self.conf)"},{"line_number":190,"context_line":"        event_queue \u003d queue.Queue()"},{"line_number":191,"context_line":"        ScenarioEvaluator(self.conf,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_f26d2b99","line":188,"updated":"2016-05-31 08:28:58.000000000","message":"Whole test setup paragraph is duplicated too many times","commit_id":"b9a8dcdf42acf2ee2f94ebb12dac72c8634ceee2"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"87544caf9a481fc517b9c9bc3be5f2f4a067fd99","unresolved":false,"context_lines":[{"line_number":226,"context_line":"    # todo: (erosensw) uncomment this test"},{"line_number":227,"context_line":"    def test_overlapping_deduced_alarm_1(self):"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        # Test Setup"},{"line_number":230,"context_line":"        processor \u003d self._create_processor_with_graph(self.conf)"},{"line_number":231,"context_line":"        event_queue \u003d queue.Queue()"},{"line_number":232,"context_line":"        ScenarioEvaluator(self.conf,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_320693ce","line":229,"updated":"2016-05-31 08:28:58.000000000","message":"Whole test setup paragraph is duplicated too many times","commit_id":"b9a8dcdf42acf2ee2f94ebb12dac72c8634ceee2"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"87544caf9a481fc517b9c9bc3be5f2f4a067fd99","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                          enabled\u003dTrue)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        target_host \u003d \u0027host-2\u0027"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        # generate WARNING nagios alarm"},{"line_number":241,"context_line":"        vals \u003d {\u0027status\u0027: \u0027WARNING\u0027, \u0027resource_name\u0027: target_host,"},{"line_number":242,"context_line":"                \u0027service\u0027: \u0027cause_warning_deduced_alarm\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_929f7f4f","line":239,"updated":"2016-05-31 08:28:58.000000000","message":"Should host be available when starting ?","commit_id":"b9a8dcdf42acf2ee2f94ebb12dac72c8634ceee2"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"87544caf9a481fc517b9c9bc3be5f2f4a067fd99","unresolved":false,"context_lines":[{"line_number":290,"context_line":""},{"line_number":291,"context_line":"    def test_overlapping_deduced_alarm_2(self):"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        # Test Setup"},{"line_number":294,"context_line":"        processor \u003d self._create_processor_with_graph(self.conf)"},{"line_number":295,"context_line":"        event_queue \u003d queue.Queue()"},{"line_number":296,"context_line":"        ScenarioEvaluator(self.conf,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_72101b02","line":293,"updated":"2016-05-31 08:28:58.000000000","message":"Whole test setup paragraph is duplicated too many times","commit_id":"b9a8dcdf42acf2ee2f94ebb12dac72c8634ceee2"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"87544caf9a481fc517b9c9bc3be5f2f4a067fd99","unresolved":false,"context_lines":[{"line_number":300,"context_line":"                          enabled\u003dTrue)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        target_host \u003d \u0027host-2\u0027"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        # generate CRITICAL nagios alarm to trigger"},{"line_number":305,"context_line":"        test_vals \u003d {\u0027status\u0027: \u0027CRITICAL\u0027, \u0027resource_name\u0027: target_host,"},{"line_number":306,"context_line":"                     \u0027service\u0027: \u0027cause_critical_deduced_alarm\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_d272a748","line":303,"updated":"2016-05-31 08:28:58.000000000","message":"Should host be available after starting ?","commit_id":"b9a8dcdf42acf2ee2f94ebb12dac72c8634ceee2"}]}
