@@ -23,8 +23,6 @@ import (
23
23
"github.com/coder/coder/v2/coderd/coderdtest/oidctest"
24
24
"github.com/coder/coder/v2/coderd/database"
25
25
"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"
28
26
"github.com/coder/coder/v2/coderd/database/dbtime"
29
27
"github.com/coder/coder/v2/coderd/externalauth"
30
28
"github.com/coder/coder/v2/coderd/rbac"
@@ -1183,188 +1181,188 @@ func TestPostWorkspaceBuild(t *testing.T) {
1183
1181
})
1184
1182
}
1185
1183
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