Skip to content

Commit 0b4b1b7

Browse files
seedspiritclaude
andcommitted
test(BA-6644): add session scope ids to remaining test fixtures
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 5e0f6a5 commit 0b4b1b7

9 files changed

Lines changed: 231 additions & 17 deletions

File tree

tests/unit/manager/models/resource_slot/conftest.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
import pytest
88

9+
from ai.backend.common.identifier.domain import DomainID
10+
from ai.backend.common.identifier.resource_group import ResourceGroupID
911
from ai.backend.common.types import BinarySize, ResourceSlot
1012
from ai.backend.manager.data.auth.hash import PasswordHashAlgorithm
1113
from ai.backend.manager.models.agent import AgentRow
@@ -67,24 +69,37 @@ async def database_with_resource_slot_tables(
6769
yield database_connection
6870

6971

72+
@pytest.fixture
73+
def domain_id() -> DomainID:
74+
return DomainID(uuid.uuid4())
75+
76+
77+
@pytest.fixture
78+
def scaling_group_id() -> ResourceGroupID:
79+
return ResourceGroupID(uuid.uuid4())
80+
81+
7082
@pytest.fixture
7183
async def domain_name(
7284
database_with_resource_slot_tables: ExtendedAsyncSAEngine,
85+
domain_id: DomainID,
7386
) -> AsyncGenerator[str, None]:
7487
name = "test-domain"
7588
async with database_with_resource_slot_tables.begin_session() as db_sess:
76-
db_sess.add(DomainRow(name=name))
89+
db_sess.add(DomainRow(id=domain_id, name=name))
7790
yield name
7891

7992

8093
@pytest.fixture
8194
async def scaling_group(
8295
database_with_resource_slot_tables: ExtendedAsyncSAEngine,
96+
scaling_group_id: ResourceGroupID,
8397
) -> AsyncGenerator[str, None]:
8498
name = "default"
8599
async with database_with_resource_slot_tables.begin_session() as db_sess:
86100
db_sess.add(
87101
ScalingGroupRow(
102+
id=scaling_group_id,
88103
name=name,
89104
description="Test scaling group",
90105
is_active=True,
@@ -208,9 +223,11 @@ async def agent_id(
208223
@pytest.fixture
209224
async def kernel_id(
210225
database_with_resource_slot_tables: ExtendedAsyncSAEngine,
226+
domain_id: DomainID,
211227
domain_name: str,
212228
project_id: uuid.UUID,
213229
user_uuid: uuid.UUID,
230+
scaling_group_id: ResourceGroupID,
214231
scaling_group: str,
215232
agent_id: str,
216233
) -> AsyncGenerator[uuid.UUID, None]:
@@ -220,8 +237,10 @@ async def kernel_id(
220237
db_sess.add(
221238
SessionRow(
222239
id=sid,
240+
domain_id=domain_id,
223241
domain_name=domain_name,
224242
group_id=project_id,
243+
resource_group_id=scaling_group_id,
225244
scaling_group_name=scaling_group,
226245
user_uuid=user_uuid,
227246
occupying_slots=ResourceSlot({"cpu": Decimal("1"), "mem": Decimal("1073741824")}),

tests/unit/manager/repositories/domain/test_domain_purgers.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import pytest
1313
import sqlalchemy as sa
1414

15+
from ai.backend.common.identifier.resource_group import ResourceGroupID
1516
from ai.backend.common.types import ResourceSlot, VFolderHostPermissionMap
1617
from ai.backend.manager.data.auth.hash import PasswordHashAlgorithm
1718
from ai.backend.manager.data.kernel.types import KernelStatus
@@ -182,9 +183,11 @@ async def sample_sessions(
182183
"""Create test sessions belonging to the domain."""
183184
sessions: list[SessionRow] = []
184185
sgroup_name = f"default-{uuid.uuid4().hex[:8]}"
186+
sgroup_id = ResourceGroupID(uuid.uuid4())
185187
async with db_with_cleanup.begin_session() as session:
186188
sgroup = ScalingGroupRow(
187189
name=sgroup_name,
190+
id=sgroup_id,
188191
description="Test scaling group",
189192
is_active=True,
190193
driver="static",
@@ -201,8 +204,10 @@ async def sample_sessions(
201204
cluster_mode="single-node",
202205
cluster_size=1,
203206
domain_name=sample_domain.domain_name,
207+
domain_id=sample_domain.domain_id,
204208
group_id=sample_group.id,
205209
scaling_group_name=sgroup_name,
210+
resource_group_id=sgroup_id,
206211
user_uuid=sample_user.uuid,
207212
occupying_slots=ResourceSlot({}),
208213
requested_slots=ResourceSlot({}),

tests/unit/manager/repositories/domain/test_domain_repository.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
import sqlalchemy as sa
1313

1414
from ai.backend.common.exception import DomainNotFound, InvalidAPIParameters
15-
from ai.backend.common.identifier.domain import DomainName
15+
from ai.backend.common.identifier.domain import DomainID, DomainName
16+
from ai.backend.common.identifier.resource_group import ResourceGroupID
1617
from ai.backend.common.types import (
1718
DefaultForUnspecified,
1819
ResourceSlot,
@@ -333,13 +334,16 @@ async def domain_with_active_kernel(
333334
) -> str:
334335
"""Create an inactive domain with an active kernel for purge testing."""
335336
domain_name = f"domain-with-kernel-{uuid.uuid4().hex[:8]}"
337+
domain_id = DomainID(uuid.uuid4())
336338
user_uuid = uuid.uuid4()
337339
group_id = uuid.uuid4()
338340
session_id = uuid.uuid4()
339341
sgroup_name = f"default-{uuid.uuid4().hex[:8]}"
342+
sgroup_id = ResourceGroupID(uuid.uuid4())
340343

341344
async with db_with_default_resource_policies.begin_session() as session:
342345
domain = DomainRow(
346+
id=domain_id,
343347
name=domain_name,
344348
description="Test domain with active kernels",
345349
is_active=False,
@@ -352,6 +356,7 @@ async def domain_with_active_kernel(
352356
session.add(domain)
353357

354358
sgroup = ScalingGroupRow(
359+
id=sgroup_id,
355360
name=sgroup_name,
356361
description="Test scaling group",
357362
is_active=True,
@@ -403,8 +408,10 @@ async def domain_with_active_kernel(
403408
creation_id=str(uuid.uuid4()).replace("-", ""),
404409
cluster_size=1,
405410
domain_name=domain_name,
411+
domain_id=domain_id,
406412
group_id=group_id,
407413
scaling_group_name=sgroup_name,
414+
resource_group_id=sgroup_id,
408415
user_uuid=user_uuid,
409416
occupying_slots=ResourceSlot(),
410417
requested_slots=ResourceSlot(),

tests/unit/manager/repositories/group/test_group_db_source.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import sqlalchemy as sa
1111

1212
from ai.backend.common.identifier.deployment import DeploymentID
13+
from ai.backend.common.identifier.domain import DomainID
14+
from ai.backend.common.identifier.resource_group import ResourceGroupID
1315
from ai.backend.common.types import ResourceSlot, VFolderHostPermissionMap
1416
from ai.backend.manager.data.auth.hash import PasswordHashAlgorithm
1517
from ai.backend.manager.data.group.types import ProjectType
@@ -111,16 +113,22 @@ async def db_with_cleanup(
111113
):
112114
yield database_connection
113115

116+
@pytest.fixture
117+
def test_domain_id(self) -> DomainID:
118+
return DomainID(uuid.uuid4())
119+
114120
@pytest.fixture
115121
async def test_domain(
116122
self,
117123
db_with_cleanup: ExtendedAsyncSAEngine,
124+
test_domain_id: DomainID,
118125
) -> str:
119126
"""Create test domain"""
120127
domain_name = f"test-domain-{uuid.uuid4().hex[:8]}"
121128

122129
async with db_with_cleanup.begin_session() as session:
123130
domain = DomainRow(
131+
id=test_domain_id,
124132
name=domain_name,
125133
description="Test domain",
126134
is_active=True,
@@ -290,17 +298,20 @@ async def inactive_endpoint_with_session_and_routing(
290298
self,
291299
db_with_cleanup: ExtendedAsyncSAEngine,
292300
test_domain: str,
301+
test_domain_id: DomainID,
293302
test_user: uuid.UUID,
294303
test_group: uuid.UUID,
295304
) -> EndpointWithSessionFixtureData:
296305
"""Create one inactive endpoint with a session and routing entry"""
297306
endpoint_id = DeploymentID(uuid.uuid4())
298307
session_id = uuid.uuid4()
308+
sgroup_id = ResourceGroupID(uuid.uuid4())
299309
sgroup_name = f"default-{uuid.uuid4().hex[:8]}"
300310

301311
async with db_with_cleanup.begin_session() as session:
302312
# Create scaling group
303313
sgroup = ScalingGroupRow(
314+
id=sgroup_id,
304315
name=sgroup_name,
305316
description="Test scaling group",
306317
is_active=True,
@@ -332,8 +343,10 @@ async def inactive_endpoint_with_session_and_routing(
332343
id=session_id,
333344
creation_id=f"test-session-{uuid.uuid4().hex[:8]}",
334345
domain_name=test_domain,
346+
domain_id=test_domain_id,
335347
group_id=test_group,
336348
scaling_group_name=sgroup_name,
349+
resource_group_id=sgroup_id,
337350
user_uuid=test_user,
338351
access_key="test-access-key",
339352
cluster_mode="single-node",
@@ -413,17 +426,20 @@ async def multiple_endpoints_with_sessions(
413426
self,
414427
db_with_cleanup: ExtendedAsyncSAEngine,
415428
test_domain: str,
429+
test_domain_id: DomainID,
416430
test_user: uuid.UUID,
417431
test_group: uuid.UUID,
418432
) -> MultipleEndpointsWithSessionsFixtureData:
419433
"""Create 3 inactive endpoints, each with a session and routing entry"""
420434
endpoint_ids = []
421435
session_ids = []
436+
sgroup_id = ResourceGroupID(uuid.uuid4())
422437
sgroup_name = f"default-{uuid.uuid4().hex[:8]}"
423438

424439
async with db_with_cleanup.begin_session() as session:
425440
# Create scaling group
426441
sgroup = ScalingGroupRow(
442+
id=sgroup_id,
427443
name=sgroup_name,
428444
description="Test scaling group",
429445
is_active=True,
@@ -459,8 +475,10 @@ async def multiple_endpoints_with_sessions(
459475
id=session_id,
460476
creation_id=f"test-session-{i}-{uuid.uuid4().hex[:8]}",
461477
domain_name=test_domain,
478+
domain_id=test_domain_id,
462479
group_id=test_group,
463480
scaling_group_name=sgroup_name,
481+
resource_group_id=sgroup_id,
464482
user_uuid=test_user,
465483
access_key=f"test-access-key-{i}",
466484
cluster_mode="single-node",

tests/unit/manager/repositories/group/test_group_purgers.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import pytest
1313
import sqlalchemy as sa
1414

15+
from ai.backend.common.identifier.resource_group import ResourceGroupID
1516
from ai.backend.common.types import ResourceSlot
1617
from ai.backend.manager.data.auth.hash import PasswordHashAlgorithm
1718
from ai.backend.manager.data.kernel.types import KernelStatus
@@ -185,12 +186,21 @@ async def sample_group(
185186
return group
186187

187188
@pytest.fixture
188-
async def sample_scaling_group(self, db_with_cleanup: ExtendedAsyncSAEngine) -> str:
189+
def sample_scaling_group_id(self) -> ResourceGroupID:
190+
return ResourceGroupID(uuid.uuid4())
191+
192+
@pytest.fixture
193+
async def sample_scaling_group(
194+
self,
195+
db_with_cleanup: ExtendedAsyncSAEngine,
196+
sample_scaling_group_id: ResourceGroupID,
197+
) -> str:
189198
"""Create a test scaling group."""
190199
sgroup_name = f"test-sgroup-{uuid.uuid4().hex[:8]}"
191200
async with db_with_cleanup.begin_session() as session:
192201
sgroup = ScalingGroupRow(
193202
name=sgroup_name,
203+
id=sample_scaling_group_id,
194204
driver="static",
195205
driver_opts={},
196206
scheduler="fifo",
@@ -207,6 +217,7 @@ async def sample_sessions(
207217
sample_domain: DomainFixtureData,
208218
sample_user: UserRow,
209219
sample_scaling_group: str,
220+
sample_scaling_group_id: ResourceGroupID,
210221
) -> list[SessionRow]:
211222
"""Create test sessions belonging to the group."""
212223
sessions: list[SessionRow] = []
@@ -218,8 +229,10 @@ async def sample_sessions(
218229
cluster_mode="single-node",
219230
cluster_size=1,
220231
domain_name=sample_domain.domain_name,
232+
domain_id=sample_domain.domain_id,
221233
group_id=sample_group.id,
222234
scaling_group_name=sample_scaling_group,
235+
resource_group_id=sample_scaling_group_id,
223236
user_uuid=sample_user.uuid,
224237
occupying_slots=ResourceSlot({}),
225238
requested_slots=ResourceSlot({}),
@@ -310,6 +323,7 @@ async def sample_endpoint_sessions_with_routings(
310323
sample_group: GroupRow,
311324
sample_user: UserRow,
312325
sample_scaling_group: str,
326+
sample_scaling_group_id: ResourceGroupID,
313327
) -> tuple[list[SessionRow], list[RoutingRow]]:
314328
"""Create test sessions connected to endpoints via routings."""
315329
sessions: list[SessionRow] = []
@@ -323,8 +337,10 @@ async def sample_endpoint_sessions_with_routings(
323337
cluster_mode="single-node",
324338
cluster_size=1,
325339
domain_name=sample_domain.domain_name,
340+
domain_id=sample_domain.domain_id,
326341
group_id=sample_group.id,
327342
scaling_group_name=sample_scaling_group,
343+
resource_group_id=sample_scaling_group_id,
328344
user_uuid=sample_user.uuid,
329345
occupying_slots=ResourceSlot({}),
330346
requested_slots=ResourceSlot({}),

0 commit comments

Comments
 (0)