Skip to content

Commit 2cfcd00

Browse files
committed
feat: Add session status history retriever test
1 parent cf06ddf commit 2cfcd00

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
@@ -10,6 +10,7 @@
1010
InteractiveSessionFromTemplateTemplate,
1111
SessionTemplateTemplate,
1212
)
13+
from ai.backend.test.templates.template import BasicTestTemplate, NopTestCode
1314
from ai.backend.test.testcases.session.container_log_retriever import TestContainerLogRetriever
1415
from ai.backend.test.testcases.session.creation_failure_low_resources import (
1516
SessionCreationFailureLowResources,
@@ -24,11 +25,12 @@
2425
InteractiveSessionExecuteCodeFailureWrongCommand,
2526
InteractiveSessionExecuteCodeSuccess,
2627
)
28+
from ai.backend.test.testcases.session.session_status_history_retriever import (
29+
SessionStatusHistoryRetriever,
30+
)
2731
from ai.backend.test.testcases.spec_manager import TestSpec, TestTag
2832
from ai.backend.test.tester.dependency import ClusterDep, CodeExecutionDep
2933

30-
from ...templates.template import BasicTestTemplate, NopTestCode
31-
3234
BATCH_SESSION_TEST_SPECS = {
3335
"creation_batch_session_success": TestSpec(
3436
name="creation_batch_session_success",
@@ -283,6 +285,17 @@
283285
template=BasicTestTemplate(testcode=TestContainerLogRetriever()).with_wrappers(
284286
KeypairAuthTemplate, InteractiveSessionTemplate
285287
),
288+
),
289+
"session_status_history": TestSpec(
290+
name="session_status_history",
291+
description=textwrap.dedent("""
292+
Tests retrieval of session status history
293+
Validate that the status history is not empty and contains valid statuses
294+
"""),
295+
tags={TestTag.SESSION, TestTag.MANAGER},
296+
template=BasicTestTemplate(
297+
testcode=SessionStatusHistoryRetriever(),
298+
).with_wrappers(KeypairAuthTemplate, InteractiveSessionTemplate),
286299
parametrizes={
287300
ContextName.CLUSTER_CONFIG: [
288301
ClusterDep(
@@ -302,7 +315,6 @@
302315
),
303316
}
304317

305-
306318
SESSION_TEST_SPECS = {
307319
**BATCH_SESSION_TEST_SPECS,
308320
**INTERACTIVE_SESSION_TEST_SPECS,

0 commit comments

Comments
 (0)