)]}'
{"neutron/tests/unit/test_linux_ip_lib.py":[{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"d75e3a93331f0d0495290deac0bdbb34d3642838","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        self.execute.assert_called_once_with([\u0027ip\u0027, \u0027-4\u0027, \u0027link\u0027, \u0027list\u0027],"},{"line_number":163,"context_line":"                                             root_helper\u003dNone)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def test_execute_wrapper_inet6_options(self):"},{"line_number":166,"context_line":"        ip_lib.SubProcessBase._execute([6], \u0027link\u0027, (\u0027list\u0027,))"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        self.execute.assert_called_once_with([\u0027ip\u0027, \u0027-6\u0027, \u0027link\u0027, \u0027list\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2FrAE%3D","line":165,"updated":"2014-03-14 15:24:27.000000000","message":"Actually in this test you are testing that an int parameter is correctly passed, which is what test_execute_wrapper_int_options is doing. What is your test adding?","commit_id":"82332462d517febd884de5bfa9f4fda1224fd3e9"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"6f345afe68ac9827c0341353074fbae4a4c1c518","unresolved":false,"context_lines":[{"line_number":383,"context_line":""},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"def test_add_vxlan_without_port(self):"},{"line_number":386,"context_line":"    ip_lib.IPWrapper(\u0027sudo\u0027).add_vxlan(\u0027vxlan0\u0027, \u0027vni0\u0027, \u0027group0\u0027)"},{"line_number":387,"context_line":"    self.execute.assert_called_once_with(\u0027\u0027, \u0027link\u0027,"},{"line_number":388,"context_line":"                                         [\u0027add\u0027, \u0027vxlan0\u0027, \u0027type\u0027,"},{"line_number":389,"context_line":"                                          \u0027vxlan\u0027, \u0027id\u0027, \u0027vni0\u0027, \u0027group\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2Fhbs%3D","line":386,"updated":"2014-03-17 11:13:07.000000000","message":"If you want to test the optional parameters of the function add_vxlan, instead of creating a call for each of them, I\u0027d pass them all in one call.\n\nip_lib.IPWrapper(\u0027sudo\u0027).add_vxlan(\u0027vxlan0\u0027, \u0027vni0\u0027, group\u003d\u0027group0\u0027, dev\u003d\u0027dev0\u0027, ttl\u003d\u0027ttl0\u0027, tos\u003d\u0027tos0\u0027, local\u003d\u0027local0\u0027, port\u003d\u002712\u0027, proxy\u003dTrue)\n\nYou will have to modify the self.execute.assert_called_once_with accordingly.\n \nYou can remove then the self.execute_p.stop and self.execute_p.start()","commit_id":"d5af28fa39865c030798f578642330ca6f7ac715"},{"author":{"_account_id":6124,"name":"Rohan Kanade","email":"openstack@rohankanade.com","username":"kanaderohan"},"change_message_id":"a31e48c7f432c0fa4fed2860f88d0fbb85177153","unresolved":false,"context_lines":[{"line_number":382,"context_line":"        self.assertEqual(dev.mock_calls, [])"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"def test_add_vxlan_valid_port_length(self):"},{"line_number":386,"context_line":"    ip_lib.IPWrapper(\u0027sudo\u0027).add_vxlan(\u0027vxlan0\u0027, \u0027vni0\u0027, group\u003d\u0027group0\u0027,"},{"line_number":387,"context_line":"                                       dev\u003d\u0027dev0\u0027, ttl\u003d\u0027ttl0\u0027, tos\u003d\u0027tos0\u0027,"},{"line_number":388,"context_line":"                                       local\u003d\u0027local0\u0027, port\u003d\u002712\u0027, proxy\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2Fd9Y%3D","line":385,"updated":"2014-03-17 18:12:59.000000000","message":"I know there are no docstrings in this file, but would you please add atleast a one liner docstring to explain what this test does?","commit_id":"b87f8df2e5ebf3fe98f30f341591204e5e11c209"},{"author":{"_account_id":6124,"name":"Rohan Kanade","email":"openstack@rohankanade.com","username":"kanaderohan"},"change_message_id":"a31e48c7f432c0fa4fed2860f88d0fbb85177153","unresolved":false,"context_lines":[{"line_number":397,"context_line":"                                         \u0027sudo\u0027, None)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"def test_add_vxlan_invalid_port_length(self):"},{"line_number":401,"context_line":"    ip_lib.IPWrapper(\u0027sudo\u0027).add_vxlan(\u0027vxlan0\u0027, \u0027vni0\u0027, group\u003d\u0027group0\u0027,"},{"line_number":402,"context_line":"                                       dev\u003d\u0027dev0\u0027, ttl\u003d\u0027ttl0\u0027, tos\u003d\u0027tos0\u0027,"},{"line_number":403,"context_line":"                                       local\u003d\u0027local0\u0027, port\u003d\u0027123\u0027, proxy\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2Fd9M%3D","line":400,"updated":"2014-03-17 18:12:59.000000000","message":"Ditto L385","commit_id":"b87f8df2e5ebf3fe98f30f341591204e5e11c209"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"049cb525866922817c1685f99ceb14851fb8a07a","unresolved":false,"context_lines":[{"line_number":383,"context_line":""},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"def test_add_vxlan_valid_port_length(self):"},{"line_number":386,"context_line":"    \"\"\"Tests the add_vxlan function for port length equals 2.\"\"\""},{"line_number":387,"context_line":"    ip_lib.IPWrapper(\u0027sudo\u0027).add_vxlan(\u0027vxlan0\u0027, \u0027vni0\u0027, group\u003d\u0027group0\u0027,"},{"line_number":388,"context_line":"                                       dev\u003d\u0027dev0\u0027, ttl\u003d\u0027ttl0\u0027, tos\u003d\u0027tos0\u0027,"},{"line_number":389,"context_line":"                                       local\u003d\u0027local0\u0027, port\u003d\u002712\u0027, proxy\u003d"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2FX4w%3D","line":386,"updated":"2014-03-18 09:49:45.000000000","message":"I\u0027d write \"Tests the add_vxlan function\" , the port detail is not relevant","commit_id":"519fb7095f118a788d72cc63c900b0fc179ecf6f"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"049cb525866922817c1685f99ceb14851fb8a07a","unresolved":false,"context_lines":[{"line_number":400,"context_line":""},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"def test_add_vxlan_invalid_port_length(self):"},{"line_number":403,"context_line":"    \"\"\"Raises exception when port length is not equal to 2.\"\"\""},{"line_number":404,"context_line":"    ip_lib.IPWrapper(\u0027sudo\u0027).add_vxlan(\u0027vxlan0\u0027, \u0027vni0\u0027, group\u003d\u0027group0\u0027,"},{"line_number":405,"context_line":"                                       dev\u003d\u0027dev0\u0027, ttl\u003d\u0027ttl0\u0027, tos\u003d\u0027tos0\u0027,"},{"line_number":406,"context_line":"                                       local\u003d\u0027local0\u0027, port\u003d\u0027123\u0027, proxy\u003d"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2FX4k%3D","line":403,"updated":"2014-03-18 09:49:45.000000000","message":"I\u0027d write \"Raises exception when port length is invalid\" , the equal to 2 is a detail of the implementation","commit_id":"519fb7095f118a788d72cc63c900b0fc179ecf6f"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a82ced3fa7cb2aea78be9ca1c8a6e00685dbfc62","unresolved":false,"context_lines":[{"line_number":382,"context_line":"        self.assertEqual(dev.mock_calls, [])"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"def test_add_vxlan_valid_port_length(self):"},{"line_number":386,"context_line":"    \"\"\"Tests the add_vxlan function.\"\"\""},{"line_number":387,"context_line":"    ip_lib.IPWrapper(\u0027sudo\u0027).add_vxlan(\u0027vxlan0\u0027, \u0027vni0\u0027, group\u003d\u0027group0\u0027,"},{"line_number":388,"context_line":"                                       dev\u003d\u0027dev0\u0027, ttl\u003d\u0027ttl0\u0027, tos\u003d\u0027tos0\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2BwJk%3D","line":385,"updated":"2014-03-24 16:04:07.000000000","message":"These functions should be part of the class. Otherwise your tests are not even executed.","commit_id":"f7b0fd83e0d3de06769903247b74facb5b609d79"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"09cf14b97c4fd84b2c0a06a08674c1af2f2d8b6a","unresolved":false,"context_lines":[{"line_number":372,"context_line":"                                 ip_ns_cmd_cls.mock_calls)"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    def test_add_vxlan_valid_port_length(self):"},{"line_number":375,"context_line":"        \"\"\"Tests the add_vxlan function.\"\"\""},{"line_number":376,"context_line":"        ip_lib.IPWrapper(\u0027sudo\u0027).add_vxlan(\u0027vxlan0\u0027, \u0027vni0\u0027, group\u003d\u0027group0\u0027,"},{"line_number":377,"context_line":"                                           dev\u003d\u0027dev0\u0027, ttl\u003d\u0027ttl0\u0027, tos\u003d\u0027tos0\u0027,"},{"line_number":378,"context_line":"                                           local\u003d\u0027local0\u0027, proxy\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F%2BqGg%3D","line":375,"updated":"2014-03-25 08:54:06.000000000","message":"The docstring is self-evident. Remove.","commit_id":"6e25ce4a7e8b1b9f0c69e275988172a5ca79f548"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"09cf14b97c4fd84b2c0a06a08674c1af2f2d8b6a","unresolved":false,"context_lines":[{"line_number":383,"context_line":"                                              \u0027group0\u0027, \u0027dev\u0027, \u0027dev0\u0027,"},{"line_number":384,"context_line":"                                              \u0027ttl\u0027, \u0027ttl0\u0027, \u0027tos\u0027, \u0027tos0\u0027,"},{"line_number":385,"context_line":"                                              \u0027local\u0027, \u0027local0\u0027, \u0027proxy\u0027,"},{"line_number":386,"context_line":"                                              \u0027port\u0027, \u00271\u0027, \u00272\u0027],"},{"line_number":387,"context_line":"                                             \u0027sudo\u0027, None)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    def test_add_vxlan_invalid_port_length(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F%2BqGM%3D","line":386,"updated":"2014-03-25 08:54:06.000000000","message":"I may know little about that, but why does port number passed as two separate args (1 and 2) instead of single one (12)? I think you trigger wrong code (that one that expects a tuple, not string). This may be a bug in add_vxlan itself (accepting string instead of tuple for min:max port argument).","commit_id":"6e25ce4a7e8b1b9f0c69e275988172a5ca79f548"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ad00ac915f6f72a9faaa93efb3b18c3fe7c147fa","unresolved":false,"context_lines":[{"line_number":383,"context_line":"                                              \u0027group0\u0027, \u0027dev\u0027, \u0027dev0\u0027,"},{"line_number":384,"context_line":"                                              \u0027ttl\u0027, \u0027ttl0\u0027, \u0027tos\u0027, \u0027tos0\u0027,"},{"line_number":385,"context_line":"                                              \u0027local\u0027, \u0027local0\u0027, \u0027proxy\u0027,"},{"line_number":386,"context_line":"                                              \u0027port\u0027, \u00271\u0027, \u00272\u0027],"},{"line_number":387,"context_line":"                                             \u0027sudo\u0027, None)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    def test_add_vxlan_invalid_port_length(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F%2Bpk8%3D","line":386,"in_reply_to":"AAAAWH%2F%2Bp1g%3D","updated":"2014-03-25 09:51:41.000000000","message":"The argument actually expects a 2-tuple. That\u0027s what you should pass to the function, not a string.\n\n[add_vxlan should also probably be fixed in some other patch to check that port argument is not a string, but that\u0027s beyond your patch].","commit_id":"6e25ce4a7e8b1b9f0c69e275988172a5ca79f548"},{"author":{"_account_id":9219,"name":"Sphoorti","email":"sphoorti.joglekar@gmail.com","username":"Sphoorti"},"change_message_id":"aeccb61f6c6e1b256c7a577d001c48cf015aa9b4","unresolved":false,"context_lines":[{"line_number":383,"context_line":"                                              \u0027group0\u0027, \u0027dev\u0027, \u0027dev0\u0027,"},{"line_number":384,"context_line":"                                              \u0027ttl\u0027, \u0027ttl0\u0027, \u0027tos\u0027, \u0027tos0\u0027,"},{"line_number":385,"context_line":"                                              \u0027local\u0027, \u0027local0\u0027, \u0027proxy\u0027,"},{"line_number":386,"context_line":"                                              \u0027port\u0027, \u00271\u0027, \u00272\u0027],"},{"line_number":387,"context_line":"                                             \u0027sudo\u0027, None)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    def test_add_vxlan_invalid_port_length(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F%2Bp1g%3D","line":386,"in_reply_to":"AAAAWH%2F%2BqGM%3D","updated":"2014-03-25 09:28:56.000000000","message":"The port number expects two args . https://github.com/openstack/neutron/blob/master/neutron/agent/linux/ip_lib.py#L175","commit_id":"6e25ce4a7e8b1b9f0c69e275988172a5ca79f548"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"09cf14b97c4fd84b2c0a06a08674c1af2f2d8b6a","unresolved":false,"context_lines":[{"line_number":387,"context_line":"                                             \u0027sudo\u0027, None)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    def test_add_vxlan_invalid_port_length(self):"},{"line_number":390,"context_line":"        \"\"\"Raise NetworkVxlanPortRangeError for inavlid port length.\"\"\""},{"line_number":391,"context_line":"        wrapper \u003d ip_lib.IPWrapper(\u0027sudo\u0027)"},{"line_number":392,"context_line":"        self.assertRaises(exceptions.NetworkVxlanPortRangeError,"},{"line_number":393,"context_line":"                          wrapper.add_vxlan, \u0027vxlan0\u0027, \u0027vni0\u0027, group\u003d\u0027group0\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F%2BqGs%3D","line":390,"updated":"2014-03-25 08:54:06.000000000","message":"inavlid -\u003e invalid","commit_id":"6e25ce4a7e8b1b9f0c69e275988172a5ca79f548"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"53acbe0e3443a07afff2141eea3396a9f7062b26","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                          wrapper.add_vxlan, \u0027vxlan0\u0027, \u0027vni0\u0027, group\u003d\u0027group0\u0027,"},{"line_number":392,"context_line":"                          dev\u003d\u0027dev0\u0027, ttl\u003d\u0027ttl0\u0027, tos\u003d\u0027tos0\u0027,"},{"line_number":393,"context_line":"                          local\u003d\u0027local0\u0027, proxy\u003dTrue,"},{"line_number":394,"context_line":"                          port\u003d\u0027123\u0027)"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"    def test_add_device_to_namespace(self):"},{"line_number":397,"context_line":"        dev \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2Bpg8%3D","line":394,"updated":"2014-03-25 10:02:14.000000000","message":"you should also pass a tuple here.","commit_id":"c3f13058ae37e376d237453ee9b83476a4ae97c3"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"c6c6a06384def0620fb6f0b2666df18ea8c55394","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                          wrapper.add_vxlan, \u0027vxlan0\u0027, \u0027vni0\u0027, group\u003d\u0027group0\u0027,"},{"line_number":392,"context_line":"                          dev\u003d\u0027dev0\u0027, ttl\u003d\u0027ttl0\u0027, tos\u003d\u0027tos0\u0027,"},{"line_number":393,"context_line":"                          local\u003d\u0027local0\u0027, proxy\u003dTrue,"},{"line_number":394,"context_line":"                          port\u003d\u0027123\u0027)"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"    def test_add_device_to_namespace(self):"},{"line_number":397,"context_line":"        dev \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F%2BpLc%3D","line":394,"in_reply_to":"AAAAWH%2F%2Bpg8%3D","updated":"2014-03-25 10:49:11.000000000","message":"Hello Ihar, actually this test is checking that if you don\u0027t pass a tuple the function raises the proper exception so why passing a tuple? I don\u0027t get it","commit_id":"c3f13058ae37e376d237453ee9b83476a4ae97c3"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"29e56bbe2c38f2b3f2cd1ad2321905af7cea3c27","unresolved":false,"context_lines":[{"line_number":372,"context_line":"                                 ip_ns_cmd_cls.mock_calls)"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    def test_add_vxlan_valid_port_length(self):"},{"line_number":375,"context_line":"        ip_lib.IPWrapper(\u0027sudo\u0027).add_vxlan(\u0027vxlan0\u0027, \u0027vni0\u0027, group\u003d\u0027group0\u0027,"},{"line_number":376,"context_line":"                                           dev\u003d\u0027dev0\u0027, ttl\u003d\u0027ttl0\u0027, tos\u003d\u0027tos0\u0027,"},{"line_number":377,"context_line":"                                           local\u003d\u0027local0\u0027, proxy\u003dTrue,"},{"line_number":378,"context_line":"                                           port\u003d(\u00271\u0027, \u00272\u0027))"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAWH%2F%2Bo1k%3D","line":375,"updated":"2014-03-25 12:00:21.000000000","message":"The return value should validated here.\n\nretval \u003d ip_lib.IPWrapper().add_vxlan(...)\n\nself.assertIsInstance()\n\nself.assertEqual(retval.name, \u0027vxlan0\u0027)","commit_id":"23cbaae421c4ff2bf3f3a8b57dbd4a3865a57a7c"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"f8b3ee1ccf2c7c6d778beac67fb0a2dcc27bc997","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Copyright 2012 OpenStack Foundation"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAWH%2F%2Bfvw%3D","line":1,"updated":"2014-03-26 12:19:38.000000000","message":"blank line ?","commit_id":"1e275e4af9d58ed87d75cd443031c2ac91a5aa61"}]}
