Skip to content

Commit dfa73b3

Browse files
committed
Add workspace builds
1 parent a59a7ed commit dfa73b3

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

coderd/provisionerdserver/provisionerdserver_test.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,60 @@ func TestFailJob(t *testing.T) {
442442
})
443443
require.ErrorContains(t, err, "job already completed")
444444
})
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+
})
445499
}
446500

447501
func setup(t *testing.T) *provisionerdserver.Server {

0 commit comments

Comments
 (0)