)]}'
{"ceilometer/tests/network/statistics/opencontrail/test_client.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"ab045d5790247b2e5f4f0d63368bfcea942fefff","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        self.client \u003d client.Client(\u0027http://127.0.0.1:8081\u0027, {\u0027arg1\u0027: \u0027aaa\u0027})"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        self.get_resp \u003d mock.MagicMock()"},{"line_number":28,"context_line":"        self.get_resp.raw \u003d mock.MagicMock()"},{"line_number":29,"context_line":"        self.get \u003d mock.patch(\u0027requests.get\u0027,"},{"line_number":30,"context_line":"                              return_value\u003dself.get_resp).start()"},{"line_number":31,"context_line":"        self.get_resp.raw.version \u003d 1.1"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa041b7_48a1e193","line":28,"updated":"2015-04-02 17:01:38.000000000","message":"i don\u0027t quite understand why this is needed.","commit_id":"8e9dbab3374dae0067ca2be0f8607b5e702e3fa5"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"f5e8f6444e4eb2cb621890d757cd74297d9f718d","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        self.get_resp.raw.version \u003d 1.1"},{"line_number":31,"context_line":"        self.get_resp.status_code \u003d 200"},{"line_number":32,"context_line":"        self.get_resp.reason \u003d \u0027OK\u0027"},{"line_number":33,"context_line":"        self.get_resp.content \u003d \u0027\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def test_vm_statistics(self):"},{"line_number":36,"context_line":"        self.client.networks.get_vm_statistics(\u0027bbb\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_49630bdd","line":33,"updated":"2015-04-08 01:17:24.000000000","message":"I\u0027m not very sure, but I think you should add resp.headers as well, see https://github.com/openstack/ceilometer/blob/abaa96cdba7748b97de6d35815c8f31859114894/ceilometer/network/statistics/opencontrail/client.py#L102","commit_id":"931d7a415e86f795a5e9fca89a511a3be641b8d9"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"e60bbae68709aa65297ad8a91354a970b10e9bde","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        self.get_resp.raw.version \u003d 1.1"},{"line_number":31,"context_line":"        self.get_resp.status_code \u003d 200"},{"line_number":32,"context_line":"        self.get_resp.reason \u003d \u0027OK\u0027"},{"line_number":33,"context_line":"        self.get_resp.content \u003d \u0027\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def test_vm_statistics(self):"},{"line_number":36,"context_line":"        self.client.networks.get_vm_statistics(\u0027bbb\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_0f7035db","line":33,"in_reply_to":"9aa53dc9_0b35eef5","updated":"2015-04-09 01:33:35.000000000","message":"after a second thought, I think your previous fix may not be but this one is the right fix, https://git.openstack.org/cgit/openstack/ceilometer/commit/?id\u003d3405824823161e9ea5ce4474b6e701bda369bdb4\n\nsince resp.reason will be formated to a string, while resp.content is a raw MagicMock which cannot be jioned directly\n\nWe can afford it :P","commit_id":"931d7a415e86f795a5e9fca89a511a3be641b8d9"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"45ced0f319f997b5dad7440753839e7738800dea","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        self.get_resp.raw.version \u003d 1.1"},{"line_number":31,"context_line":"        self.get_resp.status_code \u003d 200"},{"line_number":32,"context_line":"        self.get_resp.reason \u003d \u0027OK\u0027"},{"line_number":33,"context_line":"        self.get_resp.content \u003d \u0027\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def test_vm_statistics(self):"},{"line_number":36,"context_line":"        self.client.networks.get_vm_statistics(\u0027bbb\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa53dc9_0b35eef5","line":33,"in_reply_to":"9aa53dc9_49630bdd","updated":"2015-04-08 09:57:14.000000000","message":"resp.headers will resolve as a MagicMock. In an iterator context the loop will just skip so dump is not extended:\n\n    \u003e\u003e\u003e x \u003d mock.MagicMock()\n    \u003e\u003e\u003e for x, y in x.headers:\n    ...     print x, y\n    ... \n\nwhereas for the string mocks:\n\n    \u003e\u003e\u003e y \u003d mock.MagicMock()\n    \u003e\u003e\u003e if y.foo:\n    ...     d \u003d [y.foo]\n    ... \n    \u003e\u003e\u003e z \u003d \u0027,\u0027.join(d)\n    Traceback (most recent call last):\n      File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n    TypeError: sequence item 0: expected string, MagicMock found\n\nWhich all seems like a good reason to not use mocks :D","commit_id":"931d7a415e86f795a5e9fca89a511a3be641b8d9"}]}
