@@ -248,12 +248,18 @@ func WorkspaceAgentScriptTiming(t testing.TB, db database.Store, orig database.W
248
248
func Workspace (t testing.TB , db database.Store , orig database.WorkspaceTable ) database.WorkspaceTable {
249
249
t .Helper ()
250
250
251
+ var defOrgID uuid.UUID
252
+ if orig .OrganizationID == uuid .Nil {
253
+ defOrg , _ := db .GetDefaultOrganization (genCtx )
254
+ defOrgID = defOrg .ID
255
+ }
256
+
251
257
workspace , err := db .InsertWorkspace (genCtx , database.InsertWorkspaceParams {
252
258
ID : takeFirst (orig .ID , uuid .New ()),
253
259
OwnerID : takeFirst (orig .OwnerID , uuid .New ()),
254
260
CreatedAt : takeFirst (orig .CreatedAt , dbtime .Now ()),
255
261
UpdatedAt : takeFirst (orig .UpdatedAt , dbtime .Now ()),
256
- OrganizationID : takeFirst (orig .OrganizationID , uuid .New ()),
262
+ OrganizationID : takeFirst (orig .OrganizationID , defOrgID , uuid .New ()),
257
263
TemplateID : takeFirst (orig .TemplateID , uuid .New ()),
258
264
LastUsedAt : takeFirst (orig .LastUsedAt , dbtime .Now ()),
259
265
Name : takeFirst (orig .Name , testutil .GetRandomName (t )),
@@ -505,9 +511,27 @@ func GroupMember(t testing.TB, db database.Store, member database.GroupMemberTab
505
511
506
512
// ProvisionerDaemon creates a provisioner daemon as far as the database is concerned. It does not run a provisioner daemon.
507
513
// If no key is provided, it will create one.
508
- func ProvisionerDaemon (t testing.TB , db database.Store , daemon database.ProvisionerDaemon ) database.ProvisionerDaemon {
514
+ func ProvisionerDaemon (t testing.TB , db database.Store , orig database.ProvisionerDaemon ) database.ProvisionerDaemon {
509
515
t .Helper ()
510
516
517
+ var defOrgID uuid.UUID
518
+ if orig .OrganizationID == uuid .Nil {
519
+ defOrg , _ := db .GetDefaultOrganization (genCtx )
520
+ defOrgID = defOrg .ID
521
+ }
522
+
523
+ daemon := database.UpsertProvisionerDaemonParams {
524
+ Name : takeFirst (orig .Name , testutil .GetRandomName (t )),
525
+ OrganizationID : takeFirst (orig .OrganizationID , defOrgID , uuid .New ()),
526
+ CreatedAt : takeFirst (orig .CreatedAt , dbtime .Now ()),
527
+ Provisioners : takeFirstSlice (orig .Provisioners , []database.ProvisionerType {database .ProvisionerTypeEcho }),
528
+ Tags : takeFirstMap (orig .Tags , database.StringMap {"owner" : "" , "scope" : "organization" }),
529
+ KeyID : takeFirst (orig .KeyID , uuid .Nil ),
530
+ LastSeenAt : takeFirst (orig .LastSeenAt , sql.NullTime {Time : dbtime .Now (), Valid : true }),
531
+ Version : takeFirst (orig .Version , "v0.0.0" ),
532
+ APIVersion : takeFirst (orig .APIVersion , "1.1" ),
533
+ }
534
+
511
535
if daemon .KeyID == uuid .Nil {
512
536
key , err := db .InsertProvisionerKey (genCtx , database.InsertProvisionerKeyParams {
513
537
ID : uuid .New (),
@@ -521,24 +545,7 @@ func ProvisionerDaemon(t testing.TB, db database.Store, daemon database.Provisio
521
545
daemon .KeyID = key .ID
522
546
}
523
547
524
- if daemon .CreatedAt .IsZero () {
525
- daemon .CreatedAt = dbtime .Now ()
526
- }
527
- if daemon .Name == "" {
528
- daemon .Name = "test-daemon"
529
- }
530
-
531
- d , err := db .UpsertProvisionerDaemon (genCtx , database.UpsertProvisionerDaemonParams {
532
- Name : daemon .Name ,
533
- OrganizationID : daemon .OrganizationID ,
534
- CreatedAt : daemon .CreatedAt ,
535
- Provisioners : daemon .Provisioners ,
536
- Tags : daemon .Tags ,
537
- KeyID : daemon .KeyID ,
538
- LastSeenAt : daemon .LastSeenAt ,
539
- Version : daemon .Version ,
540
- APIVersion : daemon .APIVersion ,
541
- })
548
+ d , err := db .UpsertProvisionerDaemon (genCtx , daemon )
542
549
require .NoError (t , err )
543
550
return d
544
551
}
@@ -556,12 +563,10 @@ func ProvisionerJob(t testing.TB, db database.Store, ps pubsub.Pubsub, orig data
556
563
557
564
jobID := takeFirst (orig .ID , uuid .New ())
558
565
// Always set some tags to prevent Acquire from grabbing jobs it should not.
559
- if ! orig .StartedAt .Time .IsZero () {
560
- if orig .Tags == nil {
561
- orig .Tags = make (database.StringMap )
562
- }
566
+ tags := takeFirstMap (orig .Tags , database.StringMap {"owner" : "" , "scope" : "organization" })
567
+ if orig .Tags == nil && ! orig .StartedAt .Time .IsZero () {
563
568
// Make sure when we acquire the job, we only get this one.
564
- orig . Tags [jobID .String ()] = "true"
569
+ tags [jobID .String ()] = "true"
565
570
}
566
571
567
572
job , err := db .InsertProvisionerJob (genCtx , database.InsertProvisionerJobParams {
@@ -575,7 +580,7 @@ func ProvisionerJob(t testing.TB, db database.Store, ps pubsub.Pubsub, orig data
575
580
FileID : takeFirst (orig .FileID , uuid .New ()),
576
581
Type : takeFirst (orig .Type , database .ProvisionerJobTypeWorkspaceBuild ),
577
582
Input : takeFirstSlice (orig .Input , []byte ("{}" )),
578
- Tags : orig . Tags ,
583
+ Tags : tags ,
579
584
TraceMetadata : pqtype.NullRawMessage {},
580
585
})
581
586
require .NoError (t , err , "insert job" )
@@ -587,17 +592,18 @@ func ProvisionerJob(t testing.TB, db database.Store, ps pubsub.Pubsub, orig data
587
592
job , err = db .AcquireProvisionerJob (genCtx , database.AcquireProvisionerJobParams {
588
593
StartedAt : orig .StartedAt ,
589
594
OrganizationID : job .OrganizationID ,
590
- Types : []database.ProvisionerType {database . ProvisionerTypeEcho },
591
- ProvisionerTags : must (json .Marshal (orig . Tags )),
592
- WorkerID : uuid.NullUUID {},
595
+ Types : []database.ProvisionerType {job . Provisioner },
596
+ ProvisionerTags : must (json .Marshal (tags )),
597
+ WorkerID : takeFirst ( orig . WorkerID , uuid.NullUUID {}) ,
593
598
})
594
599
require .NoError (t , err )
595
600
// There is no easy way to make sure we acquire the correct job.
596
601
require .Equal (t , jobID , job .ID , "acquired incorrect job" )
602
+ fmt .Printf ("%#v\n " , job )
597
603
}
598
604
599
605
if ! orig .CompletedAt .Time .IsZero () || orig .Error .String != "" {
600
- err : = db .UpdateProvisionerJobWithCompleteByID (genCtx , database.UpdateProvisionerJobWithCompleteByIDParams {
606
+ err = db .UpdateProvisionerJobWithCompleteByID (genCtx , database.UpdateProvisionerJobWithCompleteByIDParams {
601
607
ID : jobID ,
602
608
UpdatedAt : job .UpdatedAt ,
603
609
CompletedAt : orig .CompletedAt ,
@@ -607,7 +613,7 @@ func ProvisionerJob(t testing.TB, db database.Store, ps pubsub.Pubsub, orig data
607
613
require .NoError (t , err )
608
614
}
609
615
if ! orig .CanceledAt .Time .IsZero () {
610
- err : = db .UpdateProvisionerJobWithCancelByID (genCtx , database.UpdateProvisionerJobWithCancelByIDParams {
616
+ err = db .UpdateProvisionerJobWithCancelByID (genCtx , database.UpdateProvisionerJobWithCancelByIDParams {
611
617
ID : jobID ,
612
618
CanceledAt : orig .CanceledAt ,
613
619
CompletedAt : orig .CompletedAt ,
@@ -616,7 +622,7 @@ func ProvisionerJob(t testing.TB, db database.Store, ps pubsub.Pubsub, orig data
616
622
}
617
623
618
624
job , err = db .GetProvisionerJobByID (genCtx , jobID )
619
- require .NoError (t , err )
625
+ require .NoError (t , err , "get job: %s" , jobID . String () )
620
626
621
627
return job
622
628
}
@@ -1108,6 +1114,12 @@ func takeFirstSlice[T any](values ...[]T) []T {
1108
1114
})
1109
1115
}
1110
1116
1117
+ func takeFirstMap [T , E comparable ](values ... map [T ]E ) map [T ]E {
1118
+ return takeFirstF (values , func (v map [T ]E ) bool {
1119
+ return v != nil
1120
+ })
1121
+ }
1122
+
1111
1123
// takeFirstF takes the first value that returns true
1112
1124
func takeFirstF [Value any ](values []Value , take func (v Value ) bool ) Value {
1113
1125
for _ , v := range values {
0 commit comments