Skip to content

Commit a9ed7d2

Browse files
test(coderd/database): wrap test cases in subtests
1 parent e7693ee commit a9ed7d2

File tree

1 file changed

+66
-62
lines changed

1 file changed

+66
-62
lines changed

coderd/database/querier_test.go

Lines changed: 66 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -2391,77 +2391,81 @@ func TestGetProvisionerJobsByIDsWithQueuePosition(t *testing.T) {
23912391
}
23922392

23932393
for _, 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

0 commit comments

Comments
 (0)