)]}'
{"test/unit/obj/test_auditor.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"8f563145eca8d35afa8b0b06bd3493d1f7f76966","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from swift.obj.diskfile import ("},{"line_number":31,"context_line":"    DiskFile, write_metadata, invalidate_hash, get_data_dir,"},{"line_number":32,"context_line":"    DiskFileManager, ECDiskFileManager, AuditLocation, clear_auditor_status,"},{"line_number":33,"context_line":"    get_auditor_status, HASH_FILE, HASH_INVALIDATIONS_FILE)"},{"line_number":34,"context_line":"from swift.common.utils import ("},{"line_number":35,"context_line":"    mkdirs, normalize_timestamp, Timestamp, readconf)"},{"line_number":36,"context_line":"from swift.common.storage_policy import ("}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_d7750632","side":"PARENT","line":33,"updated":"2017-01-24 01:07:29.000000000","message":"this here mostly sums up the whole idea of this change I think","commit_id":"442cc1d16d45fbfd50c57fc62e2582674d7348c4"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"8f563145eca8d35afa8b0b06bd3493d1f7f76966","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            object_size_stats\u003d\u002710,100,1024,10240\u0027)"},{"line_number":107,"context_line":"        self._make_diskfiles()"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def _make_diskfiles(self):"},{"line_number":110,"context_line":"        self.df_mgr \u003d DiskFileManager(self.conf, self.logger)"},{"line_number":111,"context_line":"        self.ec_df_mgr \u003d ECDiskFileManager(self.conf, self.logger)"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_f7a762a4","line":109,"updated":"2017-01-24 01:07:29.000000000","message":"this mostly just makes it so you can change reclaim age in self.conf - assuming you remember to call self._make_diskfiles()","commit_id":"4f90dc68226367a7b5ef593545769e698ab77ab9"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"8f563145eca8d35afa8b0b06bd3493d1f7f76966","unresolved":false,"context_lines":[{"line_number":853,"context_line":"        # sanity check - auditor should *never* remove tombstone file"},{"line_number":854,"context_line":"        self.assertEqual([\u0027%s.ts\u0027 % ts_tomb.internal],"},{"line_number":855,"context_line":"                         os.listdir(self.disk_file._datadir))"},{"line_number":856,"context_line":"        return initial_hashes, mock_invalidate_hash"},{"line_number":857,"context_line":""},{"line_number":858,"context_line":"    def test_non_reclaimable_tombstone(self):"},{"line_number":859,"context_line":"        # audit with a recent tombstone"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_570bd67c","line":856,"updated":"2017-01-24 01:07:29.000000000","message":"this is a pretty weird return signature - I tried to \"with mock_invalidate_hash\" on the *outside* of this helper - but the helper also *creates* the file - and if you move the \"run_audit\" in the tests you also have to duplicate *never remove tombstone* sanity check.\n\nMaybe we could pass *in* the assertion we want?","commit_id":"4f90dc68226367a7b5ef593545769e698ab77ab9"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"d93ba52ab5f62c96a35b78f216280bcdb89a8774","unresolved":false,"context_lines":[{"line_number":853,"context_line":"        # sanity check - auditor should *never* remove tombstone file"},{"line_number":854,"context_line":"        self.assertEqual([\u0027%s.ts\u0027 % ts_tomb.internal],"},{"line_number":855,"context_line":"                         os.listdir(self.disk_file._datadir))"},{"line_number":856,"context_line":"        return initial_hashes, mock_invalidate_hash"},{"line_number":857,"context_line":""},{"line_number":858,"context_line":"    def test_non_reclaimable_tombstone(self):"},{"line_number":859,"context_line":"        # audit with a recent tombstone"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_75450141","line":856,"in_reply_to":"5a3905b3_570bd67c","updated":"2017-01-24 17:17:21.000000000","message":"return signature is a bit odd, but it does what it needs to w/o duplicacy. wfm.","commit_id":"4f90dc68226367a7b5ef593545769e698ab77ab9"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"8f563145eca8d35afa8b0b06bd3493d1f7f76966","unresolved":false,"context_lines":[{"line_number":960,"context_line":"        suffix \u003d basename(dirname(self.disk_file._datadir))"},{"line_number":961,"context_line":"        self.assertIn(suffix, hashes)"},{"line_number":962,"context_line":"        expected \u003d [mock.call(dirname(self.disk_file._datadir))]"},{"line_number":963,"context_line":"        self.assertEqual(mock_hash_suffix.call_args_list, expected)"},{"line_number":964,"context_line":""},{"line_number":965,"context_line":"        # ... run auditor again"},{"line_number":966,"context_line":"        with mock.patch.object(auditor, \u0027dump_recon_cache\u0027), \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_b77a3a22","line":963,"updated":"2017-01-24 01:07:29.000000000","message":"and here where we break form and mock _hash_suffix you can really start to see how it reaches across the abstraction\n\nIf you call get_hashes to initialize the hashes.pkl you can see this assertion fail because of the double-rehash bug [1]\n\nI\u0027m definitely open to dropping these assertions - i may have misread what was there - but apparently thought the test was a little weaker without them idk.\n\n1. https://review.openstack.org/#/c/418691/","commit_id":"4f90dc68226367a7b5ef593545769e698ab77ab9"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"d93ba52ab5f62c96a35b78f216280bcdb89a8774","unresolved":false,"context_lines":[{"line_number":960,"context_line":"        suffix \u003d basename(dirname(self.disk_file._datadir))"},{"line_number":961,"context_line":"        self.assertIn(suffix, hashes)"},{"line_number":962,"context_line":"        expected \u003d [mock.call(dirname(self.disk_file._datadir))]"},{"line_number":963,"context_line":"        self.assertEqual(mock_hash_suffix.call_args_list, expected)"},{"line_number":964,"context_line":""},{"line_number":965,"context_line":"        # ... run auditor again"},{"line_number":966,"context_line":"        with mock.patch.object(auditor, \u0027dump_recon_cache\u0027), \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_75f6e15d","line":963,"in_reply_to":"5a3905b3_b77a3a22","updated":"2017-01-24 17:17:21.000000000","message":"nice. I don\u0027t think we currently have these assertions, lgtm","commit_id":"4f90dc68226367a7b5ef593545769e698ab77ab9"}]}
