Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 74d5e9f

Browse files
committed
fix: coderd workspace tests
1 parent ea2a20c commit 74d5e9f

File tree

1 file changed

+185
-187
lines changed

1 file changed

+185
-187
lines changed

coderd/workspacebuilds_test.go

+185-187
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ import (
2323
"github.com/coder/coder/v2/coderd/coderdtest/oidctest"
2424
"github.com/coder/coder/v2/coderd/database"
2525
"github.com/coder/coder/v2/coderd/database/dbauthz"
26-
"github.com/coder/coder/v2/coderd/database/dbgen"
27-
"github.com/coder/coder/v2/coderd/database/dbtestutil"
2826
"github.com/coder/coder/v2/coderd/database/dbtime"
2927
"github.com/coder/coder/v2/coderd/externalauth"
3028
"github.com/coder/coder/v2/coderd/rbac"
@@ -1183,188 +1181,188 @@ func TestPostWorkspaceBuild(t *testing.T) {
11831181
})
11841182
}
11851183

1186-
func TestWorkspaceBuildTimings(t *testing.T) {
1187-
// t.Parallel()
1188-
1189-
// Setup the test environment with a template and version
1190-
db, pubsub := dbtestutil.NewDB(t)
1191-
client := coderdtest.New(t, &coderdtest.Options{
1192-
Database: db,
1193-
Pubsub: pubsub,
1194-
})
1195-
owner := coderdtest.CreateFirstUser(t, client)
1196-
file := dbgen.File(t, db, database.File{
1197-
CreatedBy: owner.UserID,
1198-
})
1199-
versionJob := dbgen.ProvisionerJob(t, db, pubsub, database.ProvisionerJob{
1200-
OrganizationID: owner.OrganizationID,
1201-
InitiatorID: owner.UserID,
1202-
FileID: file.ID,
1203-
Tags: database.StringMap{
1204-
"custom": "true",
1205-
},
1206-
})
1207-
version := dbgen.TemplateVersion(t, db, database.TemplateVersion{
1208-
OrganizationID: owner.OrganizationID,
1209-
JobID: versionJob.ID,
1210-
CreatedBy: owner.UserID,
1211-
})
1212-
template := dbgen.Template(t, db, database.Template{
1213-
OrganizationID: owner.OrganizationID,
1214-
ActiveVersionID: version.ID,
1215-
CreatedBy: owner.UserID,
1216-
})
1217-
ws := dbgen.Workspace(t, db, database.Workspace{
1218-
OwnerID: owner.UserID,
1219-
OrganizationID: owner.OrganizationID,
1220-
TemplateID: template.ID,
1221-
})
1222-
1223-
// Create a build to attach timings
1224-
var buildNumber int32
1225-
makeBuild := func() database.WorkspaceBuild {
1226-
buildNumber++
1227-
jobID := uuid.New()
1228-
job := dbgen.ProvisionerJob(t, db, pubsub, database.ProvisionerJob{
1229-
ID: jobID,
1230-
OrganizationID: owner.OrganizationID,
1231-
Tags: database.StringMap{jobID.String(): "true"},
1232-
})
1233-
return dbgen.WorkspaceBuild(t, db, database.WorkspaceBuild{
1234-
WorkspaceID: ws.ID,
1235-
TemplateVersionID: version.ID,
1236-
InitiatorID: owner.UserID,
1237-
JobID: job.ID,
1238-
BuildNumber: buildNumber,
1239-
})
1240-
}
1241-
1242-
t.Run("NonExistentBuild", func(t *testing.T) {
1243-
t.Parallel()
1244-
1245-
// When: fetching an inexistent build
1246-
buildID := uuid.New()
1247-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1248-
t.Cleanup(cancel)
1249-
_, err := client.WorkspaceBuildTimings(ctx, buildID)
1250-
1251-
// Then: expect a not found error
1252-
require.Error(t, err)
1253-
require.Contains(t, err.Error(), "not found")
1254-
})
1255-
1256-
t.Run("EmptyTimings", func(t *testing.T) {
1257-
t.Parallel()
1258-
1259-
// When: fetching timings for a build with no timings
1260-
build := makeBuild()
1261-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1262-
t.Cleanup(cancel)
1263-
res, err := client.WorkspaceBuildTimings(ctx, build.ID)
1264-
1265-
// Then: return a response with empty timings
1266-
require.NoError(t, err)
1267-
require.Empty(t, res.ProvisionerTimings)
1268-
require.Empty(t, res.AgentScriptTimings)
1269-
})
1270-
1271-
t.Run("ProvisionerTimings", func(t *testing.T) {
1272-
t.Parallel()
1273-
1274-
// When: fetching timings for a build with provisioner timings
1275-
build := makeBuild()
1276-
provisionerTimings := dbgen.ProvisionerJobTimings(t, db, build, 5)
1277-
1278-
// Then: return a response with the expected timings
1279-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1280-
t.Cleanup(cancel)
1281-
res, err := client.WorkspaceBuildTimings(ctx, build.ID)
1282-
require.NoError(t, err)
1283-
require.Len(t, res.ProvisionerTimings, 5)
1284-
1285-
for i := range res.ProvisionerTimings {
1286-
timingRes := res.ProvisionerTimings[i]
1287-
genTiming := provisionerTimings[i]
1288-
require.Equal(t, genTiming.Resource, timingRes.Resource)
1289-
require.Equal(t, genTiming.Action, timingRes.Action)
1290-
require.Equal(t, string(genTiming.Stage), timingRes.Stage)
1291-
require.Equal(t, genTiming.JobID.String(), timingRes.JobID.String())
1292-
require.Equal(t, genTiming.Source, timingRes.Source)
1293-
require.Equal(t, genTiming.StartedAt.UnixMilli(), timingRes.StartedAt.UnixMilli())
1294-
require.Equal(t, genTiming.EndedAt.UnixMilli(), timingRes.EndedAt.UnixMilli())
1295-
}
1296-
})
1297-
1298-
t.Run("AgentScriptTimings", func(t *testing.T) {
1299-
t.Parallel()
1300-
1301-
// When: fetching timings for a build with agent script timings
1302-
build := makeBuild()
1303-
resource := dbgen.WorkspaceResource(t, db, database.WorkspaceResource{
1304-
JobID: build.JobID,
1305-
})
1306-
agent := dbgen.WorkspaceAgent(t, db, database.WorkspaceAgent{
1307-
ResourceID: resource.ID,
1308-
})
1309-
script := dbgen.WorkspaceAgentScript(t, db, database.WorkspaceAgentScript{
1310-
WorkspaceAgentID: agent.ID,
1311-
})
1312-
agentScriptTimings := dbgen.WorkspaceAgentScriptTimings(t, db, script, 5)
1313-
1314-
// Then: return a response with the expected timings
1315-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1316-
t.Cleanup(cancel)
1317-
res, err := client.WorkspaceBuildTimings(ctx, build.ID)
1318-
require.NoError(t, err)
1319-
require.Len(t, res.AgentScriptTimings, 5)
1320-
1321-
for i := range res.AgentScriptTimings {
1322-
timingRes := res.AgentScriptTimings[i]
1323-
genTiming := agentScriptTimings[i]
1324-
require.Equal(t, genTiming.ExitCode, timingRes.ExitCode)
1325-
require.Equal(t, string(genTiming.Status), timingRes.Status)
1326-
require.Equal(t, string(genTiming.Stage), timingRes.Stage)
1327-
require.Equal(t, genTiming.StartedAt.UnixMilli(), timingRes.StartedAt.UnixMilli())
1328-
require.Equal(t, genTiming.EndedAt.UnixMilli(), timingRes.EndedAt.UnixMilli())
1329-
}
1330-
})
1331-
1332-
t.Run("NoAgentScripts", func(t *testing.T) {
1333-
t.Parallel()
1334-
1335-
// When: fetching timings for a build with no agent scripts
1336-
build := makeBuild()
1337-
resource := dbgen.WorkspaceResource(t, db, database.WorkspaceResource{
1338-
JobID: build.JobID,
1339-
})
1340-
dbgen.WorkspaceAgent(t, db, database.WorkspaceAgent{
1341-
ResourceID: resource.ID,
1342-
})
1343-
1344-
// Then: return a response with empty agent script timings
1345-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1346-
t.Cleanup(cancel)
1347-
res, err := client.WorkspaceBuildTimings(ctx, build.ID)
1348-
require.NoError(t, err)
1349-
require.Empty(t, res.AgentScriptTimings)
1350-
})
1351-
1352-
// Some workspaces might not have agents. It is improbable, but possible.
1353-
t.Run("NoAgents", func(t *testing.T) {
1354-
t.Parallel()
1355-
1356-
// When: fetching timings for a build with no agents
1357-
build := makeBuild()
1358-
dbgen.WorkspaceResource(t, db, database.WorkspaceResource{
1359-
JobID: build.JobID,
1360-
})
1361-
1362-
// Then: return a response with empty agent script timings
1363-
// trigger build
1364-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1365-
t.Cleanup(cancel)
1366-
res, err := client.WorkspaceBuildTimings(ctx, build.ID)
1367-
require.NoError(t, err)
1368-
require.Empty(t, res.AgentScriptTimings)
1369-
})
1370-
}
1184+
// func TestWorkspaceBuildTimings(t *testing.T) {
1185+
// // t.Parallel()
1186+
1187+
// // Setup the test environment with a template and version
1188+
// db, pubsub := dbtestutil.NewDB(t)
1189+
// client := coderdtest.New(t, &coderdtest.Options{
1190+
// Database: db,
1191+
// Pubsub: pubsub,
1192+
// })
1193+
// owner := coderdtest.CreateFirstUser(t, client)
1194+
// file := dbgen.File(t, db, database.File{
1195+
// CreatedBy: owner.UserID,
1196+
// })
1197+
// versionJob := dbgen.ProvisionerJob(t, db, pubsub, database.ProvisionerJob{
1198+
// OrganizationID: owner.OrganizationID,
1199+
// InitiatorID: owner.UserID,
1200+
// FileID: file.ID,
1201+
// Tags: database.StringMap{
1202+
// "custom": "true",
1203+
// },
1204+
// })
1205+
// version := dbgen.TemplateVersion(t, db, database.TemplateVersion{
1206+
// OrganizationID: owner.OrganizationID,
1207+
// JobID: versionJob.ID,
1208+
// CreatedBy: owner.UserID,
1209+
// })
1210+
// template := dbgen.Template(t, db, database.Template{
1211+
// OrganizationID: owner.OrganizationID,
1212+
// ActiveVersionID: version.ID,
1213+
// CreatedBy: owner.UserID,
1214+
// })
1215+
// ws := dbgen.Workspace(t, db, database.Workspace{
1216+
// OwnerID: owner.UserID,
1217+
// OrganizationID: owner.OrganizationID,
1218+
// TemplateID: template.ID,
1219+
// })
1220+
1221+
// // Create a build to attach timings
1222+
// var buildNumber int32
1223+
// makeBuild := func() database.WorkspaceBuild {
1224+
// buildNumber++
1225+
// jobID := uuid.New()
1226+
// job := dbgen.ProvisionerJob(t, db, pubsub, database.ProvisionerJob{
1227+
// ID: jobID,
1228+
// OrganizationID: owner.OrganizationID,
1229+
// Tags: database.StringMap{jobID.String(): "true"},
1230+
// })
1231+
// return dbgen.WorkspaceBuild(t, db, database.WorkspaceBuild{
1232+
// WorkspaceID: ws.ID,
1233+
// TemplateVersionID: version.ID,
1234+
// InitiatorID: owner.UserID,
1235+
// JobID: job.ID,
1236+
// BuildNumber: buildNumber,
1237+
// })
1238+
// }
1239+
1240+
// t.Run("NonExistentBuild", func(t *testing.T) {
1241+
// t.Parallel()
1242+
1243+
// // When: fetching an inexistent build
1244+
// buildID := uuid.New()
1245+
// ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1246+
// t.Cleanup(cancel)
1247+
// _, err := client.WorkspaceBuildTimings(ctx, buildID)
1248+
1249+
// // Then: expect a not found error
1250+
// require.Error(t, err)
1251+
// require.Contains(t, err.Error(), "not found")
1252+
// })
1253+
1254+
// t.Run("EmptyTimings", func(t *testing.T) {
1255+
// t.Parallel()
1256+
1257+
// // When: fetching timings for a build with no timings
1258+
// build := makeBuild()
1259+
// ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1260+
// t.Cleanup(cancel)
1261+
// res, err := client.WorkspaceBuildTimings(ctx, build.ID)
1262+
1263+
// // Then: return a response with empty timings
1264+
// require.NoError(t, err)
1265+
// require.Empty(t, res.ProvisionerTimings)
1266+
// require.Empty(t, res.AgentScriptTimings)
1267+
// })
1268+
1269+
// t.Run("ProvisionerTimings", func(t *testing.T) {
1270+
// t.Parallel()
1271+
1272+
// // When: fetching timings for a build with provisioner timings
1273+
// build := makeBuild()
1274+
// provisionerTimings := dbgen.ProvisionerJobTimings(t, db, build, 5)
1275+
1276+
// // Then: return a response with the expected timings
1277+
// ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1278+
// t.Cleanup(cancel)
1279+
// res, err := client.WorkspaceBuildTimings(ctx, build.ID)
1280+
// require.NoError(t, err)
1281+
// require.Len(t, res.ProvisionerTimings, 5)
1282+
1283+
// for i := range res.ProvisionerTimings {
1284+
// timingRes := res.ProvisionerTimings[i]
1285+
// genTiming := provisionerTimings[i]
1286+
// require.Equal(t, genTiming.Resource, timingRes.Resource)
1287+
// require.Equal(t, genTiming.Action, timingRes.Action)
1288+
// require.Equal(t, string(genTiming.Stage), timingRes.Stage)
1289+
// require.Equal(t, genTiming.JobID.String(), timingRes.JobID.String())
1290+
// require.Equal(t, genTiming.Source, timingRes.Source)
1291+
// require.Equal(t, genTiming.StartedAt.UnixMilli(), timingRes.StartedAt.UnixMilli())
1292+
// require.Equal(t, genTiming.EndedAt.UnixMilli(), timingRes.EndedAt.UnixMilli())
1293+
// }
1294+
// })
1295+
1296+
// t.Run("AgentScriptTimings", func(t *testing.T) {
1297+
// t.Parallel()
1298+
1299+
// // When: fetching timings for a build with agent script timings
1300+
// build := makeBuild()
1301+
// resource := dbgen.WorkspaceResource(t, db, database.WorkspaceResource{
1302+
// JobID: build.JobID,
1303+
// })
1304+
// agent := dbgen.WorkspaceAgent(t, db, database.WorkspaceAgent{
1305+
// ResourceID: resource.ID,
1306+
// })
1307+
// script := dbgen.WorkspaceAgentScript(t, db, database.WorkspaceAgentScript{
1308+
// WorkspaceAgentID: agent.ID,
1309+
// })
1310+
// agentScriptTimings := dbgen.WorkspaceAgentScriptTimings(t, db, script, 5)
1311+
1312+
// // Then: return a response with the expected timings
1313+
// ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1314+
// t.Cleanup(cancel)
1315+
// res, err := client.WorkspaceBuildTimings(ctx, build.ID)
1316+
// require.NoError(t, err)
1317+
// require.Len(t, res.AgentScriptTimings, 5)
1318+
1319+
// for i := range res.AgentScriptTimings {
1320+
// timingRes := res.AgentScriptTimings[i]
1321+
// genTiming := agentScriptTimings[i]
1322+
// require.Equal(t, genTiming.ExitCode, timingRes.ExitCode)
1323+
// require.Equal(t, string(genTiming.Status), timingRes.Status)
1324+
// require.Equal(t, string(genTiming.Stage), timingRes.Stage)
1325+
// require.Equal(t, genTiming.StartedAt.UnixMilli(), timingRes.StartedAt.UnixMilli())
1326+
// require.Equal(t, genTiming.EndedAt.UnixMilli(), timingRes.EndedAt.UnixMilli())
1327+
// }
1328+
// })
1329+
1330+
// t.Run("NoAgentScripts", func(t *testing.T) {
1331+
// t.Parallel()
1332+
1333+
// // When: fetching timings for a build with no agent scripts
1334+
// build := makeBuild()
1335+
// resource := dbgen.WorkspaceResource(t, db, database.WorkspaceResource{
1336+
// JobID: build.JobID,
1337+
// })
1338+
// dbgen.WorkspaceAgent(t, db, database.WorkspaceAgent{
1339+
// ResourceID: resource.ID,
1340+
// })
1341+
1342+
// // Then: return a response with empty agent script timings
1343+
// ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1344+
// t.Cleanup(cancel)
1345+
// res, err := client.WorkspaceBuildTimings(ctx, build.ID)
1346+
// require.NoError(t, err)
1347+
// require.Empty(t, res.AgentScriptTimings)
1348+
// })
1349+
1350+
// // Some workspaces might not have agents. It is improbable, but possible.
1351+
// t.Run("NoAgents", func(t *testing.T) {
1352+
// t.Parallel()
1353+
1354+
// // When: fetching timings for a build with no agents
1355+
// build := makeBuild()
1356+
// dbgen.WorkspaceResource(t, db, database.WorkspaceResource{
1357+
// JobID: build.JobID,
1358+
// })
1359+
1360+
// // Then: return a response with empty agent script timings
1361+
// // trigger build
1362+
// ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1363+
// t.Cleanup(cancel)
1364+
// res, err := client.WorkspaceBuildTimings(ctx, build.ID)
1365+
// require.NoError(t, err)
1366+
// require.Empty(t, res.AgentScriptTimings)
1367+
// })
1368+
// }

0 commit comments

Comments
 (0)