Skip to content

Commit c27a9b7

Browse files
committed
test this
1 parent 2830829 commit c27a9b7

File tree

1 file changed

+36
-31
lines changed

1 file changed

+36
-31
lines changed

tests/pytest/test_mcp_session_autocreate.py

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

6+
import asyncio
7+
import subprocess
8+
import sys
69
import time
7-
from multiprocessing import Process
810

911
import httpx
1012
import pytest
@@ -13,43 +15,46 @@
1315
from eval_protocol.types import MCPSession
1416

1517

16-
def _run_airline_server():
17-
import os
18-
import sys
19-
18+
@pytest.mark.asyncio
19+
async def test_tool_call_returns_json_without_prior_initial_state():
2020
# Get Python version directly from sys.version_info
2121
minor_version = sys.version_info.minor # 10, 11, 12
2222

2323
# Map Python versions to port offsets: 3.10->0, 3.11->1, 3.12->2
2424
port_offset = minor_version - 10
25-
port = str(9780)
26-
print(f"[SERVER DEBUG] Python 3.{minor_version} -> Setting PORT={port}")
27-
os.environ["PORT"] = port
28-
from eval_protocol.mcp_servers.tau2.tau2_mcp import AirlineDomainMcp
29-
30-
print(f"[SERVER DEBUG] About to create AirlineDomainMcp with PORT={os.environ.get('PORT')}")
31-
server = AirlineDomainMcp(seed=None)
32-
print(f"[SERVER DEBUG] Server created, FastMCP port={server.mcp.settings.port}")
33-
print(f"[SERVER DEBUG] About to run on port {port}")
34-
server.run(transport="streamable-http")
35-
25+
port = str(9780 + port_offset)
26+
print(f"[TEST DEBUG] Python 3.{minor_version} -> Looking for server on port {port}")
27+
28+
# Create server script to run as subprocess instead of multiprocessing
29+
server_script = """
30+
import sys
31+
import os
32+
33+
# Get Python version directly from sys.version_info
34+
minor_version = sys.version_info.minor # 10, 11, 12
35+
36+
# Map Python versions to port offsets: 3.10->0, 3.11->1, 3.12->2
37+
port_offset = minor_version - 10
38+
port = str(9780 + port_offset)
39+
print(f"[SERVER DEBUG] Python 3.{minor_version} -> Setting PORT={port}")
40+
os.environ["PORT"] = port
41+
42+
from eval_protocol.mcp_servers.tau2.tau2_mcp import AirlineDomainMcp
43+
44+
print(f"[SERVER DEBUG] About to create AirlineDomainMcp with PORT={os.environ.get('PORT')}")
45+
server = AirlineDomainMcp(seed=None)
46+
print(f"[SERVER DEBUG] Server created, FastMCP port={server.mcp.settings.port}")
47+
print(f"[SERVER DEBUG] About to run on port {port}")
48+
server.run(transport="streamable-http")
49+
"""
3650

37-
@pytest.mark.asyncio
38-
async def test_tool_call_returns_json_without_prior_initial_state():
39-
import sys
51+
# Start server as subprocess instead of multiprocessing.Process
52+
proc = subprocess.Popen([sys.executable, "-c", server_script])
4053

41-
proc = Process(target=_run_airline_server, daemon=True)
42-
proc.start()
54+
# Give server time to start
55+
await asyncio.sleep(3)
4356

4457
try:
45-
# Get Python version directly from sys.version_info
46-
minor_version = sys.version_info.minor # 10, 11, 12
47-
48-
# Map Python versions to port offsets: 3.10->0, 3.11->1, 3.12->2
49-
port_offset = minor_version - 10
50-
port = str(9780)
51-
print(f"[TEST DEBUG] Python 3.{minor_version} -> Looking for server on port {port}")
52-
5358
base_url = f"http://127.0.0.1:{port}/mcp"
5459
print(f"[TEST DEBUG] base_url = {base_url}")
5560
client = httpx.Client(timeout=1.0)
@@ -66,7 +71,7 @@ async def test_tool_call_returns_json_without_prior_initial_state():
6671
pass
6772
time.sleep(0.2)
6873
else:
69-
pytest.fail("Server did not start on port 9780 in time")
74+
pytest.fail(f"Server did not start on port {port} in time")
7075

7176
assert ready_time is not None, "Server did not return a successful status before exiting loop"
7277
assert ready_time - start_time < 20, f"Server took too long to respond: {ready_time - start_time:.2f}s"
@@ -86,4 +91,4 @@ async def test_tool_call_returns_json_without_prior_initial_state():
8691
await mgr.close_session(session)
8792
finally:
8893
proc.terminate()
89-
proc.join(timeout=5)
94+
proc.wait(timeout=5)

0 commit comments

Comments
 (0)