async def METHOD_NAME(service_client, loop, monitor_client, gate):
    await service_client.reset_metrics()
    gate.to_client_concat_packets(DATA_LENGTH)
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    await loop.sock_connect(sock, gate.get_sockname_for_clients())
    sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
    send_task = asyncio.create_task(send_all_data(sock, loop))
    await recv_all_data(sock, loop)
    await send_task
    gate.to_client_pass()
    metrics = await monitor_client.metrics(prefix='tcp-echo.')
    assert metrics.value_at('tcp-echo.sockets.opened') == 1
    assert metrics.value_at('tcp-echo.sockets.closed') == 0
    assert metrics.value_at('tcp-echo.bytes.read') == DATA_LENGTH