@@ -442,6 +442,60 @@ func TestFailJob(t *testing.T) {
442
442
})
443
443
require .ErrorContains (t , err , "job already completed" )
444
444
})
445
+ t .Run ("WorkspaceBuild" , func (t * testing.T ) {
446
+ t .Parallel ()
447
+ srv := setup (t )
448
+ build , err := srv .Database .InsertWorkspaceBuild (ctx , database.InsertWorkspaceBuildParams {
449
+ ID : uuid .New (),
450
+ })
451
+ require .NoError (t , err )
452
+ input , err := json .Marshal (provisionerdserver.WorkspaceProvisionJob {
453
+ WorkspaceBuildID : build .ID ,
454
+ })
455
+ require .NoError (t , err )
456
+ job , err := srv .Database .InsertProvisionerJob (ctx , database.InsertProvisionerJobParams {
457
+ ID : uuid .New (),
458
+ Provisioner : database .ProvisionerTypeEcho ,
459
+ Input : input ,
460
+ })
461
+ require .NoError (t , err )
462
+ _ , err = srv .Database .AcquireProvisionerJob (ctx , database.AcquireProvisionerJobParams {
463
+ WorkerID : uuid.NullUUID {
464
+ UUID : srv .ID ,
465
+ Valid : true ,
466
+ },
467
+ Types : []database.ProvisionerType {database .ProvisionerTypeEcho },
468
+ })
469
+ require .NoError (t , err )
470
+
471
+ publishedWorkspace := make (chan struct {})
472
+ closeWorkspaceSubscribe , err := srv .Pubsub .Subscribe (codersdk .WorkspaceNotifyChannel (build .WorkspaceID ), func (_ context.Context , _ []byte ) {
473
+ close (publishedWorkspace )
474
+ })
475
+ require .NoError (t , err )
476
+ defer closeWorkspaceSubscribe ()
477
+ publishedLogs := make (chan struct {})
478
+ closeLogsSubscribe , err := srv .Pubsub .Subscribe (provisionerdserver .ProvisionerJobLogsNotifyChannel (job .ID ), func (_ context.Context , _ []byte ) {
479
+ close (publishedLogs )
480
+ })
481
+ require .NoError (t , err )
482
+ defer closeLogsSubscribe ()
483
+
484
+ _ , err = srv .FailJob (ctx , & proto.FailedJob {
485
+ JobId : job .ID .String (),
486
+ Type : & proto.FailedJob_WorkspaceBuild_ {
487
+ WorkspaceBuild : & proto.FailedJob_WorkspaceBuild {
488
+ State : []byte ("some state" ),
489
+ },
490
+ },
491
+ })
492
+ require .NoError (t , err )
493
+ <- publishedWorkspace
494
+ <- publishedLogs
495
+ build , err = srv .Database .GetWorkspaceBuildByID (ctx , build .ID )
496
+ require .NoError (t , err )
497
+ require .Equal (t , "some state" , string (build .ProvisionerState ))
498
+ })
445
499
}
446
500
447
501
func setup (t * testing.T ) * provisionerdserver.Server {
0 commit comments