Skip to content

Commit 277c2c7

Browse files
authored
chore(coderd/prometheusmetrics): remove dbmem from tests (#18238)
1 parent bb2c195 commit 277c2c7

File tree

1 file changed

+115
-73
lines changed

1 file changed

+115
-73
lines changed

coderd/prometheusmetrics/prometheusmetrics_test.go

Lines changed: 115 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"database/sql"
66
"encoding/json"
7+
"errors"
78
"fmt"
89
"os"
910
"reflect"
@@ -25,7 +26,6 @@ import (
2526
"github.com/coder/coder/v2/coderd/coderdtest"
2627
"github.com/coder/coder/v2/coderd/database"
2728
"github.com/coder/coder/v2/coderd/database/dbgen"
28-
"github.com/coder/coder/v2/coderd/database/dbmem"
2929
"github.com/coder/coder/v2/coderd/database/dbtestutil"
3030
"github.com/coder/coder/v2/coderd/database/dbtime"
3131
"github.com/coder/coder/v2/coderd/prometheusmetrics"
@@ -51,13 +51,15 @@ func TestActiveUsers(t *testing.T) {
5151
}{{
5252
Name: "None",
5353
Database: func(t *testing.T) database.Store {
54-
return dbmem.New()
54+
db, _ := dbtestutil.NewDB(t)
55+
return db
5556
},
5657
Count: 0,
5758
}, {
5859
Name: "One",
5960
Database: func(t *testing.T) database.Store {
60-
db := dbmem.New()
61+
db, _ := dbtestutil.NewDB(t)
62+
dbtestutil.DisableForeignKeysAndTriggers(t, db)
6163
dbgen.APIKey(t, db, database.APIKey{
6264
LastUsed: dbtime.Now(),
6365
})
@@ -67,7 +69,8 @@ func TestActiveUsers(t *testing.T) {
6769
}, {
6870
Name: "OneWithExpired",
6971
Database: func(t *testing.T) database.Store {
70-
db := dbmem.New()
72+
db, _ := dbtestutil.NewDB(t)
73+
dbtestutil.DisableForeignKeysAndTriggers(t, db)
7174

7275
dbgen.APIKey(t, db, database.APIKey{
7376
LastUsed: dbtime.Now(),
@@ -84,7 +87,8 @@ func TestActiveUsers(t *testing.T) {
8487
}, {
8588
Name: "Multiple",
8689
Database: func(t *testing.T) database.Store {
87-
db := dbmem.New()
90+
db, _ := dbtestutil.NewDB(t)
91+
dbtestutil.DisableForeignKeysAndTriggers(t, db)
8892
dbgen.APIKey(t, db, database.APIKey{
8993
LastUsed: dbtime.Now(),
9094
})
@@ -123,21 +127,22 @@ func TestUsers(t *testing.T) {
123127
}{{
124128
Name: "None",
125129
Database: func(t *testing.T) database.Store {
126-
return dbmem.New()
130+
db, _ := dbtestutil.NewDB(t)
131+
return db
127132
},
128133
Count: map[database.UserStatus]int{},
129134
}, {
130135
Name: "One",
131136
Database: func(t *testing.T) database.Store {
132-
db := dbmem.New()
137+
db, _ := dbtestutil.NewDB(t)
133138
dbgen.User(t, db, database.User{Status: database.UserStatusActive})
134139
return db
135140
},
136141
Count: map[database.UserStatus]int{database.UserStatusActive: 1},
137142
}, {
138143
Name: "MultipleStatuses",
139144
Database: func(t *testing.T) database.Store {
140-
db := dbmem.New()
145+
db, _ := dbtestutil.NewDB(t)
141146

142147
dbgen.User(t, db, database.User{Status: database.UserStatusActive})
143148
dbgen.User(t, db, database.User{Status: database.UserStatusDormant})
@@ -148,7 +153,7 @@ func TestUsers(t *testing.T) {
148153
}, {
149154
Name: "MultipleActive",
150155
Database: func(t *testing.T) database.Store {
151-
db := dbmem.New()
156+
db, _ := dbtestutil.NewDB(t)
152157
dbgen.User(t, db, database.User{Status: database.UserStatusActive})
153158
dbgen.User(t, db, database.User{Status: database.UserStatusActive})
154159
dbgen.User(t, db, database.User{Status: database.UserStatusActive})
@@ -216,20 +221,25 @@ func TestWorkspaceLatestBuildTotals(t *testing.T) {
216221
Total int
217222
Status map[codersdk.ProvisionerJobStatus]int
218223
}{{
219-
Name: "None",
220-
Database: dbmem.New,
221-
Total: 0,
224+
Name: "None",
225+
Database: func() database.Store {
226+
db, _ := dbtestutil.NewDB(t)
227+
return db
228+
},
229+
Total: 0,
222230
}, {
223231
Name: "Multiple",
224232
Database: func() database.Store {
225-
db := dbmem.New()
226-
insertCanceled(t, db)
227-
insertFailed(t, db)
228-
insertFailed(t, db)
229-
insertSuccess(t, db)
230-
insertSuccess(t, db)
231-
insertSuccess(t, db)
232-
insertRunning(t, db)
233+
db, _ := dbtestutil.NewDB(t)
234+
u := dbgen.User(t, db, database.User{})
235+
org := dbgen.Organization(t, db, database.Organization{})
236+
insertCanceled(t, db, u, org)
237+
insertFailed(t, db, u, org)
238+
insertFailed(t, db, u, org)
239+
insertSuccess(t, db, u, org)
240+
insertSuccess(t, db, u, org)
241+
insertSuccess(t, db, u, org)
242+
insertRunning(t, db, u, org)
233243
return db
234244
},
235245
Total: 7,
@@ -287,21 +297,26 @@ func TestWorkspaceLatestBuildStatuses(t *testing.T) {
287297
ExpectedWorkspaces int
288298
ExpectedStatuses map[codersdk.ProvisionerJobStatus]int
289299
}{{
290-
Name: "None",
291-
Database: dbmem.New,
300+
Name: "None",
301+
Database: func() database.Store {
302+
db, _ := dbtestutil.NewDB(t)
303+
return db
304+
},
292305
ExpectedWorkspaces: 0,
293306
}, {
294307
Name: "Multiple",
295308
Database: func() database.Store {
296-
db := dbmem.New()
297-
insertTemplates(t, db)
298-
insertCanceled(t, db)
299-
insertFailed(t, db)
300-
insertFailed(t, db)
301-
insertSuccess(t, db)
302-
insertSuccess(t, db)
303-
insertSuccess(t, db)
304-
insertRunning(t, db)
309+
db, _ := dbtestutil.NewDB(t)
310+
u := dbgen.User(t, db, database.User{})
311+
org := dbgen.Organization(t, db, database.Organization{})
312+
insertTemplates(t, db, u, org)
313+
insertCanceled(t, db, u, org)
314+
insertFailed(t, db, u, org)
315+
insertFailed(t, db, u, org)
316+
insertSuccess(t, db, u, org)
317+
insertSuccess(t, db, u, org)
318+
insertSuccess(t, db, u, org)
319+
insertRunning(t, db, u, org)
305320
return db
306321
},
307322
ExpectedWorkspaces: 7,
@@ -727,76 +742,102 @@ var (
727742
templateVersionB = uuid.New()
728743
)
729744

730-
func insertTemplates(t *testing.T, db database.Store) {
745+
func insertTemplates(t *testing.T, db database.Store, u database.User, org database.Organization) {
731746
require.NoError(t, db.InsertTemplate(context.Background(), database.InsertTemplateParams{
732747
ID: templateA,
733748
Name: "template-a",
734749
Provisioner: database.ProvisionerTypeTerraform,
735750
MaxPortSharingLevel: database.AppSharingLevelAuthenticated,
751+
CreatedBy: u.ID,
752+
OrganizationID: org.ID,
736753
}))
754+
pj := dbgen.ProvisionerJob(t, db, nil, database.ProvisionerJob{})
737755

738756
require.NoError(t, db.InsertTemplateVersion(context.Background(), database.InsertTemplateVersionParams{
739-
ID: templateVersionA,
740-
TemplateID: uuid.NullUUID{UUID: templateA},
741-
Name: "version-1a",
757+
ID: templateVersionA,
758+
TemplateID: uuid.NullUUID{UUID: templateA},
759+
Name: "version-1a",
760+
JobID: pj.ID,
761+
OrganizationID: org.ID,
762+
CreatedBy: u.ID,
742763
}))
743764

744765
require.NoError(t, db.InsertTemplate(context.Background(), database.InsertTemplateParams{
745766
ID: templateB,
746767
Name: "template-b",
747768
Provisioner: database.ProvisionerTypeTerraform,
748769
MaxPortSharingLevel: database.AppSharingLevelAuthenticated,
770+
CreatedBy: u.ID,
771+
OrganizationID: org.ID,
749772
}))
750773

751774
require.NoError(t, db.InsertTemplateVersion(context.Background(), database.InsertTemplateVersionParams{
752-
ID: templateVersionB,
753-
TemplateID: uuid.NullUUID{UUID: templateB},
754-
Name: "version-1b",
775+
ID: templateVersionB,
776+
TemplateID: uuid.NullUUID{UUID: templateB},
777+
Name: "version-1b",
778+
JobID: pj.ID,
779+
OrganizationID: org.ID,
780+
CreatedBy: u.ID,
755781
}))
756782
}
757783

758-
func insertUser(t *testing.T, db database.Store) database.User {
759-
username, err := cryptorand.String(8)
760-
require.NoError(t, err)
761-
762-
user, err := db.InsertUser(context.Background(), database.InsertUserParams{
763-
ID: uuid.New(),
764-
Username: username,
765-
LoginType: database.LoginTypeNone,
766-
})
784+
func insertRunning(t *testing.T, db database.Store, u database.User, org database.Organization) database.ProvisionerJob {
785+
var templateID, templateVersionID uuid.UUID
786+
rnd, err := cryptorand.Intn(10)
767787
require.NoError(t, err)
768788

769-
return user
770-
}
789+
pairs := []struct {
790+
tplID uuid.UUID
791+
versionID uuid.UUID
792+
}{
793+
{templateA, templateVersionA},
794+
{templateB, templateVersionB},
795+
}
796+
for _, pair := range pairs {
797+
_, err := db.GetTemplateByID(context.Background(), pair.tplID)
798+
if errors.Is(err, sql.ErrNoRows) {
799+
_ = dbgen.Template(t, db, database.Template{
800+
ID: pair.tplID,
801+
OrganizationID: org.ID,
802+
CreatedBy: u.ID,
803+
})
804+
_ = dbgen.TemplateVersion(t, db, database.TemplateVersion{
805+
ID: pair.versionID,
806+
OrganizationID: org.ID,
807+
CreatedBy: u.ID,
808+
})
809+
} else {
810+
require.NoError(t, err)
811+
}
812+
}
771813

772-
func insertRunning(t *testing.T, db database.Store) database.ProvisionerJob {
773-
var template, templateVersion uuid.UUID
774-
rnd, err := cryptorand.Intn(10)
775-
require.NoError(t, err)
776814
if rnd > 5 {
777-
template = templateB
778-
templateVersion = templateVersionB
815+
templateID = templateB
816+
templateVersionID = templateVersionB
779817
} else {
780-
template = templateA
781-
templateVersion = templateVersionA
818+
templateID = templateA
819+
templateVersionID = templateVersionA
782820
}
783821

784822
workspace, err := db.InsertWorkspace(context.Background(), database.InsertWorkspaceParams{
785823
ID: uuid.New(),
786-
OwnerID: insertUser(t, db).ID,
824+
OwnerID: u.ID,
787825
Name: uuid.NewString(),
788-
TemplateID: template,
826+
TemplateID: templateID,
789827
AutomaticUpdates: database.AutomaticUpdatesNever,
828+
OrganizationID: org.ID,
790829
})
791830
require.NoError(t, err)
792831

793832
job, err := db.InsertProvisionerJob(context.Background(), database.InsertProvisionerJobParams{
794-
ID: uuid.New(),
795-
CreatedAt: dbtime.Now(),
796-
UpdatedAt: dbtime.Now(),
797-
Provisioner: database.ProvisionerTypeEcho,
798-
StorageMethod: database.ProvisionerStorageMethodFile,
799-
Type: database.ProvisionerJobTypeWorkspaceBuild,
833+
ID: uuid.New(),
834+
CreatedAt: dbtime.Now(),
835+
UpdatedAt: dbtime.Now(),
836+
Provisioner: database.ProvisionerTypeEcho,
837+
StorageMethod: database.ProvisionerStorageMethodFile,
838+
Type: database.ProvisionerJobTypeWorkspaceBuild,
839+
Input: json.RawMessage("{}"),
840+
OrganizationID: org.ID,
800841
})
801842
require.NoError(t, err)
802843
err = db.InsertWorkspaceBuild(context.Background(), database.InsertWorkspaceBuildParams{
@@ -806,7 +847,7 @@ func insertRunning(t *testing.T, db database.Store) database.ProvisionerJob {
806847
BuildNumber: 1,
807848
Transition: database.WorkspaceTransitionStart,
808849
Reason: database.BuildReasonInitiator,
809-
TemplateVersionID: templateVersion,
850+
TemplateVersionID: templateVersionID,
810851
})
811852
require.NoError(t, err)
812853
// This marks the job as started.
@@ -816,14 +857,15 @@ func insertRunning(t *testing.T, db database.Store) database.ProvisionerJob {
816857
Time: dbtime.Now(),
817858
Valid: true,
818859
},
819-
Types: []database.ProvisionerType{database.ProvisionerTypeEcho},
860+
Types: []database.ProvisionerType{database.ProvisionerTypeEcho},
861+
ProvisionerTags: must(json.Marshal(job.Tags)),
820862
})
821863
require.NoError(t, err)
822864
return job
823865
}
824866

825-
func insertCanceled(t *testing.T, db database.Store) {
826-
job := insertRunning(t, db)
867+
func insertCanceled(t *testing.T, db database.Store, u database.User, org database.Organization) {
868+
job := insertRunning(t, db, u, org)
827869
err := db.UpdateProvisionerJobWithCancelByID(context.Background(), database.UpdateProvisionerJobWithCancelByIDParams{
828870
ID: job.ID,
829871
CanceledAt: sql.NullTime{
@@ -842,8 +884,8 @@ func insertCanceled(t *testing.T, db database.Store) {
842884
require.NoError(t, err)
843885
}
844886

845-
func insertFailed(t *testing.T, db database.Store) {
846-
job := insertRunning(t, db)
887+
func insertFailed(t *testing.T, db database.Store, u database.User, org database.Organization) {
888+
job := insertRunning(t, db, u, org)
847889
err := db.UpdateProvisionerJobWithCompleteByID(context.Background(), database.UpdateProvisionerJobWithCompleteByIDParams{
848890
ID: job.ID,
849891
CompletedAt: sql.NullTime{
@@ -858,8 +900,8 @@ func insertFailed(t *testing.T, db database.Store) {
858900
require.NoError(t, err)
859901
}
860902

861-
func insertSuccess(t *testing.T, db database.Store) {
862-
job := insertRunning(t, db)
903+
func insertSuccess(t *testing.T, db database.Store, u database.User, org database.Organization) {
904+
job := insertRunning(t, db, u, org)
863905
err := db.UpdateProvisionerJobWithCompleteByID(context.Background(), database.UpdateProvisionerJobWithCompleteByIDParams{
864906
ID: job.ID,
865907
CompletedAt: sql.NullTime{

0 commit comments

Comments
 (0)