)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"e5a3d3cfe4a1fdba2adfaaf3a79a523174fa3366","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"557849c4_333aa1df","updated":"2023-11-08 17:17:46.000000000","message":"Seems reasonable -- if we\u0027re talking to the replication port on the object server, it seems reasonable to have the object server make updates against the replication port on the container server.\n\nHave we looked at what a test change might look like yet?","commit_id":"18d9d54bb58c0ddd69a9f742c99489e9732dd62d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9d95b6381891a5514da37d1a9a8a74db092f01e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"1896f061_17bbf6b8","updated":"2023-11-14 19:00:42.000000000","message":"recheck\n\nhttps://bugs.launchpad.net/swift/+bug/2028175","commit_id":"8c664add3d8b6d30ca8f6f1b2182c54cb705b973"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"74ea7845249819cf779bba6b2d572bfc9d476091","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"0738ef51_fb9e4ed6","updated":"2023-11-16 19:03:33.000000000","message":"seems good\n\nI think tests could be more DAMP\n\nhttps://review.opendev.org/c/openstack/swift/+/901201\n\n... and a another do_the_right_thing(node, headers) helper would be more DRY","commit_id":"68e093383054391d04b1a55ae9ec7bed36351a53"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"e5a74d74e1142228e27abdfb0bb6339262978666","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"f6569af9_ee12fda9","updated":"2023-11-25 03:58:33.000000000","message":"Matthew Oliver this one was discussed amongst me, Alistair and Clay Gerrard and could be merged for the next release.","commit_id":"e375ce5bf023185b1d5630b42a205abdaa09e82d"}],"swift/proxy/controllers/obj.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"8cef5f6004e3a658efd88f00b4a6de4f35f4027b","unresolved":true,"context_lines":[{"line_number":458,"context_line":"        return self._post_object(req, obj_ring, partition, headers)"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    def _backend_requests(self, req, n_outgoing,"},{"line_number":461,"context_line":"                          container_partition, containers,"},{"line_number":462,"context_line":"                          delete_at_container\u003dNone, delete_at_partition\u003dNone,"},{"line_number":463,"context_line":"                          delete_at_nodes\u003dNone, container_path\u003dNone):"},{"line_number":464,"context_line":"        policy_index \u003d req.headers[\u0027X-Backend-Storage-Policy-Index\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"7291475a_57871a11","line":461,"range":{"start_line":461,"start_character":47,"end_line":461,"end_character":57},"updated":"2023-10-25 12:45:47.000000000","message":"off topic: it would be clearer if this arg was named container_nodes (same as at the call site)","commit_id":"e8c625645fd424d5ade84ad947780b009b1b6d5a"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"1ee126ce830c08083d63b9234768e930ba8a3266","unresolved":false,"context_lines":[{"line_number":458,"context_line":"        return self._post_object(req, obj_ring, partition, headers)"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    def _backend_requests(self, req, n_outgoing,"},{"line_number":461,"context_line":"                          container_partition, containers,"},{"line_number":462,"context_line":"                          delete_at_container\u003dNone, delete_at_partition\u003dNone,"},{"line_number":463,"context_line":"                          delete_at_nodes\u003dNone, container_path\u003dNone):"},{"line_number":464,"context_line":"        policy_index \u003d req.headers[\u0027X-Backend-Storage-Policy-Index\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"c230dbc0_1ac5cf12","line":461,"range":{"start_line":461,"start_character":47,"end_line":461,"end_character":57},"in_reply_to":"7291475a_57871a11","updated":"2023-10-26 23:56:16.000000000","message":"Done","commit_id":"e8c625645fd424d5ade84ad947780b009b1b6d5a"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"8cef5f6004e3a658efd88f00b4a6de4f35f4027b","unresolved":true,"context_lines":[{"line_number":466,"context_line":"        headers \u003d [self.generate_request_headers(req, additional\u003dreq.headers)"},{"line_number":467,"context_line":"                   for _junk in range(n_outgoing)]"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        def set_container_update(index, container):"},{"line_number":470,"context_line":"            ip, port \u003d get_ip_port(container, headers[index])"},{"line_number":471,"context_line":"            headers[index][\u0027X-Container-Partition\u0027] \u003d container_partition"},{"line_number":472,"context_line":"            headers[index][\u0027X-Container-Host\u0027] \u003d csv_append("}],"source_content_type":"text/x-python","patch_set":1,"id":"d2a8f6fe_cfd6e3e9","line":469,"range":{"start_line":469,"start_character":40,"end_line":469,"end_character":49},"updated":"2023-10-25 12:45:47.000000000","message":"this is a container_node","commit_id":"e8c625645fd424d5ade84ad947780b009b1b6d5a"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"1ee126ce830c08083d63b9234768e930ba8a3266","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        headers \u003d [self.generate_request_headers(req, additional\u003dreq.headers)"},{"line_number":467,"context_line":"                   for _junk in range(n_outgoing)]"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        def set_container_update(index, container):"},{"line_number":470,"context_line":"            ip, port \u003d get_ip_port(container, headers[index])"},{"line_number":471,"context_line":"            headers[index][\u0027X-Container-Partition\u0027] \u003d container_partition"},{"line_number":472,"context_line":"            headers[index][\u0027X-Container-Host\u0027] \u003d csv_append("}],"source_content_type":"text/x-python","patch_set":1,"id":"b4832296_1f0d795a","line":469,"range":{"start_line":469,"start_character":40,"end_line":469,"end_character":49},"in_reply_to":"d2a8f6fe_cfd6e3e9","updated":"2023-10-26 23:56:16.000000000","message":"I agree, i found the var naming weird!","commit_id":"e8c625645fd424d5ade84ad947780b009b1b6d5a"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"8cef5f6004e3a658efd88f00b4a6de4f35f4027b","unresolved":true,"context_lines":[{"line_number":467,"context_line":"                   for _junk in range(n_outgoing)]"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        def set_container_update(index, container):"},{"line_number":470,"context_line":"            ip, port \u003d get_ip_port(container, headers[index])"},{"line_number":471,"context_line":"            headers[index][\u0027X-Container-Partition\u0027] \u003d container_partition"},{"line_number":472,"context_line":"            headers[index][\u0027X-Container-Host\u0027] \u003d csv_append("},{"line_number":473,"context_line":"                headers[index].get(\u0027X-Container-Host\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"810a8a7b_4434177c","line":470,"updated":"2023-10-25 12:45:47.000000000","message":"oh yeah, we have this handy helper method!","commit_id":"e8c625645fd424d5ade84ad947780b009b1b6d5a"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"1ee126ce830c08083d63b9234768e930ba8a3266","unresolved":false,"context_lines":[{"line_number":467,"context_line":"                   for _junk in range(n_outgoing)]"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        def set_container_update(index, container):"},{"line_number":470,"context_line":"            ip, port \u003d get_ip_port(container, headers[index])"},{"line_number":471,"context_line":"            headers[index][\u0027X-Container-Partition\u0027] \u003d container_partition"},{"line_number":472,"context_line":"            headers[index][\u0027X-Container-Host\u0027] \u003d csv_append("},{"line_number":473,"context_line":"                headers[index].get(\u0027X-Container-Host\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"32495b94_0f74a19b","line":470,"in_reply_to":"810a8a7b_4434177c","updated":"2023-10-26 23:56:16.000000000","message":"Done","commit_id":"e8c625645fd424d5ade84ad947780b009b1b6d5a"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"74ea7845249819cf779bba6b2d572bfc9d476091","unresolved":true,"context_lines":[{"line_number":504,"context_line":"            headers[index][\u0027X-Delete-At-Partition\u0027] \u003d delete_at_partition"},{"line_number":505,"context_line":"            headers[index][\u0027X-Delete-At-Host\u0027] \u003d csv_append("},{"line_number":506,"context_line":"                headers[index].get(\u0027X-Delete-At-Host\u0027),"},{"line_number":507,"context_line":"                \u0027%(ip)s:%(port)s\u0027 % {\u0027ip\u0027: ip, \u0027port\u0027: port})"},{"line_number":508,"context_line":"            headers[index][\u0027X-Delete-At-Device\u0027] \u003d csv_append("},{"line_number":509,"context_line":"                headers[index].get(\u0027X-Delete-At-Device\u0027),"},{"line_number":510,"context_line":"                delete_at_node[\u0027device\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"284f97f8_afcb6f6d","line":507,"updated":"2023-11-16 19:03:33.000000000","message":"there\u0027s a helper \"node_to_string\" in utils that is kind of similar to this\n\nI wouldn\u0027t mind seeing a request_helpers.node_to_host(node, headers)","commit_id":"68e093383054391d04b1a55ae9ec7bed36351a53"}],"test/unit/proxy/test_server.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"74ea7845249819cf779bba6b2d572bfc9d476091","unresolved":true,"context_lines":[{"line_number":4238,"context_line":"                req_headers \u003d request[2]"},{"line_number":4239,"context_line":"                device \u003d req_headers[\u0027x-container-device\u0027]"},{"line_number":4240,"context_line":"                host \u003d req_headers[\u0027x-container-host\u0027]"},{"line_number":4241,"context_line":"                container_headers[device] \u003d host"},{"line_number":4242,"context_line":"                expectations \u003d {"},{"line_number":4243,"context_line":"                    \u0027method\u0027: \u0027POST\u0027,"},{"line_number":4244,"context_line":"                    \u0027path\u0027: \u0027/0/a/c/o\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"6180a374_af71a757","line":4241,"updated":"2023-11-16 19:03:33.000000000","message":"this is a faily straight forward map of device to `x-container-host`; we collect it from looking at all the backend_reqeusts\u0027 headers","commit_id":"68e093383054391d04b1a55ae9ec7bed36351a53"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"74ea7845249819cf779bba6b2d572bfc9d476091","unresolved":true,"context_lines":[{"line_number":4259,"context_line":"                if use_replication:"},{"line_number":4260,"context_line":"                    expected[device] \u003d \u002710.0.1.%d:110%d\u0027 % (i, i)"},{"line_number":4261,"context_line":"                else:"},{"line_number":4262,"context_line":"                    expected[device] \u003d \u002710.0.0.%d:100%d\u0027 % (i, i)"},{"line_number":4263,"context_line":"            self.assertEqual(container_headers, expected)"},{"line_number":4264,"context_line":""},{"line_number":4265,"context_line":"            # and again with policy override"}],"source_content_type":"text/x-python","patch_set":10,"id":"beffdc0b_de5fc4a6","line":4262,"updated":"2023-11-16 19:03:33.000000000","message":"the use_replication kwarg effects both the setup and the exepcations - this is a very dynamic sort of test loop - I would prefer something more DAMP.\n\ntest_object_DELETE_backend_update_container_ip_default\ntest_replication_object_DELETE_backend_update_container_replication_ip\n\nIt would be really nice to assert when the proxy app recieves a request w/o x-backend-use-replication-network it uses the object ip AND container ip where-as if it recieves a request w/ x-backend-use-replication-network both the object and container update nodes select the replication_ip","commit_id":"68e093383054391d04b1a55ae9ec7bed36351a53"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"74ea7845249819cf779bba6b2d572bfc9d476091","unresolved":true,"context_lines":[{"line_number":4292,"context_line":"        do_test(resp_headers)"},{"line_number":4293,"context_line":"        resp_headers[\u0027X-Backend-Sharding-State\u0027] \u003d \u0027unsharded\u0027"},{"line_number":4294,"context_line":"        do_test(resp_headers)"},{"line_number":4295,"context_line":"        do_test(resp_headers, use_replication\u003dTrue)"},{"line_number":4296,"context_line":""},{"line_number":4297,"context_line":"    def _check_request(self, req, method, path, headers\u003dNone, params\u003dNone):"},{"line_number":4298,"context_line":"        self.assertEqual(method, req[\u0027method\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"db99a25e_faf907f6","line":4295,"updated":"2023-11-16 19:03:33.000000000","message":"so this is taking a test that was already doing more than one thing and making it do a third thing\n\n\tvagrant@saio:~$ pytest swift/test/unit/proxy/test_server.py::TestReplicatedObjectController::test_POST_backend_headers\n\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d test session starts \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\tplatform linux -- Python 3.8.10, pytest-7.4.2, pluggy-1.3.0 -- /usr/bin/python\n\tcachedir: .pytest_cache\n\trootdir: /home/vagrant/swift\n\tconfigfile: tox.ini\n\tplugins: cov-4.1.0\n\tcollected 1 item                                                                                                                                       \n\n\tswift/test/unit/proxy/test_server.py::TestReplicatedObjectController::test_POST_backend_headers \n\t\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e PDB set_trace (IO-capturing turned off) \u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\n\t\u003e /home/vagrant/swift/test/unit/proxy/test_server.py(4265)do_test()\n\t-\u003e self.assertEqual(container_headers, expected)\n\t(Pdb) !container_headers\n\t{\u0027sda\u0027: \u002710.0.0.0:1000\u0027, \u0027sdb\u0027: \u002710.0.0.1:1001\u0027, \u0027sdc\u0027: \u002710.0.0.2:1002\u0027}\n\t(Pdb) !expected\n\t{\u0027sda\u0027: \u002710.0.0.0:1000\u0027, \u0027sdb\u0027: \u002710.0.0.1:1001\u0027, \u0027sdc\u0027: \u002710.0.0.2:1002\u0027}\n\t(Pdb) c\n\n\t\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e PDB continue (IO-capturing resumed) \u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\n\n\t\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e PDB set_trace (IO-capturing turned off) \u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\n\t\u003e /home/vagrant/swift/test/unit/proxy/test_server.py(4265)do_test()\n\t-\u003e self.assertEqual(container_headers, expected)\n\t(Pdb) !container_headers\n\t{\u0027sda\u0027: \u002710.0.0.0:1000\u0027, \u0027sdb\u0027: \u002710.0.0.1:1001\u0027, \u0027sdc\u0027: \u002710.0.0.2:1002\u0027}\n\t(Pdb) !expected\n\t{\u0027sda\u0027: \u002710.0.0.0:1000\u0027, \u0027sdb\u0027: \u002710.0.0.1:1001\u0027, \u0027sdc\u0027: \u002710.0.0.2:1002\u0027}\n\t(Pdb) c\n\n\t\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e PDB continue (IO-capturing resumed) \u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\n\n\t\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e PDB set_trace (IO-capturing turned off) \u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\n\t\u003e /home/vagrant/swift/test/unit/proxy/test_server.py(4265)do_test()\n\t-\u003e self.assertEqual(container_headers, expected)\n\t(Pdb) !container_headers\n\t{\u0027sda\u0027: \u002710.0.1.0:1100\u0027, \u0027sdb\u0027: \u002710.0.1.1:1101\u0027, \u0027sdc\u0027: \u002710.0.1.2:1102\u0027}\n\t(Pdb) !expected\n\t{\u0027sda\u0027: \u002710.0.1.0:1100\u0027, \u0027sdb\u0027: \u002710.0.1.1:1101\u0027, \u0027sdc\u0027: \u002710.0.1.2:1102\u0027}\n\t(Pdb) c\n\n\t\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e PDB continue (IO-capturing resumed) \u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\n\tPASSED                                           [100%]\n\n\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d 1 passed in 33.52s \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","commit_id":"68e093383054391d04b1a55ae9ec7bed36351a53"}]}
