MCPcopy Index your code
hub / github.com/coder/coder / TestAcquireProvisionerJob

Function TestAcquireProvisionerJob

coderd/database/querier_test.go:2089–2229  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

2087}
2088
2089func TestAcquireProvisionerJob(t *testing.T) {
2090 t.Parallel()
2091
2092 t.Run("HumanInitiatedJobsFirst", func(t *testing.T) {
2093 t.Parallel()
2094 var (
2095 db, _ = dbtestutil.NewDB(t)
2096 ctx = testutil.Context(t, testutil.WaitMedium)
2097 org = dbgen.Organization(t, db, database.Organization{})
2098 _ = dbgen.ProvisionerDaemon(t, db, database.ProvisionerDaemon{}) // Required for queue position
2099 now = dbtime.Now()
2100 numJobs = 10
2101 humanIDs = make([]uuid.UUID, 0, numJobs/2)
2102 prebuildIDs = make([]uuid.UUID, 0, numJobs/2)
2103 )
2104
2105 // Given: a number of jobs in the queue, with prebuilds and non-prebuilds interleaved
2106 for idx := range numJobs {
2107 var initiator uuid.UUID
2108 if idx%2 == 0 {
2109 initiator = database.PrebuildsSystemUserID
2110 } else {
2111 initiator = uuid.MustParse("c0dec0de-c0de-c0de-c0de-c0dec0dec0de")
2112 }
2113 pj, err := db.InsertProvisionerJob(ctx, database.InsertProvisionerJobParams{
2114 ID: uuid.MustParse(fmt.Sprintf("00000000-0000-0000-0000-00000000000%x", idx+1)),
2115 CreatedAt: time.Now().Add(-time.Second * time.Duration(idx)),
2116 UpdatedAt: time.Now().Add(-time.Second * time.Duration(idx)),
2117 InitiatorID: initiator,
2118 OrganizationID: org.ID,
2119 Provisioner: database.ProvisionerTypeEcho,
2120 Type: database.ProvisionerJobTypeWorkspaceBuild,
2121 StorageMethod: database.ProvisionerStorageMethodFile,
2122 FileID: uuid.New(),
2123 Input: json.RawMessage(`{}`),
2124 Tags: database.StringMap{},
2125 TraceMetadata: pqtype.NullRawMessage{},
2126 })
2127 require.NoError(t, err)
2128 // We expected prebuilds to be acquired after human-initiated jobs.
2129 if initiator == database.PrebuildsSystemUserID {
2130 prebuildIDs = append([]uuid.UUID{pj.ID}, prebuildIDs...)
2131 } else {
2132 humanIDs = append([]uuid.UUID{pj.ID}, humanIDs...)
2133 }
2134 t.Logf("created job id=%q initiator=%q created_at=%q", pj.ID.String(), pj.InitiatorID.String(), pj.CreatedAt.String())
2135 }
2136
2137 expectedIDs := append(humanIDs, prebuildIDs...) //nolint:gocritic // not the same slice
2138
2139 // When: we query the queue positions for the jobs
2140 qjs, err := db.GetProvisionerJobsByIDsWithQueuePosition(ctx, database.GetProvisionerJobsByIDsWithQueuePositionParams{
2141 IDs: expectedIDs,
2142 StaleIntervalMS: provisionerdserver.StaleInterval.Milliseconds(),
2143 })
2144 require.NoError(t, err)
2145 require.Len(t, qjs, numJobs)
2146 // Ensure the jobs are sorted by queue position.

Callers

nothing calls this directly

Calls 15

NewDBFunction · 0.92
ContextFunction · 0.92
OrganizationFunction · 0.92
ProvisionerDaemonFunction · 0.92
NowFunction · 0.92
DurationMethod · 0.80
RunMethod · 0.65
InsertProvisionerJobMethod · 0.65
AddMethod · 0.65
NewMethod · 0.65
LogfMethod · 0.65

Tested by

no test coverage detected