)]}'
{"neutron/tests/unit/agent/l3/test_dvr_local_router.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"092f5f87a01d418fb6a779aec2672483112275a5","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        fixed_ip \u003d mock.Mock()"},{"line_number":191,"context_line":"        actual \u003d ri.floating_forward_rules(floating_ip, fixed_ip)"},{"line_number":192,"context_line":"        expected \u003d []"},{"line_number":193,"context_line":"        self.assertEqual(expected, actual)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def test_floating_forward_rules(self):"},{"line_number":196,"context_line":"        router \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_9e9a5b6d","line":193,"updated":"2016-07-01 18:37:26.000000000","message":"I\u0027m not sure adding a check to make sure we didn\u0027t do anything when we didn\u0027t do anything is a good idea.","commit_id":"4de9ee6005890d7f0c07e831d9e1109bb82f6717"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"2e7fcb8246ace9609a3db6f9e29457cd68aef482","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        fixed_ip \u003d mock.Mock()"},{"line_number":191,"context_line":"        actual \u003d ri.floating_forward_rules(floating_ip, fixed_ip)"},{"line_number":192,"context_line":"        expected \u003d []"},{"line_number":193,"context_line":"        self.assertEqual(expected, actual)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def test_floating_forward_rules(self):"},{"line_number":196,"context_line":"        router \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_3ee527dc","line":193,"in_reply_to":"3aaa91ec_9e9a5b6d","updated":"2016-07-01 18:55:37.000000000","message":"If it\u0027s a desired output then I think it\u0027s a good idea. Do you suggest I remove this test?","commit_id":"4de9ee6005890d7f0c07e831d9e1109bb82f6717"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"d1c3ed8067b6d476286b95298ae0c66fe2e2a916","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        actual \u003d ri.floating_forward_rules(floating_ip, fixed_ip)"},{"line_number":214,"context_line":"        expected \u003d [dnat_from_floatingip_to_fixedip,"},{"line_number":215,"context_line":"                    snat_from_fixedip_to_floatingip]"},{"line_number":216,"context_line":"        self.assertEqual(expected, actual)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def test_floating_mangle_rules_no_fip_ns(self):"},{"line_number":219,"context_line":"        router \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_2d4ca341","line":216,"updated":"2016-08-16 09:27:44.000000000","message":"Even with existing functional tests, I suppose these provide faster feedback and don\u0027t depend too heavily on mocking compared to other DVR stuff.","commit_id":"4de9ee6005890d7f0c07e831d9e1109bb82f6717"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"092f5f87a01d418fb6a779aec2672483112275a5","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        actual \u003d ri.floating_forward_rules(floating_ip, fixed_ip)"},{"line_number":214,"context_line":"        expected \u003d [dnat_from_floatingip_to_fixedip,"},{"line_number":215,"context_line":"                    snat_from_fixedip_to_floatingip]"},{"line_number":216,"context_line":"        self.assertEqual(expected, actual)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def test_floating_mangle_rules_no_fip_ns(self):"},{"line_number":219,"context_line":"        router \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_be9d9768","line":216,"updated":"2016-07-01 18:37:26.000000000","message":"There is already a functional test for this, which I think is better since it makes sure they were created in iptables.\n\n_assert_dvr_floating_ips() in neutron/tests/functional/agent/l3/test_dvr_router.py\n\nPerhaps adding a check for the mangle rules there would be a good thing.","commit_id":"4de9ee6005890d7f0c07e831d9e1109bb82f6717"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"2e7fcb8246ace9609a3db6f9e29457cd68aef482","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        actual \u003d ri.floating_forward_rules(floating_ip, fixed_ip)"},{"line_number":214,"context_line":"        expected \u003d [dnat_from_floatingip_to_fixedip,"},{"line_number":215,"context_line":"                    snat_from_fixedip_to_floatingip]"},{"line_number":216,"context_line":"        self.assertEqual(expected, actual)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def test_floating_mangle_rules_no_fip_ns(self):"},{"line_number":219,"context_line":"        router \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_9e8edbce","line":216,"in_reply_to":"3aaa91ec_be9d9768","updated":"2016-07-01 18:55:37.000000000","message":"I haven\u0027t considered functional testing. \n\nIs there a way to measure the lines of code covered in functional testing? I used \"tox -e cover\" to generate reports.","commit_id":"4de9ee6005890d7f0c07e831d9e1109bb82f6717"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"37fda5c3578ec88b621fdf86a21e3b02b9057e12","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        fixed_ip \u003d mock.Mock()"},{"line_number":197,"context_line":"        actual \u003d ri.floating_forward_rules(floating_ip, fixed_ip)"},{"line_number":198,"context_line":"        expected \u003d []"},{"line_number":199,"context_line":"        self.assertEqual(expected, actual)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def test_floating_forward_rules(self):"},{"line_number":202,"context_line":"        router \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a461143_6efb8479","line":199,"updated":"2017-01-31 23:52:33.000000000","message":"self.assertFalse(ri.floating_forward_rules(floating_ip, fixed_ip))","commit_id":"742c8f65e3e14190a95bd1f11e69fedf5e9341b8"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"e29cc9d965581fa5df3afec538ec677535a3884a","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        fixed_ip \u003d mock.Mock()"},{"line_number":197,"context_line":"        actual \u003d ri.floating_forward_rules(floating_ip, fixed_ip)"},{"line_number":198,"context_line":"        expected \u003d []"},{"line_number":199,"context_line":"        self.assertEqual(expected, actual)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def test_floating_forward_rules(self):"},{"line_number":202,"context_line":"        router \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a461143_d650710d","line":199,"in_reply_to":"3a461143_6efb8479","updated":"2017-02-01 16:00:06.000000000","message":"Done","commit_id":"742c8f65e3e14190a95bd1f11e69fedf5e9341b8"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"37fda5c3578ec88b621fdf86a21e3b02b9057e12","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        internal_mark \u003d mock.Mock()"},{"line_number":232,"context_line":"        actual \u003d ri.floating_mangle_rules(floating_ip, fixed_ip, internal_mark)"},{"line_number":233,"context_line":"        expected \u003d []"},{"line_number":234,"context_line":"        self.assertEqual(expected, actual)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    def test_floating_mangle_rules(self):"},{"line_number":237,"context_line":"        router \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a461143_ceec78bd","line":234,"updated":"2017-01-31 23:52:33.000000000","message":"ditto","commit_id":"742c8f65e3e14190a95bd1f11e69fedf5e9341b8"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"e29cc9d965581fa5df3afec538ec677535a3884a","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        internal_mark \u003d mock.Mock()"},{"line_number":232,"context_line":"        actual \u003d ri.floating_mangle_rules(floating_ip, fixed_ip, internal_mark)"},{"line_number":233,"context_line":"        expected \u003d []"},{"line_number":234,"context_line":"        self.assertEqual(expected, actual)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    def test_floating_mangle_rules(self):"},{"line_number":237,"context_line":"        router \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a461143_165bd92f","line":234,"in_reply_to":"3a461143_ceec78bd","updated":"2017-02-01 16:00:06.000000000","message":"Done","commit_id":"742c8f65e3e14190a95bd1f11e69fedf5e9341b8"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"37fda5c3578ec88b621fdf86a21e3b02b9057e12","unresolved":false,"context_lines":[{"line_number":725,"context_line":"        device \u003d mock.Mock()"},{"line_number":726,"context_line":"        actual \u003d ri.get_router_cidrs(device)"},{"line_number":727,"context_line":"        expected \u003d set()"},{"line_number":728,"context_line":"        self.assertEqual(expected, actual)"},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"    def test_get_router_cidrs_no_device_exists(self):"},{"line_number":731,"context_line":"        router \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a461143_0e31205a","line":728,"updated":"2017-01-31 23:52:33.000000000","message":"ditto","commit_id":"742c8f65e3e14190a95bd1f11e69fedf5e9341b8"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"e29cc9d965581fa5df3afec538ec677535a3884a","unresolved":false,"context_lines":[{"line_number":725,"context_line":"        device \u003d mock.Mock()"},{"line_number":726,"context_line":"        actual \u003d ri.get_router_cidrs(device)"},{"line_number":727,"context_line":"        expected \u003d set()"},{"line_number":728,"context_line":"        self.assertEqual(expected, actual)"},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"    def test_get_router_cidrs_no_device_exists(self):"},{"line_number":731,"context_line":"        router \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a461143_d69eb1b7","line":728,"in_reply_to":"3a461143_0e31205a","updated":"2017-02-01 16:00:06.000000000","message":"Done","commit_id":"742c8f65e3e14190a95bd1f11e69fedf5e9341b8"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"37fda5c3578ec88b621fdf86a21e3b02b9057e12","unresolved":false,"context_lines":[{"line_number":741,"context_line":"        with mock.patch.object(ip_lib, \u0027IPDevice\u0027, return_value\u003ddevice):"},{"line_number":742,"context_line":"            actual \u003d ri.get_router_cidrs(device)"},{"line_number":743,"context_line":"            expected \u003d set()"},{"line_number":744,"context_line":"            self.assertEqual(expected, actual)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a461143_4e37a84c","line":744,"updated":"2017-01-31 23:52:33.000000000","message":"ditto","commit_id":"742c8f65e3e14190a95bd1f11e69fedf5e9341b8"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"e29cc9d965581fa5df3afec538ec677535a3884a","unresolved":false,"context_lines":[{"line_number":741,"context_line":"        with mock.patch.object(ip_lib, \u0027IPDevice\u0027, return_value\u003ddevice):"},{"line_number":742,"context_line":"            actual \u003d ri.get_router_cidrs(device)"},{"line_number":743,"context_line":"            expected \u003d set()"},{"line_number":744,"context_line":"            self.assertEqual(expected, actual)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a461143_36ae15e8","line":744,"in_reply_to":"3a461143_4e37a84c","updated":"2017-02-01 16:00:06.000000000","message":"Done","commit_id":"742c8f65e3e14190a95bd1f11e69fedf5e9341b8"}]}
