@@ -12,6 +12,9 @@ import (
1212"github.com/sqlc-dev/pqtype"
1313"github.com/stretchr/testify/require"
1414
15+ "cdr.dev/slog"
16+ "cdr.dev/slog/sloggers/slogtest"
17+
1518"github.com/coder/coder/v2/coderd/database"
1619"github.com/coder/coder/v2/coderd/database/dbauthz"
1720"github.com/coder/coder/v2/coderd/database/dbgen"
@@ -43,6 +46,7 @@ type WorkspaceResponse struct {
4346// resources.
4447type WorkspaceBuildBuilder struct {
4548t testing.TB
49+ logger slog.Logger
4650db database.Store
4751ps pubsub.Pubsub
4852ws database.WorkspaceTable
@@ -62,7 +66,10 @@ type workspaceBuildDisposition struct {
6266// Omitting the template ID on a workspace will also generate a new template
6367// with a template version.
6468func 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+ }
6673}
6774
6875func (b WorkspaceBuildBuilder )Pubsub (ps pubsub.Pubsub )WorkspaceBuildBuilder {
@@ -131,6 +138,7 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
131138AgentToken :b .agentToken ,
132139}
133140if b .ws .TemplateID == uuid .Nil {
141+ b .logger .Debug (context .Background (),"creating template and version" )
134142resp .TemplateVersionResponse = TemplateVersion (b .t ,b .db ).
135143Resources (b .resources ... ).
136144Pubsub (b .ps ).
@@ -145,6 +153,7 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
145153
146154// If no template version is set assume the active version.
147155if b .seed .TemplateVersionID == uuid .Nil {
156+ b .logger .Debug (context .Background (),"assuming active template version" )
148157template ,err := b .db .GetTemplateByID (ownerCtx ,b .ws .TemplateID )
149158require .NoError (b .t ,err )
150159require .NotNil (b .t ,template .ActiveVersionID ,"active version ID unexpectedly nil" )
@@ -156,6 +165,9 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
156165// nolint: revive
157166b .ws = dbgen .Workspace (b .t ,b .db ,b .ws )
158167resp .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 ))
159171}
160172b .seed .WorkspaceID = b .ws .ID
161173b .seed .InitiatorID = takeFirst (b .seed .InitiatorID ,b .ws .OwnerID )
@@ -182,10 +194,12 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
182194LogsOverflowed :false ,
183195})
184196require .NoError (b .t ,err ,"insert job" )
197+ b .logger .Debug (context .Background (),"inserted provisioner job" ,slog .F ("job_id" ,job .ID ))
185198
186199if b .dispo .starting {
187200// might need to do this multiple times if we got a template version
188201// import job as well
202+ b .logger .Debug (context .Background (),"looping to acquire provisioner job" )
189203for {
190204j ,err := b .db .AcquireProvisionerJob (ownerCtx , database.AcquireProvisionerJobParams {
191205OrganizationID :job .OrganizationID ,
@@ -202,10 +216,12 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
202216})
203217require .NoError (b .t ,err ,"acquire starting job" )
204218if j .ID == job .ID {
219+ b .logger .Debug (context .Background (),"acquired provisioner job" ,slog .F ("job_id" ,job .ID ))
205220break
206221}
207222}
208223}else {
224+ b .logger .Debug (context .Background (),"completing the provisioner job" )
209225err = b .db .UpdateProvisionerJobWithCompleteByID (ownerCtx , database.UpdateProvisionerJobWithCompleteByIDParams {
210226ID :job .ID ,
211227UpdatedAt :dbtime .Now (),
@@ -221,18 +237,24 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
221237}
222238
223239resp .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 ))
224244
225245for i := range b .params {
226246b .params [i ].WorkspaceBuildID = resp .Build .ID
227247}
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 )))
229250
230251if b .ws .Deleted {
231252err = b .db .UpdateWorkspaceDeletedByID (ownerCtx , database.UpdateWorkspaceDeletedByIDParams {
232253ID :b .ws .ID ,
233254Deleted :true ,
234255})
235256require .NoError (b .t ,err )
257+ b .logger .Debug (context .Background (),"deleted workspace" ,slog .F ("workspace_id" ,resp .Workspace .ID ))
236258}
237259
238260if b .ps != nil {
@@ -243,6 +265,9 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
243265require .NoError (b .t ,err )
244266err = b .ps .Publish (wspubsub .WorkspaceEventChannel (resp .Workspace .OwnerID ),msg )
245267require .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 ))
246271}
247272
248273agents ,err := b .db .GetWorkspaceAgentsByWorkspaceAndBuildNumber (ownerCtx , database.GetWorkspaceAgentsByWorkspaceAndBuildNumberParams {
@@ -260,7 +285,12 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
260285err = b .db .DeleteWorkspaceSubAgentByID (ownerCtx ,subAgent .ID )
261286require .NoError (b .t ,err ,"delete workspace agent subagent antagonist" )
262287
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+ )
264294}
265295}
266296
@@ -269,6 +299,7 @@ func (b WorkspaceBuildBuilder) Do() WorkspaceResponse {
269299
270300type ProvisionerJobResourcesBuilder struct {
271301t testing.TB
302+ logger slog.Logger
272303db database.Store
273304jobID uuid.UUID
274305transition database.WorkspaceTransition
@@ -281,6 +312,7 @@ func ProvisionerJobResources(
281312)ProvisionerJobResourcesBuilder {
282313return ProvisionerJobResourcesBuilder {
283314t :t ,
315+ logger :slogtest .Make (t ,& slogtest.Options {}).Named ("dbfake" ).Leveled (slog .LevelDebug ).With (slog .F ("job_id" ,jobID )),
284316db :db ,
285317jobID :jobID ,
286318transition :transition ,
@@ -292,13 +324,17 @@ func (b ProvisionerJobResourcesBuilder) Do() {
292324b .t .Helper ()
293325transition := b .transition
294326if transition == "" {
295- // Default to start!
327+ b . logger . Debug ( context . Background (), "setting default transition to start" )
296328transition = database .WorkspaceTransitionStart
297329}
298330for _ ,resource := range b .resources {
299331//nolint:gocritic // This is only used by tests.
300332err := provisionerdserver .InsertWorkspaceResource (ownerCtx ,b .db ,b .jobID ,transition ,resource ,& telemetry.Snapshot {})
301333require .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+ )
302338}
303339}
304340
@@ -309,6 +345,7 @@ type TemplateVersionResponse struct {
309345
310346type TemplateVersionBuilder struct {
311347t testing.TB
348+ logger slog.Logger
312349db database.Store
313350seed database.TemplateVersion
314351fileID uuid.UUID
@@ -326,6 +363,7 @@ type TemplateVersionBuilder struct {
326363func TemplateVersion (t testing.TB ,db database.Store )TemplateVersionBuilder {
327364return TemplateVersionBuilder {
328365t :t ,
366+ logger :slogtest .Make (t ,& slogtest.Options {}).Named ("dbfake" ).Leveled (slog .LevelDebug ),
329367db :db ,
330368promote :true ,
331369autoCreateTemplate :true ,
@@ -396,20 +434,30 @@ func (t TemplateVersionBuilder) Do() TemplateVersionResponse {
396434Valid :true ,
397435UUID :resp .Template .ID ,
398436}
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+ )
399441}
400442
401443version := 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+ )
402447if t .promote {
403448err := t .db .UpdateTemplateActiveVersionByID (ownerCtx , database.UpdateTemplateActiveVersionByIDParams {
404449ID :t .seed .TemplateID .UUID ,
405450ActiveVersionID :t .seed .ID ,
406451UpdatedAt :dbtime .Now (),
407452})
408453require .NoError (t .t ,err )
454+ t .logger .Debug (context .Background (),"promoted template version" ,
455+ slog .F ("template_version_id" ,t .seed .ID ),
456+ )
409457}
410458
411459for _ ,preset := range t .presets {
412- dbgen .Preset (t .t ,t .db , database.InsertPresetParams {
460+ prst := dbgen .Preset (t .t ,t .db , database.InsertPresetParams {
413461ID :preset .ID ,
414462TemplateVersionID :version .ID ,
415463Name :preset .Name ,
@@ -421,14 +469,19 @@ func (t TemplateVersionBuilder) Do() TemplateVersionResponse {
421469Description :preset .Description ,
422470Icon :preset .Icon ,
423471})
472+ t .logger .Debug (context .Background (),"added preset" ,
473+ slog .F ("preset_id" ,prst .ID ),
474+ slog .F ("preset_name" ,prst .Name ),
475+ )
424476}
425477
426478for _ ,presetParam := range t .presetParams {
427- dbgen .PresetParameter (t .t ,t .db , database.InsertPresetParametersParams {
479+ prm := dbgen .PresetParameter (t .t ,t .db , database.InsertPresetParametersParams {
428480TemplateVersionPresetID :presetParam .TemplateVersionPresetID ,
429481Names : []string {presetParam .Name },
430482Values : []string {presetParam .Value },
431483})
484+ t .logger .Debug (context .Background (),"added preset parameter" ,slog .F ("param_name" ,prm [0 ].Name ))
432485}
433486
434487payload ,err := json .Marshal (provisionerdserver.TemplateVersionImportJob {
@@ -448,6 +501,7 @@ func (t TemplateVersionBuilder) Do() TemplateVersionResponse {
448501},
449502FileID :t .fileID ,
450503})
504+ t .logger .Debug (context .Background (),"added template version import job" ,slog .F ("job_id" ,job .ID ))
451505
452506t .seed .JobID = job .ID
453507