)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"79f4df26d8a1ab6e28ae1b875775a6da7376d81b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"866834d8_0d52fd16","updated":"2022-06-07 21:15:53.000000000","message":"I meant to look at this a *while* back, sorry! Seems good and useful, and it\u0027s purely additive and opt-in. Got a few thoughts on tests, though.","commit_id":"a99f52300de1464461c076de1815e22ac520d80b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"99ce0784d086f8c99337945943b538dea4a06804","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"69721329_d03fd9c7","updated":"2024-01-16 16:20:17.000000000","message":"I dropped the sleep down a bunch -- LGTM","commit_id":"57f0db3c9eb1b909d93c1b499081171ee58c6e39"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f5e737e1069e30644bc28c23f49927cb1defb237","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1e7c9a63_6c7bf451","updated":"2024-01-18 16:08:01.000000000","message":"recheck\n\nWell *that* looks screwy:\n```\n    Exception: Key openstack.api.compute.GET.servers_detail.200 not found in reported stats\n\n\nCaptured statsd_content:\n~~~~~~~~~~~~~~~~~~~~~~~~\n    [b\u0027openstack.api.compute.GET.servers_detail.200:10.000000|ms\\nopenstack.api.\u0027\n b\u0027compute.GET.servers_detail.200:1|c\\nopenstack.api.compute.GET.servers_det\u0027\n b\u0027ail.attempted:1|c\u0027]\n ```\n Nothing to do with us, anyway...","commit_id":"52c80d652de45dad860d954ab55207326c5eb0e6"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2c5d5a490733d22c5c5763e346633cebe9ca7e25","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"caa1d280_131ebdfa","updated":"2024-01-18 05:18:42.000000000","message":"recheck\n\nrequirements rolled back the eventlet bump","commit_id":"52c80d652de45dad860d954ab55207326c5eb0e6"}],"swift/common/db.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"79f4df26d8a1ab6e28ae1b875775a6da7376d81b","unresolved":true,"context_lines":[{"line_number":734,"context_line":"            \u0027\u0027\u0027 % (columns, \u0027incoming\u0027 if incoming else \u0027outgoing\u0027))"},{"line_number":735,"context_line":"            result \u003d []"},{"line_number":736,"context_line":"            for row in curs:"},{"line_number":737,"context_line":"                row_dict \u003d {\u0027remote_id\u0027: row[0], \u0027sync_point\u0027: row[1]}"},{"line_number":738,"context_line":"                if include_timestamp:"},{"line_number":739,"context_line":"                    row_dict[\u0027updated_at\u0027] \u003d row[2]"},{"line_number":740,"context_line":"                result.append(row_dict)"}],"source_content_type":"text/x-python","patch_set":1,"id":"f55eeb92_10e20e4f","line":737,"updated":"2022-06-07 21:15:53.000000000","message":"I should go refresh my memory of how row_factory works...","commit_id":"a99f52300de1464461c076de1815e22ac520d80b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"99ce0784d086f8c99337945943b538dea4a06804","unresolved":false,"context_lines":[{"line_number":734,"context_line":"            \u0027\u0027\u0027 % (columns, \u0027incoming\u0027 if incoming else \u0027outgoing\u0027))"},{"line_number":735,"context_line":"            result \u003d []"},{"line_number":736,"context_line":"            for row in curs:"},{"line_number":737,"context_line":"                row_dict \u003d {\u0027remote_id\u0027: row[0], \u0027sync_point\u0027: row[1]}"},{"line_number":738,"context_line":"                if include_timestamp:"},{"line_number":739,"context_line":"                    row_dict[\u0027updated_at\u0027] \u003d row[2]"},{"line_number":740,"context_line":"                result.append(row_dict)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3d1ef056_683b572b","line":737,"in_reply_to":"f55eeb92_10e20e4f","updated":"2024-01-16 16:20:17.000000000","message":"Acknowledged","commit_id":"a99f52300de1464461c076de1815e22ac520d80b"}],"test/unit/cli/test_info.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"79f4df26d8a1ab6e28ae1b875775a6da7376d81b","unresolved":true,"context_lines":[{"line_number":673,"context_line":"                exp_heading \u003d \u0027Incoming Syncs:\u0027"},{"line_number":674,"context_line":"            else:"},{"line_number":675,"context_line":"                exp_heading \u003d \u0027Outgoing Syncs:\u0027"},{"line_number":676,"context_line":"            exp_heading +\u003d \u0027\\n  Sync Point\tRemote ID\tUpdated At\u0027"},{"line_number":677,"context_line":"            self.assertIn(exp_heading, out.getvalue())"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        # now add some syncs"}],"source_content_type":"text/x-python","patch_set":1,"id":"2b655091_28336778","line":676,"range":{"start_line":676,"start_character":42,"end_line":676,"end_character":43},"updated":"2022-06-07 21:15:53.000000000","message":"This is the only test that has actual tabs in it -- we probably ought to use \\t.","commit_id":"a99f52300de1464461c076de1815e22ac520d80b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"79f4df26d8a1ab6e28ae1b875775a6da7376d81b","unresolved":true,"context_lines":[{"line_number":688,"context_line":"            out \u003d StringIO()"},{"line_number":689,"context_line":"            with mock.patch(\u0027sys.stdout\u0027, out):"},{"line_number":690,"context_line":"                print_db_syncs(incoming, syncs)"},{"line_number":691,"context_line":"            output \u003d (\"%s:\\n  Sync Point\tRemote ID\tUpdated At\\n  \""},{"line_number":692,"context_line":"                      \"0         \tremote_0 \t%s (%s)\\n  \""},{"line_number":693,"context_line":"                      \"1         \tremote_1 \t%s (%s)\\n\") % ("},{"line_number":694,"context_line":"                \u0027Incoming Syncs\u0027 if incoming else \u0027Outgoing Syncs\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"2b0fc3d6_4b5b3366","line":691,"updated":"2022-06-07 21:15:53.000000000","message":"Given how much of the formatting gets lost, I think I\u0027d prefer we use some \u0027\u0027\u0027 like in test_print_db_info_metadata up around L126.\n\nSpeaking of, how does that test get away with using neither \\t nor actual tabs??","commit_id":"a99f52300de1464461c076de1815e22ac520d80b"}],"test/unit/common/test_db.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"79f4df26d8a1ab6e28ae1b875775a6da7376d81b","unresolved":true,"context_lines":[{"line_number":591,"context_line":"        self.assertEqual(broker.get_info()[\u0027status_changed_at\u0027],"},{"line_number":592,"context_line":"                         status_changed_at)"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def test_get_syncs(self):"},{"line_number":595,"context_line":"        broker \u003d self.broker_class(\u0027:memory:\u0027, account\u003d\u0027a\u0027, container\u003d\u0027c\u0027)"},{"line_number":596,"context_line":"        broker.initialize(Timestamp.now().internal,"},{"line_number":597,"context_line":"                          storage_policy_index\u003dint(self.policy))"}],"source_content_type":"text/x-python","patch_set":1,"id":"d512779e_049f9e0b","line":594,"updated":"2022-06-07 21:15:53.000000000","message":"OK, cool; different test, so not a test name collision.","commit_id":"a99f52300de1464461c076de1815e22ac520d80b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"79f4df26d8a1ab6e28ae1b875775a6da7376d81b","unresolved":true,"context_lines":[{"line_number":1032,"context_line":"                {\u0027sync_point\u0027: 0, \u0027remote_id\u0027: \u0027remote_0\u0027},"},{"line_number":1033,"context_line":"                {\u0027sync_point\u0027: 1, \u0027remote_id\u0027: \u0027remote_1\u0027}], incoming)"},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":"            time.sleep(0.5)"},{"line_number":1036,"context_line":"            broker.merge_syncs(["},{"line_number":1037,"context_line":"                {\u0027sync_point\u0027: 2, \u0027remote_id\u0027: \u0027remote_2\u0027}], incoming)"},{"line_number":1038,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9139cbfe_e24ff3b4","line":1035,"updated":"2022-06-07 21:15:53.000000000","message":"How much does this sleep() actually buy us? If I drop it down to\n\n time.sleep(0.005)\n\nthe test still passes, and the time required to run *all* tests in this file drops by like 60% OMM.","commit_id":"a99f52300de1464461c076de1815e22ac520d80b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"99ce0784d086f8c99337945943b538dea4a06804","unresolved":true,"context_lines":[{"line_number":1090,"context_line":"                             broker.get_syncs(incoming,"},{"line_number":1091,"context_line":"                                              include_timestamp\u003dTrue))"},{"line_number":1092,"context_line":"            self.assertTrue(all(["},{"line_number":1093,"context_line":"                str(int(ts0)) \u003c\u003d s[\u0027updated_at\u0027] \u003c\u003d str(int(ts1))"},{"line_number":1094,"context_line":"                for s in broker.get_syncs(incoming, include_timestamp\u003dTrue)]))"},{"line_number":1095,"context_line":""},{"line_number":1096,"context_line":"    def test_get_sync(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3961647e_71be568a","line":1093,"updated":"2024-01-16 16:20:17.000000000","message":"So, with the half second sleep, nearly half the time we expect to be checking that `str(int(ts0)) \u003d\u003d s[\u0027updated_at\u0027] \u003d\u003d str(int(ts1))` ...\n\nI like that we\u0027ve got the robustness against `NOW` shifting over the course of the test, especially when we\u0027ve seen flaky timing-related tests in the gate (where I wouldn\u0027t be *so* surprised if there was a delta of several seconds between `ts0` and `ts1`)... but again, I\u0027m not sure what we gain by intentionally sleeping so long.","commit_id":"57f0db3c9eb1b909d93c1b499081171ee58c6e39"}]}
