|
14 | 14 | @pytest.mark.anyio |
15 | 15 | async def test_messages_are_executed_concurrently(): |
16 | 16 | server = FastMCP("test") |
17 | | - call_timestamps = [] |
18 | | - |
| 17 | + |
19 | 18 | @server.tool("sleep") |
20 | 19 | async def sleep_tool(): |
21 | | - call_timestamps.append(("tool_start_time", anyio.current_time())) |
22 | 20 | await anyio.sleep(_sleep_time_seconds) |
23 | | - call_timestamps.append(("tool_end_time", anyio.current_time())) |
24 | 21 | return "done" |
25 | 22 |
|
26 | 23 | @server.resource(_resource_name) |
27 | 24 | async def slow_resource(): |
28 | | - call_timestamps.append(("resource_start_time", anyio.current_time())) |
29 | 25 | await anyio.sleep(_sleep_time_seconds) |
30 | | - call_timestamps.append(("resource_end_time", anyio.current_time())) |
31 | 26 | return "slow" |
32 | 27 |
|
33 | 28 | async with create_session(server._mcp_server) as client_session: |
| 29 | + start_time = anyio.current_time() |
34 | 30 | async with anyio.create_task_group() as tg: |
35 | 31 | for _ in range(10): |
36 | 32 | tg.start_soon(client_session.call_tool, "sleep") |
37 | 33 | tg.start_soon(client_session.read_resource, AnyUrl(_resource_name)) |
38 | 34 |
|
39 | | - active_calls = 0 |
40 | | - max_concurrent_calls = 0 |
41 | | - for call_type, _ in sorted(call_timestamps, key=lambda x: x[1]): |
42 | | - if "start" in call_type: |
43 | | - active_calls += 1 |
44 | | - max_concurrent_calls = max(max_concurrent_calls, active_calls) |
45 | | - else: |
46 | | - active_calls -= 1 |
47 | | - print(f"Max concurrent calls: {max_concurrent_calls}") |
48 | | - assert max_concurrent_calls > 1, "No concurrent calls were executed" |
| 35 | + end_time = anyio.current_time() |
| 36 | + |
| 37 | + duration = end_time - start_time |
| 38 | + assert duration < 6 * _sleep_time_seconds |
| 39 | + print(duration) |
49 | 40 |
|
50 | 41 |
|
51 | 42 | def main(): |
|
0 commit comments