Skip to content

Commit be78864

Browse files
authored
[chore]: Add list_events utility for unit tests (#3493)
1 parent bd2d485 commit be78864

File tree

3 files changed

+14
-13
lines changed

3 files changed

+14
-13
lines changed

src/dstack/_internal/server/testing/common.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from uuid import UUID
88

99
import gpuhunt
10+
from sqlalchemy import select
1011
from sqlalchemy.ext.asyncio import AsyncSession
1112

1213
from dstack._internal.core.backends.base.compute import (
@@ -90,6 +91,7 @@
9091
BackendModel,
9192
ComputeGroupModel,
9293
DecryptedString,
94+
EventModel,
9395
FileArchiveModel,
9496
FleetModel,
9597
GatewayComputeModel,
@@ -1111,6 +1113,11 @@ async def create_secret(
11111113
return secret_model
11121114

11131115

1116+
async def list_events(session: AsyncSession) -> list[EventModel]:
1117+
res = await session.execute(select(EventModel).order_by(EventModel.recorded_at, EventModel.id))
1118+
return list(res.scalars().all())
1119+
1120+
11141121
def get_private_key_string() -> str:
11151122
return """
11161123
-----BEGIN RSA PRIVATE KEY-----

src/tests/_internal/server/background/tasks/test_process_events.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@
33

44
import pytest
55
from freezegun import freeze_time
6-
from sqlalchemy import select
76
from sqlalchemy.ext.asyncio import AsyncSession
87

98
from dstack._internal.server import settings
109
from dstack._internal.server.background.tasks.process_events import delete_events
11-
from dstack._internal.server.models import EventModel
1210
from dstack._internal.server.services import events
13-
from dstack._internal.server.testing.common import create_user
11+
from dstack._internal.server.testing.common import create_user, list_events
1412

1513

1614
@pytest.mark.asyncio
@@ -27,8 +25,7 @@ async def test_deletes_old_events(test_db, session: AsyncSession) -> None:
2725
)
2826
await session.commit()
2927

30-
res = await session.execute(select(EventModel))
31-
all_events = res.scalars().all()
28+
all_events = await list_events(session)
3229
assert len(all_events) == 10
3330

3431
with (
@@ -37,8 +34,7 @@ async def test_deletes_old_events(test_db, session: AsyncSession) -> None:
3734
):
3835
await delete_events()
3936

40-
res = await session.execute(select(EventModel).order_by(EventModel.recorded_at))
41-
remaining_events = res.scalars().all()
37+
remaining_events = await list_events(session)
4238
assert len(remaining_events) == 5
4339
assert [e.message for e in remaining_events] == [
4440
"Event 5",

src/tests/_internal/server/services/test_instances.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import uuid
22

33
import pytest
4-
from sqlalchemy import select
54
from sqlalchemy.ext.asyncio import AsyncSession
65

76
import dstack._internal.server.services.instances as instances_services
@@ -15,13 +14,14 @@
1514
Resources,
1615
)
1716
from dstack._internal.core.models.profiles import Profile
18-
from dstack._internal.server.models import EventModel, InstanceModel
17+
from dstack._internal.server.models import InstanceModel
1918
from dstack._internal.server.testing.common import (
2019
create_instance,
2120
create_project,
2221
create_user,
2322
get_volume,
2423
get_volume_configuration,
24+
list_events,
2525
)
2626
from dstack._internal.utils.common import get_current_datetime
2727

@@ -41,8 +41,7 @@ async def test_includes_termination_reason_in_event_messages_only_once(
4141
instances_services.switch_instance_status(session, instance, InstanceStatus.TERMINATING)
4242
instances_services.switch_instance_status(session, instance, InstanceStatus.TERMINATED)
4343

44-
res = await session.execute(select(EventModel))
45-
events = res.scalars().all()
44+
events = await list_events(session)
4645
assert len(events) == 2
4746
assert {e.message for e in events} == {
4847
"Instance status changed PENDING -> TERMINATING. Termination reason: ERROR (Some err)",
@@ -63,8 +62,7 @@ async def test_includes_termination_reason_in_event_message_when_switching_direc
6362
instance.termination_reason_message = "Some err"
6463
instances_services.switch_instance_status(session, instance, InstanceStatus.TERMINATED)
6564

66-
res = await session.execute(select(EventModel))
67-
events = res.scalars().all()
65+
events = await list_events(session)
6866
assert len(events) == 1
6967
assert events[0].message == (
7068
"Instance status changed PENDING -> TERMINATED. Termination reason: ERROR (Some err)"

0 commit comments

Comments
 (0)