)]}'
{"keystone/common/sql/migrate_repo/versions/090_add_implied_roles_fks.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"5759ae31f068cc775757d49e49b66baa8b17e275","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"bae84128_6e1d0a73","updated":"2016-02-20 12:24:18.000000000","message":"the file name could be more accurate, it\u0027s not adding fks, it\u0027s updating the fks to support `CASCADE` for update and delete.","commit_id":"e4756a44c6fd1f4637cb2e7df130c3999ff071b9"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"7dc3b718c7946cf35379bd18d02a42b30e98e816","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"bae84128_9f0eb632","in_reply_to":"bae84128_6e1d0a73","updated":"2016-02-20 14:15:22.000000000","message":"Done","commit_id":"e4756a44c6fd1f4637cb2e7df130c3999ff071b9"}],"keystone/tests/functional/shared/test_roles.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"76a3933f255f5b6c9cf2f1f4c37f30fa681d0e63","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                     self.PUBLIC_URL,"},{"line_number":37,"context_line":"                     role_ref[\u0027id\u0027], implied_role_ref[\u0027id\u0027]),"},{"line_number":38,"context_line":"                     headers\u003d{\u0027X-Auth-Token\u0027: admin_token})"},{"line_number":39,"context_line":"        resp \u003d requests.delete(\u0027%s/v3/roles/%s/implies/%s\u0027 % ("},{"line_number":40,"context_line":"                               self.PUBLIC_URL,"},{"line_number":41,"context_line":"                               role_ref[\u0027id\u0027], implied_role_ref[\u0027id\u0027]),"},{"line_number":42,"context_line":"                               headers\u003d{\u0027X-Auth-Token\u0027: admin_token})"},{"line_number":43,"context_line":"        self.assertThat(resp.status_code, is_ok)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_005ce9eb","line":42,"range":{"start_line":39,"start_character":0,"end_line":42,"end_character":69},"updated":"2016-02-22 06:35:46.000000000","message":"this is deleting the implied role instead of delete role, the testcase here should test that delete role and the role implied by this role can also be deleted. i.e. cascade deletion.\n\n\nand since you also update the SQL to support cascade update, pls add another testcase to test update.","commit_id":"26b9b2976d8390482297e69d09fe2e83cc419d2b"}],"keystone/tests/unit/test_sql_upgrade.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"b142da979a5c32aeea4833039ca7fc8a7f25536b","unresolved":false,"context_lines":[{"line_number":701,"context_line":"        session.close()"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"    def test_implied_roles_fk_on_delete(self):"},{"line_number":704,"context_line":"        self.upgrade(90)"},{"line_number":705,"context_line":"        self.assertTrue(self.does_fk_exist(\u0027implied_role\u0027, \u0027prior_role_id\u0027))"},{"line_number":706,"context_line":"        self.assertTrue(self.does_fk_exist(\u0027implied_role\u0027, \u0027implied_role_id\u0027))"},{"line_number":707,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_410c7e94","line":704,"updated":"2016-02-19 14:49:28.000000000","message":"if SQLite skip","commit_id":"b7efd9a0c910b0e5fcbde7826aefe4fffd18911d"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"15f74499b5f98edd78e8eb105534becd46dba5a9","unresolved":false,"context_lines":[{"line_number":701,"context_line":"        session.close()"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"    def test_implied_roles_fk_on_delete(self):"},{"line_number":704,"context_line":"        self.upgrade(90)"},{"line_number":705,"context_line":"        self.assertTrue(self.does_fk_exist(\u0027implied_role\u0027, \u0027prior_role_id\u0027))"},{"line_number":706,"context_line":"        self.assertTrue(self.does_fk_exist(\u0027implied_role\u0027, \u0027implied_role_id\u0027))"},{"line_number":707,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_83096334","line":704,"in_reply_to":"bae84128_410c7e94","updated":"2016-02-19 17:50:13.000000000","message":"Done","commit_id":"b7efd9a0c910b0e5fcbde7826aefe4fffd18911d"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c789ed57d61003f45f3bc10511132ccf417c84e8","unresolved":false,"context_lines":[{"line_number":700,"context_line":""},{"line_number":701,"context_line":"        session.close()"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"    def test_implied_roles_fk_on_delete(self):"},{"line_number":704,"context_line":"        if self.engine.name \u003d\u003d \u0027sqlite\u0027:"},{"line_number":705,"context_line":"            self.skipTest(\u0027sqlite backend doesn\\\u0027t handle \u0027"},{"line_number":706,"context_line":"                          \u0027foreign keys properly\u0027)"},{"line_number":707,"context_line":"        self.upgrade(90)"},{"line_number":708,"context_line":"        self.assertTrue(self.does_fk_exist(\u0027implied_role\u0027, \u0027prior_role_id\u0027))"},{"line_number":709,"context_line":"        self.assertTrue(self.does_fk_exist(\u0027implied_role\u0027, \u0027implied_role_id\u0027))"},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"    def populate_user_table(self, with_pass_enab\u003dFalse,"},{"line_number":712,"context_line":"                            with_pass_enab_domain\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_09a546b4","line":709,"range":{"start_line":703,"start_character":0,"end_line":709,"end_character":78},"updated":"2016-02-21 13:03:14.000000000","message":"The testcase will pass without your fix.\n\nThe testcase should test that `CASCADE` is applied for update and delete instead of assert that FKs exist.\nand should assert that it\u0027s not applied before upgrade(90).\n\nYou can refer to this patch I proposed long time ago although it was abandoned.\n\nhttps://review.openstack.org/#/c/179767/6/keystone/tests/unit/test_sql_upgrade.py","commit_id":"26b9b2976d8390482297e69d09fe2e83cc419d2b"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"92b8c2c7d2025665a6db95783660e46ec04f9f4b","unresolved":false,"context_lines":[{"line_number":702,"context_line":""},{"line_number":703,"context_line":"        session.close()"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"    def test_implied_roles_fk_on_delete_cascade(self):"},{"line_number":706,"context_line":"        if self.engine.name \u003d\u003d \u0027sqlite\u0027:"},{"line_number":707,"context_line":"            self.skipTest(\u0027sqlite backend doesn\\\u0027t handle \u0027"},{"line_number":708,"context_line":"                          \u0027foreign keys properly\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bae84128_1d053245","line":705,"updated":"2016-02-23 09:54:13.000000000","message":"not sure if there is any easy way to check the `cascade` is effective, but the testcase like this can only pass with 90 upgrade scripts.","commit_id":"aa9655d0002f089f566268df767ca33ee4c20207"}],"keystone/tests/unit/test_v3_assignment.py":[{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"6d68661921bca68c37e91a4f8450d8e6ec81986d","unresolved":false,"context_lines":[{"line_number":2696,"context_line":"        self.role_api.delete_role(role[\u0027id\u0027])"},{"line_number":2697,"context_line":"        self.assertRaises(exception.RoleNotFound,"},{"line_number":2698,"context_line":"                          self.role_api.get_role,"},{"line_number":2699,"context_line":"                          subrole[\u0027id\u0027])"},{"line_number":2700,"context_line":""},{"line_number":2701,"context_line":""},{"line_number":2702,"context_line":"class DomainSpecificRoleTests(test_v3.RestfulTestCase, unit.TestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_4fb0398c","line":2699,"updated":"2016-02-19 10:27:36.000000000","message":"FK\u0027s have to be enabled in sqlite connection fo this to be true","commit_id":"b7efd9a0c910b0e5fcbde7826aefe4fffd18911d"}],"rally-jobs/plugins/roles.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"37bcd1f4161876eb94915e4005b1851de0d80d64","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"bae84128_9b634adc","updated":"2016-02-22 06:58:39.000000000","message":"Does this file relevant with the fixing here? I would agree  if it was testing the performance of creating implied role and delete the implied role by deleting the parent role. \n\nBut the rally job like this can be added without any code change in server, right?","commit_id":"26b9b2976d8390482297e69d09fe2e83cc419d2b"}]}
