)]}'
{"dragonflow/tests/unit/test_dhcp_app.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f960309b517200db780e2234c287fb815d225130","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.app._remove_dhcp_unicast_match_flow.assert_called_once_with("},{"line_number":85,"context_line":"            test_app_base.fake_logic_switch1.get_unique_key(), \u002710.0.0.2\u0027)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_get_lswitch_by_port(self):"},{"line_number":88,"context_line":"        lport \u003d mock.Mock()"},{"line_number":89,"context_line":"        l_switch_id \u003d \u0027lswitchId\u0027"},{"line_number":90,"context_line":"        lport.get_lswitch_id.return_value \u003d l_switch_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_ba4bd3af","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":32},"updated":"2016-12-13 01:20:18.000000000","message":"We had some discussion in another patch, according to that, I think it should be the following method name\n\ntest__get_lswitch_by_port","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"9fcdfbf8cdb5f3d00f856ecb4c2b3602a8b0115c","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.app._remove_dhcp_unicast_match_flow.assert_called_once_with("},{"line_number":85,"context_line":"            test_app_base.fake_logic_switch1.get_unique_key(), \u002710.0.0.2\u0027)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_get_lswitch_by_port(self):"},{"line_number":88,"context_line":"        lport \u003d mock.Mock()"},{"line_number":89,"context_line":"        l_switch_id \u003d \u0027lswitchId\u0027"},{"line_number":90,"context_line":"        lport.get_lswitch_id.return_value \u003d l_switch_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_9ae34405","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":32},"in_reply_to":"1a6eadb0_ba4bd3af","updated":"2016-12-13 21:46:07.000000000","message":"Done","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f960309b517200db780e2234c287fb815d225130","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            test_app_base.fake_logic_switch1.get_unique_key(), \u002710.0.0.2\u0027)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_get_lswitch_by_port(self):"},{"line_number":88,"context_line":"        lport \u003d mock.Mock()"},{"line_number":89,"context_line":"        l_switch_id \u003d \u0027lswitchId\u0027"},{"line_number":90,"context_line":"        lport.get_lswitch_id.return_value \u003d l_switch_id"},{"line_number":91,"context_line":"        fake_lswitch \u003d copy.deepcopy(test_app_base.fake_logic_switch1)"},{"line_number":92,"context_line":"        self.app.db_store.set_lswitch(l_switch_id, fake_lswitch)"},{"line_number":93,"context_line":"        lswitch \u003d self.app._get_lswitch_by_port(lport)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_3a5fc373","line":90,"range":{"start_line":88,"start_character":0,"end_line":90,"end_character":55},"updated":"2016-12-13 01:20:18.000000000","message":"Why not just use test_app_base.fake_local_port1. It is set to be inside fake_logic_switch1.","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"9fcdfbf8cdb5f3d00f856ecb4c2b3602a8b0115c","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            test_app_base.fake_logic_switch1.get_unique_key(), \u002710.0.0.2\u0027)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_get_lswitch_by_port(self):"},{"line_number":88,"context_line":"        lport \u003d mock.Mock()"},{"line_number":89,"context_line":"        l_switch_id \u003d \u0027lswitchId\u0027"},{"line_number":90,"context_line":"        lport.get_lswitch_id.return_value \u003d l_switch_id"},{"line_number":91,"context_line":"        fake_lswitch \u003d copy.deepcopy(test_app_base.fake_logic_switch1)"},{"line_number":92,"context_line":"        self.app.db_store.set_lswitch(l_switch_id, fake_lswitch)"},{"line_number":93,"context_line":"        lswitch \u003d self.app._get_lswitch_by_port(lport)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_baf2c0d0","line":90,"range":{"start_line":88,"start_character":0,"end_line":90,"end_character":55},"in_reply_to":"1a6eadb0_3a5fc373","updated":"2016-12-13 21:46:07.000000000","message":"Done","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f960309b517200db780e2234c287fb815d225130","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        lport \u003d mock.Mock()"},{"line_number":89,"context_line":"        l_switch_id \u003d \u0027lswitchId\u0027"},{"line_number":90,"context_line":"        lport.get_lswitch_id.return_value \u003d l_switch_id"},{"line_number":91,"context_line":"        fake_lswitch \u003d copy.deepcopy(test_app_base.fake_logic_switch1)"},{"line_number":92,"context_line":"        self.app.db_store.set_lswitch(l_switch_id, fake_lswitch)"},{"line_number":93,"context_line":"        lswitch \u003d self.app._get_lswitch_by_port(lport)"},{"line_number":94,"context_line":"        lport.get_lswitch_id.assert_called_once_with()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_fa7d4be8","line":91,"range":{"start_line":91,"start_character":0,"end_line":91,"end_character":70},"updated":"2016-12-13 01:20:18.000000000","message":"If you are not gonna change the lswitch, there is no need to do the copy.","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"9fcdfbf8cdb5f3d00f856ecb4c2b3602a8b0115c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        lport \u003d mock.Mock()"},{"line_number":89,"context_line":"        l_switch_id \u003d \u0027lswitchId\u0027"},{"line_number":90,"context_line":"        lport.get_lswitch_id.return_value \u003d l_switch_id"},{"line_number":91,"context_line":"        fake_lswitch \u003d copy.deepcopy(test_app_base.fake_logic_switch1)"},{"line_number":92,"context_line":"        self.app.db_store.set_lswitch(l_switch_id, fake_lswitch)"},{"line_number":93,"context_line":"        lswitch \u003d self.app._get_lswitch_by_port(lport)"},{"line_number":94,"context_line":"        lport.get_lswitch_id.assert_called_once_with()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_1abe54d4","line":91,"range":{"start_line":91,"start_character":0,"end_line":91,"end_character":70},"in_reply_to":"1a6eadb0_fa7d4be8","updated":"2016-12-13 21:46:07.000000000","message":"Done","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f960309b517200db780e2234c287fb815d225130","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        self.app.db_store.set_lswitch(l_switch_id, fake_lswitch)"},{"line_number":93,"context_line":"        lswitch \u003d self.app._get_lswitch_by_port(lport)"},{"line_number":94,"context_line":"        lport.get_lswitch_id.assert_called_once_with()"},{"line_number":95,"context_line":"        self.assertEqual(lswitch, fake_lswitch)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def test_get_dhcp_message_type_opt(self):"},{"line_number":98,"context_line":"        fake_dhcp_packet \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_5a547f53","line":95,"range":{"start_line":95,"start_character":0,"end_line":95,"end_character":47},"updated":"2016-12-13 01:20:18.000000000","message":"self.assertEqual(expected, result)","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"9fcdfbf8cdb5f3d00f856ecb4c2b3602a8b0115c","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        self.app.db_store.set_lswitch(l_switch_id, fake_lswitch)"},{"line_number":93,"context_line":"        lswitch \u003d self.app._get_lswitch_by_port(lport)"},{"line_number":94,"context_line":"        lport.get_lswitch_id.assert_called_once_with()"},{"line_number":95,"context_line":"        self.assertEqual(lswitch, fake_lswitch)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def test_get_dhcp_message_type_opt(self):"},{"line_number":98,"context_line":"        fake_dhcp_packet \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_3ab5d0ed","line":95,"range":{"start_line":95,"start_character":0,"end_line":95,"end_character":47},"in_reply_to":"1a6eadb0_5a547f53","updated":"2016-12-13 21:46:07.000000000","message":"Done","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f960309b517200db780e2234c287fb815d225130","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        lport.get_lswitch_id.assert_called_once_with()"},{"line_number":95,"context_line":"        self.assertEqual(lswitch, fake_lswitch)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def test_get_dhcp_message_type_opt(self):"},{"line_number":98,"context_line":"        fake_dhcp_packet \u003d mock.Mock()"},{"line_number":99,"context_line":"        fake_dhcp_packet.options.option_list \u003d ("},{"line_number":100,"context_line":"            [Option(dhcp.DHCP_MESSAGE_TYPE_OPT, \u0027a\u0027), Option(52, \u0027b\u0027)])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_1ad127ce","line":97,"range":{"start_line":97,"start_character":8,"end_line":97,"end_character":38},"updated":"2016-12-13 01:20:18.000000000","message":"see comment above","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"9fcdfbf8cdb5f3d00f856ecb4c2b3602a8b0115c","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        lport.get_lswitch_id.assert_called_once_with()"},{"line_number":95,"context_line":"        self.assertEqual(lswitch, fake_lswitch)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def test_get_dhcp_message_type_opt(self):"},{"line_number":98,"context_line":"        fake_dhcp_packet \u003d mock.Mock()"},{"line_number":99,"context_line":"        fake_dhcp_packet.options.option_list \u003d ("},{"line_number":100,"context_line":"            [Option(dhcp.DHCP_MESSAGE_TYPE_OPT, \u0027a\u0027), Option(52, \u0027b\u0027)])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_5ab8cce5","line":97,"range":{"start_line":97,"start_character":8,"end_line":97,"end_character":38},"in_reply_to":"1a6eadb0_1ad127ce","updated":"2016-12-13 21:46:07.000000000","message":"Done","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f960309b517200db780e2234c287fb815d225130","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        fake_dhcp_packet.options.option_list \u003d ("},{"line_number":105,"context_line":"            [Option(dhcp.DHCP_END_OPT, \u0027a\u0027), Option(52, \u0027b\u0027)])"},{"line_number":106,"context_line":"        opt_value2 \u003d self.app._get_dhcp_message_type_opt(fake_dhcp_packet)"},{"line_number":107,"context_line":"        self.assertEqual(opt_value2, None)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def test_get_subnet_by_port(self):"},{"line_number":110,"context_line":"        fake_lport \u003d copy.deepcopy(test_app_base.fake_local_port1)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_1ae8477c","line":107,"range":{"start_line":107,"start_character":13,"end_line":107,"end_character":24},"updated":"2016-12-13 01:20:18.000000000","message":"assertIsNone will be more appropriate","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"9fcdfbf8cdb5f3d00f856ecb4c2b3602a8b0115c","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        fake_dhcp_packet.options.option_list \u003d ("},{"line_number":105,"context_line":"            [Option(dhcp.DHCP_END_OPT, \u0027a\u0027), Option(52, \u0027b\u0027)])"},{"line_number":106,"context_line":"        opt_value2 \u003d self.app._get_dhcp_message_type_opt(fake_dhcp_packet)"},{"line_number":107,"context_line":"        self.assertEqual(opt_value2, None)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def test_get_subnet_by_port(self):"},{"line_number":110,"context_line":"        fake_lport \u003d copy.deepcopy(test_app_base.fake_local_port1)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_faa198aa","line":107,"range":{"start_line":107,"start_character":13,"end_line":107,"end_character":24},"in_reply_to":"1a6eadb0_1ae8477c","updated":"2016-12-13 21:46:07.000000000","message":"Done","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f960309b517200db780e2234c287fb815d225130","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        opt_value2 \u003d self.app._get_dhcp_message_type_opt(fake_dhcp_packet)"},{"line_number":107,"context_line":"        self.assertEqual(opt_value2, None)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def test_get_subnet_by_port(self):"},{"line_number":110,"context_line":"        fake_lport \u003d copy.deepcopy(test_app_base.fake_local_port1)"},{"line_number":111,"context_line":"        fake_lport_subnet \u003d test_app_base.fake_logic_switch1.get_subnets()[0]"},{"line_number":112,"context_line":"        subnet \u003d self.app._get_subnet_by_port(fake_lport)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_3abb4374","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":31},"updated":"2016-12-13 01:20:18.000000000","message":"see comment above","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"9fcdfbf8cdb5f3d00f856ecb4c2b3602a8b0115c","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        opt_value2 \u003d self.app._get_dhcp_message_type_opt(fake_dhcp_packet)"},{"line_number":107,"context_line":"        self.assertEqual(opt_value2, None)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def test_get_subnet_by_port(self):"},{"line_number":110,"context_line":"        fake_lport \u003d copy.deepcopy(test_app_base.fake_local_port1)"},{"line_number":111,"context_line":"        fake_lport_subnet \u003d test_app_base.fake_logic_switch1.get_subnets()[0]"},{"line_number":112,"context_line":"        subnet \u003d self.app._get_subnet_by_port(fake_lport)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_5aafec93","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":31},"in_reply_to":"1a6eadb0_3abb4374","updated":"2016-12-13 21:46:07.000000000","message":"Done","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f960309b517200db780e2234c287fb815d225130","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        fake_lport \u003d copy.deepcopy(test_app_base.fake_local_port1)"},{"line_number":111,"context_line":"        fake_lport_subnet \u003d test_app_base.fake_logic_switch1.get_subnets()[0]"},{"line_number":112,"context_line":"        subnet \u003d self.app._get_subnet_by_port(fake_lport)"},{"line_number":113,"context_line":"        self.assertEqual(subnet, fake_lport_subnet)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        fake_lport.inner_obj[\u0027subnets\u0027] \u003d [\u0027ThisSubnetDoesNotExist\u0027]"},{"line_number":116,"context_line":"        self.controller.logical_port_updated(fake_lport)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_9a81b792","line":113,"range":{"start_line":113,"start_character":8,"end_line":113,"end_character":51},"updated":"2016-12-13 01:20:18.000000000","message":"self.assertEqual(expected, result)","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"9fcdfbf8cdb5f3d00f856ecb4c2b3602a8b0115c","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        fake_lport \u003d copy.deepcopy(test_app_base.fake_local_port1)"},{"line_number":111,"context_line":"        fake_lport_subnet \u003d test_app_base.fake_logic_switch1.get_subnets()[0]"},{"line_number":112,"context_line":"        subnet \u003d self.app._get_subnet_by_port(fake_lport)"},{"line_number":113,"context_line":"        self.assertEqual(subnet, fake_lport_subnet)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        fake_lport.inner_obj[\u0027subnets\u0027] \u003d [\u0027ThisSubnetDoesNotExist\u0027]"},{"line_number":116,"context_line":"        self.controller.logical_port_updated(fake_lport)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_7a96684d","line":113,"range":{"start_line":113,"start_character":8,"end_line":113,"end_character":51},"in_reply_to":"1a6eadb0_9a81b792","updated":"2016-12-13 21:46:07.000000000","message":"Done","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f960309b517200db780e2234c287fb815d225130","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        fake_lport.inner_obj[\u0027subnets\u0027] \u003d [\u0027ThisSubnetDoesNotExist\u0027]"},{"line_number":116,"context_line":"        self.controller.logical_port_updated(fake_lport)"},{"line_number":117,"context_line":"        subnet \u003d self.app._get_subnet_by_port(fake_lport)"},{"line_number":118,"context_line":"        self.assertEqual(subnet, None)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def test_remove_local_port(self):"},{"line_number":121,"context_line":"        fake_lport \u003d copy.deepcopy(test_app_base.fake_local_port1)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_fa670b23","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":38},"updated":"2016-12-13 01:20:18.000000000","message":"assertIsNone will be more appropriate","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"9fcdfbf8cdb5f3d00f856ecb4c2b3602a8b0115c","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        fake_lport.inner_obj[\u0027subnets\u0027] \u003d [\u0027ThisSubnetDoesNotExist\u0027]"},{"line_number":116,"context_line":"        self.controller.logical_port_updated(fake_lport)"},{"line_number":117,"context_line":"        subnet \u003d self.app._get_subnet_by_port(fake_lport)"},{"line_number":118,"context_line":"        self.assertEqual(subnet, None)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def test_remove_local_port(self):"},{"line_number":121,"context_line":"        fake_lport \u003d copy.deepcopy(test_app_base.fake_local_port1)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_baa000a1","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":38},"in_reply_to":"1a6eadb0_fa670b23","updated":"2016-12-13 21:46:07.000000000","message":"Done","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f960309b517200db780e2234c287fb815d225130","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        self.controller.logical_port_updated(fake_lport)"},{"line_number":124,"context_line":"        subnet \u003d fake_lport.get_subnets()[0]"},{"line_number":125,"context_line":"        self.app.subnet_vm_port_map[subnet] \u003d set([fake_lport.get_id()])"},{"line_number":126,"context_line":"        self.app.remove_local_port(fake_lport)"},{"line_number":127,"context_line":"        self.assertIn(fake_lport.get_id(), self.app.subnet_vm_port_map[subnet])"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        fake_lport.inner_obj[\u0027ips\u0027] \u003d [\u002710.0.0.6\u0027]"},{"line_number":130,"context_line":"        tunnel_key \u003d fake_lport.get_unique_key()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_4e576402","line":127,"range":{"start_line":126,"start_character":0,"end_line":127,"end_character":79},"updated":"2016-12-13 01:20:18.000000000","message":"It would be good to add some comment about what you are testing here.","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"9fcdfbf8cdb5f3d00f856ecb4c2b3602a8b0115c","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        self.controller.logical_port_updated(fake_lport)"},{"line_number":124,"context_line":"        subnet \u003d fake_lport.get_subnets()[0]"},{"line_number":125,"context_line":"        self.app.subnet_vm_port_map[subnet] \u003d set([fake_lport.get_id()])"},{"line_number":126,"context_line":"        self.app.remove_local_port(fake_lport)"},{"line_number":127,"context_line":"        self.assertIn(fake_lport.get_id(), self.app.subnet_vm_port_map[subnet])"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        fake_lport.inner_obj[\u0027ips\u0027] \u003d [\u002710.0.0.6\u0027]"},{"line_number":130,"context_line":"        tunnel_key \u003d fake_lport.get_unique_key()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_da9bfc70","line":127,"range":{"start_line":126,"start_character":0,"end_line":127,"end_character":79},"in_reply_to":"1a6eadb0_4e576402","updated":"2016-12-13 21:46:07.000000000","message":"Done","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f960309b517200db780e2234c287fb815d225130","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        tunnel_key \u003d fake_lport.get_unique_key()"},{"line_number":131,"context_line":"        self.app.local_tunnel_to_pid_map.update({tunnel_key: None})"},{"line_number":132,"context_line":"        self.app._uninstall_dhcp_flow_for_vm_port \u003d mock.Mock()"},{"line_number":133,"context_line":"        self.controller.logical_port_updated(fake_lport)"},{"line_number":134,"context_line":"        self.app.remove_local_port(fake_lport)"},{"line_number":135,"context_line":"        self.assertNotIn(fake_lport.get_id(),"},{"line_number":136,"context_line":"            self.app.subnet_vm_port_map[subnet])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_ee1af06d","line":133,"range":{"start_line":133,"start_character":0,"end_line":133,"end_character":56},"updated":"2016-12-13 01:20:18.000000000","message":"If you don\u0027t update the version of fake_lport, this line will actually do nothing. But since you change the value in db_store, you can see change at line 134.","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"9fcdfbf8cdb5f3d00f856ecb4c2b3602a8b0115c","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        tunnel_key \u003d fake_lport.get_unique_key()"},{"line_number":131,"context_line":"        self.app.local_tunnel_to_pid_map.update({tunnel_key: None})"},{"line_number":132,"context_line":"        self.app._uninstall_dhcp_flow_for_vm_port \u003d mock.Mock()"},{"line_number":133,"context_line":"        self.controller.logical_port_updated(fake_lport)"},{"line_number":134,"context_line":"        self.app.remove_local_port(fake_lport)"},{"line_number":135,"context_line":"        self.assertNotIn(fake_lport.get_id(),"},{"line_number":136,"context_line":"            self.app.subnet_vm_port_map[subnet])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_fa88b824","line":133,"range":{"start_line":133,"start_character":0,"end_line":133,"end_character":56},"in_reply_to":"1a6eadb0_ee1af06d","updated":"2016-12-13 21:46:07.000000000","message":"Done","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f960309b517200db780e2234c287fb815d225130","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        self.app._uninstall_dhcp_flow_for_vm_port.assert_called_once()"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def test_remove_logical_switch(self):"},{"line_number":140,"context_line":"        fake_lswitch \u003d copy.deepcopy(test_app_base.fake_logic_switch1)"},{"line_number":141,"context_line":"        network_id \u003d fake_lswitch.get_unique_key()"},{"line_number":142,"context_line":"        self.app._remove_dhcp_unicast_match_flow \u003d mock.Mock()"},{"line_number":143,"context_line":"        self.app.remove_logical_switch(fake_lswitch)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_ee48305e","line":140,"range":{"start_line":140,"start_character":0,"end_line":140,"end_character":70},"updated":"2016-12-13 01:20:18.000000000","message":"If you are not gonna change the lswitch, there is no need to do the copy.","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"9fcdfbf8cdb5f3d00f856ecb4c2b3602a8b0115c","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        self.app._uninstall_dhcp_flow_for_vm_port.assert_called_once()"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def test_remove_logical_switch(self):"},{"line_number":140,"context_line":"        fake_lswitch \u003d copy.deepcopy(test_app_base.fake_logic_switch1)"},{"line_number":141,"context_line":"        network_id \u003d fake_lswitch.get_unique_key()"},{"line_number":142,"context_line":"        self.app._remove_dhcp_unicast_match_flow \u003d mock.Mock()"},{"line_number":143,"context_line":"        self.app.remove_logical_switch(fake_lswitch)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_3a831006","line":140,"range":{"start_line":140,"start_character":0,"end_line":140,"end_character":70},"in_reply_to":"1a6eadb0_ee48305e","updated":"2016-12-13 21:46:07.000000000","message":"Done","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f960309b517200db780e2234c287fb815d225130","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        network_id \u003d fake_lswitch.get_unique_key()"},{"line_number":142,"context_line":"        self.app._remove_dhcp_unicast_match_flow \u003d mock.Mock()"},{"line_number":143,"context_line":"        self.app.remove_logical_switch(fake_lswitch)"},{"line_number":144,"context_line":"        self.assertFalse(network_id in self.app.switch_dhcp_ip_map)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_6e5c2026","line":144,"range":{"start_line":144,"start_character":0,"end_line":144,"end_character":67},"updated":"2016-12-13 01:20:18.000000000","message":"assertNotIn","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"9fcdfbf8cdb5f3d00f856ecb4c2b3602a8b0115c","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        network_id \u003d fake_lswitch.get_unique_key()"},{"line_number":142,"context_line":"        self.app._remove_dhcp_unicast_match_flow \u003d mock.Mock()"},{"line_number":143,"context_line":"        self.app.remove_logical_switch(fake_lswitch)"},{"line_number":144,"context_line":"        self.assertFalse(network_id in self.app.switch_dhcp_ip_map)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_5a860c14","line":144,"range":{"start_line":144,"start_character":0,"end_line":144,"end_character":67},"in_reply_to":"1a6eadb0_6e5c2026","updated":"2016-12-13 21:46:07.000000000","message":"Done","commit_id":"9642a309224001193effcdf11bbe91b0ecef61b3"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ef2ceb1b811bc1364190bc65c9604d9cee747e03","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        fake_dhcp_packet \u003d mock.Mock()"},{"line_number":97,"context_line":"        fake_dhcp_packet.options.option_list \u003d ("},{"line_number":98,"context_line":"            [Option(dhcp.DHCP_MESSAGE_TYPE_OPT, \u0027a\u0027), Option(52, \u0027b\u0027)])"},{"line_number":99,"context_line":"        a_unicode \u003d 97"},{"line_number":100,"context_line":"        opt_value \u003d self.app._get_dhcp_message_type_opt(fake_dhcp_packet)"},{"line_number":101,"context_line":"        self.assertEqual(a_unicode, opt_value)"},{"line_number":102,"context_line":"        fake_dhcp_packet.options.option_list \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6eadb0_7ca9fb7a","line":99,"range":{"start_line":99,"start_character":8,"end_line":99,"end_character":22},"updated":"2016-12-14 03:38:55.000000000","message":"why not just use ord(\u0027a\u0027), instead of hardcode here.","commit_id":"94c010fefe62ff8e8cc0950d5b0ca2d0790b4c09"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"1bae46eb85abcc71244b027d962ddd962b9588e0","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        fake_dhcp_packet \u003d mock.Mock()"},{"line_number":97,"context_line":"        fake_dhcp_packet.options.option_list \u003d ("},{"line_number":98,"context_line":"            [Option(dhcp.DHCP_MESSAGE_TYPE_OPT, \u0027a\u0027), Option(52, \u0027b\u0027)])"},{"line_number":99,"context_line":"        a_unicode \u003d 97"},{"line_number":100,"context_line":"        opt_value \u003d self.app._get_dhcp_message_type_opt(fake_dhcp_packet)"},{"line_number":101,"context_line":"        self.assertEqual(a_unicode, opt_value)"},{"line_number":102,"context_line":"        fake_dhcp_packet.options.option_list \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6eadb0_66e060fb","line":99,"range":{"start_line":99,"start_character":8,"end_line":99,"end_character":22},"in_reply_to":"1a6eadb0_7ca9fb7a","updated":"2016-12-14 19:13:57.000000000","message":"Done","commit_id":"94c010fefe62ff8e8cc0950d5b0ca2d0790b4c09"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ef2ceb1b811bc1364190bc65c9604d9cee747e03","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        fake_lport.inner_obj[\u0027ips\u0027] \u003d [\u002710.0.0.6\u0027]"},{"line_number":129,"context_line":"        tunnel_key \u003d fake_lport.get_unique_key()"},{"line_number":130,"context_line":"        self.app.local_tunnel_to_pid_map.update({tunnel_key: None})"},{"line_number":131,"context_line":"        self.app._uninstall_dhcp_flow_for_vm_port \u003d mock.Mock()"},{"line_number":132,"context_line":"        # test case: lport has valid ip"},{"line_number":133,"context_line":"        self.app.remove_local_port(fake_lport)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6eadb0_fcd42bbe","line":130,"range":{"start_line":130,"start_character":17,"end_line":130,"end_character":40},"updated":"2016-12-14 03:38:55.000000000","message":"This refactor removes this attribute from dhcp app, you need you update your code accordingly.","commit_id":"94c010fefe62ff8e8cc0950d5b0ca2d0790b4c09"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"1bae46eb85abcc71244b027d962ddd962b9588e0","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        fake_lport.inner_obj[\u0027ips\u0027] \u003d [\u002710.0.0.6\u0027]"},{"line_number":129,"context_line":"        tunnel_key \u003d fake_lport.get_unique_key()"},{"line_number":130,"context_line":"        self.app.local_tunnel_to_pid_map.update({tunnel_key: None})"},{"line_number":131,"context_line":"        self.app._uninstall_dhcp_flow_for_vm_port \u003d mock.Mock()"},{"line_number":132,"context_line":"        # test case: lport has valid ip"},{"line_number":133,"context_line":"        self.app.remove_local_port(fake_lport)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6eadb0_a6e6f812","line":130,"range":{"start_line":130,"start_character":17,"end_line":130,"end_character":40},"in_reply_to":"1a6eadb0_fcd42bbe","updated":"2016-12-14 19:13:57.000000000","message":"Done","commit_id":"94c010fefe62ff8e8cc0950d5b0ca2d0790b4c09"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"b553f739d372739c18a5a32447167e8313508b47","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        fake_lport.inner_obj[\u0027ips\u0027] \u003d [\u002710.0.0.6\u0027]"},{"line_number":129,"context_line":"        tunnel_key \u003d fake_lport.get_unique_key()"},{"line_number":130,"context_line":"        self.app.local_tunnel_to_pid_map.update({tunnel_key: None})"},{"line_number":131,"context_line":"        self.app._uninstall_dhcp_flow_for_vm_port \u003d mock.Mock()"},{"line_number":132,"context_line":"        # test case: lport has valid ip"},{"line_number":133,"context_line":"        self.app.remove_local_port(fake_lport)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6eadb0_bcf1d36c","line":130,"range":{"start_line":130,"start_character":17,"end_line":130,"end_character":40},"in_reply_to":"1a6eadb0_fcd42bbe","updated":"2016-12-14 03:39:23.000000000","message":"bd8362d22db40e35770472e2ba93e03579a219e8","commit_id":"94c010fefe62ff8e8cc0950d5b0ca2d0790b4c09"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"c23f4cb4bec92a5d4a6cbf3a1761fd7cd444c9d7","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from dragonflow.tests.unit import test_app_base"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class Option(object):"},{"line_number":27,"context_line":"    def __init__(self, tag, value):"},{"line_number":28,"context_line":"        self.tag \u003d tag"},{"line_number":29,"context_line":"        self.value \u003d value"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_b141c3ab","line":26,"updated":"2016-12-15 02:08:13.000000000","message":"nit: DHCPOption is better.","commit_id":"1dccbeeb2031b330d3d897d072bf9acf4c2fe819"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"036276bd7625109c9014dd2f6308117b618a9e2b","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from dragonflow.tests.unit import test_app_base"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class Option(object):"},{"line_number":27,"context_line":"    def __init__(self, tag, value):"},{"line_number":28,"context_line":"        self.tag \u003d tag"},{"line_number":29,"context_line":"        self.value \u003d value"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_9ced44f2","line":26,"in_reply_to":"1a6eadb0_b141c3ab","updated":"2016-12-18 13:25:03.000000000","message":"Could have also used namedtuple.","commit_id":"1dccbeeb2031b330d3d897d072bf9acf4c2fe819"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"4c6b334d5a8731b55132d34539acdd24e7bbfea2","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        fake_dhcp_packet \u003d mock.Mock()"},{"line_number":97,"context_line":"        fake_dhcp_packet.options.option_list \u003d ("},{"line_number":98,"context_line":"            [Option(dhcp.DHCP_MESSAGE_TYPE_OPT, \u0027a\u0027),"},{"line_number":99,"context_line":"            Option(dhcp.DHCP_HOST_NAME_OPT, \u0027b\u0027)])"},{"line_number":100,"context_line":"        a_unicode \u003d ord(\u0027a\u0027)"},{"line_number":101,"context_line":"        opt_value \u003d self.app._get_dhcp_message_type_opt(fake_dhcp_packet)"},{"line_number":102,"context_line":"        self.assertEqual(a_unicode, opt_value)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_a67b5827","line":99,"range":{"start_line":99,"start_character":12,"end_line":99,"end_character":50},"updated":"2016-12-14 19:15:46.000000000","message":"I got rid of the magic number 52 here as well, to avoid hard coded values.","commit_id":"1dccbeeb2031b330d3d897d072bf9acf4c2fe819"},{"author":{"_account_id":21930,"name":"Steve Kipp","email":"sk167v@att.com","username":"SKipp"},"change_message_id":"4c6b334d5a8731b55132d34539acdd24e7bbfea2","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self.assertEqual(a_unicode, opt_value)"},{"line_number":103,"context_line":"        fake_dhcp_packet.options.option_list \u003d ("},{"line_number":104,"context_line":"            [Option(dhcp.DHCP_END_OPT, \u0027a\u0027),"},{"line_number":105,"context_line":"            Option(dhcp.DHCP_HOST_NAME_OPT, \u0027b\u0027)])"},{"line_number":106,"context_line":"        opt_value2 \u003d self.app._get_dhcp_message_type_opt(fake_dhcp_packet)"},{"line_number":107,"context_line":"        self.assertIsNone(opt_value2)"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_a6943843","line":105,"range":{"start_line":105,"start_character":12,"end_line":105,"end_character":50},"updated":"2016-12-14 19:15:46.000000000","message":"ditto","commit_id":"1dccbeeb2031b330d3d897d072bf9acf4c2fe819"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"f8bc36642b9b9876a7fd2c7eb775f69802e89376","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def test__get_subnet_by_port(self):"},{"line_number":110,"context_line":"        fake_lport \u003d copy.deepcopy(test_app_base.fake_local_port1)"},{"line_number":111,"context_line":"        fake_lport_subnet \u003d test_app_base.fake_logic_switch1.get_subnets()[0]"},{"line_number":112,"context_line":"        subnet \u003d self.app._get_subnet_by_port(fake_lport)"},{"line_number":113,"context_line":"        self.assertEqual(fake_lport_subnet, subnet)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        fake_lport.inner_obj[\u0027subnets\u0027] \u003d [\u0027ThisSubnetDoesNotExist\u0027]"},{"line_number":116,"context_line":"        self.controller.logical_port_updated(fake_lport)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_507ac424","line":113,"range":{"start_line":111,"start_character":8,"end_line":113,"end_character":51},"updated":"2016-12-16 23:35:13.000000000","message":"After generating coverage reports this part of the function was already covered","commit_id":"6a0d39defb2804f8fd737b0c9c4f633151d1a448"}]}
