)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"aa601d9cbf08372d2cb45e6fb310ed6401afd7ec","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"sq: fixups for db auto create tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* cover the one untested status_changed_at i found in container.backend"},{"line_number":10,"context_line":"* fix my bunk ts_remote test in container.test_replicator"},{"line_number":11,"context_line":"* refactor auto-create tests to separate create objects/shards"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"8fdcf5e6_5a53c622","line":9,"updated":"2026-03-06 13:49:53.000000000","message":"squashed","commit_id":"de59d440997920e64c764900fbe1828dc06e47aa"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"aa601d9cbf08372d2cb45e6fb310ed6401afd7ec","unresolved":true,"context_lines":[{"line_number":7,"context_line":"sq: fixups for db auto create tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* cover the one untested status_changed_at i found in container.backend"},{"line_number":10,"context_line":"* fix my bunk ts_remote test in container.test_replicator"},{"line_number":11,"context_line":"* refactor auto-create tests to separate create objects/shards"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ida910415f92aff721cda4c78830b1ce52b4e78da"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"00ed8106_ec9ca11a","line":10,"updated":"2026-03-06 13:49:53.000000000","message":"squashed","commit_id":"de59d440997920e64c764900fbe1828dc06e47aa"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"aa601d9cbf08372d2cb45e6fb310ed6401afd7ec","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* cover the one untested status_changed_at i found in container.backend"},{"line_number":10,"context_line":"* fix my bunk ts_remote test in container.test_replicator"},{"line_number":11,"context_line":"* refactor auto-create tests to separate create objects/shards"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ida910415f92aff721cda4c78830b1ce52b4e78da"},{"line_number":14,"context_line":"Signed-off-by: Clay Gerrard \u003cclay.gerrard@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"693ba244_510efb0e","line":11,"updated":"2026-03-06 13:49:53.000000000","message":"partial squash \u0026 taken inspiration","commit_id":"de59d440997920e64c764900fbe1828dc06e47aa"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"aa601d9cbf08372d2cb45e6fb310ed6401afd7ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"df94f090_04a13bda","updated":"2026-03-06 13:49:53.000000000","message":"Thanks Clay","commit_id":"de59d440997920e64c764900fbe1828dc06e47aa"}],"test/unit/container/test_backend.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"c954986934a799854e37f465ce20571c236f4c15","unresolved":true,"context_lines":[{"line_number":3776,"context_line":"        self.assertEqual(0, info[\u0027bytes_used\u0027])"},{"line_number":3777,"context_line":"        self.assertEqual(timestamp.internal, info[\u0027status_changed_at\u0027])"},{"line_number":3778,"context_line":"        # for now we use NormalTimestamp in databases"},{"line_number":3779,"context_line":"        self.assertEqual(timestamp.normalized(), timestamp)"},{"line_number":3780,"context_line":"        expected[111] \u003d {\u0027object_count\u0027: 0, \u0027bytes_used\u0027: 0}"},{"line_number":3781,"context_line":"        self.assertEqual(expected, broker.get_policy_stats())"},{"line_number":3782,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"8e6711ee_04dbc294","line":3779,"updated":"2026-03-06 15:47:27.000000000","message":"this can\u0027t be true? given line 3770 creates a Timestamp, it\u0027s normalized version has to be different","commit_id":"de59d440997920e64c764900fbe1828dc06e47aa"}],"test/unit/container/test_replicator.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"c954986934a799854e37f465ce20571c236f4c15","unresolved":true,"context_lines":[{"line_number":666,"context_line":"            self.assertEqual(remote_info[\u0027storage_policy_index\u0027],"},{"line_number":667,"context_line":"                             local_info[\u0027storage_policy_index\u0027])"},{"line_number":668,"context_line":"            for key in (\u0027created_at\u0027, \u0027put_timestamp\u0027, \u0027delete_timestamp\u0027,"},{"line_number":669,"context_line":"                        \u0027status_changed_at\u0027):"},{"line_number":670,"context_line":"                ts_local \u003d Timestamp(local_info[key])"},{"line_number":671,"context_line":"                ts_remote \u003d Timestamp(remote_info[key])"},{"line_number":672,"context_line":"                self.assertEqual(ts_local, ts_remote)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fbb45194_670b675a","line":669,"range":{"start_line":669,"start_character":24,"end_line":669,"end_character":43},"updated":"2026-03-06 15:47:27.000000000","message":"status_changed_at is not synced so line 672 fails","commit_id":"de59d440997920e64c764900fbe1828dc06e47aa"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"c954986934a799854e37f465ce20571c236f4c15","unresolved":true,"context_lines":[{"line_number":668,"context_line":"            for key in (\u0027created_at\u0027, \u0027put_timestamp\u0027, \u0027delete_timestamp\u0027,"},{"line_number":669,"context_line":"                        \u0027status_changed_at\u0027):"},{"line_number":670,"context_line":"                ts_local \u003d Timestamp(local_info[key])"},{"line_number":671,"context_line":"                ts_remote \u003d Timestamp(remote_info[key])"},{"line_number":672,"context_line":"                self.assertEqual(ts_local, ts_remote)"},{"line_number":673,"context_line":"                # for now databases timestamp fields are normal timestamps"},{"line_number":674,"context_line":"                self.assertEqual(ts_remote, ts_remote.normalized())"}],"source_content_type":"text/x-python","patch_set":1,"id":"06f6c616_db22a2d1","line":671,"updated":"2026-03-06 15:47:27.000000000","message":"+1","commit_id":"de59d440997920e64c764900fbe1828dc06e47aa"}],"test/unit/container/test_server.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"aa601d9cbf08372d2cb45e6fb310ed6401afd7ec","unresolved":true,"context_lines":[{"line_number":5842,"context_line":"        self.assertEqual(ts.normal,"},{"line_number":5843,"context_line":"                         resp.headers.get(\u0027X-Backend-Put-Timestamp\u0027))"},{"line_number":5844,"context_line":"        self.assertEqual(ts.normal,"},{"line_number":5845,"context_line":"                         resp.headers.get(\u0027X-Backend-Status-Changed-At\u0027))"},{"line_number":5846,"context_line":""},{"line_number":5847,"context_line":"    def test_auto_create_success(self):"},{"line_number":5848,"context_line":"        def do_test(path, extra_headers\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"4b147034_603f96a4","line":5845,"updated":"2026-03-06 13:49:53.000000000","message":"+1","commit_id":"de59d440997920e64c764900fbe1828dc06e47aa"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"aa601d9cbf08372d2cb45e6fb310ed6401afd7ec","unresolved":true,"context_lines":[{"line_number":5871,"context_line":"            self.assertEqual(ts.normal,"},{"line_number":5872,"context_line":"                             resp.headers.get(\u0027X-Backend-Status-Changed-At\u0027))"},{"line_number":5873,"context_line":"            # make sure re-used paths can be recreated"},{"line_number":5874,"context_line":"            rmtree(os.path.join(self.testdir, \u0027sda1/containers/p\u0027))"},{"line_number":5875,"context_line":""},{"line_number":5876,"context_line":"        scenarios \u003d ["},{"line_number":5877,"context_line":"            # method, expected_status"}],"source_content_type":"text/x-python","patch_set":1,"id":"e3884700_ed27e64f","line":5874,"updated":"2026-03-06 13:49:53.000000000","message":"this is making me think that a setUp/tearDown per scenario is necessary","commit_id":"de59d440997920e64c764900fbe1828dc06e47aa"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"aa601d9cbf08372d2cb45e6fb310ed6401afd7ec","unresolved":true,"context_lines":[{"line_number":5877,"context_line":"            # method, expected_status"},{"line_number":5878,"context_line":"            (\u0027PUT\u0027, 201),"},{"line_number":5879,"context_line":"            (\u0027DELETE\u0027, 204),"},{"line_number":5880,"context_line":"        ]"},{"line_number":5881,"context_line":"        for method, expected_status in scenarios:"},{"line_number":5882,"context_line":"            # dot account containers auto created by default"},{"line_number":5883,"context_line":"            do_test(\u0027.a/c/o\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"987bbf2f_dae5cb72","line":5880,"updated":"2026-03-06 13:49:53.000000000","message":"I\u0027ve done it myself over the years but I try to avoid \u0027for\u0027 loops over test scenarios because when a scenario fails you don\u0027t immediately know which.\n\nWe do have subtest, but in this case there\u0027s not so many scenarios that we can\u0027t just spell them out.","commit_id":"de59d440997920e64c764900fbe1828dc06e47aa"}]}
