Skip to content

Commit 5ddc48e

Browse files
committed
Test job_submissions_limit
1 parent 2d47ad7 commit 5ddc48e

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed

src/tests/_internal/server/routers/test_runs.py

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,108 @@ async def test_lists_runs_pagination(
707707
assert len(response2_json) == 1
708708
assert response2_json[0]["id"] == str(run2.id)
709709

710+
@pytest.mark.asyncio
711+
@pytest.mark.parametrize("test_db", ["sqlite", "postgres"], indirect=True)
712+
async def test_limits_job_submissions(
713+
self, test_db, session: AsyncSession, client: AsyncClient
714+
):
715+
user = await create_user(session=session, global_role=GlobalRole.USER)
716+
project = await create_project(session=session, owner=user)
717+
await add_project_member(
718+
session=session, project=project, user=user, project_role=ProjectRole.USER
719+
)
720+
repo = await create_repo(
721+
session=session,
722+
project_id=project.id,
723+
)
724+
run_submitted_at = datetime(2023, 1, 2, 3, 4, tzinfo=timezone.utc)
725+
run = await create_run(
726+
session=session,
727+
project=project,
728+
repo=repo,
729+
user=user,
730+
submitted_at=run_submitted_at,
731+
)
732+
run_spec = RunSpec.parse_raw(run.run_spec)
733+
await create_job(
734+
session=session,
735+
run=run,
736+
submitted_at=run_submitted_at,
737+
last_processed_at=run_submitted_at,
738+
)
739+
job2 = await create_job(
740+
session=session,
741+
run=run,
742+
submitted_at=run_submitted_at,
743+
last_processed_at=run_submitted_at,
744+
)
745+
job2_spec = JobSpec.parse_raw(job2.job_spec_data)
746+
response = await client.post(
747+
"/api/runs/list",
748+
headers=get_auth_headers(user.token),
749+
json={"job_submissions_limit": 1},
750+
)
751+
assert response.status_code == 200, response.json()
752+
assert response.json() == [
753+
{
754+
"id": str(run.id),
755+
"project_name": project.name,
756+
"user": user.name,
757+
"submitted_at": run_submitted_at.isoformat(),
758+
"last_processed_at": run_submitted_at.isoformat(),
759+
"status": "submitted",
760+
"status_message": "submitted",
761+
"run_spec": run_spec.dict(),
762+
"jobs": [
763+
{
764+
"job_spec": job2_spec.dict(),
765+
"job_submissions": [
766+
{
767+
"id": str(job2.id),
768+
"submission_num": 0,
769+
"deployment_num": 0,
770+
"submitted_at": run_submitted_at.isoformat(),
771+
"last_processed_at": run_submitted_at.isoformat(),
772+
"finished_at": None,
773+
"inactivity_secs": None,
774+
"status": "submitted",
775+
"status_message": "submitted",
776+
"termination_reason": None,
777+
"termination_reason_message": None,
778+
"error": None,
779+
"exit_status": None,
780+
"job_provisioning_data": None,
781+
"job_runtime_data": None,
782+
}
783+
],
784+
}
785+
],
786+
"latest_job_submission": {
787+
"id": str(job2.id),
788+
"submission_num": 0,
789+
"deployment_num": 0,
790+
"submitted_at": run_submitted_at.isoformat(),
791+
"last_processed_at": run_submitted_at.isoformat(),
792+
"finished_at": None,
793+
"inactivity_secs": None,
794+
"status": "submitted",
795+
"status_message": "submitted",
796+
"termination_reason_message": None,
797+
"termination_reason": None,
798+
"error": None,
799+
"exit_status": None,
800+
"job_provisioning_data": None,
801+
"job_runtime_data": None,
802+
},
803+
"cost": 0,
804+
"service": None,
805+
"deployment_num": 0,
806+
"termination_reason": None,
807+
"error": None,
808+
"deleted": False,
809+
},
810+
]
811+
710812

711813
class TestGetRun:
712814
@pytest.mark.asyncio

0 commit comments

Comments
 (0)