)]}'
{"test/unit/obj/test_expirer.py":[{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"be1cd2b039062d7d99cb169ceb9650ac1153520d","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            for task_container, deleted in x.deleted_objects.items():"},{"line_number":241,"context_line":"                self.assertFalse(deleted_objects[task_container] \u0026 deleted)"},{"line_number":242,"context_line":"                deleted_objects[task_container] |\u003d deleted"},{"line_number":243,"context_line":"        self.assertEqual(aco_dict[\u0027.expiring_objects\u0027][\u00273\u0027].pop(),"},{"line_number":244,"context_line":"                         deleted_objects[\u00273\u0027].pop().decode(\u0027utf8\u0027))"},{"line_number":245,"context_line":"        self.assertEqual(aco_dict[\u0027.expiring_objects\u0027], deleted_objects)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_delete_object(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_04057cc2","side":"PARENT","line":244,"range":{"start_line":243,"start_character":0,"end_line":244,"end_character":67},"updated":"2018-03-08 08:45:00.000000000","message":"Note: Decoding is already done in self.expirerd_target_path_list","commit_id":"cb51a0a00bb353e4e1c2e106dd995d0675641847"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"671908011895015c29938a6e4007c7aee69b77c7","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            for task_container, deleted in x.deleted_objects.items():"},{"line_number":241,"context_line":"                self.assertFalse(deleted_objects[task_container] \u0026 deleted)"},{"line_number":242,"context_line":"                deleted_objects[task_container] |\u003d deleted"},{"line_number":243,"context_line":"        self.assertEqual(aco_dict[\u0027.expiring_objects\u0027][\u00273\u0027].pop(),"},{"line_number":244,"context_line":"                         deleted_objects[\u00273\u0027].pop().decode(\u0027utf8\u0027))"},{"line_number":245,"context_line":"        self.assertEqual(aco_dict[\u0027.expiring_objects\u0027], deleted_objects)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_delete_object(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_4c04edc6","side":"PARENT","line":244,"range":{"start_line":243,"start_character":0,"end_line":244,"end_character":67},"in_reply_to":"df7087c5_04057cc2","updated":"2018-03-20 03:27:30.000000000","message":"I\u0027d argue elements in self.expired_target_path_list aren\u0027t already decoded.. or did I miss where it was done?","commit_id":"cb51a0a00bb353e4e1c2e106dd995d0675641847"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"8c60604951b44289ee83c8de95845d55f4b7a406","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            for task_container, deleted in x.deleted_objects.items():"},{"line_number":241,"context_line":"                self.assertFalse(deleted_objects[task_container] \u0026 deleted)"},{"line_number":242,"context_line":"                deleted_objects[task_container] |\u003d deleted"},{"line_number":243,"context_line":"        self.assertEqual(aco_dict[\u0027.expiring_objects\u0027][\u00273\u0027].pop(),"},{"line_number":244,"context_line":"                         deleted_objects[\u00273\u0027].pop().decode(\u0027utf8\u0027))"},{"line_number":245,"context_line":"        self.assertEqual(aco_dict[\u0027.expiring_objects\u0027], deleted_objects)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_delete_object(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_4c306d08","side":"PARENT","line":244,"range":{"start_line":243,"start_character":0,"end_line":244,"end_character":67},"in_reply_to":"df7087c5_4c04edc6","updated":"2018-03-20 04:11:30.000000000","message":"You are correct. I\u0027m sorry, the note is wrong.\nThe correct note is...\n\nIn this change, \u0027deleted_objects\u0027 is compared with utf8-encoded values. So decode(\u0027utf8\u0027) is removed.","commit_id":"cb51a0a00bb353e4e1c2e106dd995d0675641847"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"be1cd2b039062d7d99cb169ceb9650ac1153520d","unresolved":false,"context_lines":[{"line_number":801,"context_line":"                               fail_delete_container):"},{"line_number":802,"context_line":"            x.run_once()"},{"line_number":803,"context_line":"        error_lines \u003d x.logger.get_lines_for_level(\u0027error\u0027)"},{"line_number":804,"context_line":"        self.assertEqual(sorted(error_lines), sorted(["},{"line_number":805,"context_line":"            \u0027Exception while deleting object .expiring_objects %d \u0027"},{"line_number":806,"context_line":"            \u0027%d-a/c/actual-obj failed to delete actual object: \u0027 % (cts, ots),"},{"line_number":807,"context_line":"            \u0027Exception while deleting object .expiring_objects %d \u0027"},{"line_number":808,"context_line":"            \u0027%d-a/c/next-obj failed to delete actual object: \u0027 % (cts, ots),"},{"line_number":809,"context_line":"            \u0027Exception while deleting object .expiring_objects %d \u0027"},{"line_number":810,"context_line":"            \u0027%d-a/c/actual-obj failed to delete actual object: \u0027 %"},{"line_number":811,"context_line":"            (cts + 1, ots),"},{"line_number":812,"context_line":"            \u0027Exception while deleting object .expiring_objects %d \u0027"},{"line_number":813,"context_line":"            \u0027%d-a/c/next-obj failed to delete actual object: \u0027 %"},{"line_number":814,"context_line":"            (cts + 1, ots),"},{"line_number":815,"context_line":"            \u0027Exception while deleting container .expiring_objects %d \u0027"},{"line_number":816,"context_line":"            \u0027failed to delete container: \u0027 % (cts,),"},{"line_number":817,"context_line":"            \u0027Exception while deleting container .expiring_objects %d \u0027"},{"line_number":818,"context_line":"            \u0027failed to delete container: \u0027 % (cts + 1,)]))"},{"line_number":819,"context_line":"        self.assertEqual(x.logger.get_lines_for_level(\u0027info\u0027), ["},{"line_number":820,"context_line":"            \u0027Pass beginning for task account .expiring_objects; \u0027"},{"line_number":821,"context_line":"            \u00272 possible containers; 4 possible objects\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_64a9d879","side":"PARENT","line":818,"range":{"start_line":804,"start_character":0,"end_line":818,"end_character":58},"updated":"2018-03-08 08:45:00.000000000","message":"This assertion checks that delete continuation, so not removed.","commit_id":"cb51a0a00bb353e4e1c2e106dd995d0675641847"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"671908011895015c29938a6e4007c7aee69b77c7","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        self.expired_target_path_list \u003d ["},{"line_number":134,"context_line":"            \u0027a0/c0/o0\u0027, \u0027a1/c1/o1\u0027, \u0027a2/c2/o2\u0027, \u0027a3/c3/o3\u0027, \u0027a4/c4/o4\u0027,"},{"line_number":135,"context_line":"            \u0027a5/c5/o5\u0027, \u0027a6/c6/o6\u0027, \u0027a7/c7/o7\u0027,"},{"line_number":136,"context_line":"            \u0027a8/c8/o8\\xe2\\x99\\xa1\u0027, \u0027a9/c9/o9\\xc3\\xb8\u0027,"},{"line_number":137,"context_line":"        ]"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_89ef57e8","line":136,"range":{"start_line":136,"start_character":12,"end_line":136,"end_character":34},"updated":"2018-03-20 03:27:30.000000000","message":"Actually this is an encoded u\u0027-a8/c8/o8\\u2661\u0027:\n\n  In [14]: u\u0027-a8/c8/o8\\u2661\u0027.encode(\u0027utf8\u0027)\n  Out[14]: \u0027-a8/c8/o8\\xe2\\x99\\xa1\u0027","commit_id":"bac79f2daeb1a4f103bb81daf0b1a52fbce632c3"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"671908011895015c29938a6e4007c7aee69b77c7","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        self.expired_target_path_list \u003d ["},{"line_number":134,"context_line":"            \u0027a0/c0/o0\u0027, \u0027a1/c1/o1\u0027, \u0027a2/c2/o2\u0027, \u0027a3/c3/o3\u0027, \u0027a4/c4/o4\u0027,"},{"line_number":135,"context_line":"            \u0027a5/c5/o5\u0027, \u0027a6/c6/o6\u0027, \u0027a7/c7/o7\u0027,"},{"line_number":136,"context_line":"            \u0027a8/c8/o8\\xe2\\x99\\xa1\u0027, \u0027a9/c9/o9\\xc3\\xb8\u0027,"},{"line_number":137,"context_line":"        ]"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_e9905351","line":136,"range":{"start_line":136,"start_character":36,"end_line":136,"end_character":54},"updated":"2018-03-20 03:27:30.000000000","message":"And this is the other:\n\n  In [15]:  u\u0027-a9/c9/o9\\xf8\u0027.encode(\u0027utf8\u0027)\n  Out[15]: \u0027-a9/c9/o9\\xc3\\xb8\u0027\n\nSo would argue that aren\u0027t already decoded.","commit_id":"bac79f2daeb1a4f103bb81daf0b1a52fbce632c3"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"1278a938936d303eeb26d387e363a5ba6234c3bf","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            \u0027a0/c0/o0\u0027, \u0027a1/c1/o1\u0027, \u0027a2/c2/o2\u0027, \u0027a3/c3/o3\u0027, \u0027a4/c4/o4\u0027,"},{"line_number":135,"context_line":"            \u0027a5/c5/o5\u0027, \u0027a6/c6/o6\u0027, \u0027a7/c7/o7\u0027,"},{"line_number":136,"context_line":"            \u0027a8/c8/o8\\xe2\\x99\\xa1\u0027, \u0027a9/c9/o9\\xc3\\xb8\u0027,"},{"line_number":137,"context_line":"        ]"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def tearDown(self):"},{"line_number":140,"context_line":"        rmtree(self.rcache)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_dd918954","line":137,"updated":"2018-03-08 19:29:19.000000000","message":"this is a very specific starting condition to be encoding into the class setUp - it seems like testing slightly different variations of the expired queue would be a thing individual test methods would want to do differently in the future...","commit_id":"bac79f2daeb1a4f103bb81daf0b1a52fbce632c3"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"2829ee4fe7e0e8698fe954dad4838dae8c49034a","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            \u0027a0/c0/o0\u0027, \u0027a1/c1/o1\u0027, \u0027a2/c2/o2\u0027, \u0027a3/c3/o3\u0027, \u0027a4/c4/o4\u0027,"},{"line_number":135,"context_line":"            \u0027a5/c5/o5\u0027, \u0027a6/c6/o6\u0027, \u0027a7/c7/o7\u0027,"},{"line_number":136,"context_line":"            \u0027a8/c8/o8\\xe2\\x99\\xa1\u0027, \u0027a9/c9/o9\\xc3\\xb8\u0027,"},{"line_number":137,"context_line":"        ]"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def tearDown(self):"},{"line_number":140,"context_line":"        rmtree(self.rcache)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_7beae9ac","line":137,"in_reply_to":"df7087c5_dd918954","updated":"2018-03-19 05:05:36.000000000","message":"I see. But I think the specific condition should be generalized when the individual test method implemented.","commit_id":"bac79f2daeb1a4f103bb81daf0b1a52fbce632c3"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"1278a938936d303eeb26d387e363a5ba6234c3bf","unresolved":false,"context_lines":[{"line_number":381,"context_line":"            \u0027task_object\u0027: delete_at + \u0027-\u0027 + target,"},{"line_number":382,"context_line":"            \u0027delete_timestamp\u0027: Timestamp(delete_at),"},{"line_number":383,"context_line":"            \u0027target_path\u0027: target,"},{"line_number":384,"context_line":"        }"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    def test_round_robin_order(self):"},{"line_number":387,"context_line":"        x \u003d expirer.ObjectExpirer(self.conf, logger\u003dself.logger)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_fddc8d47","line":384,"updated":"2018-03-08 19:29:19.000000000","message":"good to see this pulled out - probably could just make it a free function since it doesn\u0027t use self","commit_id":"bac79f2daeb1a4f103bb81daf0b1a52fbce632c3"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"2829ee4fe7e0e8698fe954dad4838dae8c49034a","unresolved":false,"context_lines":[{"line_number":381,"context_line":"            \u0027task_object\u0027: delete_at + \u0027-\u0027 + target,"},{"line_number":382,"context_line":"            \u0027delete_timestamp\u0027: Timestamp(delete_at),"},{"line_number":383,"context_line":"            \u0027target_path\u0027: target,"},{"line_number":384,"context_line":"        }"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    def test_round_robin_order(self):"},{"line_number":387,"context_line":"        x \u003d expirer.ObjectExpirer(self.conf, logger\u003dself.logger)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_db1f75b5","line":384,"in_reply_to":"df7087c5_fddc8d47","updated":"2018-03-19 05:05:36.000000000","message":"For general task queue implementation, I want to have two different \"make_task\" (for legacy queue and general queue) in future patch unit test.\nIn my plan, the two \"make_task\" are implemented as overriding methods.\nSo, I leave \"self\" in arguments and implement \"make_task\" as non-free function.","commit_id":"bac79f2daeb1a4f103bb81daf0b1a52fbce632c3"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"1278a938936d303eeb26d387e363a5ba6234c3bf","unresolved":false,"context_lines":[{"line_number":575,"context_line":"        # the task queue has invalid task object"},{"line_number":576,"context_line":"        invalid_aco_dict \u003d deepcopy(self.fake_swift.aco_dict)"},{"line_number":577,"context_line":"        invalid_aco_dict[\u0027.expiring_objects\u0027][self.past_time].insert("},{"line_number":578,"context_line":"            0, self.past_time + \u0027-invalid0\u0027)"},{"line_number":579,"context_line":"        invalid_aco_dict[\u0027.expiring_objects\u0027][self.past_time].insert("},{"line_number":580,"context_line":"            5, self.past_time + \u0027-invalid1\u0027)"},{"line_number":581,"context_line":"        invalid_fake_swift \u003d FakeInternalClient(invalid_aco_dict)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_7dacfd8b","line":578,"updated":"2018-03-08 19:29:19.000000000","message":"this seems to be digging around in a private interface a little bit","commit_id":"bac79f2daeb1a4f103bb81daf0b1a52fbce632c3"},{"author":{"_account_id":14766,"name":"Kazuhiro MIYAHARA","email":"miyahara.kazuhiro@lab.ntt.co.jp","username":"miyahara"},"change_message_id":"2829ee4fe7e0e8698fe954dad4838dae8c49034a","unresolved":false,"context_lines":[{"line_number":575,"context_line":"        # the task queue has invalid task object"},{"line_number":576,"context_line":"        invalid_aco_dict \u003d deepcopy(self.fake_swift.aco_dict)"},{"line_number":577,"context_line":"        invalid_aco_dict[\u0027.expiring_objects\u0027][self.past_time].insert("},{"line_number":578,"context_line":"            0, self.past_time + \u0027-invalid0\u0027)"},{"line_number":579,"context_line":"        invalid_aco_dict[\u0027.expiring_objects\u0027][self.past_time].insert("},{"line_number":580,"context_line":"            5, self.past_time + \u0027-invalid1\u0027)"},{"line_number":581,"context_line":"        invalid_fake_swift \u003d FakeInternalClient(invalid_aco_dict)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_db4d35c5","line":578,"in_reply_to":"df7087c5_7dacfd8b","updated":"2018-03-19 05:05:36.000000000","message":"You are correct...\nBut I think fixing it will require a kind of refactoring.\nSo I think it should be done in another patch.","commit_id":"bac79f2daeb1a4f103bb81daf0b1a52fbce632c3"}]}
