Skip to content

Commit 780fbd0

Browse files
committed
fixes
1 parent 935ef10 commit 780fbd0

File tree

1 file changed

+54
-14
lines changed

1 file changed

+54
-14
lines changed

coderd/insights_test.go

Lines changed: 54 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -801,7 +801,6 @@ func TestTemplateInsights_Golden(t *testing.T) {
801801
for _, user := range users {
802802
for _, workspace := range user.workspaces {
803803
workspace.user = user
804-
workspace.agentID = uuid.New()
805804
for _, app := range workspace.template.apps {
806805
app := workspaceApp(app)
807806
workspace.apps = append(workspace.apps, &app)
@@ -813,24 +812,27 @@ func TestTemplateInsights_Golden(t *testing.T) {
813812
}
814813

815814
prepare := func(t *testing.T, templates []*testTemplate, users []*testUser, testData map[*testWorkspace]testDataGen) *codersdk.Client {
816-
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
815+
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: false}).Leveled(slog.LevelDebug)
817816
opts := &coderdtest.Options{
818817
Logger: &logger,
819818
IncludeProvisionerDaemon: true,
820-
AgentStatsRefreshInterval: time.Millisecond * 100,
819+
AgentStatsRefreshInterval: time.Hour, // Not relevant for this test.
821820
}
822821
client, _, coderdAPI := coderdtest.NewWithAPI(t, opts)
823822
firstUser := coderdtest.CreateFirstUser(t, client)
824823

825824
// Prepare all test users.
826-
for _, u := range users {
827-
u.client, u.sdk = coderdtest.CreateAnotherUserMutators(t, client, firstUser.OrganizationID, nil, func(r *codersdk.CreateUserRequest) {
828-
r.Username = u.name
825+
for _, user := range users {
826+
user.client, user.sdk = coderdtest.CreateAnotherUserMutators(t, client, firstUser.OrganizationID, nil, func(r *codersdk.CreateUserRequest) {
827+
r.Username = user.name
829828
})
829+
user.client.SetLogger(logger.Named("user").With(slog.Field{Name: "name", Value: user.name}))
830830
}
831831

832832
// Prepare all the templates.
833833
for _, template := range templates {
834+
template := template
835+
834836
var parameters []*proto.RichParameter
835837
for _, parameter := range template.parameters {
836838
var options []*proto.RichParameterOption
@@ -861,7 +863,10 @@ func TestTemplateInsights_Golden(t *testing.T) {
861863
)
862864
var resources []*proto.Resource
863865
for _, user := range users {
866+
user := user
864867
for _, workspace := range user.workspaces {
868+
workspace := workspace
869+
865870
if workspace.template != template {
866871
continue
867872
}
@@ -885,7 +890,7 @@ func TestTemplateInsights_Golden(t *testing.T) {
885890
Name: "example",
886891
Type: "aws_instance",
887892
Agents: []*proto.Agent{{
888-
Id: workspace.agentID.String(),
893+
Id: uuid.NewString(), // Doesn't matter, not used in DB.
889894
Name: "dev",
890895
Auth: &proto.Agent_Token{
891896
Token: authToken.String(),
@@ -901,6 +906,7 @@ func TestTemplateInsights_Golden(t *testing.T) {
901906
Value: buildParameter.value,
902907
})
903908
}
909+
904910
createWorkspaces = append(createWorkspaces, func(templateID uuid.UUID) {
905911
// Create workspace using the users client.
906912
createdWorkspace := coderdtest.CreateWorkspace(t, user.client, firstUser.OrganizationID, templateID, func(cwr *codersdk.CreateWorkspaceRequest) {
@@ -909,6 +915,11 @@ func TestTemplateInsights_Golden(t *testing.T) {
909915
workspace.id = createdWorkspace.ID
910916
waitWorkspaces = append(waitWorkspaces, func() {
911917
coderdtest.AwaitWorkspaceBuildJob(t, user.client, createdWorkspace.LatestBuild.ID)
918+
ctx := testutil.Context(t, testutil.WaitShort)
919+
ws, err := user.client.Workspace(ctx, workspace.id)
920+
require.NoError(t, err, "want no error getting workspace")
921+
922+
workspace.agentID = ws.LatestBuild.Resources[0].Agents[0].ID
912923
})
913924
})
914925
}
@@ -1044,14 +1055,30 @@ func TestTemplateInsights_Golden(t *testing.T) {
10441055
},
10451056
},
10461057
appUsage: []appUsage{
1047-
{
1048-
app: users[0].workspaces[0].apps[0],
1049-
startedAt: time.Now().UTC().Add(-time.Hour),
1050-
endedAt: time.Now().UTC(),
1051-
requests: 1,
1052-
},
1058+
// { // One hour of usage.
1059+
// app: users[0].workspaces[0].apps[0],
1060+
// startedAt: weekAgo,
1061+
// endedAt: weekAgo.Add(time.Hour),
1062+
// requests: 1,
1063+
// },
1064+
// { // used an app on the last day, counts as active user.
1065+
// app: users[0].workspaces[0].apps[2],
1066+
// startedAt: weekAgo.AddDate(0, 0, 6),
1067+
// endedAt: weekAgo.AddDate(0, 0, 6).Add(12 * time.Minute),
1068+
// requests: 1,
1069+
// },
10531070
},
10541071
},
1072+
// users[0].workspaces[1]: {
1073+
// appUsage: []appUsage{
1074+
// { // One hour of usage, but same user and same template app, only count once.
1075+
// app: users[0].workspaces[1].apps[0],
1076+
// startedAt: weekAgo,
1077+
// endedAt: weekAgo.Add(time.Hour),
1078+
// requests: 1,
1079+
// },
1080+
// },
1081+
// },
10551082
}
10561083
}
10571084
type testRequest struct {
@@ -1135,7 +1162,18 @@ func TestTemplateInsights_Golden(t *testing.T) {
11351162
// Sanity check.
11361163
for ws, data := range testData {
11371164
for _, usage := range data.appUsage {
1138-
require.Contains(t, ws.apps, usage.app, "test bug: app %q not in workspace %q", usage.app.name, ws.name)
1165+
found := false
1166+
wrongWorkspace := false
1167+
for _, app := range ws.apps {
1168+
if usage.app == app { // Pointer equality
1169+
found = true
1170+
break
1171+
}
1172+
if *usage.app == *app {
1173+
wrongWorkspace = true
1174+
}
1175+
}
1176+
require.True(t, found, "test bug: app %q not in workspace %q [wrongWorkspace=%v]", usage.app.name, ws.name, wrongWorkspace)
11391177
}
11401178
}
11411179

@@ -1145,7 +1183,9 @@ func TestTemplateInsights_Golden(t *testing.T) {
11451183
req := req
11461184
t.Run(req.name, func(t *testing.T) {
11471185
t.Parallel()
1186+
11481187
ctx := testutil.Context(t, testutil.WaitMedium)
1188+
11491189
report, err := client.TemplateInsights(ctx, req.makeRequest(templates))
11501190
require.NoError(t, err, "want no error getting template insights")
11511191

0 commit comments

Comments
 (0)