44"""
55
66import time
7- from multiprocessing import Process , Queue
7+ from multiprocessing import Process
88
99import httpx
1010import pytest
1313from eval_protocol .types import MCPSession
1414
1515
16- def _run_airline_server (port_queue ):
16+ def _run_airline_server ():
1717 import os
1818
19- # Use different ports based on Python version to avoid conflicts in parallel CI runs
2019 python_version = os .environ .get ("PYTHON_VERSION" , "3.10" ).replace ("." , "" )
21- port = str (9780 + int (python_version [- 2 :])) # 9780, 9781, 9782
20+ port = str (9780 + int (python_version [- 1 :]))
2221 os .environ ["PORT" ] = port
23-
24- port_queue .put (int (port )) # Send the port back to the test
2522 from eval_protocol .mcp_servers .tau2 .tau2_mcp import AirlineDomainMcp
2623
2724 server = AirlineDomainMcp (seed = None )
@@ -30,26 +27,34 @@ def _run_airline_server(port_queue):
3027
3128@pytest .mark .asyncio
3229async def test_tool_call_returns_json_without_prior_initial_state ():
33- port_queue = Queue ()
34- proc = Process (target = _run_airline_server , args = (port_queue ,), daemon = True )
30+ import os
31+
32+ proc = Process (target = _run_airline_server , daemon = True )
3533 proc .start ()
3634
3735 try :
38- # Get the dynamically assigned port
39- port = port_queue .get (timeout = 10 )
36+ python_version = os .environ .get ("PYTHON_VERSION" , "3.10" ).replace ("." , "" )
37+ port = str (9780 + int (python_version [- 1 :]))
38+
4039 base_url = f"http://127.0.0.1:{ port } /mcp"
4140 client = httpx .Client (timeout = 1.0 )
42- deadline = time .time () + 20
41+ start_time = time .time ()
42+ deadline = start_time + 20
43+ ready_time = None
4344 while time .time () < deadline :
4445 try :
4546 r = client .get (base_url )
4647 if r .status_code in (200 , 307 , 406 ):
48+ ready_time = time .time ()
4749 break
4850 except Exception :
4951 pass
5052 time .sleep (0.2 )
5153 else :
52- pytest .fail (f"Server did not start on port { port } in time" )
54+ pytest .fail ("Server did not start on port 9780 in time" )
55+
56+ assert ready_time is not None , "Server did not return a successful status before exiting loop"
57+ assert ready_time - start_time < 20 , f"Server took too long to respond: { ready_time - start_time :.2f} s"
5358
5459 session = MCPSession (base_url = base_url , session_id = "test-autocreate" , seed = None , model_id = "test-model" )
5560
0 commit comments