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

Function TestQueuePosition

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

Source from the content-addressed store, hash-verified

1998}
1999
2000func TestQueuePosition(t *testing.T) {
2001 t.Parallel()
2002
2003 if testing.Short() {
2004 t.SkipNow()
2005 }
2006 sqlDB := testSQLDB(t)
2007 err := migrations.Up(sqlDB)
2008 require.NoError(t, err)
2009 db := database.New(sqlDB)
2010 ctx := testutil.Context(t, testutil.WaitLong)
2011
2012 org := dbgen.Organization(t, db, database.Organization{})
2013 jobCount := 10
2014 jobs := []database.ProvisionerJob{}
2015 jobIDs := []uuid.UUID{}
2016 for i := 0; i < jobCount; i++ {
2017 job := dbgen.ProvisionerJob(t, db, nil, database.ProvisionerJob{
2018 OrganizationID: org.ID,
2019 Tags: database.StringMap{},
2020 })
2021 jobs = append(jobs, job)
2022 jobIDs = append(jobIDs, job.ID)
2023
2024 // We need a slight amount of time between each insertion to ensure that
2025 // the queue position is correct... it's sorted by `created_at`.
2026 time.Sleep(time.Millisecond)
2027 }
2028
2029 // Create default provisioner daemon:
2030 dbgen.ProvisionerDaemon(t, db, database.ProvisionerDaemon{
2031 Name: "default_provisioner",
2032 Provisioners: []database.ProvisionerType{database.ProvisionerTypeEcho},
2033 // Ensure the `tags` field is NOT NULL for the default provisioner;
2034 // otherwise, it won't be able to pick up any jobs.
2035 Tags: database.StringMap{},
2036 })
2037
2038 queued, err := db.GetProvisionerJobsByIDsWithQueuePosition(ctx, database.GetProvisionerJobsByIDsWithQueuePositionParams{
2039 IDs: jobIDs,
2040 StaleIntervalMS: provisionerdserver.StaleInterval.Milliseconds(),
2041 })
2042 require.NoError(t, err)
2043 require.Len(t, queued, jobCount)
2044 sort.Slice(queued, func(i, j int) bool {
2045 return queued[i].QueuePosition < queued[j].QueuePosition
2046 })
2047 // Ensure that the queue positions are correct based on insertion ID!
2048 for index, job := range queued {
2049 require.Equal(t, job.QueuePosition, int64(index+1))
2050 require.Equal(t, job.ProvisionerJob.ID, jobs[index].ID)
2051 }
2052
2053 job, err := db.AcquireProvisionerJob(ctx, database.AcquireProvisionerJobParams{
2054 OrganizationID: org.ID,
2055 StartedAt: sql.NullTime{
2056 Time: dbtime.Now(),
2057 Valid: true,

Callers

nothing calls this directly

Calls 15

UpFunction · 0.92
NewFunction · 0.92
ContextFunction · 0.92
OrganizationFunction · 0.92
ProvisionerJobFunction · 0.92
ProvisionerDaemonFunction · 0.92
NowFunction · 0.92
AllProvisionerTypeValuesFunction · 0.92
SkipNowMethod · 0.80
testSQLDBFunction · 0.70
AcquireProvisionerJobMethod · 0.65

Tested by

no test coverage detected