@@ -2391,77 +2391,81 @@ func TestGetProvisionerJobsByIDsWithQueuePosition(t *testing.T) {
23912391}
23922392
23932393for _ ,tc := range testCases {
2394- db ,_ := dbtestutil .NewDB (t )
2394+ tc := tc // Capture loop variable to avoid data races
2395+ t .Run (tc .name ,func (t * testing.T ) {
2396+ t .Parallel ()
2397+ db ,_ := dbtestutil .NewDB (t )
2398+
2399+ // Create provisioner jobs based on provided tags:
2400+ allJobs := make ([]database.ProvisionerJob ,len (tc .jobTags ))
2401+ for idx ,tags := range tc .jobTags {
2402+ // Make sure jobs are stored in correct order, first job should have the earliest createdAt timestamp.
2403+ // Example for 3 jobs:
2404+ // job_1 createdAt: now - 3 minutes
2405+ // job_2 createdAt: now - 2 minutes
2406+ // job_3 createdAt: now - 1 minute
2407+ timeOffsetInMinutes := len (tc .jobTags )- idx
2408+ timeOffset := time .Duration (timeOffsetInMinutes )* time .Minute
2409+ createdAt := now .Add (- timeOffset )
2410+
2411+ allJobs [idx ]= dbgen .ProvisionerJob (t ,db ,nil , database.ProvisionerJob {
2412+ CreatedAt :createdAt ,
2413+ Tags :tags ,
2414+ })
2415+ }
23952416
2396- // Create provisioner jobs based on provided tags:
2397- allJobs := make ([]database.ProvisionerJob ,len (tc .jobTags ))
2398- for idx ,tags := range tc .jobTags {
2399- // Make sure jobs are stored in correct order, first job should have the earliest createdAt timestamp.
2400- // Example for 3 jobs:
2401- // job_1 createdAt: now - 3 minutes
2402- // job_2 createdAt: now - 2 minutes
2403- // job_3 createdAt: now - 1 minute
2404- timeOffsetInMinutes := len (tc .jobTags )- idx
2405- timeOffset := time .Duration (timeOffsetInMinutes )* time .Minute
2406- createdAt := now .Add (- timeOffset )
2407-
2408- allJobs [idx ]= dbgen .ProvisionerJob (t ,db ,nil , database.ProvisionerJob {
2409- CreatedAt :createdAt ,
2410- Tags :tags ,
2411- })
2412- }
2417+ // Create provisioner daemons based on provided tags:
2418+ for idx ,tags := range tc .daemonTags {
2419+ dbgen .ProvisionerDaemon (t ,db , database.ProvisionerDaemon {
2420+ Name :fmt .Sprintf ("prov_%v" ,idx ),
2421+ Provisioners : []database.ProvisionerType {database .ProvisionerTypeEcho },
2422+ Tags :tags ,
2423+ })
2424+ }
24132425
2414- // Create provisioner daemons based on provided tags:
2415- for idx ,tags := range tc .daemonTags {
2416- dbgen .ProvisionerDaemon (t ,db , database.ProvisionerDaemon {
2417- Name :fmt .Sprintf ("prov_%v" ,idx ),
2418- Provisioners : []database.ProvisionerType {database .ProvisionerTypeEcho },
2419- Tags :tags ,
2420- })
2421- }
2426+ // Assert invariant: the jobs are in pending status
2427+ for idx ,job := range allJobs {
2428+ require .Equal (t ,database .ProvisionerJobStatusPending ,job .JobStatus ,"expected job %d to have status %s" ,idx ,database .ProvisionerJobStatusPending )
2429+ }
24222430
2423- // Assert invariant: the jobs are in pending status
2424- for idx ,job := range allJobs {
2425- require .Equal (t ,database .ProvisionerJobStatusPending ,job .JobStatus ,"expected job %d to have status %s" ,idx ,database .ProvisionerJobStatusPending )
2426- }
2431+ filteredJobs := make ([]database.ProvisionerJob ,0 )
2432+ filteredJobIDs := make ([]uuid.UUID ,0 )
2433+ for idx ,job := range allJobs {
2434+ if _ ,skip := tc .skipJobIDs [idx ];skip {
2435+ continue
2436+ }
24272437
2428- filteredJobs := make ([]database.ProvisionerJob ,0 )
2429- filteredJobIDs := make ([]uuid.UUID ,0 )
2430- for idx ,job := range allJobs {
2431- if _ ,skip := tc .skipJobIDs [idx ];skip {
2432- continue
2438+ filteredJobs = append (filteredJobs ,job )
2439+ filteredJobIDs = append (filteredJobIDs ,job .ID )
24332440}
24342441
2435- filteredJobs = append (filteredJobs ,job )
2436- filteredJobIDs = append (filteredJobIDs ,job .ID )
2437- }
2438-
2439- // When: we fetch the jobs by their IDs
2440- actualJobs ,err := db .GetProvisionerJobsByIDsWithQueuePosition (ctx ,filteredJobIDs )
2441- require .NoError (t ,err )
2442- require .Len (t ,actualJobs ,len (filteredJobs ),"should return all unskipped jobs" )
2442+ // When: we fetch the jobs by their IDs
2443+ actualJobs ,err := db .GetProvisionerJobsByIDsWithQueuePosition (ctx ,filteredJobIDs )
2444+ require .NoError (t ,err )
2445+ require .Len (t ,actualJobs ,len (filteredJobs ),"should return all unskipped jobs" )
24432446
2444- // Then: the jobs should be returned in the correct order (sorted by createdAt)
2445- sort .Slice (filteredJobs ,func (i ,j int )bool {
2446- return filteredJobs [i ].CreatedAt .Before (filteredJobs [j ].CreatedAt )
2447- })
2448- for idx ,job := range actualJobs {
2449- assert .EqualValues (t ,filteredJobs [idx ],job .ProvisionerJob )
2450- }
2447+ // Then: the jobs should be returned in the correct order (sorted by createdAt)
2448+ sort .Slice (filteredJobs ,func (i ,j int )bool {
2449+ return filteredJobs [i ].CreatedAt .Before (filteredJobs [j ].CreatedAt )
2450+ })
2451+ for idx ,job := range actualJobs {
2452+ assert .EqualValues (t ,filteredJobs [idx ],job .ProvisionerJob )
2453+ }
24512454
2452- // Then: the queue size should be set correctly
2453- var queueSizes []int64
2454- for _ ,job := range actualJobs {
2455- queueSizes = append (queueSizes ,job .QueueSize )
2456- }
2457- assert .EqualValues (t ,tc .queueSizes ,queueSizes ,"expected queue positions to be set correctly" )
2455+ // Then: the queue size should be set correctly
2456+ var queueSizes []int64
2457+ for _ ,job := range actualJobs {
2458+ queueSizes = append (queueSizes ,job .QueueSize )
2459+ }
2460+ assert .EqualValues (t ,tc .queueSizes ,queueSizes ,"expected queue positions to be set correctly" )
24582461
2459- // Then: the queue position should be set correctly:
2460- var queuePositions []int64
2461- for _ ,job := range actualJobs {
2462- queuePositions = append (queuePositions ,job .QueuePosition )
2463- }
2464- assert .EqualValues (t ,tc .queuePositions ,queuePositions ,"expected queue positions to be set correctly" )
2462+ // Then: the queue position should be set correctly:
2463+ var queuePositions []int64
2464+ for _ ,job := range actualJobs {
2465+ queuePositions = append (queuePositions ,job .QueuePosition )
2466+ }
2467+ assert .EqualValues (t ,tc .queuePositions ,queuePositions ,"expected queue positions to be set correctly" )
2468+ })
24652469}
24662470}
24672471