)]}'
{"vitrage_tempest_tests/tests/e2e/test_e2e_webhook.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"93aadd3984918a7c7d76649275473dc1d1acfb32","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            self.assertEqual(2, len(self.mock_server.requests),"},{"line_number":121,"context_line":"                             \u0027Wrong number of notifications for clear alarm\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        finally:"},{"line_number":124,"context_line":"            self._clear_messages()"},{"line_number":125,"context_line":"            self._delete_webhooks()"},{"line_number":126,"context_line":"            self._trigger_undo_action(TRIGGER_ALARM_1)"},{"line_number":127,"context_line":"            self.mock_server.reset_requests_list()"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @utils.tempest_logger"},{"line_number":130,"context_line":"    def test_webhook_with_no_filter(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_6a8b4b67","line":127,"range":{"start_line":123,"start_character":8,"end_line":127,"end_character":50},"updated":"2018-02-12 15:11:36.000000000","message":"use setup and tearDown instead of finally","commit_id":"dbd004ebcb4f48f519e8ee442082ec43c3e31c7b"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"39dc3e222211f686798ab5748f2dc136289f436a","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            self.assertEqual(2, len(self.mock_server.requests),"},{"line_number":121,"context_line":"                             \u0027Wrong number of notifications for clear alarm\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        finally:"},{"line_number":124,"context_line":"            self._clear_messages()"},{"line_number":125,"context_line":"            self._delete_webhooks()"},{"line_number":126,"context_line":"            self._trigger_undo_action(TRIGGER_ALARM_1)"},{"line_number":127,"context_line":"            self.mock_server.reset_requests_list()"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @utils.tempest_logger"},{"line_number":130,"context_line":"    def test_webhook_with_no_filter(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_ab586330","line":127,"range":{"start_line":123,"start_character":8,"end_line":127,"end_character":50},"in_reply_to":"3fa0c359_0dd66129","updated":"2018-02-13 07:44:50.000000000","message":"NO\n\nsetUp and tearDown are per test\nsetUpClass and tearDownClass are per test class","commit_id":"dbd004ebcb4f48f519e8ee442082ec43c3e31c7b"},{"author":{"_account_id":26464,"name":"Niv Oppenhaim","email":"niv.oppenhaim@nokia.com","username":"nivolas"},"change_message_id":"a74f59a111105463c1ebd1a16c7e79ee2ef3c087","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            self.assertEqual(2, len(self.mock_server.requests),"},{"line_number":121,"context_line":"                             \u0027Wrong number of notifications for clear alarm\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        finally:"},{"line_number":124,"context_line":"            self._clear_messages()"},{"line_number":125,"context_line":"            self._delete_webhooks()"},{"line_number":126,"context_line":"            self._trigger_undo_action(TRIGGER_ALARM_1)"},{"line_number":127,"context_line":"            self.mock_server.reset_requests_list()"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @utils.tempest_logger"},{"line_number":130,"context_line":"    def test_webhook_with_no_filter(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_0dd66129","line":127,"range":{"start_line":123,"start_character":8,"end_line":127,"end_character":50},"in_reply_to":"3fa0c359_6a8b4b67","updated":"2018-02-12 15:35:50.000000000","message":"tearDown is only when all the tests finish no? These are things I need to do after each test","commit_id":"dbd004ebcb4f48f519e8ee442082ec43c3e31c7b"},{"author":{"_account_id":26464,"name":"Niv Oppenhaim","email":"niv.oppenhaim@nokia.com","username":"nivolas"},"change_message_id":"0c7374319c9d83e7d39e9206bb06ab144e4772f9","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            self.assertEqual(2, len(self.mock_server.requests),"},{"line_number":121,"context_line":"                             \u0027Wrong number of notifications for clear alarm\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        finally:"},{"line_number":124,"context_line":"            self._clear_messages()"},{"line_number":125,"context_line":"            self._delete_webhooks()"},{"line_number":126,"context_line":"            self._trigger_undo_action(TRIGGER_ALARM_1)"},{"line_number":127,"context_line":"            self.mock_server.reset_requests_list()"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @utils.tempest_logger"},{"line_number":130,"context_line":"    def test_webhook_with_no_filter(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_1d53da18","line":127,"range":{"start_line":123,"start_character":8,"end_line":127,"end_character":50},"in_reply_to":"3fa0c359_ab586330","updated":"2018-02-13 08:24:24.000000000","message":"Done","commit_id":"dbd004ebcb4f48f519e8ee442082ec43c3e31c7b"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"0c0e12ffd7e1c37032b82b444da5695dc9e75674","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3fa0c359_9d3e0ab6","updated":"2018-02-13 08:24:42.000000000","message":"add setUp that calls only super\nif you don\u0027t need any setup for the moment","commit_id":"2758cefd36871dd3074f3cb3b9eaed0a5d655b16"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"6cdff81b76dbc09d11d9486b3ff0544656698ce6","unresolved":false,"context_lines":[{"line_number":283,"context_line":""},{"line_number":284,"context_line":"            alarm \u003d ast.literal_eval(messages[0])"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"            # check that only specified fields are sent for the alarm"},{"line_number":287,"context_line":"            passed_filter \u003d [k for k, v in alarm.items()"},{"line_number":288,"context_line":"                             if k not in"},{"line_number":289,"context_line":"                             ALARM_FILTER]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_fdeb8e0f","line":286,"range":{"start_line":286,"start_character":12,"end_line":286,"end_character":69},"updated":"2018-02-13 08:34:23.000000000","message":"Please check also the opposite: that all the fields in ALARM_FILTER are sent.\nIt might be a good idea to prepare a json with the expected result and compare field by field, or maybe even do a hard-coded comparison. Timestamps and ids will be different, but we should still check that they exist; and everything else should be the identical.\nI think it\u0027s important that we know immediately if the format of the output message has changed.","commit_id":"2758cefd36871dd3074f3cb3b9eaed0a5d655b16"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"6cdff81b76dbc09d11d9486b3ff0544656698ce6","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def _clear_messages(self):"},{"line_number":310,"context_line":"        for i in range(len(messages)):"},{"line_number":311,"context_line":"            messages.pop(0)"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"def _get_free_port():"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_9d484a2d","line":311,"range":{"start_line":311,"start_character":12,"end_line":311,"end_character":27},"updated":"2018-02-13 08:34:23.000000000","message":"Isn\u0027t there a way to clear all?","commit_id":"2758cefd36871dd3074f3cb3b9eaed0a5d655b16"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"d8df2f27cd776fd385404f1065e6aa2210e7061a","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"            # check that only specified fields are sent for the alarm,"},{"line_number":282,"context_line":"            # payload and resource"},{"line_number":283,"context_line":"            passed_filter \u003d [k for k, v in alarm.items()"},{"line_number":284,"context_line":"                             if k not in"},{"line_number":285,"context_line":"                             MAIN_FILTER]"},{"line_number":286,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa0c359_b3121561","line":283,"range":{"start_line":283,"start_character":38,"end_line":283,"end_character":39},"updated":"2018-02-13 10:20:43.000000000","message":"you are not using v\nso iterate on alarm which iterates on keys by default","commit_id":"b33b7f6b4a080d6304f6f94beebb1dc64ddd70f1"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"d8df2f27cd776fd385404f1065e6aa2210e7061a","unresolved":false,"context_lines":[{"line_number":294,"context_line":""},{"line_number":295,"context_line":"                self.assertEqual(0, len(passed_filter),"},{"line_number":296,"context_line":"                                 \"Wrong alarm fields sent\")"},{"line_number":297,"context_line":"                sent_fields \u003d [k for k, v in payload.items() if k in"},{"line_number":298,"context_line":"                               DOCTOR_ALARM_FILTER]"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"                self.assertEqual(len(sent_fields), len(DOCTOR_ALARM_FILTER),"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa0c359_53015105","line":297,"range":{"start_line":297,"start_character":45,"end_line":297,"end_character":60},"updated":"2018-02-13 10:20:43.000000000","message":"same as above","commit_id":"b33b7f6b4a080d6304f6f94beebb1dc64ddd70f1"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"d8df2f27cd776fd385404f1065e6aa2210e7061a","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"                resource \u003d payload.get(VProps.RESOURCE)"},{"line_number":304,"context_line":"                if resource:"},{"line_number":305,"context_line":"                    passed_filter \u003d [k for k, v in resource.items() if k not in"},{"line_number":306,"context_line":"                                     RESOURCE_FILTER]"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"                    self.assertEqual(0, len(passed_filter),"},{"line_number":309,"context_line":"                                     \"Wrong resource fields sent\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa0c359_1605f710","line":306,"range":{"start_line":305,"start_character":36,"end_line":306,"end_character":53},"updated":"2018-02-13 10:20:43.000000000","message":"same as above","commit_id":"b33b7f6b4a080d6304f6f94beebb1dc64ddd70f1"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"d8df2f27cd776fd385404f1065e6aa2210e7061a","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                    self.assertEqual(0, len(passed_filter),"},{"line_number":309,"context_line":"                                     \"Wrong resource fields sent\")"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"                    sent_fields \u003d [k for k, v in resource.items() if k in"},{"line_number":312,"context_line":"                                   RESOURCE_FILTER]"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"                    self.assertEqual(len(sent_fields), len(RESOURCE_FILTER),"},{"line_number":315,"context_line":"                                     \"Some resource fields not sent\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa0c359_d60a2f1e","line":312,"range":{"start_line":311,"start_character":35,"end_line":312,"end_character":51},"updated":"2018-02-13 10:20:43.000000000","message":"same as above","commit_id":"b33b7f6b4a080d6304f6f94beebb1dc64ddd70f1"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"d8df2f27cd776fd385404f1065e6aa2210e7061a","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"                    sent_fields \u003d [k for k, v in resource.items() if k in"},{"line_number":312,"context_line":"                                   RESOURCE_FILTER]"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"                    self.assertEqual(len(sent_fields), len(RESOURCE_FILTER),"},{"line_number":315,"context_line":"                                     \"Some resource fields not sent\")"},{"line_number":316,"context_line":"        finally:"},{"line_number":317,"context_line":"            self._trigger_undo_action(TRIGGER_ALARM_1)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa0c359_56161f4b","line":314,"range":{"start_line":313,"start_character":0,"end_line":314,"end_character":14},"updated":"2018-02-13 10:20:43.000000000","message":"you can create a method to filter instead of all this duplication","commit_id":"b33b7f6b4a080d6304f6f94beebb1dc64ddd70f1"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"e75a92aaff696b232eb1f1331f03c429c246bb92","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"            # check that only specified fields are sent for the alarm,"},{"line_number":282,"context_line":"            # payload and resource"},{"line_number":283,"context_line":"            passed_filter \u003d [k for k in alarm.keys()"},{"line_number":284,"context_line":"                             if k not in"},{"line_number":285,"context_line":"                             MAIN_FILTER]"},{"line_number":286,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa0c359_16d97755","line":283,"range":{"start_line":283,"start_character":46,"end_line":283,"end_character":51},"updated":"2018-02-13 10:34:17.000000000","message":"remove keys\niteration on dictionary is by default on keys","commit_id":"b6f3c253f5c1baa1eec868260f7cea7e90d20334"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"455a3c02422cfb56b9ec9f38041dacbb2a3c64ba","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                             if k not in"},{"line_number":285,"context_line":"                             MAIN_FILTER]"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"            self.assertEqual(0, len(passed_filter),"},{"line_number":288,"context_line":"                             \"Wrong main fields sent\")"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"            payload \u003d alarm.get(PAYLOAD)"},{"line_number":291,"context_line":"            if payload:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa0c359_2be2d030","line":288,"range":{"start_line":287,"start_character":12,"end_line":288,"end_character":54},"updated":"2018-02-15 11:57:42.000000000","message":"there are utility asserts in base class to check is empty\nmore clearer this way","commit_id":"db080f08ec1d5864b943e006c98738a8ab2f45e1"},{"author":{"_account_id":26464,"name":"Niv Oppenhaim","email":"niv.oppenhaim@nokia.com","username":"nivolas"},"change_message_id":"aaa8ff61de7d4e692ea6d97f87db9bb3f9f696c3","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                             if k not in"},{"line_number":285,"context_line":"                             MAIN_FILTER]"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"            self.assertEqual(0, len(passed_filter),"},{"line_number":288,"context_line":"                             \"Wrong main fields sent\")"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"            payload \u003d alarm.get(PAYLOAD)"},{"line_number":291,"context_line":"            if payload:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa0c359_dfd52245","line":288,"range":{"start_line":287,"start_character":12,"end_line":288,"end_character":54},"in_reply_to":"3fa0c359_2be2d030","updated":"2018-02-15 13:53:39.000000000","message":"I couldn\u0027t find one, I think also this is how this assert is done in other tests as well","commit_id":"db080f08ec1d5864b943e006c98738a8ab2f45e1"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"ab9f1e161fb2d39278fc2e248b8ecdd6b00561bf","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"            # check that only specified fields are sent for the alarm,"},{"line_number":282,"context_line":"            # payload and resource"},{"line_number":283,"context_line":"            passed_filter \u003d [k for k in alarm"},{"line_number":284,"context_line":"                             if k not in"},{"line_number":285,"context_line":"                             MAIN_FILTER]"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"            self.assertEqual(0, len(passed_filter),"},{"line_number":288,"context_line":"                             \"Wrong main fields sent\")"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"            payload \u003d alarm.get(PAYLOAD)"},{"line_number":291,"context_line":"            if payload:"},{"line_number":292,"context_line":"                passed_filter \u003d [k for k in payload if k not in"},{"line_number":293,"context_line":"                                 DOCTOR_ALARM_FILTER]"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"                self.assertEqual(0, len(passed_filter),"},{"line_number":296,"context_line":"                                 \"Wrong alarm fields sent\")"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"                sent_fields \u003d [k for k in payload if k in"},{"line_number":299,"context_line":"                               DOCTOR_ALARM_FILTER]"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"                self.assertEqual(len(sent_fields), len(DOCTOR_ALARM_FILTER),"},{"line_number":302,"context_line":"                                 \"Some alarm fields not sent\")"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"                resource \u003d payload.get(VProps.RESOURCE)"},{"line_number":305,"context_line":"                if resource:"},{"line_number":306,"context_line":"                    passed_filter \u003d [k for k in resource if k not in"},{"line_number":307,"context_line":"                                     RESOURCE_FILTER]"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"                    self.assertEqual(0, len(passed_filter),"},{"line_number":310,"context_line":"                                     \"Wrong resource fields sent\")"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"                    sent_fields \u003d [k for k in resource if k in"},{"line_number":313,"context_line":"                                   RESOURCE_FILTER]"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"                    self.assertEqual(len(sent_fields), len(RESOURCE_FILTER),"},{"line_number":316,"context_line":"                                     \"Some resource fields not sent\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa0c359_e31f32b5","line":313,"range":{"start_line":283,"start_character":12,"end_line":313,"end_character":51},"updated":"2018-02-15 10:09:23.000000000","message":"all the filters are all the same only the filter is different\nwhy not extract a method ?","commit_id":"db080f08ec1d5864b943e006c98738a8ab2f45e1"},{"author":{"_account_id":26464,"name":"Niv Oppenhaim","email":"niv.oppenhaim@nokia.com","username":"nivolas"},"change_message_id":"aaa8ff61de7d4e692ea6d97f87db9bb3f9f696c3","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"            # check that only specified fields are sent for the alarm,"},{"line_number":282,"context_line":"            # payload and resource"},{"line_number":283,"context_line":"            passed_filter \u003d [k for k in alarm"},{"line_number":284,"context_line":"                             if k not in"},{"line_number":285,"context_line":"                             MAIN_FILTER]"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"            self.assertEqual(0, len(passed_filter),"},{"line_number":288,"context_line":"                             \"Wrong main fields sent\")"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"            payload \u003d alarm.get(PAYLOAD)"},{"line_number":291,"context_line":"            if payload:"},{"line_number":292,"context_line":"                passed_filter \u003d [k for k in payload if k not in"},{"line_number":293,"context_line":"                                 DOCTOR_ALARM_FILTER]"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"                self.assertEqual(0, len(passed_filter),"},{"line_number":296,"context_line":"                                 \"Wrong alarm fields sent\")"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"                sent_fields \u003d [k for k in payload if k in"},{"line_number":299,"context_line":"                               DOCTOR_ALARM_FILTER]"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"                self.assertEqual(len(sent_fields), len(DOCTOR_ALARM_FILTER),"},{"line_number":302,"context_line":"                                 \"Some alarm fields not sent\")"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"                resource \u003d payload.get(VProps.RESOURCE)"},{"line_number":305,"context_line":"                if resource:"},{"line_number":306,"context_line":"                    passed_filter \u003d [k for k in resource if k not in"},{"line_number":307,"context_line":"                                     RESOURCE_FILTER]"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"                    self.assertEqual(0, len(passed_filter),"},{"line_number":310,"context_line":"                                     \"Wrong resource fields sent\")"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"                    sent_fields \u003d [k for k in resource if k in"},{"line_number":313,"context_line":"                                   RESOURCE_FILTER]"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"                    self.assertEqual(len(sent_fields), len(RESOURCE_FILTER),"},{"line_number":316,"context_line":"                                     \"Some resource fields not sent\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa0c359_9ff6baf9","line":313,"range":{"start_line":283,"start_character":12,"end_line":313,"end_character":51},"in_reply_to":"3fa0c359_e31f32b5","updated":"2018-02-15 13:53:39.000000000","message":"Done","commit_id":"db080f08ec1d5864b943e006c98738a8ab2f45e1"}]}
