Skip to content

Commit 179102a

Browse files
Final SSE test and CI workflow setup
1 parent 0420e5b commit 179102a

File tree

3 files changed

+15
-24
lines changed

3 files changed

+15
-24
lines changed

.github/workflows/test.yml

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,23 @@
11
name: Run SSE Test
22

33
on:
4-
push:
5-
branches:
6-
- sse-test-final
74
pull_request:
8-
branches:
9-
- main
105

116
jobs:
127
test:
138
runs-on: ubuntu-latest
149
steps:
15-
- name: Checkout code
16-
uses: actions/checkout@v3
10+
- uses: actions/checkout@v3
1711

1812
- name: Set up Python
1913
uses: actions/setup-python@v4
2014
with:
21-
python-version: '3.10'
15+
python-version: '3.11'
2216

2317
- name: Install dependencies
2418
run: |
2519
python -m pip install --upgrade pip
2620
pip install -r tests/requirements-dev.txt
2721
28-
- name: Run tests
29-
run: |
30-
pytest tests/test_sse_client_server_hardened.py
22+
- name: Run test file
23+
run: pytest tests/test_sse_client_server_hardened.py

tests/requirements-dev.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
fastapi
2-
uvicorn
32
httpx
4-
httpx-sse
3+
uvicorn
54
sse-starlette
6-
anyio
5+
anyio
Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import asyncio
2-
from typing import AsyncGenerator, List
2+
from typing import AsyncGenerator
33

44
from fastapi import FastAPI
55
from starlette.responses import StreamingResponse
@@ -8,37 +8,36 @@
88
import httpx
99
from mcp.client.sse import aconnect_sse
1010

11+
1112
app = FastAPI()
1213

14+
1315
@app.get("/sse")
1416
async def sse_endpoint() -> StreamingResponse:
1517
async def event_stream() -> AsyncGenerator[str, None]:
1618
for i in range(3):
17-
yield f"data: Hello {i + 1}\n\n"
19+
yield f"data: Hello {i+1}\n\n"
1820
await asyncio.sleep(0.1)
1921
return StreamingResponse(event_stream(), media_type="text/event-stream")
2022

23+
2124
def run_mock_server() -> None:
2225
uvicorn.run(app, host="127.0.0.1", port=8012, log_level="warning")
2326

24-
async def run_test() -> None:
27+
28+
async def test_aconnect_sse_server_response() -> None:
2529
server_thread = Thread(target=run_mock_server, daemon=True)
2630
server_thread.start()
2731
await asyncio.sleep(1)
2832

29-
messages: List[str] = []
33+
messages = []
3034

3135
async with httpx.AsyncClient() as client:
3236
async with aconnect_sse(client, "GET", "http://127.0.0.1:8012/sse") as event_source:
3337
async for event in event_source.aiter_sse():
3438
if event.data:
35-
print("Event received:", event.data)
3639
messages.append(event.data)
3740
if len(messages) == 3:
3841
break
3942

40-
assert messages == ["Hello 1", "Hello 2", "Hello 3"]
41-
print("\nTest passed! SSE connection via aconnect_sse worked correctly.")
42-
43-
def test_aconnect_sse_server_response() -> None:
44-
asyncio.run(run_test())
43+
assert messages == ["Hello 1", "Hello 2", "Hello 3"]

0 commit comments

Comments
 (0)