)]}'
{"swift/obj/diskfile.py":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"0768608a62ee9b3a4f518bef82082daf2d04ec58","unresolved":false,"context_lines":[{"line_number":1822,"context_line":"                raise DiskFileError("},{"line_number":1823,"context_line":"                    \"Error listing directory %s: %s\" % (self._datadir, err))"},{"line_number":1824,"context_line":"            # The data directory does not exist, so the object cannot exist."},{"line_number":1825,"context_line":"            fileset \u003d (None, None, None)"},{"line_number":1826,"context_line":"        else:"},{"line_number":1827,"context_line":"            fileset \u003d self.manager.get_ondisk_files("},{"line_number":1828,"context_line":"                files, self._datadir, frag_index\u003dself._frag_index)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_ff201fb2","line":1825,"updated":"2015-03-24 07:32:16.000000000","message":"Though, I don\u0027t have a better idea for now but I\u0027d like to try to refactor around this try/excpet in the future work because the difference from replicated version is only the arguments at L1828.","commit_id":"e24ce847386551d50142292009b0165d9932df24"}],"test/unit/obj/test_diskfile.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"741a3d645e9bc74308ba4a4674823f84abd079e7","unresolved":false,"context_lines":[{"line_number":857,"context_line":""},{"line_number":858,"context_line":"class DiskFileManagerMixin(object):"},{"line_number":859,"context_line":"    \"\"\""},{"line_number":860,"context_line":"    Abstract test method mixin for concerte test cases - this class"},{"line_number":861,"context_line":"    won\u0027t get picked up by test runners because it doesn\u0027t subclass"},{"line_number":862,"context_line":"    unittest.TestCase and doesn\u0027t have [Tt]est in the name."},{"line_number":863,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_66101e02","line":860,"updated":"2015-03-24 16:44:45.000000000","message":"s/concerte/concrete/","commit_id":"e24ce847386551d50142292009b0165d9932df24"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"335ddcf88b9de6be9b8a002e0356d6d2e39490f5","unresolved":false,"context_lines":[{"line_number":857,"context_line":""},{"line_number":858,"context_line":"class DiskFileManagerMixin(object):"},{"line_number":859,"context_line":"    \"\"\""},{"line_number":860,"context_line":"    Abstract test method mixin for concerte test cases - this class"},{"line_number":861,"context_line":"    won\u0027t get picked up by test runners because it doesn\u0027t subclass"},{"line_number":862,"context_line":"    unittest.TestCase and doesn\u0027t have [Tt]est in the name."},{"line_number":863,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_f264ba23","line":860,"in_reply_to":"1a6ced46_66101e02","updated":"2015-03-24 18:10:38.000000000","message":"Done","commit_id":"e24ce847386551d50142292009b0165d9932df24"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"741a3d645e9bc74308ba4a4674823f84abd079e7","unresolved":false,"context_lines":[{"line_number":859,"context_line":"    \"\"\""},{"line_number":860,"context_line":"    Abstract test method mixin for concerte test cases - this class"},{"line_number":861,"context_line":"    won\u0027t get picked up by test runners because it doesn\u0027t subclass"},{"line_number":862,"context_line":"    unittest.TestCase and doesn\u0027t have [Tt]est in the name."},{"line_number":863,"context_line":"    \"\"\""},{"line_number":864,"context_line":""},{"line_number":865,"context_line":"    # set mgr_cls on subclasses"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_06512ad8","line":862,"updated":"2015-03-24 16:44:45.000000000","message":"I *think* not subclassing unittest.TestCase is the only reason - I used to believe that test classes need to start with [tT]est but learnt otherwise recently ;)","commit_id":"e24ce847386551d50142292009b0165d9932df24"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"741a3d645e9bc74308ba4a4674823f84abd079e7","unresolved":false,"context_lines":[{"line_number":913,"context_line":"                class_under_test \u003d self._get_diskfile(policy, frag_index)"},{"line_number":914,"context_line":"                try:"},{"line_number":915,"context_line":"                    actual \u003d class_under_test.manager.get_ondisk_files("},{"line_number":916,"context_line":"                        files, self.testdir, **kwargs)"},{"line_number":917,"context_line":"                    self.assertEqual(expected, actual,"},{"line_number":918,"context_line":"                                     \u0027Expected %s from %s but got %s\u0027"},{"line_number":919,"context_line":"                                     % (expected, files, actual))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_a00cbe43","line":916,"updated":"2015-03-24 16:44:45.000000000","message":"This change no longer tests the path where ECDiskFile adds self.frag_index to the kwargs passed to manager.get_ondisk_files - I can break diskfile.py line 1828 and all tests still pass.\n\nHere is a suggested patch to regain that coverage: http://paste.openstack.org/show/195963/","commit_id":"e24ce847386551d50142292009b0165d9932df24"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"335ddcf88b9de6be9b8a002e0356d6d2e39490f5","unresolved":false,"context_lines":[{"line_number":913,"context_line":"                class_under_test \u003d self._get_diskfile(policy, frag_index)"},{"line_number":914,"context_line":"                try:"},{"line_number":915,"context_line":"                    actual \u003d class_under_test.manager.get_ondisk_files("},{"line_number":916,"context_line":"                        files, self.testdir, **kwargs)"},{"line_number":917,"context_line":"                    self.assertEqual(expected, actual,"},{"line_number":918,"context_line":"                                     \u0027Expected %s from %s but got %s\u0027"},{"line_number":919,"context_line":"                                     % (expected, files, actual))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_f2611a3a","line":916,"in_reply_to":"1a6ced46_a00cbe43","updated":"2015-03-24 18:10:38.000000000","message":"Done","commit_id":"e24ce847386551d50142292009b0165d9932df24"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"741a3d645e9bc74308ba4a4674823f84abd079e7","unresolved":false,"context_lines":[{"line_number":1049,"context_line":""},{"line_number":1050,"context_line":"@patch_policies"},{"line_number":1051,"context_line":"class TestDiskFileManager(DiskFileManagerMixin, unittest.TestCase):"},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    mgr_cls \u003d diskfile.DiskFileManager"},{"line_number":1054,"context_line":""},{"line_number":1055,"context_line":"    def test_get_ondisk_files_with_repl_policy(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_e3ade089","line":1052,"updated":"2015-03-24 16:44:45.000000000","message":"ok, relocate of existing tests","commit_id":"e24ce847386551d50142292009b0165d9932df24"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"741a3d645e9bc74308ba4a4674823f84abd079e7","unresolved":false,"context_lines":[{"line_number":1106,"context_line":""},{"line_number":1107,"context_line":""},{"line_number":1108,"context_line":"@patch_policies(with_ec_default\u003dTrue)"},{"line_number":1109,"context_line":"class TestECDiskFileManager(DiskFileManagerMixin, unittest.TestCase):"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":"    mgr_cls \u003d diskfile.ECDiskFileManager"},{"line_number":1112,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_43ba34c1","line":1109,"updated":"2015-03-24 16:44:45.000000000","message":"ok, relocate of existing tests","commit_id":"e24ce847386551d50142292009b0165d9932df24"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"0768608a62ee9b3a4f518bef82082daf2d04ec58","unresolved":false,"context_lines":[{"line_number":1388,"context_line":"        if timestamp is None:"},{"line_number":1389,"context_line":"            timestamp \u003d time()"},{"line_number":1390,"context_line":"        timestamp \u003d Timestamp(timestamp)"},{"line_number":1391,"context_line":"        with df.create() as writer:"},{"line_number":1392,"context_line":"            new_metadata \u003d {"},{"line_number":1393,"context_line":"                \u0027ETag\u0027: md5(data).hexdigest(),"},{"line_number":1394,"context_line":"                \u0027X-Timestamp\u0027: timestamp.internal,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_7f16efa8","line":1391,"updated":"2015-03-24 07:32:16.000000000","message":"metadata must includes \u0027X-Object-Sysmeta-Ec-Archive-Index\u0027 here, right?","commit_id":"e24ce847386551d50142292009b0165d9932df24"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"b161e3f3832928c055714e7493bfd67ad4c2eb1c","unresolved":false,"context_lines":[{"line_number":1388,"context_line":"        if timestamp is None:"},{"line_number":1389,"context_line":"            timestamp \u003d time()"},{"line_number":1390,"context_line":"        timestamp \u003d Timestamp(timestamp)"},{"line_number":1391,"context_line":"        with df.create() as writer:"},{"line_number":1392,"context_line":"            new_metadata \u003d {"},{"line_number":1393,"context_line":"                \u0027ETag\u0027: md5(data).hexdigest(),"},{"line_number":1394,"context_line":"                \u0027X-Timestamp\u0027: timestamp.internal,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_2a3512da","line":1391,"in_reply_to":"1a6ced46_7f16efa8","updated":"2015-03-25 09:03:39.000000000","message":"This is just the mixin class, and it\u0027s used by EC and non-EC tests, thus I think it is correct that it is not included here","commit_id":"e24ce847386551d50142292009b0165d9932df24"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"741a3d645e9bc74308ba4a4674823f84abd079e7","unresolved":false,"context_lines":[{"line_number":1397,"context_line":"            new_metadata.update(metadata)"},{"line_number":1398,"context_line":"            writer.write(data)"},{"line_number":1399,"context_line":"            writer.put(new_metadata)"},{"line_number":1400,"context_line":"            # XXX the interface for this method should not be a *string*"},{"line_number":1401,"context_line":"            writer.write_durable_timestamp(timestamp.internal)"},{"line_number":1402,"context_line":"        df.open()"},{"line_number":1403,"context_line":"        return df"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_8306f1cc","line":1400,"updated":"2015-03-24 16:44:45.000000000","message":"fixed in dependent patch https://review.openstack.org/#/c/165208/5/test/unit/obj/test_diskfile.py","commit_id":"e24ce847386551d50142292009b0165d9932df24"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"741a3d645e9bc74308ba4a4674823f84abd079e7","unresolved":false,"context_lines":[{"line_number":1689,"context_line":"                metadata[\u0027X-Delete-At\u0027] \u003d \u0027bad integer\u0027"},{"line_number":1690,"context_line":"                diskfile.write_metadata(writer._fd, metadata)"},{"line_number":1691,"context_line":"            if policy.policy_type \u003d\u003d EC_POLICY:"},{"line_number":1692,"context_line":"                # XXX: the interface for this method should not be a *string*"},{"line_number":1693,"context_line":"                writer.write_durable_timestamp(timestamp.internal)"},{"line_number":1694,"context_line":""},{"line_number":1695,"context_line":"        if mark_deleted:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_c310e903","line":1692,"updated":"2015-03-24 16:44:45.000000000","message":"fixed in dependent patch https://review.openstack.org/#/c/165208/5/swift/obj/diskfile.py","commit_id":"e24ce847386551d50142292009b0165d9932df24"}],"test/unit/obj/test_server.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"741a3d645e9bc74308ba4a4674823f84abd079e7","unresolved":false,"context_lines":[{"line_number":4958,"context_line":"                              hash_path(\u0027a\u0027, \u0027c\u0027, \u0027o\u0027)),"},{"line_number":4959,"context_line":"            put_timestamp)"},{"line_number":4960,"context_line":"        # XXX this test is bad, we should not have a .durable for a .data that"},{"line_number":4961,"context_line":"        # does not have a fragment index"},{"line_number":4962,"context_line":"        obj_datafile \u003d obj_basename + \u0027.data\u0027"},{"line_number":4963,"context_line":"        self.assert_(os.path.isfile(obj_datafile))"},{"line_number":4964,"context_line":"        obj_durablefile \u003d obj_basename + \u0027.durable\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_c8456671","line":4961,"updated":"2015-03-24 16:44:45.000000000","message":"This gets fixed in dependent patch https://review.openstack.org/#/c/165208/5/test/unit/obj/test_server.py.","commit_id":"e24ce847386551d50142292009b0165d9932df24"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"741a3d645e9bc74308ba4a4674823f84abd079e7","unresolved":false,"context_lines":[{"line_number":5029,"context_line":"                              hash_path(\u0027a\u0027, \u0027c\u0027, \u0027o\u0027)),"},{"line_number":5030,"context_line":"            put_timestamp)"},{"line_number":5031,"context_line":"        # XXX this test is bad, we should not have a .durable for a .data that"},{"line_number":5032,"context_line":"        # does not have a fragment index"},{"line_number":5033,"context_line":"        obj_datafile \u003d obj_basename + \u0027.data\u0027"},{"line_number":5034,"context_line":"        self.assert_(os.path.isfile(obj_datafile))"},{"line_number":5035,"context_line":"        obj_durablefile \u003d obj_basename + \u0027.durable\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6ced46_a81caa78","line":5032,"updated":"2015-03-24 16:44:45.000000000","message":"This gets fixed in dependent patch https://review.openstack.org/#/c/165208/5/test/unit/obj/test_server.py.","commit_id":"e24ce847386551d50142292009b0165d9932df24"}]}
