)]}'
{"dragonflow/tests/fullstack/test_l2_responder.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0e87f43a44d8cbec12d4df58bf8fbbe4be68a335","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        self.assertIsNotNone("},{"line_number":74,"context_line":"            self._find_arp_responder_flow_by_ip(flows_delta, ip)"},{"line_number":75,"context_line":"        )"},{"line_number":76,"context_line":"        if not self._wait_for_flow_removal(ip, 30):"},{"line_number":77,"context_line":"            print \u0027Flows before and after the test are not the same:\u0027"},{"line_number":78,"context_line":"            print \u0027Before: \u0027, flows_before"},{"line_number":79,"context_line":"            print \u0027After: \u0027, self._get_arp_table_flows()"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_f4e11800","line":76,"updated":"2016-03-20 18:26:52.000000000","message":"I don\u0027t think this correction will improve the test, since if the comparison by deltas fail, the modified test is performed in line 84-85 (In the original test.)","commit_id":"94fb1a04e9964bbca550c08031c3ea1d8cc91a97"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"f7c5e33b51b1ac356093984c86e016938a0ba1fe","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        self.assertIsNotNone("},{"line_number":74,"context_line":"            self._find_arp_responder_flow_by_ip(flows_delta, ip)"},{"line_number":75,"context_line":"        )"},{"line_number":76,"context_line":"        if not self._wait_for_flow_removal(ip, 30):"},{"line_number":77,"context_line":"            print \u0027Flows before and after the test are not the same:\u0027"},{"line_number":78,"context_line":"            print \u0027Before: \u0027, flows_before"},{"line_number":79,"context_line":"            print \u0027After: \u0027, self._get_arp_table_flows()"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_26b07bdd","line":76,"in_reply_to":"fa0719c6_f4e11800","updated":"2016-03-21 08:25:30.000000000","message":"it is improving and the test below is still problematic\nI will remove it all together","commit_id":"94fb1a04e9964bbca550c08031c3ea1d8cc91a97"},{"author":{"_account_id":11364,"name":"Fei Rao","email":"milo.frao@gmail.com","username":"milo.frao"},"change_message_id":"a02a7990e2945c608941322932c13924f1a18463","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                if flow[\u0027table\u0027] \u003d\u003d str(const.ARP_TABLE) + \u0027,\u0027]"},{"line_number":44,"context_line":"        return flows"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def _wait_for_flow_removal(self, ip, timeout):"},{"line_number":47,"context_line":"        while timeout \u003e 0:"},{"line_number":48,"context_line":"            arp_flows \u003d self._get_arp_table_flows()"},{"line_number":49,"context_line":"            flow \u003d self._find_arp_responder_flow_by_ip(arp_flows, ip)"},{"line_number":50,"context_line":"            if not flow:"},{"line_number":51,"context_line":"                return True"},{"line_number":52,"context_line":"            timeout -\u003d 1"},{"line_number":53,"context_line":"            eventlet.sleep(1)"},{"line_number":54,"context_line":"        return False"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def test_arp_responder(self):"},{"line_number":57,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_1d2f1af7","line":54,"range":{"start_line":46,"start_character":1,"end_line":54,"end_character":20},"updated":"2016-03-23 03:46:08.000000000","message":"Please consider using wait_until_true instead of this.","commit_id":"2007d3d27882aeab76402fa547f27997288787a7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5255db87f4f74821c296026c53b7a69bf4132c7c","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                if flow[\u0027table\u0027] \u003d\u003d str(const.ARP_TABLE) + \u0027,\u0027]"},{"line_number":44,"context_line":"        return flows"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def _wait_for_flow_removal(self, ip, timeout):"},{"line_number":47,"context_line":"        while timeout \u003e 0:"},{"line_number":48,"context_line":"            arp_flows \u003d self._get_arp_table_flows()"},{"line_number":49,"context_line":"            flow \u003d self._find_arp_responder_flow_by_ip(arp_flows, ip)"},{"line_number":50,"context_line":"            if not flow:"},{"line_number":51,"context_line":"                return True"},{"line_number":52,"context_line":"            timeout -\u003d 1"},{"line_number":53,"context_line":"            eventlet.sleep(1)"},{"line_number":54,"context_line":"        return False"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def test_arp_responder(self):"},{"line_number":57,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_3e1f63b8","line":54,"range":{"start_line":46,"start_character":1,"end_line":54,"end_character":20},"in_reply_to":"fa0719c6_1d2f1af7","updated":"2016-03-23 11:55:53.000000000","message":"+1. Although, since this wasn\u0027t added in this patch, perhaps it should be done at another patch.","commit_id":"2007d3d27882aeab76402fa547f27997288787a7"},{"author":{"_account_id":11364,"name":"Fei Rao","email":"milo.frao@gmail.com","username":"milo.frao"},"change_message_id":"a02a7990e2945c608941322932c13924f1a18463","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        self.assertIsNotNone("},{"line_number":83,"context_line":"            self._find_arp_responder_flow_by_ip(flows_delta, ip)"},{"line_number":84,"context_line":"        )"},{"line_number":85,"context_line":"        self.assertTrue(self._wait_for_flow_removal(ip, 30))"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_5d023270","line":85,"range":{"start_line":85,"start_character":8,"end_line":85,"end_character":60},"updated":"2016-03-23 03:46:08.000000000","message":"If the flow rules don\u0027t get removed after vm get deleted, how to make sure there is no stale flow rules?","commit_id":"2007d3d27882aeab76402fa547f27997288787a7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5255db87f4f74821c296026c53b7a69bf4132c7c","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        self.assertIsNotNone("},{"line_number":83,"context_line":"            self._find_arp_responder_flow_by_ip(flows_delta, ip)"},{"line_number":84,"context_line":"        )"},{"line_number":85,"context_line":"        self.assertTrue(self._wait_for_flow_removal(ip, 30))"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_9e866fd9","line":85,"range":{"start_line":85,"start_character":8,"end_line":85,"end_character":60},"in_reply_to":"fa0719c6_5d023270","updated":"2016-03-23 11:55:53.000000000","message":"That\u0027s what this test is for. We want to make sure stale flows are removed.","commit_id":"2007d3d27882aeab76402fa547f27997288787a7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"392d5c9d8fbd0c554bf2a588c1185684d0ebcfa3","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        vm.server.stop()"},{"line_number":84,"context_line":"        vm.close()"},{"line_number":85,"context_line":"        eventlet.sleep(2)"},{"line_number":86,"context_line":"        flows_delta \u003d [flow for flow in flows_middle"},{"line_number":87,"context_line":"                if flow not in flows_before]"},{"line_number":88,"context_line":"        self.assertIsNotNone("}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_826a89ec","line":85,"range":{"start_line":85,"start_character":23,"end_line":85,"end_character":24},"updated":"2016-03-23 13:36:10.000000000","message":"Consider using constant: tests.common.utils.DEFAULT_CMD_TIMEOUT","commit_id":"6e8d8f82a914f89d204d7804dd824fec3039740d"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"f307e9f23fd6906b2a9259f2a58bda1c064371ac","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        vm.server.stop()"},{"line_number":84,"context_line":"        vm.close()"},{"line_number":85,"context_line":"        eventlet.sleep(2)"},{"line_number":86,"context_line":"        flows_delta \u003d [flow for flow in flows_middle"},{"line_number":87,"context_line":"                if flow not in flows_before]"},{"line_number":88,"context_line":"        self.assertIsNotNone("}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_f895f886","line":85,"range":{"start_line":85,"start_character":23,"end_line":85,"end_character":24},"in_reply_to":"fa0719c6_826a89ec","updated":"2016-03-23 14:08:57.000000000","message":"will do","commit_id":"6e8d8f82a914f89d204d7804dd824fec3039740d"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"392d5c9d8fbd0c554bf2a588c1185684d0ebcfa3","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        )"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        condition \u003d lambda: self._check_arp_flow_removal(ip)"},{"line_number":93,"context_line":"        try:"},{"line_number":94,"context_line":"            utils.wait_until_true("},{"line_number":95,"context_line":"                condition, timeout\u003d30, sleep\u003d1,"},{"line_number":96,"context_line":"                exception\u003dRuntimeError("}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_c2d481be","line":93,"updated":"2016-03-23 13:36:10.000000000","message":"Consider letting the exception propagate up to the testing I/S. It will fail the test, and give this exception as reason.","commit_id":"6e8d8f82a914f89d204d7804dd824fec3039740d"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"84000fb4a14555cbc862edbe4f72f70f460a1a1f","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        )"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        condition \u003d lambda: self._check_arp_flow_removal(ip)"},{"line_number":93,"context_line":"        try:"},{"line_number":94,"context_line":"            utils.wait_until_true("},{"line_number":95,"context_line":"                condition, timeout\u003d30, sleep\u003d1,"},{"line_number":96,"context_line":"                exception\u003dRuntimeError("}],"source_content_type":"text/x-python","patch_set":4,"id":"da0c15f0_a4991071","line":93,"in_reply_to":"fa0719c6_58198421","updated":"2016-03-25 12:21:48.000000000","message":"I\u0027m not convinced that\u0027s true, but I can\u0027t prove it :)","commit_id":"6e8d8f82a914f89d204d7804dd824fec3039740d"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"f307e9f23fd6906b2a9259f2a58bda1c064371ac","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        )"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        condition \u003d lambda: self._check_arp_flow_removal(ip)"},{"line_number":93,"context_line":"        try:"},{"line_number":94,"context_line":"            utils.wait_until_true("},{"line_number":95,"context_line":"                condition, timeout\u003d30, sleep\u003d1,"},{"line_number":96,"context_line":"                exception\u003dRuntimeError("}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_58198421","line":93,"in_reply_to":"fa0719c6_c2d481be","updated":"2016-03-23 14:08:57.000000000","message":"now it will fail only this test and log the exception \n\nBut if we propagate the exception the tear down process will be trigger and break  all the other testes","commit_id":"6e8d8f82a914f89d204d7804dd824fec3039740d"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"16bdf0cbd69feb2f4f9edd0a39f205d07f907292","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                    \"Timed out waiting for arp responedr flow from  %(ip)s\""},{"line_number":98,"context_line":"                    \"removed\" % {\u0027ip\u0027: ip}))"},{"line_number":99,"context_line":"        except Exception as e:"},{"line_number":100,"context_line":"            self.assertIsNone(e)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa0719c6_793700ff","line":100,"updated":"2016-03-24 07:50:14.000000000","message":"finally: network.close()","commit_id":"b48f8e9bdd4d07bba7f785924db9313fc434dc00"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"42acbbdd409b94712efe74a196861d13b280dfd9","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                    \"Timed out waiting for arp responedr flow from  %(ip)s\""},{"line_number":98,"context_line":"                    \"removed\" % {\u0027ip\u0027: ip}))"},{"line_number":99,"context_line":"        except Exception as e:"},{"line_number":100,"context_line":"            self.assertIsNone(e)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa0719c6_1c4fd237","line":100,"in_reply_to":"fa0719c6_793700ff","updated":"2016-03-24 08:02:28.000000000","message":"will do","commit_id":"b48f8e9bdd4d07bba7f785924db9313fc434dc00"}]}
