Skip to content

Commit cc288b2

Browse files
committed
try diff prots
1 parent 09c5d49 commit cc288b2

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

tests/pytest/test_mcp_session_autocreate.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
without requiring a prior initial state fetch, and returns JSON.
44
"""
55

6+
import socket
67
import time
7-
from multiprocessing import Process
8+
from multiprocessing import Process, Queue
89

910
import httpx
1011
import pytest
@@ -13,10 +14,16 @@
1314
from eval_protocol.types import MCPSession
1415

1516

16-
def _run_airline_server():
17+
def _run_airline_server(port_queue):
1718
import os
1819

19-
os.environ["PORT"] = "9780"
20+
# Use dynamic port allocation to avoid conflicts in parallel CI runs
21+
with socket.socket() as s:
22+
s.bind(("", 0))
23+
port = s.getsockname()[1]
24+
25+
port_queue.put(port) # Send the port back to the test
26+
os.environ["PORT"] = str(port)
2027
from eval_protocol.mcp_servers.tau2.tau2_mcp import AirlineDomainMcp
2128

2229
server = AirlineDomainMcp(seed=None)
@@ -25,29 +32,26 @@ def _run_airline_server():
2532

2633
@pytest.mark.asyncio
2734
async def test_tool_call_returns_json_without_prior_initial_state():
28-
proc = Process(target=_run_airline_server, daemon=True)
35+
port_queue = Queue()
36+
proc = Process(target=_run_airline_server, args=(port_queue,), daemon=True)
2937
proc.start()
3038

3139
try:
32-
base_url = "http://127.0.0.1:9780/mcp"
40+
# Get the dynamically assigned port
41+
port = port_queue.get(timeout=10)
42+
base_url = f"http://127.0.0.1:{port}/mcp"
3343
client = httpx.Client(timeout=1.0)
34-
start_time = time.time()
35-
deadline = start_time + 20
36-
ready_time = None
44+
deadline = time.time() + 20
3745
while time.time() < deadline:
3846
try:
3947
r = client.get(base_url)
4048
if r.status_code in (200, 307, 406):
41-
ready_time = time.time()
4249
break
4350
except Exception:
4451
pass
4552
time.sleep(0.2)
4653
else:
47-
pytest.fail("Server did not start on port 9780 in time")
48-
49-
assert ready_time is not None, "Server did not return a successful status before exiting loop"
50-
assert ready_time - start_time < 20, f"Server took too long to respond: {ready_time - start_time:.2f}s"
54+
pytest.fail(f"Server did not start on port {port} in time")
5155

5256
session = MCPSession(base_url=base_url, session_id="test-autocreate", seed=None, model_id="test-model")
5357

0 commit comments

Comments
 (0)