Skip to content

Commit 20c05f8

Browse files
committed
fix: additional provisionerd test double closes
https://github.com/coder/coder/runs/6266376800?check_suite_focus=true
1 parent 5dcaf94 commit 20c05f8

File tree

1 file changed

+48
-37
lines changed

1 file changed

+48
-37
lines changed

provisionerd/provisionerd_test.go

Lines changed: 48 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,11 @@ func TestProvisionerd(t *testing.T) {
130130
// Ensures tars with "../../../etc/passwd" as the path
131131
// are not allowed to run, and will fail the job.
132132
t.Parallel()
133-
var complete sync.Once
134-
completeChan := make(chan struct{})
133+
var (
134+
completeChan = make(chan struct{})
135+
completeOnce sync.Once
136+
)
137+
135138
closer := createProvisionerd(t, func(ctx context.Context) (proto.DRPCProvisionerDaemonClient, error) {
136139
return createProvisionerDaemonClient(t, provisionerDaemonTestServer{
137140
acquireJob: func(ctx context.Context, _ *proto.Empty) (*proto.AcquiredJob, error) {
@@ -150,9 +153,7 @@ func TestProvisionerd(t *testing.T) {
150153
},
151154
updateJob: noopUpdateJob,
152155
failJob: func(ctx context.Context, job *proto.FailedJob) (*proto.Empty, error) {
153-
complete.Do(func() {
154-
close(completeChan)
155-
})
156+
completeOnce.Do(func() { close(completeChan) })
156157
return &proto.Empty{}, nil
157158
},
158159
}), nil
@@ -165,8 +166,11 @@ func TestProvisionerd(t *testing.T) {
165166

166167
t.Run("RunningPeriodicUpdate", func(t *testing.T) {
167168
t.Parallel()
168-
var complete sync.Once
169-
completeChan := make(chan struct{})
169+
var (
170+
completeChan = make(chan struct{})
171+
completeOnce sync.Once
172+
)
173+
170174
closer := createProvisionerd(t, func(ctx context.Context) (proto.DRPCProvisionerDaemonClient, error) {
171175
return createProvisionerDaemonClient(t, provisionerDaemonTestServer{
172176
acquireJob: func(ctx context.Context, _ *proto.Empty) (*proto.AcquiredJob, error) {
@@ -184,9 +188,7 @@ func TestProvisionerd(t *testing.T) {
184188
}, nil
185189
},
186190
updateJob: func(ctx context.Context, update *proto.UpdateJobRequest) (*proto.UpdateJobResponse, error) {
187-
complete.Do(func() {
188-
close(completeChan)
189-
})
191+
completeOnce.Do(func() { close(completeChan) })
190192
return &proto.UpdateJobResponse{}, nil
191193
},
192194
failJob: func(ctx context.Context, job *proto.FailedJob) (*proto.Empty, error) {
@@ -212,14 +214,15 @@ func TestProvisionerd(t *testing.T) {
212214
didLog atomic.Bool
213215
didAcquireJob atomic.Bool
214216
didDryRun atomic.Bool
217+
completeChan = make(chan struct{})
218+
completeOnce sync.Once
215219
)
216-
var complete sync.Once
217-
completeChan := make(chan struct{})
220+
218221
closer := createProvisionerd(t, func(ctx context.Context) (proto.DRPCProvisionerDaemonClient, error) {
219222
return createProvisionerDaemonClient(t, provisionerDaemonTestServer{
220223
acquireJob: func(ctx context.Context, _ *proto.Empty) (*proto.AcquiredJob, error) {
221224
if didAcquireJob.Load() {
222-
complete.Do(func() {
225+
completeOnce.Do(func() {
223226
close(completeChan)
224227
})
225228
return &proto.AcquiredJob{}, nil
@@ -315,16 +318,15 @@ func TestProvisionerd(t *testing.T) {
315318
didComplete atomic.Bool
316319
didLog atomic.Bool
317320
didAcquireJob atomic.Bool
321+
completeChan = make(chan struct{})
322+
completeOnce sync.Once
318323
)
319-
var complete sync.Once
320-
completeChan := make(chan struct{})
324+
321325
closer := createProvisionerd(t, func(ctx context.Context) (proto.DRPCProvisionerDaemonClient, error) {
322326
return createProvisionerDaemonClient(t, provisionerDaemonTestServer{
323327
acquireJob: func(ctx context.Context, _ *proto.Empty) (*proto.AcquiredJob, error) {
324328
if didAcquireJob.Load() {
325-
complete.Do(func() {
326-
close(completeChan)
327-
})
329+
completeOnce.Do(func() { close(completeChan) })
328330
return &proto.AcquiredJob{}, nil
329331
}
330332
didAcquireJob.Store(true)
@@ -386,13 +388,15 @@ func TestProvisionerd(t *testing.T) {
386388
var (
387389
didFail atomic.Bool
388390
didAcquireJob atomic.Bool
391+
completeChan = make(chan struct{})
392+
completeOnce sync.Once
389393
)
390-
completeChan := make(chan struct{})
394+
391395
closer := createProvisionerd(t, func(ctx context.Context) (proto.DRPCProvisionerDaemonClient, error) {
392396
return createProvisionerDaemonClient(t, provisionerDaemonTestServer{
393397
acquireJob: func(ctx context.Context, _ *proto.Empty) (*proto.AcquiredJob, error) {
394398
if didAcquireJob.Load() {
395-
close(completeChan)
399+
completeOnce.Do(func() { close(completeChan) })
396400
return &proto.AcquiredJob{}, nil
397401
}
398402
didAcquireJob.Store(true)
@@ -585,10 +589,15 @@ func TestProvisionerd(t *testing.T) {
585589

586590
t.Run("ReconnectAndFail", func(t *testing.T) {
587591
t.Parallel()
588-
var second atomic.Bool
589-
failChan := make(chan struct{})
590-
failedChan := make(chan struct{})
591-
completeChan := make(chan struct{})
592+
var (
593+
second atomic.Bool
594+
failChan = make(chan struct{})
595+
failOnce sync.Once
596+
failedChan = make(chan struct{})
597+
failedOnce sync.Once
598+
completeChan = make(chan struct{})
599+
completeOnce sync.Once
600+
)
592601
server := createProvisionerd(t, func(ctx context.Context) (proto.DRPCProvisionerDaemonClient, error) {
593602
client := createProvisionerDaemonClient(t, provisionerDaemonTestServer{
594603
acquireJob: func(ctx context.Context, _ *proto.Empty) (*proto.AcquiredJob, error) {
@@ -613,10 +622,10 @@ func TestProvisionerd(t *testing.T) {
613622
},
614623
failJob: func(ctx context.Context, job *proto.FailedJob) (*proto.Empty, error) {
615624
if second.Load() {
616-
close(completeChan)
625+
completeOnce.Do(func() { close(completeChan) })
617626
return &proto.Empty{}, nil
618627
}
619-
close(failChan)
628+
failOnce.Do(func() { close(failChan) })
620629
<-failedChan
621630
return &proto.Empty{}, nil
622631
},
@@ -626,7 +635,7 @@ func TestProvisionerd(t *testing.T) {
626635
<-failChan
627636
_ = client.DRPCConn().Close()
628637
second.Store(true)
629-
close(failedChan)
638+
failedOnce.Do(func() { close(failedChan) })
630639
}()
631640
}
632641
return client, nil
@@ -651,18 +660,20 @@ func TestProvisionerd(t *testing.T) {
651660

652661
t.Run("ReconnectAndComplete", func(t *testing.T) {
653662
t.Parallel()
654-
var completed sync.Once
655-
var second atomic.Bool
656-
failChan := make(chan struct{})
657-
failedChan := make(chan struct{})
658-
completeChan := make(chan struct{})
663+
var (
664+
second atomic.Bool
665+
failChan = make(chan struct{})
666+
failOnce sync.Once
667+
failedChan = make(chan struct{})
668+
failedOnce sync.Once
669+
completeChan = make(chan struct{})
670+
completeOnce sync.Once
671+
)
659672
server := createProvisionerd(t, func(ctx context.Context) (proto.DRPCProvisionerDaemonClient, error) {
660673
client := createProvisionerDaemonClient(t, provisionerDaemonTestServer{
661674
acquireJob: func(ctx context.Context, _ *proto.Empty) (*proto.AcquiredJob, error) {
662675
if second.Load() {
663-
completed.Do(func() {
664-
close(completeChan)
665-
})
676+
completeOnce.Do(func() { close(completeChan) })
666677
return &proto.AcquiredJob{}, nil
667678
}
668679
return &proto.AcquiredJob{
@@ -688,7 +699,7 @@ func TestProvisionerd(t *testing.T) {
688699
if second.Load() {
689700
return &proto.Empty{}, nil
690701
}
691-
close(failChan)
702+
failOnce.Do(func() { close(failChan) })
692703
<-failedChan
693704
return &proto.Empty{}, nil
694705
},
@@ -698,7 +709,7 @@ func TestProvisionerd(t *testing.T) {
698709
<-failChan
699710
_ = client.DRPCConn().Close()
700711
second.Store(true)
701-
close(failedChan)
712+
failedOnce.Do(func() { close(failedChan) })
702713
}()
703714
}
704715
return client, nil

0 commit comments

Comments
 (0)