)]}'
{"tempest/api/compute/servers/test_server_actions.py":[{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"30f5e67d40f70488dacb9b7d2ff6f5acd6d79681","unresolved":false,"context_lines":[{"line_number":504,"context_line":""},{"line_number":505,"context_line":"        resp, server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":506,"context_line":"        server_id \u003d server[\u0027id\u0027]"},{"line_number":507,"context_line":"        self.addCleanup(self.servers_client.delete_server, server_id)"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"        validator.set_resource(\"server\", server_id)"},{"line_number":510,"context_line":"        validator.validate_valid_schema(schema)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_52269eb8","line":507,"updated":"2014-09-30 17:45:49.000000000","message":"This is not needed since create_test_server will cause a cleanup.","commit_id":"f717d87a9fdfef94473d8168bc8a27fae6118fd2"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"096e79a426add70212fc48cae522d20e1fbacea5","unresolved":false,"context_lines":[{"line_number":497,"context_line":""},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"class ValidateSchemaJSON(base.BaseV2ComputeTest):"},{"line_number":500,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":501,"context_line":"    def test_validate_schema_get_console_output(self):"},{"line_number":502,"context_line":"        schema \u003d serversV2.get_console_output"},{"line_number":503,"context_line":"        validator \u003d test.SchemaValidator(\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_2cb4d3f0","line":500,"updated":"2014-10-07 14:48:46.000000000","message":"I don\u0027t think we need the tag. It\u0027s not like they actually do anything.","commit_id":"e0a8e8bf173c04b3d873984a27c3634d2153b019"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a1f4409e3a591fa611dabadd4e400ad0a67db441","unresolved":false,"context_lines":[{"line_number":501,"context_line":"            self._validate_url(body[\u0027url\u0027])"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":504,"context_line":"    def test_validate_schema_get_console_output(self):"},{"line_number":505,"context_line":"        schema \u003d serversV2.get_console_output"},{"line_number":506,"context_line":"        validator \u003d test.SchemaValidator(\u0027compute\u0027)"},{"line_number":507,"context_line":"        resp, server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_5148142d","line":504,"updated":"2014-12-02 15:18:37.000000000","message":"So the matching auto negative test for this was removed because the schema was incorrect. I\u0027m not sure what we want to do with regards to having the validator if there is no negative test.","commit_id":"6723a126a7d8d2c6fa46007e02e35e7b7889fea3"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"5fd357355a4bce203962aa199cdfc67e823cccab","unresolved":false,"context_lines":[{"line_number":501,"context_line":"            self._validate_url(body[\u0027url\u0027])"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":504,"context_line":"    def test_validate_schema_get_console_output(self):"},{"line_number":505,"context_line":"        schema \u003d serversV2.get_console_output"},{"line_number":506,"context_line":"        validator \u003d test.SchemaValidator(\u0027compute\u0027)"},{"line_number":507,"context_line":"        resp, server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_ac747b9c","line":504,"in_reply_to":"5a890539_5148142d","updated":"2014-12-02 15:27:25.000000000","message":"The console negative test was removed in a rush because it was causing gate failures. The schema is wrong. We should either be planning to fix the schema and add the test back, or remove the schema and this code. I don\u0027t have a strong opinion about which.","commit_id":"6723a126a7d8d2c6fa46007e02e35e7b7889fea3"}],"tempest/test.py":[{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"f433a82e20b0df2cf4a0c3842b5208ae149f693e","unresolved":false,"context_lines":[{"line_number":602,"context_line":"            self._http_arguments(valid_schema, url, method)"},{"line_number":603,"context_line":"        resp, resp_body \u003d client.send_request(method, new_url,"},{"line_number":604,"context_line":"                                              resources, body\u003dbody)"},{"line_number":605,"context_line":"        self.assertEqual(resp[\"status\"], \u0027200\u0027)"},{"line_number":606,"context_line":""},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"def generate_test_name(class_name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_1efd99b1","line":605,"updated":"2014-09-11 20:57:48.000000000","message":"This seems like it will be called for all schema. But why do we assume they all return 200 rather than 201, etc.","commit_id":"5ed6398e6d924d6e70bda55ef0f1e869129e5704"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"d7f75da0c98b2333b58960acf64ebb0dc4741e49","unresolved":false,"context_lines":[{"line_number":593,"context_line":"                     r in description.get(\"resources\", [])]"},{"line_number":594,"context_line":"        new_url, body \u003d \\"},{"line_number":595,"context_line":"            self._http_arguments(valid_schema, url, method)"},{"line_number":596,"context_line":"        resp, resp_body \u003d client.send_request(method, new_url,"},{"line_number":597,"context_line":"                                              resources, body\u003dbody)"},{"line_number":598,"context_line":"        client.response_checker(method, resp, resp_body)"},{"line_number":599,"context_line":"        self.assertLess(int(resp[\"status\"]), 400)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_5def0a87","line":596,"updated":"2014-09-12 18:03:23.000000000","message":"I still have a concern here and need clarification about the intent here. Is this going to run on every negative test schema? If the particular \"valid\" call being made here allocates a resource, who cleans it up? The fact that until this change all api calls made by generated tests were supposed to fail made things simpler.","commit_id":"239807e16779779dc897f7036e226d0baee0e845"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"e8344471598a93a0f4ba996afdd819e31abfa19f","unresolved":false,"context_lines":[{"line_number":593,"context_line":"                     r in description.get(\"resources\", [])]"},{"line_number":594,"context_line":"        new_url, body \u003d \\"},{"line_number":595,"context_line":"            self._http_arguments(valid_schema, url, method)"},{"line_number":596,"context_line":"        resp, resp_body \u003d client.send_request(method, new_url,"},{"line_number":597,"context_line":"                                              resources, body\u003dbody)"},{"line_number":598,"context_line":"        client.response_checker(method, resp, resp_body)"},{"line_number":599,"context_line":"        self.assertLess(int(resp[\"status\"]), 400)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_042fdf3f","line":596,"in_reply_to":"fa98f980_5def0a87","updated":"2014-09-13 06:50:56.000000000","message":"This is correct. I need to think about it.","commit_id":"239807e16779779dc897f7036e226d0baee0e845"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"d7f75da0c98b2333b58960acf64ebb0dc4741e49","unresolved":false,"context_lines":[{"line_number":607,"context_line":"    return lower_class_name"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":""},{"line_number":610,"context_line":"def SimpleNegativeAutoTest(klass):"},{"line_number":611,"context_line":"    \"\"\""},{"line_number":612,"context_line":"    This decorator registers a test function on basis of the class name."},{"line_number":613,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_bd0e368a","line":610,"updated":"2014-09-12 18:03:23.000000000","message":"This class doesn\u0027t seem to be used anywhere now. Can you explain?","commit_id":"239807e16779779dc897f7036e226d0baee0e845"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"e8344471598a93a0f4ba996afdd819e31abfa19f","unresolved":false,"context_lines":[{"line_number":607,"context_line":"    return lower_class_name"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":""},{"line_number":610,"context_line":"def SimpleNegativeAutoTest(klass):"},{"line_number":611,"context_line":"    \"\"\""},{"line_number":612,"context_line":"    This decorator registers a test function on basis of the class name."},{"line_number":613,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_a4f613d5","line":610,"in_reply_to":"fa98f980_bd0e368a","updated":"2014-09-13 06:50:56.000000000","message":"It a decorator. It used to register a test function to a class. Like here:\nhttps://github.com/openstack/tempest/blob/master/tempest/api/compute/flavors/test_flavors_negative.py#L24","commit_id":"239807e16779779dc897f7036e226d0baee0e845"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"096e79a426add70212fc48cae522d20e1fbacea5","unresolved":false,"context_lines":[{"line_number":649,"context_line":"                     r in description.get(\"resources\", [])]"},{"line_number":650,"context_line":"        new_url, body \u003d \\"},{"line_number":651,"context_line":"            self._http_arguments(valid_schema, url, method)"},{"line_number":652,"context_line":"        resp, resp_body \u003d self.client.send_request(method, new_url,"},{"line_number":653,"context_line":"                                                   resources, body\u003dbody)"},{"line_number":654,"context_line":"        self.client.response_checker(method, resp, resp_body)"},{"line_number":655,"context_line":"        self.assertLess(int(resp[\"status\"]), 400)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_6ca6dbaf","line":652,"updated":"2014-10-07 14:48:46.000000000","message":"So I have concerns about this chunk, unless I\u0027m misreading this (which I probably am) you\u0027re going to be sending POSTs to real endpoints which will create things right? This doesn\u0027t seem like a good idea to do blindly like this.\n\nLooking at how you handled the consoles get case it looks like the burden is on the reviewer to check that things like proper cleanup of resources etc, are handled in the validate schema test case. This seems like it wouldn\u0027t be straightforward to know is needed because at least to me a valid schema test seems like a borderline unit test.","commit_id":"e0a8e8bf173c04b3d873984a27c3634d2153b019"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a1f4409e3a591fa611dabadd4e400ad0a67db441","unresolved":false,"context_lines":[{"line_number":596,"context_line":"    created. Every test case that invokes it must clean-up"},{"line_number":597,"context_line":"    the resources."},{"line_number":598,"context_line":"    \"\"\""},{"line_number":599,"context_line":"    def __init__(self, service, interface\u003d\u0027json\u0027):"},{"line_number":600,"context_line":"        os_admin \u003d clients.AdminManager(interface\u003dinterface,"},{"line_number":601,"context_line":"                                        service\u003dservice)"},{"line_number":602,"context_line":"        self.client \u003d os_admin.negative_client"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_9198bc76","line":599,"updated":"2014-12-02 15:18:37.000000000","message":"Don\u0027t you need a super call on this method?","commit_id":"6723a126a7d8d2c6fa46007e02e35e7b7889fea3"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a1f4409e3a591fa611dabadd4e400ad0a67db441","unresolved":false,"context_lines":[{"line_number":597,"context_line":"    the resources."},{"line_number":598,"context_line":"    \"\"\""},{"line_number":599,"context_line":"    def __init__(self, service, interface\u003d\u0027json\u0027):"},{"line_number":600,"context_line":"        os_admin \u003d clients.AdminManager(interface\u003dinterface,"},{"line_number":601,"context_line":"                                        service\u003dservice)"},{"line_number":602,"context_line":"        self.client \u003d os_admin.negative_client"},{"line_number":603,"context_line":"        self.generator \u003d importutils.import_class("}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_71ed10f0","line":600,"updated":"2014-12-02 15:18:37.000000000","message":"This needs to be able to handle isolated creds, the AdminManager class just uses the admin creds from config.","commit_id":"6723a126a7d8d2c6fa46007e02e35e7b7889fea3"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a1f4409e3a591fa611dabadd4e400ad0a67db441","unresolved":false,"context_lines":[{"line_number":600,"context_line":"        os_admin \u003d clients.AdminManager(interface\u003dinterface,"},{"line_number":601,"context_line":"                                        service\u003dservice)"},{"line_number":602,"context_line":"        self.client \u003d os_admin.negative_client"},{"line_number":603,"context_line":"        self.generator \u003d importutils.import_class("},{"line_number":604,"context_line":"            CONF.negative.test_generator)()"},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"    def validate_valid_schema(self, description):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_b18f7822","line":603,"updated":"2014-12-02 15:18:37.000000000","message":"Is this needed if you\u0027re defining it in the setUpclass for the parent?","commit_id":"6723a126a7d8d2c6fa46007e02e35e7b7889fea3"}]}
