)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"1e828470ffa2272ed38a1e72ad78322fa74dbe9d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"db7094ba_9307641a","updated":"2024-04-16 19:02:57.000000000","message":"I squashed some of the ideas into 914713: expirer: new options to control task iteration | https://review.opendev.org/c/openstack/swift/+/914713","commit_id":"1b34ec7f67fbb87ac38338bfd307e61cbdb2e1c3"}],"test/unit/obj/test_expirer.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"1e828470ffa2272ed38a1e72ad78322fa74dbe9d","unresolved":true,"context_lines":[{"line_number":1138,"context_line":"        obj_names \u003d (\u0027obj%s\u0027 % i for i in itertools.count())"},{"line_number":1139,"context_line":""},{"line_number":1140,"context_line":"        def task_name(task_container, i):"},{"line_number":1141,"context_line":"            account \u003d accounts[i % 3]"},{"line_number":1142,"context_line":"            # before *today* there\u0027s *only* grace account objects"},{"line_number":1143,"context_line":"            if Timestamp(task_container) \u003c now - containers_per_day:"},{"line_number":1144,"context_line":"                account \u003d accounts[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"237b4597_fe9fb4a7","side":"PARENT","line":1141,"updated":"2024-04-16 19:02:57.000000000","message":"I think I just meant to make this modulo len(accounts)","commit_id":"239ae4ee57207cd840d94ca24a3dca7621897a06"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"1e828470ffa2272ed38a1e72ad78322fa74dbe9d","unresolved":true,"context_lines":[{"line_number":1225,"context_line":"                found_delete_object \u003d True"},{"line_number":1226,"context_line":"        return iter_object_calls, delete_object_calls, num_iter_before_delete"},{"line_number":1227,"context_line":""},{"line_number":1228,"context_line":"    def _do_test_task_container_iteration(self, stub_shuffle):"},{"line_number":1229,"context_line":"        stub_max_objects_to_cache \u003d 10"},{"line_number":1230,"context_line":"        (now,"},{"line_number":1231,"context_line":"         num_expected_iter_calls,"}],"source_content_type":"text/x-python","patch_set":1,"id":"388ef812_1d43fb40","line":1228,"updated":"2024-04-16 19:02:57.000000000","message":"this might be ok, the _setup_a_bunch_of_tasks and _run_once_with_mocks and _sort_out_fake_swift_calls helpers are probably likly to be consumed together.\n\nBut the assumption that a new test wouldn\u0027t need/want to modify any params except for stub_shuffle seems sketch.  Probably this test-infra would be better if it it used a kwarg to support extending it later, or just went ahead and enumerated all the kwargs to _setup_a_bunch_of_tasks and _run_once_with_mocks.","commit_id":"1b34ec7f67fbb87ac38338bfd307e61cbdb2e1c3"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"1e828470ffa2272ed38a1e72ad78322fa74dbe9d","unresolved":true,"context_lines":[{"line_number":1243,"context_line":"        self.assertEqual(num_expected_delete_calls, len(delete_object_calls))"},{"line_number":1244,"context_line":"        return num_iter_before_delete, worst_num_iter_before_delete"},{"line_number":1245,"context_line":""},{"line_number":1246,"context_line":"    def test_task_container_iteration_order(self):"},{"line_number":1247,"context_line":"        # \"in order\" is the least optimized \"randomization\""},{"line_number":1248,"context_line":"        ordered_num_iter_before_delete, worst_num_iter_before_delete \u003d \\"},{"line_number":1249,"context_line":"            self._do_test_task_container_iteration(lambda x: None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"699ca151_ec222ea4","line":1246,"updated":"2024-04-16 19:02:57.000000000","message":"I don\u0027t like this better - we now have one test that\u0027s testing multiple things instead of a single test for each behavior we\u0027re trying to describe.","commit_id":"1b34ec7f67fbb87ac38338bfd307e61cbdb2e1c3"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"1e828470ffa2272ed38a1e72ad78322fa74dbe9d","unresolved":true,"context_lines":[{"line_number":1267,"context_line":"        # NB: there is a very small chance that the shuffle exactly reversed"},{"line_number":1268,"context_line":"        # the list and the shuffled result equals the best case"},{"line_number":1269,"context_line":"        self.assertLess(reversed_num_iter_before_delete,"},{"line_number":1270,"context_line":"                        shuffled_num_iter_before_delete)"},{"line_number":1271,"context_line":""},{"line_number":1272,"context_line":"    def test_run_once_unicode_problem(self):"},{"line_number":1273,"context_line":"        requests \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"6ba28179_4d35f88d","line":1270,"updated":"2024-04-16 19:02:57.000000000","message":"I guess we\u0027d have to try and calculate the best case in order to make this assertion stronger; I don\u0027t think the comment accurately reflects that a reverse is stable - not randomized at all.","commit_id":"1b34ec7f67fbb87ac38338bfd307e61cbdb2e1c3"}]}
