)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f3c7b74801231f118d4f70ef3700c926162f084f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"test_l3: Use mock.patch rather than a direct assignment"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Also, skip the test for plugins which is not implemented as"},{"line_number":10,"context_line":"this test case assumes.  An example of such a plugin is"},{"line_number":11,"context_line":"opencontrail."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a1a9d01_1a2682ba","line":9,"updated":"2015-10-03 19:55:34.000000000","message":"Technically speaking, sounds like two patches.","commit_id":"4e1186d2e08212bab0c90145905d7daa47856e47"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"12667c03274c2a6405a367bf785ff3823ceb4cbb","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"test_l3: Use mock.patch rather than a direct assignment"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Also, skip the test for plugins which is not implemented as"},{"line_number":10,"context_line":"this test case assumes.  An example of such a plugin is"},{"line_number":11,"context_line":"opencontrail."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a1a9d01_6bcb5b73","line":9,"updated":"2015-10-02 11:47:32.000000000","message":"is \u003d\u003e are","commit_id":"4e1186d2e08212bab0c90145905d7daa47856e47"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"3804f6fb038eeb32d41bfd36589a9da86c91cb39","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"test_l3: Use mock.patch rather than a direct assignment"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Also, skip the test for plugins which is not implemented as"},{"line_number":10,"context_line":"this test case assumes.  An example of such a plugin is"},{"line_number":11,"context_line":"opencontrail."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a1a9d01_6436fce8","line":9,"in_reply_to":"9a1a9d01_1a2682ba","updated":"2015-10-05 04:53:03.000000000","message":"Ihar, do you want me split this?","commit_id":"4e1186d2e08212bab0c90145905d7daa47856e47"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4293a8cf10bbe6d5a15166085b430d4d871f0d05","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"test_l3: Use mock.patch rather than a direct assignment"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Also, skip the test for plugins which is not implemented as"},{"line_number":10,"context_line":"this test case assumes.  An example of such a plugin is"},{"line_number":11,"context_line":"opencontrail."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a1a9d01_bd1bbe7f","line":9,"in_reply_to":"9a1a9d01_6436fce8","updated":"2015-10-05 11:14:54.000000000","message":"Sorry, that was just a smart ass comment.","commit_id":"4e1186d2e08212bab0c90145905d7daa47856e47"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"3804f6fb038eeb32d41bfd36589a9da86c91cb39","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"test_l3: Use mock.patch rather than a direct assignment"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Also, skip the test for plugins which is not implemented as"},{"line_number":10,"context_line":"this test case assumes.  An example of such a plugin is"},{"line_number":11,"context_line":"opencontrail."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a1a9d01_446978bd","line":9,"in_reply_to":"9a1a9d01_6bcb5b73","updated":"2015-10-05 04:53:03.000000000","message":"Done","commit_id":"4e1186d2e08212bab0c90145905d7daa47856e47"}],"neutron/tests/unit/extensions/test_l3.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"12667c03274c2a6405a367bf785ff3823ceb4cbb","unresolved":false,"context_lines":[{"line_number":2484,"context_line":"        plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":2485,"context_line":"            service_constants.L3_ROUTER_NAT]"},{"line_number":2486,"context_line":"        if not isinstance(plugin, l3_db.L3_NAT_dbonly_mixin):"},{"line_number":2487,"context_line":"            self.skipTest(\"Plugin is not L3_NAT_dbonly_mixin\")"},{"line_number":2488,"context_line":"        ctx \u003d context.Context(\u0027\u0027, \u0027foo\u0027)"},{"line_number":2489,"context_line":"        mock.patch.object(plugin, \u0027_update_router_gw_info\u0027,"},{"line_number":2490,"context_line":"                          side_effect\u003dn_exc.NeutronException)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_4b95373e","line":2487,"updated":"2015-10-02 11:47:32.000000000","message":"is not \u003d\u003e has no?","commit_id":"4e1186d2e08212bab0c90145905d7daa47856e47"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"3804f6fb038eeb32d41bfd36589a9da86c91cb39","unresolved":false,"context_lines":[{"line_number":2484,"context_line":"        plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":2485,"context_line":"            service_constants.L3_ROUTER_NAT]"},{"line_number":2486,"context_line":"        if not isinstance(plugin, l3_db.L3_NAT_dbonly_mixin):"},{"line_number":2487,"context_line":"            self.skipTest(\"Plugin is not L3_NAT_dbonly_mixin\")"},{"line_number":2488,"context_line":"        ctx \u003d context.Context(\u0027\u0027, \u0027foo\u0027)"},{"line_number":2489,"context_line":"        mock.patch.object(plugin, \u0027_update_router_gw_info\u0027,"},{"line_number":2490,"context_line":"                          side_effect\u003dn_exc.NeutronException)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_a45ad428","line":2487,"in_reply_to":"9a1a9d01_4b95373e","updated":"2015-10-05 04:53:03.000000000","message":"i meant \"is not\".\n\"has no\" might or might not be more natural.\ni don\u0027t have strong opinion either side.\n(and i guess you don\u0027t either as you\u0027re commnet has \"?\")","commit_id":"4e1186d2e08212bab0c90145905d7daa47856e47"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"12667c03274c2a6405a367bf785ff3823ceb4cbb","unresolved":false,"context_lines":[{"line_number":2487,"context_line":"            self.skipTest(\"Plugin is not L3_NAT_dbonly_mixin\")"},{"line_number":2488,"context_line":"        ctx \u003d context.Context(\u0027\u0027, \u0027foo\u0027)"},{"line_number":2489,"context_line":"        mock.patch.object(plugin, \u0027_update_router_gw_info\u0027,"},{"line_number":2490,"context_line":"                          side_effect\u003dn_exc.NeutronException)"},{"line_number":2491,"context_line":"        data \u003d {\u0027router\u0027: {"},{"line_number":2492,"context_line":"            \u0027name\u0027: \u0027router1\u0027, \u0027admin_state_up\u0027: True,"},{"line_number":2493,"context_line":"            \u0027external_gateway_info\u0027: {\u0027network_id\u0027: \u0027some_uuid\u0027}}}"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_abb893e6","line":2490,"updated":"2015-10-02 11:47:32.000000000","message":"it should be:\n\n mock.patch.object(...).start()","commit_id":"4e1186d2e08212bab0c90145905d7daa47856e47"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"3804f6fb038eeb32d41bfd36589a9da86c91cb39","unresolved":false,"context_lines":[{"line_number":2487,"context_line":"            self.skipTest(\"Plugin is not L3_NAT_dbonly_mixin\")"},{"line_number":2488,"context_line":"        ctx \u003d context.Context(\u0027\u0027, \u0027foo\u0027)"},{"line_number":2489,"context_line":"        mock.patch.object(plugin, \u0027_update_router_gw_info\u0027,"},{"line_number":2490,"context_line":"                          side_effect\u003dn_exc.NeutronException)"},{"line_number":2491,"context_line":"        data \u003d {\u0027router\u0027: {"},{"line_number":2492,"context_line":"            \u0027name\u0027: \u0027router1\u0027, \u0027admin_state_up\u0027: True,"},{"line_number":2493,"context_line":"            \u0027external_gateway_info\u0027: {\u0027network_id\u0027: \u0027some_uuid\u0027}}}"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_243004e8","line":2490,"in_reply_to":"9a1a9d01_abb893e6","updated":"2015-10-05 04:53:03.000000000","message":"oops.","commit_id":"4e1186d2e08212bab0c90145905d7daa47856e47"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"bf849acd50d3b40b4ca31cebcc1a98300feb33d7","unresolved":false,"context_lines":[{"line_number":2480,"context_line":"                self.assertEqual(floating_ip.version, 4)"},{"line_number":2481,"context_line":""},{"line_number":2482,"context_line":"    def test_create_router_gateway_fails(self):"},{"line_number":2483,"context_line":"        # Force _update_router_gw_info failure"},{"line_number":2484,"context_line":"        plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":2485,"context_line":"            service_constants.L3_ROUTER_NAT]"},{"line_number":2486,"context_line":"        if not isinstance(plugin, l3_db.L3_NAT_dbonly_mixin):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_1d550a4f","line":2483,"updated":"2015-10-05 11:14:46.000000000","message":"This comment is now a bit misplaced.","commit_id":"93cebf071e08b0d991b0b0584fd5028b1c0b5005"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"9377483e25040acd0154a7db6e8937c1a29885f6","unresolved":false,"context_lines":[{"line_number":2480,"context_line":"                self.assertEqual(floating_ip.version, 4)"},{"line_number":2481,"context_line":""},{"line_number":2482,"context_line":"    def test_create_router_gateway_fails(self):"},{"line_number":2483,"context_line":"        # Force _update_router_gw_info failure"},{"line_number":2484,"context_line":"        plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":2485,"context_line":"            service_constants.L3_ROUTER_NAT]"},{"line_number":2486,"context_line":"        if not isinstance(plugin, l3_db.L3_NAT_dbonly_mixin):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_3897bc91","line":2483,"in_reply_to":"9a1a9d01_1d550a4f","updated":"2015-10-05 11:41:33.000000000","message":"my understanding is that this comment explains what this test case does and this seems the right place for it.","commit_id":"93cebf071e08b0d991b0b0584fd5028b1c0b5005"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"bf849acd50d3b40b4ca31cebcc1a98300feb33d7","unresolved":false,"context_lines":[{"line_number":2483,"context_line":"        # Force _update_router_gw_info failure"},{"line_number":2484,"context_line":"        plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":2485,"context_line":"            service_constants.L3_ROUTER_NAT]"},{"line_number":2486,"context_line":"        if not isinstance(plugin, l3_db.L3_NAT_dbonly_mixin):"},{"line_number":2487,"context_line":"            self.skipTest(\"Plugin is not L3_NAT_dbonly_mixin\")"},{"line_number":2488,"context_line":"        ctx \u003d context.Context(\u0027\u0027, \u0027foo\u0027)"},{"line_number":2489,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_3d21eeb4","line":2486,"updated":"2015-10-05 11:14:46.000000000","message":"It suggests that the test belongs to other place (where that specific mixin is validated).","commit_id":"93cebf071e08b0d991b0b0584fd5028b1c0b5005"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"9377483e25040acd0154a7db6e8937c1a29885f6","unresolved":false,"context_lines":[{"line_number":2483,"context_line":"        # Force _update_router_gw_info failure"},{"line_number":2484,"context_line":"        plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":2485,"context_line":"            service_constants.L3_ROUTER_NAT]"},{"line_number":2486,"context_line":"        if not isinstance(plugin, l3_db.L3_NAT_dbonly_mixin):"},{"line_number":2487,"context_line":"            self.skipTest(\"Plugin is not L3_NAT_dbonly_mixin\")"},{"line_number":2488,"context_line":"        ctx \u003d context.Context(\u0027\u0027, \u0027foo\u0027)"},{"line_number":2489,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_b863cc19","line":2486,"in_reply_to":"9a1a9d01_3d21eeb4","updated":"2015-10-05 11:41:33.000000000","message":"Done","commit_id":"93cebf071e08b0d991b0b0584fd5028b1c0b5005"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"0181b6c6408048cb35f5949e0bfe341ae411ecec","unresolved":false,"context_lines":[{"line_number":2873,"context_line":"        self.plugin \u003d TestL3NatServicePlugin()"},{"line_number":2874,"context_line":""},{"line_number":2875,"context_line":""},{"line_number":2876,"context_line":"class L3NatDBTestCaseMixin(object):"},{"line_number":2877,"context_line":"    \"\"\"L3_NAT_dbonly_mixin specific test cases.\"\"\""},{"line_number":2878,"context_line":""},{"line_number":2879,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_135e5b12","line":2876,"updated":"2015-10-05 11:51:57.000000000","message":"My suggestion about test location was mostly about why it\u0027s not in neutron/tests/unit/db/test_l3_db.py that would be the proper location for tests that target the neutron/db/l3_db.py file.","commit_id":"0007713f0ddce84cb3441bfae1dc28e3f0caef4f"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"3708b38ef40af868ac00300061be7e99b4067417","unresolved":false,"context_lines":[{"line_number":2900,"context_line":"        with self.network() as n:"},{"line_number":2901,"context_line":"            data \u003d {\u0027router\u0027: {"},{"line_number":2902,"context_line":"                \u0027name\u0027: \u0027router1\u0027, \u0027admin_state_up\u0027: True,"},{"line_number":2903,"context_line":"                \u0027external_gateway_info\u0027: {\u0027network_id\u0027: n[\u0027network\u0027][\u0027id\u0027]}}}"},{"line_number":2904,"context_line":""},{"line_number":2905,"context_line":"            self.assertRaises(MyException, plugin.create_router, ctx, data)"},{"line_number":2906,"context_line":"            # Verify router doesn\u0027t persist on failure"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a2fa921_c46dd133","line":2903,"updated":"2015-10-06 02:45:00.000000000","message":"indent issue?","commit_id":"0b1fd2ab1d22e4271b5e5086b58c1f5a0e988b54"}]}
