@@ -536,6 +536,35 @@ async def test_assigns_job_to_shared_instance(self, test_db, session: AsyncSessi
536
536
assert instance .total_blocks == 4
537
537
assert instance .busy_blocks == 2
538
538
539
+ @pytest .mark .asyncio
540
+ @pytest .mark .parametrize ("test_db" , ["sqlite" , "postgres" ], indirect = True )
541
+ async def test_assigns_job_to_specific_fleet (self , test_db , session : AsyncSession ):
542
+ project = await create_project (session )
543
+ user = await create_user (session )
544
+ repo = await create_repo (session = session , project_id = project .id )
545
+ fleet_a = await create_fleet (session = session , project = project , name = "a" )
546
+ await create_instance (session = session , project = project , fleet = fleet_a , price = 1.0 )
547
+ fleet_b = await create_fleet (session = session , project = project , name = "b" )
548
+ await create_instance (session = session , project = project , fleet = fleet_b , price = 2.0 )
549
+ fleet_c = await create_fleet (session = session , project = project , name = "c" )
550
+ await create_instance (session = session , project = project , fleet = fleet_c , price = 3.0 )
551
+ run_spec = get_run_spec (run_name = "test-run" , repo_id = repo .name )
552
+ # When more than one fleet is requested, the cheapest one is selected
553
+ run_spec .configuration .fleets = ["c" , "b" ]
554
+ run = await create_run (
555
+ session = session , project = project , repo = repo , user = user , run_spec = run_spec
556
+ )
557
+ job = await create_job (session = session , run = run )
558
+
559
+ await process_submitted_jobs ()
560
+
561
+ await session .refresh (job )
562
+ res = await session .execute (select (JobModel ).options (joinedload (JobModel .instance )))
563
+ job = res .unique ().scalar_one ()
564
+ assert job .status == JobStatus .SUBMITTED
565
+ assert job .instance is not None
566
+ assert job .instance .fleet == fleet_b
567
+
539
568
@pytest .mark .asyncio
540
569
@pytest .mark .parametrize ("test_db" , ["sqlite" , "postgres" ], indirect = True )
541
570
async def test_creates_new_instance_in_existing_fleet (self , test_db , session : AsyncSession ):
0 commit comments