@@ -12,6 +12,9 @@ import (
12
12
"github.com/sqlc-dev/pqtype"
13
13
"github.com/stretchr/testify/require"
14
14
15
+ "cdr.dev/slog"
16
+ "cdr.dev/slog/sloggers/slogtest"
17
+
15
18
"github.com/coder/coder/v2/coderd/database"
16
19
"github.com/coder/coder/v2/coderd/database/dbauthz"
17
20
"github.com/coder/coder/v2/coderd/database/dbgen"
@@ -43,6 +46,7 @@ type WorkspaceResponse struct {
43
46
// resources.
44
47
type WorkspaceBuildBuilder struct {
45
48
t testing.TB
49
+ logger slog.Logger
46
50
db database.Store
47
51
ps pubsub.Pubsub
48
52
ws database.WorkspaceTable
@@ -62,7 +66,10 @@ type workspaceBuildDisposition struct {
62
66
// Omitting the template ID on a workspace will also generate a new template
63
67
// with a template version.
64
68
func WorkspaceBuild (t testing.TB , db database.Store , ws database.WorkspaceTable ) WorkspaceBuildBuilder {
65
- return WorkspaceBuildBuilder {t : t , db : db , ws : ws }
69
+ return WorkspaceBuildBuilder {
70
+ t : t , db : db , ws : ws ,
71
+ logger : slogtest .Make (t , & slogtest.Options {}).Named ("dbfake" ).Leveled (slog .LevelDebug ),
72
+ }
66
73
}
67
74
68
75
func (b WorkspaceBuildBuilder ) Pubsub (ps pubsub.Pubsub ) WorkspaceBuildBuilder {
@@ -131,6 +138,7 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
131
138
AgentToken : b .agentToken ,
132
139
}
133
140
if b .ws .TemplateID == uuid .Nil {
141
+ b .logger .Debug (context .Background (), "creating template and version" )
134
142
resp .TemplateVersionResponse = TemplateVersion (b .t , b .db ).
135
143
Resources (b .resources ... ).
136
144
Pubsub (b .ps ).
@@ -145,6 +153,7 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
145
153
146
154
// If no template version is set assume the active version.
147
155
if b .seed .TemplateVersionID == uuid .Nil {
156
+ b .logger .Debug (context .Background (), "assuming active template version" )
148
157
template , err := b .db .GetTemplateByID (ownerCtx , b .ws .TemplateID )
149
158
require .NoError (b .t , err )
150
159
require .NotNil (b .t , template .ActiveVersionID , "active version ID unexpectedly nil" )
@@ -156,6 +165,9 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
156
165
// nolint: revive
157
166
b .ws = dbgen .Workspace (b .t , b .db , b .ws )
158
167
resp .Workspace = b .ws
168
+ b .logger .Debug (context .Background (), "created workspace" ,
169
+ slog .F ("name" , resp .Workspace .Name ),
170
+ slog .F ("workspace_id" , resp .Workspace .ID ))
159
171
}
160
172
b .seed .WorkspaceID = b .ws .ID
161
173
b .seed .InitiatorID = takeFirst (b .seed .InitiatorID , b .ws .OwnerID )
@@ -182,10 +194,12 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
182
194
LogsOverflowed : false ,
183
195
})
184
196
require .NoError (b .t , err , "insert job" )
197
+ b .logger .Debug (context .Background (), "inserted provisioner job" , slog .F ("job_id" , job .ID ))
185
198
186
199
if b .dispo .starting {
187
200
// might need to do this multiple times if we got a template version
188
201
// import job as well
202
+ b .logger .Debug (context .Background (), "looping to acquire provisioner job" )
189
203
for {
190
204
j , err := b .db .AcquireProvisionerJob (ownerCtx , database.AcquireProvisionerJobParams {
191
205
OrganizationID : job .OrganizationID ,
@@ -202,10 +216,12 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
202
216
})
203
217
require .NoError (b .t , err , "acquire starting job" )
204
218
if j .ID == job .ID {
219
+ b .logger .Debug (context .Background (), "acquired provisioner job" , slog .F ("job_id" , job .ID ))
205
220
break
206
221
}
207
222
}
208
223
} else {
224
+ b .logger .Debug (context .Background (), "completing the provisioner job" )
209
225
err = b .db .UpdateProvisionerJobWithCompleteByID (ownerCtx , database.UpdateProvisionerJobWithCompleteByIDParams {
210
226
ID : job .ID ,
211
227
UpdatedAt : dbtime .Now (),
@@ -221,18 +237,24 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
221
237
}
222
238
223
239
resp .Build = dbgen .WorkspaceBuild (b .t , b .db , b .seed )
240
+ b .logger .Debug (context .Background (), "created workspace build" ,
241
+ slog .F ("build_id" , resp .Build .ID ),
242
+ slog .F ("workspace_id" , resp .Workspace .ID ),
243
+ slog .F ("build_number" , resp .Build .BuildNumber ))
224
244
225
245
for i := range b .params {
226
246
b .params [i ].WorkspaceBuildID = resp .Build .ID
227
247
}
228
- _ = dbgen .WorkspaceBuildParameters (b .t , b .db , b .params )
248
+ params := dbgen .WorkspaceBuildParameters (b .t , b .db , b .params )
249
+ b .logger .Debug (context .Background (), "created workspace build parameters" , slog .F ("count" , len (params )))
229
250
230
251
if b .ws .Deleted {
231
252
err = b .db .UpdateWorkspaceDeletedByID (ownerCtx , database.UpdateWorkspaceDeletedByIDParams {
232
253
ID : b .ws .ID ,
233
254
Deleted : true ,
234
255
})
235
256
require .NoError (b .t , err )
257
+ b .logger .Debug (context .Background (), "deleted workspace" , slog .F ("workspace_id" , resp .Workspace .ID ))
236
258
}
237
259
238
260
if b .ps != nil {
@@ -243,6 +265,9 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
243
265
require .NoError (b .t , err )
244
266
err = b .ps .Publish (wspubsub .WorkspaceEventChannel (resp .Workspace .OwnerID ), msg )
245
267
require .NoError (b .t , err )
268
+ b .logger .Debug (context .Background (), "published workspace event" ,
269
+ slog .F ("owner_id" , resp .Workspace .ID ),
270
+ slog .F ("owner_id" , resp .Workspace .OwnerID ))
246
271
}
247
272
248
273
agents , err := b .db .GetWorkspaceAgentsByWorkspaceAndBuildNumber (ownerCtx , database.GetWorkspaceAgentsByWorkspaceAndBuildNumberParams {
@@ -260,7 +285,12 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
260
285
err = b .db .DeleteWorkspaceSubAgentByID (ownerCtx , subAgent .ID )
261
286
require .NoError (b .t , err , "delete workspace agent subagent antagonist" )
262
287
263
- b .t .Logf ("inserted deleted subagent antagonist %s (%v) for workspace agent %s (%v)" , subAgent .Name , subAgent .ID , agent .Name , agent .ID )
288
+ b .logger .Debug (context .Background (), "inserted deleted subagent antagonist" ,
289
+ slog .F ("subagent_name" , subAgent .Name ),
290
+ slog .F ("subagent_id" , subAgent .ID ),
291
+ slog .F ("agent_name" , agent .Name ),
292
+ slog .F ("agent_id" , agent .ID ),
293
+ )
264
294
}
265
295
}
266
296
@@ -269,6 +299,7 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
269
299
270
300
type ProvisionerJobResourcesBuilder struct {
271
301
t testing.TB
302
+ logger slog.Logger
272
303
db database.Store
273
304
jobID uuid.UUID
274
305
transition database.WorkspaceTransition
@@ -281,6 +312,7 @@ func ProvisionerJobResources(
281
312
) ProvisionerJobResourcesBuilder {
282
313
return ProvisionerJobResourcesBuilder {
283
314
t : t ,
315
+ logger : slogtest .Make (t , & slogtest.Options {}).Named ("dbfake" ).Leveled (slog .LevelDebug ).With (slog .F ("job_id" , jobID )),
284
316
db : db ,
285
317
jobID : jobID ,
286
318
transition : transition ,
@@ -292,13 +324,17 @@ func (b ProvisionerJobResourcesBuilder) Do() {
292
324
b .t .Helper ()
293
325
transition := b .transition
294
326
if transition == "" {
295
- // Default to start!
327
+ b . logger . Debug ( context . Background (), "setting default transition to start" )
296
328
transition = database .WorkspaceTransitionStart
297
329
}
298
330
for _ , resource := range b .resources {
299
331
//nolint:gocritic // This is only used by tests.
300
332
err := provisionerdserver .InsertWorkspaceResource (ownerCtx , b .db , b .jobID , transition , resource , & telemetry.Snapshot {})
301
333
require .NoError (b .t , err )
334
+ b .logger .Debug (context .Background (), "created workspace resource" ,
335
+ slog .F ("resource_name" , resource .Name ),
336
+ slog .F ("agent_count" , len (resource .Agents )),
337
+ )
302
338
}
303
339
}
304
340
@@ -309,6 +345,7 @@ type TemplateVersionResponse struct {
309
345
310
346
type TemplateVersionBuilder struct {
311
347
t testing.TB
348
+ logger slog.Logger
312
349
db database.Store
313
350
seed database.TemplateVersion
314
351
fileID uuid.UUID
@@ -326,6 +363,7 @@ type TemplateVersionBuilder struct {
326
363
func TemplateVersion (t testing.TB , db database.Store ) TemplateVersionBuilder {
327
364
return TemplateVersionBuilder {
328
365
t : t ,
366
+ logger : slogtest .Make (t , & slogtest.Options {}).Named ("dbfake" ).Leveled (slog .LevelDebug ),
329
367
db : db ,
330
368
promote : true ,
331
369
autoCreateTemplate : true ,
@@ -396,20 +434,30 @@ func (t TemplateVersionBuilder) Do() TemplateVersionResponse {
396
434
Valid : true ,
397
435
UUID : resp .Template .ID ,
398
436
}
437
+ t .logger .Debug (context .Background (), "created template" ,
438
+ slog .F ("organization_id" , resp .Template .OrganizationID ),
439
+ slog .F ("template_id" , resp .Template .CreatedBy ),
440
+ )
399
441
}
400
442
401
443
version := dbgen .TemplateVersion (t .t , t .db , t .seed )
444
+ t .logger .Debug (context .Background (), "created template version" ,
445
+ slog .F ("template_version_id" , version .ID ),
446
+ )
402
447
if t .promote {
403
448
err := t .db .UpdateTemplateActiveVersionByID (ownerCtx , database.UpdateTemplateActiveVersionByIDParams {
404
449
ID : t .seed .TemplateID .UUID ,
405
450
ActiveVersionID : t .seed .ID ,
406
451
UpdatedAt : dbtime .Now (),
407
452
})
408
453
require .NoError (t .t , err )
454
+ t .logger .Debug (context .Background (), "promoted template version" ,
455
+ slog .F ("template_version_id" , t .seed .ID ),
456
+ )
409
457
}
410
458
411
459
for _ , preset := range t .presets {
412
- dbgen .Preset (t .t , t .db , database.InsertPresetParams {
460
+ prst := dbgen .Preset (t .t , t .db , database.InsertPresetParams {
413
461
ID : preset .ID ,
414
462
TemplateVersionID : version .ID ,
415
463
Name : preset .Name ,
@@ -421,14 +469,19 @@ func (t TemplateVersionBuilder) Do() TemplateVersionResponse {
421
469
Description : preset .Description ,
422
470
Icon : preset .Icon ,
423
471
})
472
+ t .logger .Debug (context .Background (), "added preset" ,
473
+ slog .F ("preset_id" , prst .ID ),
474
+ slog .F ("preset_name" , prst .Name ),
475
+ )
424
476
}
425
477
426
478
for _ , presetParam := range t .presetParams {
427
- dbgen .PresetParameter (t .t , t .db , database.InsertPresetParametersParams {
479
+ prm := dbgen .PresetParameter (t .t , t .db , database.InsertPresetParametersParams {
428
480
TemplateVersionPresetID : presetParam .TemplateVersionPresetID ,
429
481
Names : []string {presetParam .Name },
430
482
Values : []string {presetParam .Value },
431
483
})
484
+ t .logger .Debug (context .Background (), "added preset parameter" , slog .F ("param_name" , prm [0 ].Name ))
432
485
}
433
486
434
487
payload , err := json .Marshal (provisionerdserver.TemplateVersionImportJob {
@@ -448,6 +501,7 @@ func (t TemplateVersionBuilder) Do() TemplateVersionResponse {
448
501
},
449
502
FileID : t .fileID ,
450
503
})
504
+ t .logger .Debug (context .Background (), "added template version import job" , slog .F ("job_id" , job .ID ))
451
505
452
506
t .seed .JobID = job .ID
453
507
0 commit comments