Skip to content

Commit 65e2d57

Browse files
committed
Fix tests
1 parent 80c87a8 commit 65e2d57

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,7 @@ async def create_job(
302302
job_num: int = 0,
303303
replica_num: int = 0,
304304
instance_assigned: bool = False,
305+
disconnected_at: Optional[datetime] = None,
305306
) -> JobModel:
306307
run_spec = RunSpec.parse_raw(run.run_spec)
307308
job_spec = (await get_job_specs_from_run_spec(run_spec, replica_num=replica_num))[0]
@@ -323,6 +324,7 @@ async def create_job(
323324
instance=instance,
324325
instance_assigned=instance_assigned,
325326
used_instance_id=instance.id if instance is not None else None,
327+
disconnected_at=disconnected_at,
326328
)
327329
session.add(job)
328330
await session.commit()

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from datetime import datetime, timezone
1+
from datetime import datetime, timedelta, timezone
22
from pathlib import Path
33
from typing import Optional
44
from unittest.mock import MagicMock, Mock, patch
@@ -490,6 +490,17 @@ async def test_pulling_shim_failed(self, test_db, session: AsyncSession):
490490
assert SSHTunnelMock.call_count == 3
491491
await session.refresh(job)
492492
assert job is not None
493+
assert job.disconnected_at is not None
494+
assert job.status == JobStatus.PULLING
495+
with (
496+
patch("dstack._internal.server.services.runner.ssh.SSHTunnel") as SSHTunnelMock,
497+
patch("dstack._internal.server.services.runner.ssh.time.sleep"),
498+
freeze_time(job.disconnected_at + timedelta(minutes=5)),
499+
):
500+
SSHTunnelMock.side_effect = SSHError
501+
await process_running_jobs()
502+
assert SSHTunnelMock.call_count == 3
503+
await session.refresh(job)
493504
assert job.status == JobStatus.TERMINATING
494505
assert job.termination_reason == JobTerminationReason.INTERRUPTED_BY_NO_CAPACITY
495506
assert job.remove_at is None

0 commit comments

Comments
 (0)