Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions dotnet/test/E2E/ScenarioTestingSessionSetupE2ETests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -290,19 +290,22 @@ public async Task Should_Preserve_Omitted_Versus_Disabled_Scenario_Semantics()
}

[Fact]
public async Task Should_Use_Preallocated_Id_For_First_Subscribed_Event()
public async Task Should_Use_Preallocated_Id_For_Subscribed_Session_Start_Event()
{
var requestedSessionId = Guid.NewGuid().ToString();
var firstEvent = new TaskCompletionSource<SessionEvent>(TaskCreationOptions.RunContinuationsAsynchronously);
var sessionStarted = new TaskCompletionSource<SessionStartEvent>(TaskCreationOptions.RunContinuationsAsynchronously);

await using var session = await CreateSessionAsync(new SessionConfig
{
SessionId = requestedSessionId,
OnEvent = evt => firstEvent.TrySetResult(evt),
OnEvent = evt =>
{
if (evt is SessionStartEvent start)
sessionStarted.TrySetResult(start);
},
});

var observed = await firstEvent.Task.WaitAsync(TestTimeout);
var start = Assert.IsType<SessionStartEvent>(observed);
var start = await sessionStarted.Task.WaitAsync(TestTimeout);
Assert.Equal(requestedSessionId, session.SessionId);
Assert.Equal(requestedSessionId, start.Data.SessionId);
}
Expand Down
22 changes: 11 additions & 11 deletions python/e2e/test_scenario_cloud_e2e.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,17 +70,18 @@ def on_event(event) -> None:
finally:
await client.stop()

async def test_should_route_first_cloud_event_for_server_assigned_session_id(
async def test_should_route_cloud_session_start_for_server_assigned_session_id(
self,
ctx: E2ETestContext,
):
client, _capture_path = create_scenario_client(ctx, "cloud")
events = []
first_event_received = asyncio.Event()
start_events = []
session_start_received = asyncio.Event()

def on_event(event) -> None:
events.append(event)
first_event_received.set()
if isinstance(event.data, SessionStartData):
start_events.append(event)
session_start_received.set()

try:
session = await client.create_session(
Expand All @@ -95,13 +96,12 @@ def on_event(event) -> None:
on_permission_request=PermissionHandler.approve_all,
)
try:
await asyncio.wait_for(first_event_received.wait(), timeout=5)
await asyncio.wait_for(session_start_received.wait(), timeout=5)
assert session.session_id == "cloud-runtime-session"
assert len(events) == 1
assert isinstance(events[0].data, SessionStartData)
assert events[0].data.session_id == session.session_id
assert events[0].data.producer == "scenario-fake-cli"
assert events[0].data.remote_steerable is False
assert len(start_events) == 1
assert start_events[0].data.session_id == session.session_id
assert start_events[0].data.producer == "scenario-fake-cli"
assert start_events[0].data.remote_steerable is False
finally:
await session.disconnect()
finally:
Expand Down
20 changes: 10 additions & 10 deletions python/e2e/test_scenario_session_setup_e2e.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,18 @@


class TestScenarioSessionSetup:
async def test_should_route_first_subscribed_event_for_preallocated_session_id(
async def test_should_route_subscribed_session_start_for_preallocated_session_id(
self,
ctx: E2ETestContext,
):
client, _capture_path = create_scenario_client(ctx, "preallocated-event")
events = []
event_received = asyncio.Event()
start_events = []
session_start_received = asyncio.Event()

def on_event(event) -> None:
events.append(event)
event_received.set()
if isinstance(event.data, SessionStartData):
start_events.append(event)
session_start_received.set()

try:
session = await client.create_session(
Expand All @@ -35,12 +36,11 @@ def on_event(event) -> None:
on_permission_request=PermissionHandler.approve_all,
)
try:
await asyncio.wait_for(event_received.wait(), timeout=5)
await asyncio.wait_for(session_start_received.wait(), timeout=5)
assert session.session_id == "scenario-session"
assert len(events) == 1
assert isinstance(events[0].data, SessionStartData)
assert events[0].data.session_id == "scenario-session"
assert events[0].data.producer == "scenario-fake-cli"
assert len(start_events) == 1
assert start_events[0].data.session_id == "scenario-session"
assert start_events[0].data.producer == "scenario-fake-cli"
finally:
await session.disconnect()
finally:
Expand Down
Loading