)]}'
{"freezer/tests/freezer_tempest_plugin/tests/api/test_metadata_checksum.py":[{"author":{"_account_id":14028,"name":"Jonas Pfannschmidt","email":"jonas.pfannschmidt@hp.com","username":"jonaspf"},"change_message_id":"491f82520449a4bde6fe3939177b656c952a738b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from tempest import test"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"BACKUP_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-source\u0027"},{"line_number":25,"context_line":"RESTORE_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-restore\u0027"},{"line_number":26,"context_line":"STORAGE_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-local-storage\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def touch(*path):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_773ce9bf","line":26,"range":{"start_line":24,"start_character":0,"end_line":26,"end_character":59},"updated":"2016-06-15 15:35:38.000000000","message":"This is dangerous. The OpenStack CI will run tests in parallel. If two tests use the same directory the can interfere with each other.\n\nHave a look at the Temp_Tree class in freezer/tests/integration/common.py. This class creates and deletes test data in /tmp. Could you re-use this code here?","commit_id":"c66adb6926a5292ec225a19aa80aef3d2b2e6b71"},{"author":{"_account_id":14028,"name":"Jonas Pfannschmidt","email":"jonas.pfannschmidt@hp.com","username":"jonaspf"},"change_message_id":"ef0761e77ebf63c147b86587421dd1b7db89c074","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from tempest import test"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"BACKUP_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-source\u0027"},{"line_number":25,"context_line":"RESTORE_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-restore\u0027"},{"line_number":26,"context_line":"STORAGE_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-local-storage\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def touch(*path):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_6faea9e8","line":26,"range":{"start_line":24,"start_character":0,"end_line":26,"end_character":59},"in_reply_to":"7aa08908_124810cc","updated":"2016-06-16 09:39:33.000000000","message":"Oh sorry, I didn\u0027t see that. Should be fine then.","commit_id":"c66adb6926a5292ec225a19aa80aef3d2b2e6b71"},{"author":{"_account_id":17001,"name":"Tim Buckley","email":"timothy.jas.buckley@hpe.com","username":"timothy.jas.buckley"},"change_message_id":"d3198ff5fe25e2666d2471f0c6a07adb139b7014","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from tempest import test"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"BACKUP_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-source\u0027"},{"line_number":25,"context_line":"RESTORE_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-restore\u0027"},{"line_number":26,"context_line":"STORAGE_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-local-storage\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def touch(*path):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_124810cc","line":26,"range":{"start_line":24,"start_character":0,"end_line":26,"end_character":59},"in_reply_to":"7aa08908_773ce9bf","updated":"2016-06-15 16:47:09.000000000","message":"For what it\u0027s worth the tests are actually working in a random subdirectory (see the uuid call below) so they should be safe? This should work identically to test_fs_backup.py and test_swift_backup.py (I just pulled these path prefixes up into module constants).\n\nI\u0027ll take a look at Test_Tree, though, it looks like it could reduce some code duplication here.","commit_id":"c66adb6926a5292ec225a19aa80aef3d2b2e6b71"},{"author":{"_account_id":14028,"name":"Jonas Pfannschmidt","email":"jonas.pfannschmidt@hp.com","username":"jonaspf"},"change_message_id":"491f82520449a4bde6fe3939177b656c952a738b","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    def setUp(self):"},{"line_number":48,"context_line":"        super(TestFreezerMetadataChecksum, self).setUp()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        # compute scratch directories to use for the test"},{"line_number":51,"context_line":"        test_id \u003d uuid.uuid4().hex"},{"line_number":52,"context_line":"        self.backup_source_dir \u003d os.path.join(BACKUP_BASE_DIR, test_id)"},{"line_number":53,"context_line":"        self.backup_source_sub_dir \u003d os.path.join("},{"line_number":54,"context_line":"            self.backup_source_dir, \u0027subdir\u0027)"},{"line_number":55,"context_line":"        self.restore_target_dir \u003d os.path.join(RESTORE_BASE_DIR, test_id)"},{"line_number":56,"context_line":"        self.backup_local_storage_dir \u003d os.path.join(STORAGE_BASE_DIR, test_id)"},{"line_number":57,"context_line":"        self.freezer_backup_name \u003d \u0027freezer-test-backup-checksum-0\u0027"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        self.metadata_out \u003d os.path.join("},{"line_number":60,"context_line":"            self.backup_local_storage_dir,"},{"line_number":61,"context_line":"            self.freezer_backup_name + \u0027.json\u0027)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # clean up any previous test data and create empty directory structure"},{"line_number":64,"context_line":"        shutil.rmtree(self.backup_source_dir, True)"},{"line_number":65,"context_line":"        os.makedirs(self.backup_source_dir)"},{"line_number":66,"context_line":"        os.makedirs(self.backup_source_sub_dir)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        shutil.rmtree(self.restore_target_dir, True)"},{"line_number":69,"context_line":"        os.makedirs(self.restore_target_dir)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        shutil.rmtree(self.backup_local_storage_dir, True)"},{"line_number":72,"context_line":"        os.makedirs(self.backup_local_storage_dir)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        # create a quick directory structure to back up"},{"line_number":75,"context_line":"        for f in [\u0027a\u0027, \u0027b\u0027, \u0027c\u0027]:"},{"line_number":76,"context_line":"            touch(self.backup_source_dir, f)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        for f in [\u0027x\u0027, \u0027y\u0027, \u0027z\u0027]:"},{"line_number":79,"context_line":"            touch(self.backup_source_sub_dir, f)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        self.environ \u003d super(TestFreezerMetadataChecksum, self).get_environ()"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_771b491d","line":79,"range":{"start_line":50,"start_character":0,"end_line":79,"end_character":48},"updated":"2016-06-15 15:35:38.000000000","message":"See comment above, you may be able to replace all of this with the Temp_Tree class.","commit_id":"c66adb6926a5292ec225a19aa80aef3d2b2e6b71"},{"author":{"_account_id":14028,"name":"Jonas Pfannschmidt","email":"jonas.pfannschmidt@hp.com","username":"jonaspf"},"change_message_id":"aa8323896611f30b36836bfcc1e40980165c5ba2","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from tempest import test"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"BACKUP_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-source\u0027"},{"line_number":26,"context_line":"RESTORE_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-restore\u0027"},{"line_number":27,"context_line":"STORAGE_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-local-storage\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def touch(*path):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_6f7b492a","line":27,"range":{"start_line":25,"start_character":0,"end_line":27,"end_character":59},"updated":"2016-06-16 09:46:09.000000000","message":"I think those can be removed now, right?","commit_id":"0f33ffbc06d0f07535dbe06f03099714fbcb25c6"},{"author":{"_account_id":17001,"name":"Tim Buckley","email":"timothy.jas.buckley@hpe.com","username":"timothy.jas.buckley"},"change_message_id":"25d57f307b76e9739b59dddad85d7f8e56e229cf","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from tempest import test"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"BACKUP_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-source\u0027"},{"line_number":26,"context_line":"RESTORE_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-restore\u0027"},{"line_number":27,"context_line":"STORAGE_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-local-storage\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def touch(*path):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_1a063721","line":27,"range":{"start_line":25,"start_character":0,"end_line":27,"end_character":59},"in_reply_to":"7aa08908_6f7b492a","updated":"2016-06-16 14:09:07.000000000","message":"Done","commit_id":"0f33ffbc06d0f07535dbe06f03099714fbcb25c6"},{"author":{"_account_id":14101,"name":"yapeng Yang","email":"a394954369@gmail.com","username":"yapeng"},"change_message_id":"b06240cd450d6425957f8cdd9915f124b2f660d1","unresolved":false,"context_lines":[{"line_number":27,"context_line":"STORAGE_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-local-storage\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def touch(*path):"},{"line_number":31,"context_line":"    \"\"\"Create a new empty file at the given path."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    Given a series of path components, join them using :code:`os.path.join()`,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_14958a87","line":30,"range":{"start_line":30,"start_character":4,"end_line":30,"end_character":9},"updated":"2016-06-16 01:54:36.000000000","message":"why have the define function touch?","commit_id":"0f33ffbc06d0f07535dbe06f03099714fbcb25c6"},{"author":{"_account_id":17001,"name":"Tim Buckley","email":"timothy.jas.buckley@hpe.com","username":"timothy.jas.buckley"},"change_message_id":"25d57f307b76e9739b59dddad85d7f8e56e229cf","unresolved":false,"context_lines":[{"line_number":27,"context_line":"STORAGE_BASE_DIR \u003d \u0027/tmp/freezer-test-backup-local-storage\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def touch(*path):"},{"line_number":31,"context_line":"    \"\"\"Create a new empty file at the given path."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    Given a series of path components, join them using :code:`os.path.join()`,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_1d0d9135","line":30,"range":{"start_line":30,"start_character":4,"end_line":30,"end_character":9},"in_reply_to":"7aa08908_14958a87","updated":"2016-06-16 14:09:07.000000000","message":"Looks like my brain was turned off and I forgot to remove this. Fixed!","commit_id":"0f33ffbc06d0f07535dbe06f03099714fbcb25c6"}]}
