)]}'
{"patrole_tempest_plugin/tests/api/identity/v3/rbac_base.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"6042693e833d607109dcc0e43eba73281bc17fde","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        return service"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def _create_test_user(self, **kwargs):"},{"line_number":115,"context_line":"        # TODO(nhelgeson@att.com): refactor test_users to user setup_test_user"},{"line_number":116,"context_line":"        if kwargs.get(\u0027password\u0027, None) is None:"},{"line_number":117,"context_line":"            user_password \u003d data_utils.rand_password()"},{"line_number":118,"context_line":"            kwargs[\u0027password\u0027] \u003d user_password"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_37d6444f","line":115,"range":{"start_line":115,"start_character":58,"end_line":115,"end_character":62},"updated":"2017-02-26 21:31:53.000000000","message":"use","commit_id":"618e8c768a03bea7d7822f06cfa17cbe92e86c09"},{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"87031536c3bdd34c37736e37e87c9f9fb6666392","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        return role"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _create_service(self):"},{"line_number":99,"context_line":"        # TODO(nhelgeson@att.com): refactor to setup_test_service"},{"line_number":100,"context_line":"        \"\"\"Creates a service for test.\"\"\""},{"line_number":101,"context_line":"        name \u003d data_utils.rand_name(\u0027service\u0027)"},{"line_number":102,"context_line":"        serv_type \u003d data_utils.rand_name(\u0027type\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_da9963d2","line":99,"updated":"2017-02-27 19:43:27.000000000","message":"Is there a reason you\u0027re leaving these as todos?","commit_id":"3cf40619b9d76a324bd77bf29544beb72f78223f"},{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"b07c3083b64da1a1ca0c30d375c5f06bb6b73397","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                        role[\u0027id\u0027])"},{"line_number":96,"context_line":"        return role"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _create_service(self):"},{"line_number":99,"context_line":"        # TODO(nhelgeson@att.com): refactor to setup_test_service"},{"line_number":100,"context_line":"        # here and in test_services"},{"line_number":101,"context_line":"        \"\"\"Creates a service for test.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_1b2c7601","line":98,"updated":"2017-03-02 15:00:06.000000000","message":"I have an issue with the inconsistencies in the names (setup_x vs. _create_x); is this something you\u0027re going to resolve during your refactoring?","commit_id":"53e5ce2bcce63fad876126d5ce38016dbd5ef90b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"7642c359c48231a921134b0f37f28bb17a5dbaff","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                        role[\u0027id\u0027])"},{"line_number":96,"context_line":"        return role"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _create_service(self):"},{"line_number":99,"context_line":"        # TODO(nhelgeson@att.com): refactor to setup_test_service"},{"line_number":100,"context_line":"        # here and in test_services"},{"line_number":101,"context_line":"        \"\"\"Creates a service for test.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_5b0a677a","line":98,"in_reply_to":"ba2be162_1b2c7601","updated":"2017-03-02 16:44:32.000000000","message":"As far as I can tell, he intends on refactoring everything to setup_x and removing all _create_x functions.","commit_id":"53e5ce2bcce63fad876126d5ce38016dbd5ef90b"},{"author":{"_account_id":23625,"name":"Nicolas Helgeson","email":"nh202b@att.com","username":"nhelgeson"},"change_message_id":"05fec25c8a7263f154544b3f232dee6e94996ff2","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                        role[\u0027id\u0027])"},{"line_number":96,"context_line":"        return role"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _create_service(self):"},{"line_number":99,"context_line":"        # TODO(nhelgeson@att.com): refactor to setup_test_service"},{"line_number":100,"context_line":"        # here and in test_services"},{"line_number":101,"context_line":"        \"\"\"Creates a service for test.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_afe71a45","line":98,"in_reply_to":"ba2be162_5b0a677a","updated":"2017-03-06 18:40:53.000000000","message":"Yes that is the plan. The intention is that I remove dependency from the tempest base","commit_id":"53e5ce2bcce63fad876126d5ce38016dbd5ef90b"}],"patrole_tempest_plugin/tests/api/identity/v3/test_roles_rbac.py":[{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"8e92d14d4d7015d9df618b70e72185e2738b6a11","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            project_id\u003dcls.project[\u0027id\u0027],"},{"line_number":47,"context_line":"            domain_id\u003dcls.domain[\u0027id\u0027])[\u0027user\u0027]"},{"line_number":48,"context_line":"        cls.role \u003d cls.roles_client.create_role("},{"line_number":49,"context_line":"            name\u003ddata_utils.rand_name(\u0027Role\u0027))[\u0027role\u0027]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @classmethod"},{"line_number":52,"context_line":"    def resource_cleanup(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_4eac68a0","line":49,"updated":"2017-02-22 17:56:46.000000000","message":"You have functions for at least two of these things that will automatically setup and cleanup for you in a much simpler, cleaner way. Is there a reason you\u0027re not using them?","commit_id":"843e126c14eafa046de83c9ff624e9db1d0b169b"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"eb50af9d4c8f9b755a9c7fe193f6f090b249f095","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            project_id\u003dcls.project[\u0027id\u0027],"},{"line_number":47,"context_line":"            domain_id\u003dcls.domain[\u0027id\u0027])[\u0027user\u0027]"},{"line_number":48,"context_line":"        cls.role \u003d cls.roles_client.create_role("},{"line_number":49,"context_line":"            name\u003ddata_utils.rand_name(\u0027Role\u0027))[\u0027role\u0027]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @classmethod"},{"line_number":52,"context_line":"    def resource_cleanup(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_b971af78","line":49,"in_reply_to":"da36d5c6_49a62211","updated":"2017-02-22 18:49:03.000000000","message":"In this case, the problem isn\u0027t making the tests run faster, but avoiding duplicate code.  If for example, if a new way to make projects was released and the old method deprecated, it is better to only have to change the code for creating a project in one place (the create method in the base class) rather than having to make the same change in each individual test case or file.","commit_id":"843e126c14eafa046de83c9ff624e9db1d0b169b"},{"author":{"_account_id":23625,"name":"Nicolas Helgeson","email":"nh202b@att.com","username":"nhelgeson"},"change_message_id":"c7c566379acaa3aa5074013cb52bfa2158823176","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            project_id\u003dcls.project[\u0027id\u0027],"},{"line_number":47,"context_line":"            domain_id\u003dcls.domain[\u0027id\u0027])[\u0027user\u0027]"},{"line_number":48,"context_line":"        cls.role \u003d cls.roles_client.create_role("},{"line_number":49,"context_line":"            name\u003ddata_utils.rand_name(\u0027Role\u0027))[\u0027role\u0027]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @classmethod"},{"line_number":52,"context_line":"    def resource_cleanup(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_49a62211","line":49,"in_reply_to":"da36d5c6_4eac68a0","updated":"2017-02-22 18:19:44.000000000","message":"In this case there are several tests that take advantage of a single set-up. The other method of set-up and clean-up does so for each test. This way was about 10 seconds faster in total.","commit_id":"843e126c14eafa046de83c9ff624e9db1d0b169b"},{"author":{"_account_id":23625,"name":"Nicolas Helgeson","email":"nh202b@att.com","username":"nhelgeson"},"change_message_id":"4e0b48d16efacef31c9c4c029897ec80a14a43d3","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            project_id\u003dcls.project[\u0027id\u0027],"},{"line_number":47,"context_line":"            domain_id\u003dcls.domain[\u0027id\u0027])[\u0027user\u0027]"},{"line_number":48,"context_line":"        cls.role \u003d cls.roles_client.create_role("},{"line_number":49,"context_line":"            name\u003ddata_utils.rand_name(\u0027Role\u0027))[\u0027role\u0027]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @classmethod"},{"line_number":52,"context_line":"    def resource_cleanup(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_c7982dc3","line":49,"in_reply_to":"da36d5c6_b971af78","updated":"2017-02-23 00:50:46.000000000","message":"Did you ever reach a conclusion regarding the use of base-class methods like what Mh Raies brought up?","commit_id":"843e126c14eafa046de83c9ff624e9db1d0b169b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"6042693e833d607109dcc0e43eba73281bc17fde","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest.common.utils import data_utils"},{"line_number":17,"context_line":"from tempest import config"},{"line_number":18,"context_line":"from tempest.lib import decorators"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from patrole_tempest_plugin import rbac_rule_validation"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_ab8f2473","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":26},"updated":"2017-02-26 21:31:53.000000000","message":"Unused.","commit_id":"618e8c768a03bea7d7822f06cfa17cbe92e86c09"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"6042693e833d607109dcc0e43eba73281bc17fde","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from patrole_tempest_plugin.rbac_utils import rbac_utils"},{"line_number":22,"context_line":"from patrole_tempest_plugin.tests.api.identity.v3 import rbac_base"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF \u003d config.CONF"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class IdentityRolesV3AdminRbacTest(rbac_base.BaseIdentityV3RbacAdminTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_6b99acc3","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":18},"updated":"2017-02-26 21:31:53.000000000","message":"Unused.","commit_id":"618e8c768a03bea7d7822f06cfa17cbe92e86c09"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"6042693e833d607109dcc0e43eba73281bc17fde","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dFalse)"},{"line_number":32,"context_line":"        super(IdentityRolesV3AdminRbacTest, self).tearDown()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def _create_resouces_dgpru(self):"},{"line_number":35,"context_line":"        domain \u003d self.setup_test_domain()"},{"line_number":36,"context_line":"        group \u003d self.setup_test_group()"},{"line_number":37,"context_line":"        project \u003d self.setup_test_project()"},{"line_number":38,"context_line":"        role \u003d self.setup_test_role()"},{"line_number":39,"context_line":"        user \u003d self.setup_test_user()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        return (domain, group, project, role, user)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @rbac_rule_validation.action(service\u003d\"keystone\","},{"line_number":44,"context_line":"                                 rule\u003d\"identity:create_role\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_eb84bc5e","line":41,"range":{"start_line":34,"start_character":0,"end_line":41,"end_character":51},"updated":"2017-02-26 21:31:53.000000000","message":"I think that these should be included in resource_setup, created at the class level. It\u0027s pretty expensive to create 5 resources at the test level, when you don\u0027t even need all 5, repeatedly. Especially since, in tests that call this function, none of these resources appear to be deleted.","commit_id":"618e8c768a03bea7d7822f06cfa17cbe92e86c09"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"1adb4c9785a49ebea95cae37dba4c87ea3ddbe51","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dFalse)"},{"line_number":32,"context_line":"        super(IdentityRolesV3AdminRbacTest, self).tearDown()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def _create_resouces_dgpru(self):"},{"line_number":35,"context_line":"        domain \u003d self.setup_test_domain()"},{"line_number":36,"context_line":"        group \u003d self.setup_test_group()"},{"line_number":37,"context_line":"        project \u003d self.setup_test_project()"},{"line_number":38,"context_line":"        role \u003d self.setup_test_role()"},{"line_number":39,"context_line":"        user \u003d self.setup_test_user()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        return (domain, group, project, role, user)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @rbac_rule_validation.action(service\u003d\"keystone\","},{"line_number":44,"context_line":"                                 rule\u003d\"identity:create_role\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_d8a97992","line":41,"range":{"start_line":34,"start_character":0,"end_line":41,"end_character":51},"in_reply_to":"da36d5c6_eb84bc5e","updated":"2017-02-27 15:28:39.000000000","message":"Our main concern with that approach is how possibly intertwined each of these resources are.  We want to make sure that we are not doing something in one test that may ruin a shared resource for another.  One approach to fixing this would be adding cleanUps at the end of each testcase that will undo whatever action is being done in that test.","commit_id":"618e8c768a03bea7d7822f06cfa17cbe92e86c09"},{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"b07c3083b64da1a1ca0c30d375c5f06bb6b73397","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                                 rule\u003d\"identity:create_role\")"},{"line_number":33,"context_line":"    @decorators.idempotent_id(\u00270f148510-63bf-11e6-1395-080044d0d904\u0027)"},{"line_number":34,"context_line":"    def test_create_role(self):"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":37,"context_line":"        self.setup_test_role()"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_bb91aa54","line":35,"updated":"2017-03-02 15:00:06.000000000","message":"nit: Remove empty line for consistency","commit_id":"53e5ce2bcce63fad876126d5ce38016dbd5ef90b"}]}
