)]}'
{"trove_tempest_plugin/tests/api/base_test.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"c2f3796c94e50cb9e7b48f9ad1f70beb97117448","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0904b214","line":1,"updated":"2018-08-07 09:31:26.000000000","message":"This file is not necessary, The other tests could directly inherit from base_test.BaseTest?","commit_id":"a378081df0634c5a67e076b2b09013f89a04d6e8"},{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"5f8e90b78d3016dc4e1a4a9eead2f83fd7b7a6c9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_446048a6","line":1,"in_reply_to":"3f79a3b5_0904b214","updated":"2018-08-07 15:53:21.000000000","message":"Well, I always considered having separate base class on each level of module nesting to be a good practice, because it provides better flexibility and prevents from packing all methods, regardless of whether they are common or not, into the same base.\n\nMy intention was to add a base class for all kinds of tests that would contain the methods that are actually shared. Then, in the base classes for particular types of tests, I expected methods that are specific to these tests and are needed only for their context.\n\nAPI and scenario tests should be clearly distinguished since the latter are characterized by much greater complexity.\n\nAlso, looking at Tempest repository, they follow a similar pattern. They have separate base class for scenario tests[1] and separate base classes for each category of API tests [2][3].\n\nI am open to discussion realizing that the proposed solution introduces additional burden that may not be necessary at the moment.\n\n[1] https://github.com/openstack/tempest/blob/master/tempest/scenario/manager.py\n[2] https://github.com/openstack/tempest/blob/master/tempest/api/image/base.py\n[3] https://github.com/openstack/tempest/blob/master/tempest/api/compute/base.py","commit_id":"a378081df0634c5a67e076b2b09013f89a04d6e8"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"435364bd871233eb441c78348b668d9418bdc654","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_5090f44e","line":1,"in_reply_to":"3f79a3b5_446048a6","updated":"2018-08-08 03:49:10.000000000","message":"I agree with using common calsses to simplify the code structure. But at this stage, I cannot see much benefit to create separate base classes. And for easy following, if it\u0027s necessary to split common codes to base classes, it may be much easier to follow and review when they are in the same file(i.e. all inside trove_tempest_plugin/test/base.py, instead of splitting them in different source files under different directories). The tempest repo is special, as it contains tests for different services, but this is not the case with this trove plugin.\n\nFor the base class for scenario tests, we don\u0027t have any scenario tests now, so I personally prefer to introduce it with the first scenario test.","commit_id":"a378081df0634c5a67e076b2b09013f89a04d6e8"}],"trove_tempest_plugin/tests/base_test.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"c2f3796c94e50cb9e7b48f9ad1f70beb97117448","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2018 Samsung Electronics"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0e1fd86c","line":1,"updated":"2018-08-07 09:31:26.000000000","message":"This file seems should be a \u0027git mv\u0027?","commit_id":"a378081df0634c5a67e076b2b09013f89a04d6e8"},{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"5f8e90b78d3016dc4e1a4a9eead2f83fd7b7a6c9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2018 Samsung Electronics"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_1f5cd923","line":1,"in_reply_to":"3f79a3b5_0e1fd86c","updated":"2018-08-07 15:53:21.000000000","message":"Done.","commit_id":"a378081df0634c5a67e076b2b09013f89a04d6e8"},{"author":{"_account_id":28646,"name":"Dariusz Krol","email":"d.krol@samsung.com","username":"dkrol"},"change_message_id":"d958170e11e6ae158afaf99e0afb07aa72f6879c","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class BaseTest(test.BaseTestCase):"},{"line_number":23,"context_line":"    \"\"\"Base test case class.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    credentials \u003d [\u0027primary\u0027]"},{"line_number":26,"context_line":"    client_manager \u003d clients.Manager"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_7ec5d33b","line":23,"range":{"start_line":23,"start_character":4,"end_line":23,"end_character":31},"updated":"2018-08-07 13:59:23.000000000","message":"Maybe we should put here more information what this class provides ? Current comment seems to be very simplistic.","commit_id":"a378081df0634c5a67e076b2b09013f89a04d6e8"},{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"5f8e90b78d3016dc4e1a4a9eead2f83fd7b7a6c9","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class BaseTest(test.BaseTestCase):"},{"line_number":23,"context_line":"    \"\"\"Base test case class.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    credentials \u003d [\u0027primary\u0027]"},{"line_number":26,"context_line":"    client_manager \u003d clients.Manager"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_df9f414e","line":23,"range":{"start_line":23,"start_character":4,"end_line":23,"end_character":31},"in_reply_to":"3f79a3b5_7ec5d33b","updated":"2018-08-07 15:53:21.000000000","message":"Done.","commit_id":"a378081df0634c5a67e076b2b09013f89a04d6e8"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"435364bd871233eb441c78348b668d9418bdc654","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest.config import CONF"},{"line_number":17,"context_line":"from tempest import test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from trove_tempest_plugin import clients"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_7022d0a6","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":31},"updated":"2018-08-08 03:49:10.000000000","message":"Import modules, not objects.","commit_id":"dde16bbbab8e0080ecf878e17858d2718a4ad2ef"},{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"7857b8bdf83521e596108309eaa6d180527d4887","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest.config import CONF"},{"line_number":17,"context_line":"from tempest import test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from trove_tempest_plugin import clients"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_66f457d0","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":31},"in_reply_to":"3f79a3b5_7022d0a6","updated":"2018-08-08 13:15:24.000000000","message":"Done.","commit_id":"dde16bbbab8e0080ecf878e17858d2718a4ad2ef"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"435364bd871233eb441c78348b668d9418bdc654","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from trove_tempest_plugin import clients"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class BaseTest(test.BaseTestCase):"},{"line_number":23,"context_line":"    \"\"\"Base test case class."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    Includes parts common to API and scenario tests:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_50cc7460","line":22,"range":{"start_line":22,"start_character":6,"end_line":22,"end_character":14},"updated":"2018-08-08 03:49:10.000000000","message":"I also perfer to keep the previous class name, though don\u0027t have strong opinion on this.","commit_id":"dde16bbbab8e0080ecf878e17858d2718a4ad2ef"},{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"7857b8bdf83521e596108309eaa6d180527d4887","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from trove_tempest_plugin import clients"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class BaseTest(test.BaseTestCase):"},{"line_number":23,"context_line":"    \"\"\"Base test case class."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    Includes parts common to API and scenario tests:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_66ad3730","line":22,"range":{"start_line":22,"start_character":6,"end_line":22,"end_character":14},"in_reply_to":"3f79a3b5_50cc7460","updated":"2018-08-08 13:15:24.000000000","message":"Done.","commit_id":"dde16bbbab8e0080ecf878e17858d2718a4ad2ef"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"435364bd871233eb441c78348b668d9418bdc654","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        \"credentials\" property of this class."},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        super(BaseTest, cls).setup_clients()"},{"line_number":74,"context_line":"        cls.flavors_client \u003d cls.os_primary.database.FlavorsClient()"},{"line_number":75,"context_line":"        cls.os_flavors_client \u003d cls.os_primary.compute.FlavorsClient()"},{"line_number":76,"context_line":"        cls.limits_client \u003d cls.os_primary.database.LimitsClient()"},{"line_number":77,"context_line":"        cls.versions_client \u003d cls.os_primary.database.VersionsClient()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_b0062886","line":77,"range":{"start_line":74,"start_character":0,"end_line":77,"end_character":70},"updated":"2018-08-08 03:49:10.000000000","message":"The names like cls.database_xxx seem much safer and more distinguishable here, we could short them in the resource_setup method of different TestCase classes.","commit_id":"dde16bbbab8e0080ecf878e17858d2718a4ad2ef"},{"author":{"_account_id":28695,"name":"Bartosz Zurkowski","email":"b.zurkowski@samsung.com","username":"b.zurkowski"},"change_message_id":"7857b8bdf83521e596108309eaa6d180527d4887","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        \"credentials\" property of this class."},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        super(BaseTest, cls).setup_clients()"},{"line_number":74,"context_line":"        cls.flavors_client \u003d cls.os_primary.database.FlavorsClient()"},{"line_number":75,"context_line":"        cls.os_flavors_client \u003d cls.os_primary.compute.FlavorsClient()"},{"line_number":76,"context_line":"        cls.limits_client \u003d cls.os_primary.database.LimitsClient()"},{"line_number":77,"context_line":"        cls.versions_client \u003d cls.os_primary.database.VersionsClient()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_526a31b3","line":77,"range":{"start_line":74,"start_character":0,"end_line":77,"end_character":70},"in_reply_to":"3f79a3b5_b0062886","updated":"2018-08-08 13:15:24.000000000","message":"Reverted.","commit_id":"dde16bbbab8e0080ecf878e17858d2718a4ad2ef"}],"trove_tempest_plugin/tests/scenario/base_test.py":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"c2f3796c94e50cb9e7b48f9ad1f70beb97117448","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2018 Samsung Electronics"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_69dc4674","line":1,"updated":"2018-08-07 09:31:26.000000000","message":"This is the same situation with tests/api/base_test.py.","commit_id":"a378081df0634c5a67e076b2b09013f89a04d6e8"}]}
