)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"d477901e2a2f63d4ea5d3aef318cafca6f829f39","unresolved":false,"context_lines":[{"line_number":10,"context_line":"methods"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I97f2f9249b684aa5350b3f0621754543e80bec70"},{"line_number":13,"context_line":"Closes-Bug: #1241602"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAATX%2F%2F%2F84%3D","line":13,"updated":"2013-10-23 04:01:04.000000000","message":"Changing the order will likely hyperlink the bug.","commit_id":"fd29063c7d9feaecdf6a802f77b356126b14ab48"}],"neutron/tests/unit/linuxbridge/test_linuxbridge_plugin.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2ca9c08cc9ed190adda40b1efe56a300d2a91628","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    pass"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class LinuxBridgePluginRpcCallbacks(test_plugin.NeutronDbPluginV2TestCase):"},{"line_number":83,"context_line":"    def setUp(self):"},{"line_number":84,"context_line":"        super(LinuxBridgePluginRpcCallbacks, self).setUp(PLUGIN_NAME)"},{"line_number":85,"context_line":"        self.callbacks \u003d lb_neutron_plugin.LinuxBridgeRpcCallbacks()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FOHk%3D","line":82,"updated":"2013-10-21 06:46:18.000000000","message":"suggest to add \u0027Test\u0027 or \u0027TestCase\u0027 to the class name","commit_id":"e22d19d4b251f5f99e44389eb2bc136d49ea7584"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"896ac34be46da7d0035ff3ca6c9edb49911062f2","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    pass"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class LinuxBridgePluginRpcCallbacks(test_plugin.NeutronDbPluginV2TestCase):"},{"line_number":83,"context_line":"    def setUp(self):"},{"line_number":84,"context_line":"        super(LinuxBridgePluginRpcCallbacks, self).setUp(PLUGIN_NAME)"},{"line_number":85,"context_line":"        self.callbacks \u003d lb_neutron_plugin.LinuxBridgeRpcCallbacks()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FOBU%3D","line":82,"in_reply_to":"AAAATH%2F%2FOHk%3D","updated":"2013-10-21 08:23:45.000000000","message":"Done","commit_id":"e22d19d4b251f5f99e44389eb2bc136d49ea7584"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2ca9c08cc9ed190adda40b1efe56a300d2a91628","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            self.callbacks.update_device_up(\"fake_context\","},{"line_number":103,"context_line":"                                            agent_id\u003d\"123\","},{"line_number":104,"context_line":"                                            device\u003d\"device\","},{"line_number":105,"context_line":"                                            host\u003d\"host\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FOHY%3D","line":105,"updated":"2013-10-21 06:46:18.000000000","message":"nit: may also add:\n  get_port_from_device.assert_called_once_with(\u0027device\u0027)","commit_id":"e22d19d4b251f5f99e44389eb2bc136d49ea7584"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"896ac34be46da7d0035ff3ca6c9edb49911062f2","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            self.callbacks.update_device_up(\"fake_context\","},{"line_number":103,"context_line":"                                            agent_id\u003d\"123\","},{"line_number":104,"context_line":"                                            device\u003d\"device\","},{"line_number":105,"context_line":"                                            host\u003d\"host\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FOBQ%3D","line":105,"in_reply_to":"AAAATH%2F%2FOHY%3D","updated":"2013-10-21 08:23:45.000000000","message":"Done","commit_id":"e22d19d4b251f5f99e44389eb2bc136d49ea7584"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8273d6739096388df6f4aa907392e79328b799f0","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        super(TestLinuxBridgePluginRpcCallbacks, self).setUp(PLUGIN_NAME)"},{"line_number":85,"context_line":"        self.callbacks \u003d lb_neutron_plugin.LinuxBridgeRpcCallbacks()"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_update_device_down(self):"},{"line_number":88,"context_line":"        with mock.patch.object(self.callbacks, \"get_port_from_device\","},{"line_number":89,"context_line":"                               return_value\u003dNone):"},{"line_number":90,"context_line":"            self.assertEqual("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATX%2F%2F%2FVw%3D","line":87,"updated":"2013-10-23 08:05:55.000000000","message":"Same comment on test_update_device_up.","commit_id":"fd29063c7d9feaecdf6a802f77b356126b14ab48"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8273d6739096388df6f4aa907392e79328b799f0","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                {\u0027device\u0027: \u0027device\u0027, \u0027exists\u0027: False}"},{"line_number":96,"context_line":"            )"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_update_device_up(self):"},{"line_number":99,"context_line":"        with mock.patch.object(self.callbacks, \"get_port_from_device\","},{"line_number":100,"context_line":"                               return_value\u003dNone) as gpfd:"},{"line_number":101,"context_line":"            # just call the method to make sure everything is ok"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATX%2F%2F%2FV8%3D","line":98,"updated":"2013-10-23 08:05:55.000000000","message":"While this test covers the change, it only covers the first half of update_device_up. Ideally it covers all of update_device_up.\n\nOr\n\nthe mock of get_port_from_device returns None (L.100), so I would suggest to change the method name to \"test_update_device_up_not_found\".","commit_id":"fd29063c7d9feaecdf6a802f77b356126b14ab48"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d47afcf61313d5bc59df9401b1b9e5a314e91150","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    def test_update_device_up(self):"},{"line_number":99,"context_line":"        with mock.patch.object(self.callbacks, \"get_port_from_device\","},{"line_number":100,"context_line":"                               return_value\u003dNone) as gpfd:"},{"line_number":101,"context_line":"            # just call the method to make sure everything is ok"},{"line_number":102,"context_line":"            self.callbacks.update_device_up(\"fake_context\","},{"line_number":103,"context_line":"                                            agent_id\u003d\"123\","},{"line_number":104,"context_line":"                                            device\u003d\"device\","}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FN9o%3D","line":101,"updated":"2013-10-21 08:27:51.000000000","message":"seems it can be removed now","commit_id":"fd29063c7d9feaecdf6a802f77b356126b14ab48"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"4fc0ce682653a4597c46920cea35bfe111ceb60b","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    def test_update_device_up(self):"},{"line_number":99,"context_line":"        with mock.patch.object(self.callbacks, \"get_port_from_device\","},{"line_number":100,"context_line":"                               return_value\u003dNone) as gpfd:"},{"line_number":101,"context_line":"            # just call the method to make sure everything is ok"},{"line_number":102,"context_line":"            self.callbacks.update_device_up(\"fake_context\","},{"line_number":103,"context_line":"                                            agent_id\u003d\"123\","},{"line_number":104,"context_line":"                                            device\u003d\"device\","}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FN88%3D","line":101,"in_reply_to":"AAAATH%2F%2FN9o%3D","updated":"2013-10-21 08:31:46.000000000","message":"i think it\u0027s ok to leave the comment since i\u0027m not checking return value here","commit_id":"fd29063c7d9feaecdf6a802f77b356126b14ab48"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"96a431e1feb0cc4860751cba92d52eda184d81b8","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import contextlib"},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from neutron.common import constants as q_const"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F5os%3D","line":16,"updated":"2013-10-25 14:16:44.000000000","message":"Please add a blank line here.","commit_id":"9b5384642611b4359ed321cb13ae1eef27e78705"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"171b09adbf241a09a286c8fab3ab4e1f4ba84b18","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import contextlib"},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from neutron.common import constants as q_const"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F5hM%3D","line":16,"in_reply_to":"AAAATn%2F%2F5os%3D","updated":"2013-10-25 14:50:22.000000000","message":"Done","commit_id":"9b5384642611b4359ed321cb13ae1eef27e78705"}]}
