Skip to content

Commit f64a646

Browse files
Fix test client to wait for TURN_COMPLETE instead of fixed timeout
1 parent b264031 commit f64a646

1 file changed

Lines changed: 13 additions & 3 deletions

File tree

scripts/test_client.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ async def handle_server_message(
126126
output_dir: Path | None,
127127
verbose: bool,
128128
audio_buffer: list[bytes],
129+
turn_complete_event: asyncio.Event | None = None,
129130
) -> None:
130131
"""Process a message from the server."""
131132
if isinstance(message, bytes):
@@ -160,6 +161,8 @@ async def handle_server_message(
160161
path = save_audio(combined, output_dir)
161162
logger.info("Saved audio: %s (%d bytes)", path, len(combined))
162163
audio_buffer.clear()
164+
if turn_complete_event:
165+
turn_complete_event.set()
163166
case "INTERRUPTED":
164167
logger.info("Agent interrupted")
165168
audio_buffer.clear()
@@ -212,12 +215,13 @@ async def receive_messages(
212215
ws: ClientConnection,
213216
output_dir: Path | None,
214217
verbose: bool,
218+
turn_complete_event: asyncio.Event,
215219
) -> None:
216220
"""Receive and handle all messages from the server."""
217221
audio_buffer: list[bytes] = []
218222

219223
async for message in ws:
220-
await handle_server_message(message, output_dir, verbose, audio_buffer)
224+
await handle_server_message(message, output_dir, verbose, audio_buffer, turn_complete_event)
221225

222226

223227
async def run_client(
@@ -262,12 +266,18 @@ async def run_client(
262266
logger.info("Sent IMAGE frame")
263267

264268
ping_task = asyncio.create_task(send_ping_periodically(ws))
265-
receive_task = asyncio.create_task(receive_messages(ws, output_dir, verbose))
269+
turn_complete_event = asyncio.Event()
270+
receive_task = asyncio.create_task(
271+
receive_messages(ws, output_dir, verbose, turn_complete_event)
272+
)
266273

267274
await stream_audio(ws, audio_data, verbose)
268275

269276
logger.info("Waiting for agent response...")
270-
await asyncio.sleep(2)
277+
try:
278+
await asyncio.wait_for(turn_complete_event.wait(), timeout=60.0)
279+
except TimeoutError:
280+
logger.warning("Timeout waiting for TURN_COMPLETE")
271281

272282
ping_task.cancel()
273283
with contextlib.suppress(asyncio.CancelledError):

0 commit comments

Comments
 (0)