)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kyle Mestery \u003ckmestery@cisco.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2012-12-14 19:19:50 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"For unit test test_l3_plugin.L3NatExtensionTestCase.test_router_list,"},{"line_number":8,"context_line":"correctly validate the value returned from listing the routers."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Fixes bug 1078150"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAMX%2F%2FzVY%3D","line":7,"updated":"2012-12-15 08:40:56.000000000","message":"The Git convention recommends commit messages should start with a short 50 character or less summary in a single paragraph. It will make it easier to read the output of git log --oneline :-)\nhttp://wiki.openstack.org/GerritWorkflow#Committing_Changes","commit_id":"d955618e4ecef1818a4d5d1696fe25c34b8f1271"}],"quantum/tests/unit/test_l3_plugin.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"0cba82f7d20c08fc3da39bff6c3545052149734a","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        instance.get_routers.assert_called_with(mock.ANY, fields\u003dmock.ANY,"},{"line_number":142,"context_line":"                                                filters\u003dmock.ANY)"},{"line_number":143,"context_line":"        self.assertEqual(res.status_int, exc.HTTPOk.code)"},{"line_number":144,"context_line":"        self.assertTrue(\u0027routers\u0027 in res.json)"},{"line_number":145,"context_line":"        routers \u003d res.json[\u0027routers\u0027]"},{"line_number":146,"context_line":"        found \u003d False"},{"line_number":147,"context_line":"        for p in routers:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2Fzhc%3D","line":144,"updated":"2012-12-14 22:57:49.000000000","message":"I think this should be reduced to a one-liner:\n\nself.assertIn(router_id, (r[\u0027id\u0027] for r in res.json[\u0027routers\u0027]))","commit_id":"bee816db324987b81b53d60e28746d9d871606e8"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":141,"context_line":"        instance.get_routers.assert_called_with(mock.ANY, fields\u003dmock.ANY,"},{"line_number":142,"context_line":"                                                filters\u003dmock.ANY)"},{"line_number":143,"context_line":"        self.assertEqual(res.status_int, exc.HTTPOk.code)"},{"line_number":144,"context_line":"        self.assertTrue(\u0027routers\u0027 in res.json)"},{"line_number":145,"context_line":"        routers \u003d res.json[\u0027routers\u0027]"},{"line_number":146,"context_line":"        found \u003d False"},{"line_number":147,"context_line":"        for p in routers:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2Fzg0%3D","line":144,"in_reply_to":"AAAAMX%2F%2Fzhc%3D","updated":"2012-12-14 23:00:53.000000000","message":"Ah, thanks for the Python-foo Mark! Updating it now.","commit_id":"bee816db324987b81b53d60e28746d9d871606e8"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"47023701962cbd14a63b5ee774268c902ec4078f","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                                                filters\u003dmock.ANY)"},{"line_number":143,"context_line":"        self.assertEqual(res.status_int, exc.HTTPOk.code)"},{"line_number":144,"context_line":"        self.assertTrue(\u0027routers\u0027 in res.json)"},{"line_number":145,"context_line":"        self.assertIn(router_id, (r[\u0027id\u0027] for r in res.json[\u0027routers\u0027]))"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def test_router_update(self):"},{"line_number":148,"context_line":"        router_id \u003d _uuid()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2Fzbg%3D","line":145,"updated":"2012-12-15 01:31:43.000000000","message":"There is case for return more than one routers. Should we test it more strict? like:\n\nself.assertEqual(1, len(res.json[\u0027routers\u0027]))\n\nself.assertEqual(router_id, res.json[\u0027routers\u0027][0][\u0027id\u0027])\n\nor\n\nself.assertEqual(1, len(res.json[\u0027routers\u0027]))\n\nself.assertDictEqual(return_value, res.json[\u0027routers\u0027][0])\n\nThanks, Alex.","commit_id":"d955618e4ecef1818a4d5d1696fe25c34b8f1271"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":142,"context_line":"                                                filters\u003dmock.ANY)"},{"line_number":143,"context_line":"        self.assertEqual(res.status_int, exc.HTTPOk.code)"},{"line_number":144,"context_line":"        self.assertTrue(\u0027routers\u0027 in res.json)"},{"line_number":145,"context_line":"        self.assertIn(router_id, (r[\u0027id\u0027] for r in res.json[\u0027routers\u0027]))"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def test_router_update(self):"},{"line_number":148,"context_line":"        router_id \u003d _uuid()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2FzS8%3D","line":145,"in_reply_to":"AAAAMX%2F%2FzXE%3D","updated":"2012-12-15 13:59:10.000000000","message":"Got it, thanks Alex.","commit_id":"d955618e4ecef1818a4d5d1696fe25c34b8f1271"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"47023701962cbd14a63b5ee774268c902ec4078f","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                                                filters\u003dmock.ANY)"},{"line_number":143,"context_line":"        self.assertEqual(res.status_int, exc.HTTPOk.code)"},{"line_number":144,"context_line":"        self.assertTrue(\u0027routers\u0027 in res.json)"},{"line_number":145,"context_line":"        self.assertIn(router_id, (r[\u0027id\u0027] for r in res.json[\u0027routers\u0027]))"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def test_router_update(self):"},{"line_number":148,"context_line":"        router_id \u003d _uuid()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2FzXE%3D","line":145,"in_reply_to":"AAAAMX%2F%2FzZw%3D","updated":"2012-12-15 03:14:52.000000000","message":"Kyle, thank you for doing this.\nMaybe I didn\u0027t explain the case clearly. It\u0027s missing an the case it return two routers with same id.\n\nThanks.","commit_id":"d955618e4ecef1818a4d5d1696fe25c34b8f1271"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"unresolved":false,"context_lines":[{"line_number":142,"context_line":"                                                filters\u003dmock.ANY)"},{"line_number":143,"context_line":"        self.assertEqual(res.status_int, exc.HTTPOk.code)"},{"line_number":144,"context_line":"        self.assertTrue(\u0027routers\u0027 in res.json)"},{"line_number":145,"context_line":"        self.assertIn(router_id, (r[\u0027id\u0027] for r in res.json[\u0027routers\u0027]))"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def test_router_update(self):"},{"line_number":148,"context_line":"        router_id \u003d _uuid()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2FzZw%3D","line":145,"in_reply_to":"AAAAMX%2F%2Fzbg%3D","updated":"2012-12-15 02:23:11.000000000","message":"I am fine with modifying it this way. My original patch searched the list of returned routers for the matching one. See version 1 of this patch. But I can reformulate like this as well.","commit_id":"d955618e4ecef1818a4d5d1696fe25c34b8f1271"}]}
