)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dc30792f17ef5df6017fa3f7767514304987a316","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1) Test for GET {flavor_id}/os-extra_specs/{key_id}"},{"line_number":10,"context_line":"2) Test for PUT {flavor_id}/os-extra_specs/{key_id}"},{"line_number":11,"context_line":"3) Move negative tests to seperate file"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I0d424005586f0bcc27642fa9124c7e35a99f8724"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAATn%2F%2FQzI%3D","line":11,"updated":"2013-11-12 03:29:20.000000000","message":"Now this patch does not move negative tests.","commit_id":"39c04c639be94f471141a1e94c7953664e8a4538"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"269f5401ba365ca2db958976bdc23b309732b9dd","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1) Test for GET {flavor_id}/os-extra_specs/{key_id}"},{"line_number":10,"context_line":"2) Test for PUT {flavor_id}/os-extra_specs/{key_id}"},{"line_number":11,"context_line":"3) Move negative tests to seperate file"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I0d424005586f0bcc27642fa9124c7e35a99f8724"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAATn%2F%2FQUs%3D","line":11,"in_reply_to":"AAAATn%2F%2FQzI%3D","updated":"2013-11-12 07:27:09.000000000","message":"Add a negative test?","commit_id":"39c04c639be94f471141a1e94c7953664e8a4538"},{"author":{"_account_id":7148,"name":"Zhu Zhu","email":"bjzzu.zz@gmail.com","username":"zhuzhubj"},"change_message_id":"2d475438cc1fc17ab58d534e413f96e48d7b888a","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1) Test for GET {flavor_id}/os-extra_specs/{key_id}"},{"line_number":10,"context_line":"2) Test for PUT {flavor_id}/os-extra_specs/{key_id}"},{"line_number":11,"context_line":"3) Move negative tests to seperate file"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I0d424005586f0bcc27642fa9124c7e35a99f8724"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAATn%2F%2FP%2FM%3D","line":11,"in_reply_to":"AAAATn%2F%2FQzI%3D","updated":"2013-11-12 09:11:07.000000000","message":"Yes, since other commit have done the negative movement. Thanks for reminding.","commit_id":"39c04c639be94f471141a1e94c7953664e8a4538"},{"author":{"_account_id":7148,"name":"Zhu Zhu","email":"bjzzu.zz@gmail.com","username":"zhuzhubj"},"change_message_id":"2d475438cc1fc17ab58d534e413f96e48d7b888a","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1) Test for GET {flavor_id}/os-extra_specs/{key_id}"},{"line_number":10,"context_line":"2) Test for PUT {flavor_id}/os-extra_specs/{key_id}"},{"line_number":11,"context_line":"3) Move negative tests to seperate file"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I0d424005586f0bcc27642fa9124c7e35a99f8724"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAATn%2F%2FP%2Fk%3D","line":11,"in_reply_to":"AAAATn%2F%2FQzI%3D","updated":"2013-11-12 09:11:07.000000000","message":"yes, right. thanks.","commit_id":"39c04c639be94f471141a1e94c7953664e8a4538"}],"tempest/api/compute/admin/test_flavors_extra_specs.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"d5a3d4e260b0250e2865868b595bb520c44038a1","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    def test_flavor_non_admin_update_specific_key(self):"},{"line_number":137,"context_line":"        specs \u003d {\"key1\": \"value1\", \"key2\": \"value2\"}"},{"line_number":138,"context_line":"        resp, body \u003d self.client.set_flavor_extra_spec("},{"line_number":139,"context_line":"            self.flavor[\u0027id\u0027], specs)"},{"line_number":140,"context_line":"        self.assertRaises(exceptions.Unauthorized,"},{"line_number":141,"context_line":"                          self.flavors_client."},{"line_number":142,"context_line":"                          update_flavor_extra_spec_key_value,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2F030%3D","line":139,"updated":"2013-10-09 10:43:25.000000000","message":"I think resp.status and body should be checked here like above.\nBecause early checking helps the debugging when an error occurred.","commit_id":"4ccae25afb4ebbeb0edf8dd06bb3fa771f8c33ba"},{"author":{"_account_id":7148,"name":"Zhu Zhu","email":"bjzzu.zz@gmail.com","username":"zhuzhubj"},"change_message_id":"c6c013245331e140ee287d0a6a28a627db2b195b","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    def test_flavor_non_admin_update_specific_key(self):"},{"line_number":137,"context_line":"        specs \u003d {\"key1\": \"value1\", \"key2\": \"value2\"}"},{"line_number":138,"context_line":"        resp, body \u003d self.client.set_flavor_extra_spec("},{"line_number":139,"context_line":"            self.flavor[\u0027id\u0027], specs)"},{"line_number":140,"context_line":"        self.assertRaises(exceptions.Unauthorized,"},{"line_number":141,"context_line":"                          self.flavors_client."},{"line_number":142,"context_line":"                          update_flavor_extra_spec_key_value,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2F0Og%3D","line":139,"in_reply_to":"AAAATH%2F%2F030%3D","updated":"2013-10-09 13:34:45.000000000","message":"Thanks Masayuki for reviewing. Yeah, it\u0027s good to add assertion here. Will fix it in next patch","commit_id":"4ccae25afb4ebbeb0edf8dd06bb3fa771f8c33ba"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"4b9563ff4f5a1dea79db6e958f09fdc57e5ca011","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":108,"context_line":"    def test_flavor_non_admin_get_specific_key(self):"},{"line_number":109,"context_line":"        specs \u003d {\"key1\": \"value1\", \"key2\": \"value2\"}"},{"line_number":110,"context_line":"        resp, body \u003d self.client.set_flavor_extra_spec("},{"line_number":111,"context_line":"            self.flavor[\u0027id\u0027], specs)"},{"line_number":112,"context_line":"        self.assertEqual(resp.status, 200)"},{"line_number":113,"context_line":"        self.assertEqual(body[\u0027key1\u0027], \u0027value1\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FrtE%3D","line":110,"updated":"2013-10-11 09:21:28.000000000","message":"May we consider that make the \u0027set_flavor_extra_spec\u0027 as a common function? It\u0027s used in most of the tests. Your idea?","commit_id":"87516e7ae645e80276692381b325475ffc936799"},{"author":{"_account_id":7148,"name":"Zhu Zhu","email":"bjzzu.zz@gmail.com","username":"zhuzhubj"},"change_message_id":"96779d3343322dc2f0256cdb570eb05d129e7cf4","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":108,"context_line":"    def test_flavor_non_admin_get_specific_key(self):"},{"line_number":109,"context_line":"        specs \u003d {\"key1\": \"value1\", \"key2\": \"value2\"}"},{"line_number":110,"context_line":"        resp, body \u003d self.client.set_flavor_extra_spec("},{"line_number":111,"context_line":"            self.flavor[\u0027id\u0027], specs)"},{"line_number":112,"context_line":"        self.assertEqual(resp.status, 200)"},{"line_number":113,"context_line":"        self.assertEqual(body[\u0027key1\u0027], \u0027value1\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2Frnw%3D","line":110,"in_reply_to":"AAAATH%2F%2FrtE%3D","updated":"2013-10-11 09:35:35.000000000","message":"Hello Lingxian, actually I think there is no need to separate it into another method. Just like method \u0027get_flavor_extra_spec\u0027 or \u0027create flavor\u0027 or \u0027set_flavor_extra_spec\u0027, these methods are already atomic methods. and just one line code actually. It will be redundancy to extract them into another method which only also contain one line code there.","commit_id":"87516e7ae645e80276692381b325475ffc936799"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"70b6fed2ed4b8e797489fc0a12e0a35fd26d9a57","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        self.assertEqual(body[\u0027key1\u0027], \u0027value1_new\u0027)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":136,"context_line":"    def test_flavor_non_admin_update_specific_key(self):"},{"line_number":137,"context_line":"        specs \u003d {\"key1\": \"value1\", \"key2\": \"value2\"}"},{"line_number":138,"context_line":"        resp, body \u003d self.client.set_flavor_extra_spec("},{"line_number":139,"context_line":"            self.flavor[\u0027id\u0027], specs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FLh4%3D","line":136,"updated":"2013-10-21 21:14:35.000000000","message":"Per the hacking guidelines new negative tests need to go into a separate negative test file. Can you put a patch up in front of this on that moves the negative tests here to that file. Then add this test to the new file instead.","commit_id":"87516e7ae645e80276692381b325475ffc936799"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dc30792f17ef5df6017fa3f7767514304987a316","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            self.client.unset_flavor_extra_spec(self.flavor[\u0027id\u0027], \"key2\")"},{"line_number":103,"context_line":"        self.assertEqual(unset_resp.status, 200)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":106,"context_line":"    def test_flavor_non_admin_get_all_keys_and_specified_key(self):"},{"line_number":107,"context_line":"        specs \u003d {\"key1\": \"value1\", \"key2\": \"value2\"}"},{"line_number":108,"context_line":"        set_resp, set_body \u003d self.client.set_flavor_extra_spec("}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FQ0o%3D","line":105,"updated":"2013-11-12 03:29:20.000000000","message":"nit: this test name should be changed to\n\n test_flavor_non_admin_get_all_keys\n\nbecause new test(test_flavor_non_admin_get_specific_key) does it and this test does not.","commit_id":"39c04c639be94f471141a1e94c7953664e8a4538"},{"author":{"_account_id":7148,"name":"Zhu Zhu","email":"bjzzu.zz@gmail.com","username":"zhuzhubj"},"change_message_id":"2d475438cc1fc17ab58d534e413f96e48d7b888a","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            self.client.unset_flavor_extra_spec(self.flavor[\u0027id\u0027], \"key2\")"},{"line_number":103,"context_line":"        self.assertEqual(unset_resp.status, 200)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":106,"context_line":"    def test_flavor_non_admin_get_all_keys_and_specified_key(self):"},{"line_number":107,"context_line":"        specs \u003d {\"key1\": \"value1\", \"key2\": \"value2\"}"},{"line_number":108,"context_line":"        set_resp, set_body \u003d self.client.set_flavor_extra_spec("}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FP%2F4%3D","line":105,"in_reply_to":"AAAATn%2F%2FQ0o%3D","updated":"2013-11-12 09:11:07.000000000","message":"Thanks Ken\u0027ichi. Will update it in next patch","commit_id":"39c04c639be94f471141a1e94c7953664e8a4538"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"688270aac78b404d1bb4339556af9e58c3bb436a","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                                                           \u0027key1\u0027,"},{"line_number":141,"context_line":"                                                           \u0027value1_new\u0027)"},{"line_number":142,"context_line":"        self.assertEqual(resp.status, 200)"},{"line_number":143,"context_line":"        self.assertEqual(body[\u0027key1\u0027], \u0027value1_new\u0027)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"class FlavorsExtraSpecsTestXML(FlavorsExtraSpecsTestJSON):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FPBc%3D","line":143,"updated":"2013-11-12 14:10:50.000000000","message":"I think this two tests is same as https://review.openstack.org/#/c/52932/3/tempest/api/compute/admin/test_flavors_extra_specs.py","commit_id":"5557fd24ac05f7b11fd3d1071416955b4546e2c5"},{"author":{"_account_id":7148,"name":"Zhu Zhu","email":"bjzzu.zz@gmail.com","username":"zhuzhubj"},"change_message_id":"d1e6d800b1ad3ffef4594de208b5e9cd0d86aa36","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                                                           \u0027key1\u0027,"},{"line_number":141,"context_line":"                                                           \u0027value1_new\u0027)"},{"line_number":142,"context_line":"        self.assertEqual(resp.status, 200)"},{"line_number":143,"context_line":"        self.assertEqual(body[\u0027key1\u0027], \u0027value1_new\u0027)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"class FlavorsExtraSpecsTestXML(FlavorsExtraSpecsTestJSON):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FFls%3D","line":143,"in_reply_to":"AAAATn%2F%2FPBc%3D","updated":"2013-11-14 15:22:19.000000000","message":"Hi ZhuBo, actually this patch are slightly different as the patch you mentioned. \n1) Separate the key update and key get into different method, It would get better readability for the code. \n2) The negative case are also different, which this commit will focus on the non_admin_update_specific_key will expect Unauthorize exception. \n\nAnyway, thanks for review.","commit_id":"5557fd24ac05f7b11fd3d1071416955b4546e2c5"}],"tempest/services/compute/json/flavors_client.py":[{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"61143c348f3cef96100e469c7791e3c4cd47c1aa","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        put_body \u003d json.dumps(put_body)"},{"line_number":118,"context_line":"        resp, body \u003d self.put(\u0027flavors/%s/os-extra_specs/%s\u0027 % (str(flavor_id),"},{"line_number":119,"context_line":"                              key), put_body, self.headers)"},{"line_number":120,"context_line":"        body \u003d json.loads(body)"},{"line_number":121,"context_line":"        return resp, body"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def update_flavor_extra_spec(self, flavor_id, key, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2B%2FXY%3D","line":120,"updated":"2013-11-16 06:12:01.000000000","message":"Anway, the client side is the duplication work. \nhttps://review.openstack.org/#/c/52932/3/tempest/services/compute/json/flavors_client.py","commit_id":"5557fd24ac05f7b11fd3d1071416955b4546e2c5"}]}
