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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy