@@ -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