Skip to content

Commit 52b0e83

Browse files
committed
chore: add unit test that replicates failed client conn
This fails on `main`
1 parent 4142fb3 commit 52b0e83

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

provisionerd/provisionerd_test.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -597,6 +597,50 @@ func TestProvisionerd(t *testing.T) {
597597
assert.True(t, didFail.Load(), "should fail the job")
598598
})
599599

600+
// When there is no coderd, the connect loop will never succeed.
601+
t.Run("ShutdownNoCoderd", func(t *testing.T) {
602+
t.Parallel()
603+
done := make(chan struct{})
604+
t.Cleanup(func() {
605+
close(done)
606+
})
607+
608+
connectAttemptedClose := sync.Once{}
609+
connectAttempted := make(chan struct{})
610+
server := createProvisionerd(t, func(ctx context.Context) (proto.DRPCProvisionerDaemonClient, error) {
611+
connectAttemptedClose.Do(func() { close(connectAttempted) })
612+
return nil, fmt.Errorf("client connection always fails")
613+
}, provisionerd.LocalProvisioners{
614+
"someprovisioner": createProvisionerClient(t, done, provisionerTestServer{
615+
plan: func(
616+
s *provisionersdk.Session,
617+
_ *sdkproto.PlanRequest,
618+
canceledOrComplete <-chan struct{},
619+
) *sdkproto.PlanComplete {
620+
s.ProvisionLog(sdkproto.LogLevel_DEBUG, "in progress")
621+
<-canceledOrComplete
622+
return &sdkproto.PlanComplete{
623+
Error: "some error",
624+
}
625+
},
626+
apply: func(
627+
_ *provisionersdk.Session,
628+
_ *sdkproto.ApplyRequest,
629+
_ <-chan struct{},
630+
) *sdkproto.ApplyComplete {
631+
t.Error("should never apply")
632+
return &sdkproto.ApplyComplete{}
633+
},
634+
}),
635+
})
636+
637+
// At least 1 attempt to connect
638+
require.Condition(t, closedWithin(connectAttempted, testutil.WaitShort))
639+
err := server.Shutdown(context.Background(), true)
640+
require.NoError(t, err)
641+
require.NoError(t, server.Close())
642+
})
643+
600644
t.Run("Shutdown", func(t *testing.T) {
601645
t.Parallel()
602646
done := make(chan struct{})

0 commit comments

Comments
 (0)