Skip to content

Commit 2e71ffe

Browse files
committed
feat: Add session history retriever test
1 parent 32d9d0a commit 2e71ffe

File tree

3 files changed

+55
-3
lines changed

3 files changed

+55
-3
lines changed

changes/4697.feature.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add session status history retrieval test validating history not empty and contains valid statuses
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
from typing import override
2+
3+
from ai.backend.test.contexts.client_session import ClientSessionContext
4+
from ai.backend.test.contexts.session import CreatedSessionMetaContext
5+
from ai.backend.test.templates.template import TestCode
6+
7+
8+
class SessionStatusHistoryRetriever(TestCode):
9+
@override
10+
async def test(self) -> None:
11+
session = ClientSessionContext.current()
12+
session_meta = CreatedSessionMetaContext.current()
13+
session_name = session_meta.name
14+
15+
expected_status = set([
16+
"SCHEDULED",
17+
"PREPARING",
18+
"PULLING",
19+
"PREPARED",
20+
"PENDING",
21+
"CREATING",
22+
"RUNNING",
23+
])
24+
25+
unexpected_status = set([
26+
"TERMINATING",
27+
"TERMINATED",
28+
"EXPIRED",
29+
])
30+
31+
result = await session.ComputeSession(name=session_name).get_status_history()
32+
assert result["result"] != "", "Status history should not be empty"
33+
for status_key, status_value in result["result"].items():
34+
assert status_key in expected_status, (
35+
f"Status {status_key} is not a valid session status"
36+
)
37+
assert status_key not in unexpected_status, (
38+
f"Status {status_key} should not be in the history"
39+
)

src/ai/backend/test/testcases/session/testspecs.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
InteractiveSessionFromTemplateTemplate,
1212
SessionTemplateTemplate,
1313
)
14+
from ai.backend.test.templates.template import BasicTestTemplate, NopTestCode
1415
from ai.backend.test.testcases.session.container_log_retriever import TestContainerLogRetriever
1516
from ai.backend.test.testcases.session.creation_failure_low_resources import (
1617
SessionCreationFailureLowResources,
@@ -26,11 +27,12 @@
2627
InteractiveSessionExecuteCodeSuccess,
2728
)
2829
from ai.backend.test.testcases.session.graph_dependency_retriever import DependencyGraphRetriever
30+
from ai.backend.test.testcases.session.session_status_history_retriever import (
31+
SessionStatusHistoryRetriever,
32+
)
2933
from ai.backend.test.testcases.spec_manager import TestSpec, TestTag
3034
from ai.backend.test.tester.dependency import ClusterDep, CodeExecutionDep
3135

32-
from ...templates.template import BasicTestTemplate, NopTestCode
33-
3436
BATCH_SESSION_TEST_SPECS = {
3537
"creation_batch_session_success": TestSpec(
3638
name="creation_batch_session_success",
@@ -296,6 +298,17 @@
296298
template=BasicTestTemplate(testcode=DependencyGraphRetriever()).with_wrappers(
297299
KeypairAuthTemplate, BatchSessionTemplate, DependentSessionTemplate
298300
),
301+
),
302+
"session_status_history": TestSpec(
303+
name="session_status_history",
304+
description=textwrap.dedent("""
305+
Tests retrieval of session status history
306+
Validate that the status history is not empty and contains valid statuses
307+
"""),
308+
tags={TestTag.SESSION, TestTag.MANAGER},
309+
template=BasicTestTemplate(
310+
testcode=SessionStatusHistoryRetriever(),
311+
).with_wrappers(KeypairAuthTemplate, InteractiveSessionTemplate),
299312
parametrizes={
300313
ContextName.CLUSTER_CONFIG: [
301314
ClusterDep(
@@ -315,7 +328,6 @@
315328
),
316329
}
317330

318-
319331
SESSION_TEST_SPECS = {
320332
**BATCH_SESSION_TEST_SPECS,
321333
**INTERACTIVE_SESSION_TEST_SPECS,

0 commit comments

Comments
 (0)