)]}'
{"tempest/api/compute/servers/test_servers.py":[{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"c2ec4e4330892cc06344f9e2df605ab34ea59cd8","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    @decorators.idempotent_id(\u002788b0bdb2-494c-11e7-a919-92ebcb67fe33\u0027)"},{"line_number":149,"context_line":"    def test_show_server(self):"},{"line_number":150,"context_line":"        server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":151,"context_line":"        # All fields will be checked by API schema"},{"line_number":152,"context_line":"        self.client.show_server(server[\u0027id\u0027])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class ServerShowV247Test(ServerShowV21Test):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_3c3fa7b6","line":152,"range":{"start_line":151,"start_character":6,"end_line":152,"end_character":45},"updated":"2017-06-07 07:57:59.000000000","message":"all changes are hidden here. We have to different JSON schemas for microversion 2.1 and 2.47. \n\nhere is schema for 2.47 https://review.openstack.org/#/c/470774/3/tempest/lib/api_schema/response/compute/v2_47/servers.py\n\nmethod \u0027server_show\u0027 chooses one schema based on current microversion. Schema checks all fields in response. As we have two different schemas these two testcases checks different fields (for microversion 2.1 and for 2.47)","commit_id":"b080401e182c916ebc5e3e37a0d4ddfcffdf9c9e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2de1cbd5751c43218fc6fb8fe6e2cfcf73d242b1","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    @decorators.idempotent_id(\u002788b0bdb2-494c-11e7-a919-92ebcb67fe33\u0027)"},{"line_number":149,"context_line":"    def test_show_server(self):"},{"line_number":150,"context_line":"        server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":151,"context_line":"        # All fields will be checked by API schema"},{"line_number":152,"context_line":"        self.client.show_server(server[\u0027id\u0027])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class ServerShowV247Test(ServerShowV21Test):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f231b9d_27caf54e","line":152,"range":{"start_line":151,"start_character":6,"end_line":152,"end_character":45},"in_reply_to":"bf091321_5eaff393","updated":"2017-06-20 04:42:00.000000000","message":"yea, our main and only motive here is to test the 2.47 schema. let\u0027s merge both tests like below - \n\nclass ServerShowV247Test(base.BaseV2ComputeTest):\n    min_microversion \u003d \u00272.47\u0027\n    max_microversion \u003d \u0027latest\u0027\n\n    @decorators.idempotent_id(\u002788b0bdb2-494c-11e7-a919-92ebcb67fe33\u0027)\n    def test_show_server(self):\n        server \u003d self.create_test_server()\n        # All fields will be checked by API schema\n        self.servers_client.show_server(server[\u0027id\u0027])","commit_id":"b080401e182c916ebc5e3e37a0d4ddfcffdf9c9e"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"65ee87f1578179309f8eaab6bd1f79b37996a1a5","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    @decorators.idempotent_id(\u002788b0bdb2-494c-11e7-a919-92ebcb67fe33\u0027)"},{"line_number":149,"context_line":"    def test_show_server(self):"},{"line_number":150,"context_line":"        server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":151,"context_line":"        # All fields will be checked by API schema"},{"line_number":152,"context_line":"        self.client.show_server(server[\u0027id\u0027])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class ServerShowV247Test(ServerShowV21Test):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf091321_5eaff393","line":152,"range":{"start_line":151,"start_character":6,"end_line":152,"end_character":45},"in_reply_to":"bf091321_f8514664","updated":"2017-06-08 08:32:13.000000000","message":"If ServerShowV247Test will have min_microversion\u003dNone and max_microversion\u003d\u0027latest\u0027 then it wouldn\u0027t test microverison 2.47. It would test microversion 2.1. \n\nThe only way to implement your idea is to remove ServerShowV21Test and set min_microversion\u003d2.47 and max_microversion\u003d\u0027latest\u0027 for ServerShowV247Test.\n\nYes we call show_server() in many places in tempest. And each call of it tests it indirectly by schema. But there is no any test which directly tests only server_show(). There are alot of testcases which duplicated many tests just because of new microversion.\nhttps://github.com/openstack/tempest/blob/master/tempest/api/compute/servers/test_device_tagging.py#L282-L284\n\nBut I don\u0027t think that ServerShowV21Test will cause any overload because it contains only one test. But this test case give us a good place to put new tests for \u0027show\u0027 request in future because, as I said, there is no any test which directly tests \u0027server_show\u0027.","commit_id":"b080401e182c916ebc5e3e37a0d4ddfcffdf9c9e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2de1cbd5751c43218fc6fb8fe6e2cfcf73d242b1","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    @decorators.idempotent_id(\u002788b0bdb2-494c-11e7-a919-92ebcb67fe33\u0027)"},{"line_number":149,"context_line":"    def test_show_server(self):"},{"line_number":150,"context_line":"        server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":151,"context_line":"        # All fields will be checked by API schema"},{"line_number":152,"context_line":"        self.client.show_server(server[\u0027id\u0027])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class ServerShowV247Test(ServerShowV21Test):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f231b9d_a704c57f","line":152,"range":{"start_line":151,"start_character":6,"end_line":152,"end_character":45},"in_reply_to":"bf091321_f8514664","updated":"2017-06-20 04:42:00.000000000","message":"yes, we end up running extra create and show server for v2.1 to v2.46 which is already tested many place and not needed to be explicitly.","commit_id":"b080401e182c916ebc5e3e37a0d4ddfcffdf9c9e"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"8f11aff2d81fd3ab067ba2c70288f59a9bbb11bd","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    @decorators.idempotent_id(\u002788b0bdb2-494c-11e7-a919-92ebcb67fe33\u0027)"},{"line_number":149,"context_line":"    def test_show_server(self):"},{"line_number":150,"context_line":"        server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":151,"context_line":"        # All fields will be checked by API schema"},{"line_number":152,"context_line":"        self.client.show_server(server[\u0027id\u0027])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class ServerShowV247Test(ServerShowV21Test):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_f026f3ba","line":152,"range":{"start_line":151,"start_character":6,"end_line":152,"end_character":45},"in_reply_to":"df140735_3c3fa7b6","updated":"2017-06-07 08:26:33.000000000","message":"I mean, if we set tempest.conf.compute.min_microversion\u003d2.47, then show_server will automatically choose schemav247, \nso seems no need to add extra testcase for it","commit_id":"b080401e182c916ebc5e3e37a0d4ddfcffdf9c9e"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"184c84ad73b76e1c29d099d874714a1282001299","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    @decorators.idempotent_id(\u002788b0bdb2-494c-11e7-a919-92ebcb67fe33\u0027)"},{"line_number":149,"context_line":"    def test_show_server(self):"},{"line_number":150,"context_line":"        server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":151,"context_line":"        # All fields will be checked by API schema"},{"line_number":152,"context_line":"        self.client.show_server(server[\u0027id\u0027])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class ServerShowV247Test(ServerShowV21Test):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf091321_f8514664","line":152,"range":{"start_line":151,"start_character":6,"end_line":152,"end_character":45},"in_reply_to":"df140735_7372ed7e","updated":"2017-06-08 02:21:41.000000000","message":"ServerShowV247Test may be needed to test schemav247 when setting min_microversion\u003dNone and max_microversion\u003d\u0027latest\u0027, \nbut ServerShowV21Test is duplicated with many other testcases","commit_id":"b080401e182c916ebc5e3e37a0d4ddfcffdf9c9e"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"7850deee39ae240b1734084e07a0e57bc91a1dbd","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    @decorators.idempotent_id(\u002788b0bdb2-494c-11e7-a919-92ebcb67fe33\u0027)"},{"line_number":149,"context_line":"    def test_show_server(self):"},{"line_number":150,"context_line":"        server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":151,"context_line":"        # All fields will be checked by API schema"},{"line_number":152,"context_line":"        self.client.show_server(server[\u0027id\u0027])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class ServerShowV247Test(ServerShowV21Test):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_7372ed7e","line":152,"range":{"start_line":151,"start_character":6,"end_line":152,"end_character":45},"in_reply_to":"df140735_f026f3ba","updated":"2017-06-07 09:05:10.000000000","message":"Tempest chooses microversion which will be used in request based on microversion in config (as you mentioned) and on min_microversion in test case.\n\nhttps://github.com/openstack/tempest/blob/master/tempest/lib/common/api_version_utils.py#L95-L98\n\nYes, if we will set tempest.conf.compute.min_microversion\u003d2.47, then show_server will automatically choose schemav247. But who will change this microversion in config and why? If someone will set microverison in config equal to 2.47 then no microversion less 2.47 wouldn\u0027t be tested at all.\n\nAFAIU in gate jobs config option is equal \u00272.1\u0027. In this case with my code we have two cestcases. One will use microversion 2.1 and the other will use microversion 2.47. If we will remove the second testcase tempest wouldn\u0027t run it for microversion 2.47. It will run it only for microversion 2.1. \n\nOtherwise (if tempest is really runs each testcase for all microversion) all gate jobs already must be red because each new microversion changes responses but tempest uses old schemas for these responses.","commit_id":"b080401e182c916ebc5e3e37a0d4ddfcffdf9c9e"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"ed7319ba911aac1a47fd19bbfedaf44924f0e136","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self.assertEqual(\u00272001:2001::3\u0027, server[\u0027accessIPv6\u0027])"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"class ServerShowV21Test(base.BaseV2ComputeTest):"},{"line_number":140,"context_line":"    min_microversion \u003d None"},{"line_number":141,"context_line":"    max_microversion \u003d \u00272.46\u0027"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    @classmethod"},{"line_number":144,"context_line":"    def setup_clients(cls):"},{"line_number":145,"context_line":"        super(ServerShowV21Test, cls).setup_clients()"},{"line_number":146,"context_line":"        cls.client \u003d cls.servers_client"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    @decorators.idempotent_id(\u002788b0bdb2-494c-11e7-a919-92ebcb67fe33\u0027)"},{"line_number":149,"context_line":"    def test_show_server(self):"},{"line_number":150,"context_line":"        server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":151,"context_line":"        # All fields will be checked by API schema"},{"line_number":152,"context_line":"        self.client.show_server(server[\u0027id\u0027])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class ServerShowV247Test(ServerShowV21Test):"},{"line_number":156,"context_line":"    min_microversion \u003d \u00272.47\u0027"},{"line_number":157,"context_line":"    max_microversion \u003d \u0027latest\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_e7c0802d","line":157,"range":{"start_line":139,"start_character":0,"end_line":157,"end_character":31},"updated":"2017-06-07 03:10:58.000000000","message":"I wonder why this is needed? There is nothing special for the code of different microversions.","commit_id":"b080401e182c916ebc5e3e37a0d4ddfcffdf9c9e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2de1cbd5751c43218fc6fb8fe6e2cfcf73d242b1","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self.assertEqual(\u00272001:2001::3\u0027, server[\u0027accessIPv6\u0027])"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"class ServerShowV21Test(base.BaseV2ComputeTest):"},{"line_number":140,"context_line":"    min_microversion \u003d None"},{"line_number":141,"context_line":"    max_microversion \u003d \u00272.46\u0027"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    @classmethod"},{"line_number":144,"context_line":"    def setup_clients(cls):"},{"line_number":145,"context_line":"        super(ServerShowV21Test, cls).setup_clients()"},{"line_number":146,"context_line":"        cls.client \u003d cls.servers_client"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    @decorators.idempotent_id(\u002788b0bdb2-494c-11e7-a919-92ebcb67fe33\u0027)"},{"line_number":149,"context_line":"    def test_show_server(self):"},{"line_number":150,"context_line":"        server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":151,"context_line":"        # All fields will be checked by API schema"},{"line_number":152,"context_line":"        self.client.show_server(server[\u0027id\u0027])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class ServerShowV247Test(ServerShowV21Test):"},{"line_number":156,"context_line":"    min_microversion \u003d \u00272.47\u0027"},{"line_number":157,"context_line":"    max_microversion \u003d \u0027latest\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f231b9d_e7c3dd37","line":157,"range":{"start_line":139,"start_character":0,"end_line":157,"end_character":31},"in_reply_to":"df140735_e7c0802d","updated":"2017-06-20 04:42:00.000000000","message":"let\u0027s just test the schema here.","commit_id":"b080401e182c916ebc5e3e37a0d4ddfcffdf9c9e"}]}
