)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"683af592f2dbb933a856644c8fc1e1824724f38e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add delete_agent to AgentsClient"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patchset add delete_agent method that implements repective API [1]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"[1] https://developer.openstack.org/api-ref/network/v2/index.html#delete-agent"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_ed0aa91e","line":9,"range":{"start_line":9,"start_character":54,"end_line":9,"end_character":63},"updated":"2018-09-11 20:10:32.000000000","message":"respective","commit_id":"0ea76f5d5c597f75f199ed6d153fd315d2ac4d84"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"90f2a18bb37fca84e1c98fda79f67c7c427c4f3b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add delete_agent to AgentsClient"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patchset add delete_agent method that implements repective API [1]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"[1] https://developer.openstack.org/api-ref/network/v2/index.html#delete-agent"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_9f80f8f9","line":9,"range":{"start_line":9,"start_character":54,"end_line":9,"end_character":63},"in_reply_to":"3f79a3b5_ed0aa91e","updated":"2018-09-11 20:54:29.000000000","message":"Done","commit_id":"0ea76f5d5c597f75f199ed6d153fd315d2ac4d84"}],"tempest/api/network/admin/test_agent_management.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"8c98e5cf1aa12ca48dae95de7e06c1ad154f4eb9","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        self.admin_agents_client.update_agent(agent_id\u003dself.agent[\u0027id\u0027],"},{"line_number":90,"context_line":"                                              agent\u003dorigin_agent)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @decorators.idempotent_id(\u0027B33AF888-B6AC-4E68-A0CA-0444C2696CF9\u0027)"},{"line_number":93,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027])"},{"line_number":94,"context_line":"    def test_delete_agent_negative(self):"},{"line_number":95,"context_line":"        non_existent_id \u003d data_utils.rand_uuid()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_3a3dfc8d","line":92,"updated":"2018-09-27 07:10:52.000000000","message":"Why is this idempotent id capital letters? I\u0027m just curious, though.","commit_id":"fa16c70842fe9b69389c2c8a5494baf00f536121"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"a3a23861eef42674274b26e04b80efd4d9b10280","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        self.admin_agents_client.update_agent(agent_id\u003dself.agent[\u0027id\u0027],"},{"line_number":90,"context_line":"                                              agent\u003dorigin_agent)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @decorators.idempotent_id(\u0027B33AF888-B6AC-4E68-A0CA-0444C2696CF9\u0027)"},{"line_number":93,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027])"},{"line_number":94,"context_line":"    def test_delete_agent_negative(self):"},{"line_number":95,"context_line":"        non_existent_id \u003d data_utils.rand_uuid()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_005c477b","line":92,"in_reply_to":"3f79a3b5_146a50ec","updated":"2018-09-27 15:40:57.000000000","message":"uuidgen on mac generate it in uppercase. Didn\u0027t know about tempest command. Lowered.","commit_id":"fa16c70842fe9b69389c2c8a5494baf00f536121"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"8efb641a145240c9759667dfd2536592ea0e6cfb","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        self.admin_agents_client.update_agent(agent_id\u003dself.agent[\u0027id\u0027],"},{"line_number":90,"context_line":"                                              agent\u003dorigin_agent)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @decorators.idempotent_id(\u0027B33AF888-B6AC-4E68-A0CA-0444C2696CF9\u0027)"},{"line_number":93,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027])"},{"line_number":94,"context_line":"    def test_delete_agent_negative(self):"},{"line_number":95,"context_line":"        non_existent_id \u003d data_utils.rand_uuid()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_146a50ec","line":92,"in_reply_to":"3f79a3b5_3a3dfc8d","updated":"2018-09-27 11:40:47.000000000","message":"Nice catch, that looks maybe manually generated? You should be able to generate the correct value (like on L73) using https://github.com/openstack/tempest/blob/master/tox.ini#L179","commit_id":"fa16c70842fe9b69389c2c8a5494baf00f536121"}],"tempest/tests/lib/services/network/test_agents_client.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"32efd9fff7ad0397cb6c2c62e3c0f1a763524dbe","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            status\u003d204,"},{"line_number":37,"context_line":"            agent_id\u003dself.FAKE_AGENT_ID)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def test_delete_agent_negative(self):"},{"line_number":40,"context_line":"        self.check_service_client_function("},{"line_number":41,"context_line":"            self.agents_client.delete_agent,"},{"line_number":42,"context_line":"            \"tempest.lib.common.rest_client.RestClient.delete\","},{"line_number":43,"context_line":"            {},"},{"line_number":44,"context_line":"            status\u003d404,"},{"line_number":45,"context_line":"            agent_id\u003dself.FAKE_AGENT_ID)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_3cf74e8f","line":45,"range":{"start_line":39,"start_character":0,"end_line":45,"end_character":40},"updated":"2018-09-13 05:59:18.000000000","message":"So this is not what I had meant by \"negative API test.\" This is actually redundant with `test_delete_agent` above. Negative API test !\u003d negative unit test.\n\nFor an example of what I mean, see: https://github.com/openstack/tempest/blob/c9eb94f56e7ba639a38abc4278440a07167da2ba/tempest/api/network/test_security_groups_negative.py#L44\n\nThis test should be an API test that is structured almost exactly as the example above. It should use the same decorators (decorators.attr(type\u003d\u0027slow\u0027)) and also use the data_utils.rand_uuid() to create a fake agent_id, which is bassed to delete_agent which in turn should raise an expected 404 exception.\n\nThis is -1 from me because while this negative test is optional, it shouldn\u0027t be a redundant unit test.","commit_id":"a657cc7bb747441e7de95a9b58099510baa4b789"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"fbcf8503cdc9db1a17bb0930b49338b535c82da3","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            status\u003d204,"},{"line_number":40,"context_line":"            agent_id\u003dself.FAKE_AGENT_ID)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027, \u0027slow\u0027])"},{"line_number":43,"context_line":"    def test_delete_agent_negative(self):"},{"line_number":44,"context_line":"        non_exist_id \u003d data_utils.rand_uuid()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        self.assertRaises("},{"line_number":47,"context_line":"            lib_exc.NotFound,"},{"line_number":48,"context_line":"            self.agents_client.delete_agent, non_exist_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_20b38eeb","line":48,"range":{"start_line":42,"start_character":0,"end_line":48,"end_character":58},"updated":"2018-09-14 00:33:43.000000000","message":"Sorry for not being clear. This basically goes here: tempest/ap/network/admin/test_agent_management.py -- but that file doesn\u0027t exist.\n\nThen the test will look like:\n\n    @decorators.attr(type\u003d[\u0027negative\u0027])\n    def test_delete_agent_negative(self):\n        non_existent_id \u003d data_utils.rand_uuid()\n\n        self.assertRaises(\n            lib_exc.NotFound,\n            self.agents_client.delete_agent, non_existent_id)\n\nSee: https://github.com/openstack/tempest/blob/master/tempest/api/network/admin/test_agent_management.py\n\nAlso note that the slow decorator isn\u0027t needed unless the test takes a while (~1 min).","commit_id":"33451cbccc68da370b3745f3ba1d7e0e8663c4f3"}]}
