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