Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitfa3f633

Browse files
coadlerkylecarbs
authored andcommitted
fix: additional provisionerd test double closes (#1267)
1 parent7ed6c2f commitfa3f633

File tree

1 file changed

+54
-45
lines changed

1 file changed

+54
-45
lines changed

‎provisionerd/provisionerd_test.go

Lines changed: 54 additions & 45 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-
varcomplete sync.Once
134-
completeChan:=make(chanstruct{})
133+
var (
134+
completeChan=make(chanstruct{})
135+
completeOnce sync.Once
136+
)
137+
135138
closer:=createProvisionerd(t,func(ctx context.Context) (proto.DRPCProvisionerDaemonClient,error) {
136139
returncreateProvisionerDaemonClient(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-
varcomplete sync.Once
169-
completeChan:=make(chanstruct{})
169+
var (
170+
completeChan=make(chanstruct{})
171+
completeOnce sync.Once
172+
)
173+
170174
closer:=createProvisionerd(t,func(ctx context.Context) (proto.DRPCProvisionerDaemonClient,error) {
171175
returncreateProvisionerDaemonClient(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,19 +214,18 @@ func TestProvisionerd(t *testing.T) {
212214
didLog atomic.Bool
213215
didAcquireJob atomic.Bool
214216
didDryRun atomic.Bool
217+
completeChan=make(chanstruct{})
218+
completeOnce sync.Once
215219
)
216-
varcomplete sync.Once
217-
completeChan:=make(chanstruct{})
220+
218221
closer:=createProvisionerd(t,func(ctx context.Context) (proto.DRPCProvisionerDaemonClient,error) {
219222
returncreateProvisionerDaemonClient(t,provisionerDaemonTestServer{
220223
acquireJob:func(ctx context.Context,_*proto.Empty) (*proto.AcquiredJob,error) {
221-
ifdidAcquireJob.Load() {
222-
complete.Do(func() {
223-
close(completeChan)
224-
})
224+
if!didAcquireJob.CAS(false,true) {
225+
completeOnce.Do(func() {close(completeChan) })
225226
return&proto.AcquiredJob{},nil
226227
}
227-
didAcquireJob.Store(true)
228+
228229
return&proto.AcquiredJob{
229230
JobId:"test",
230231
Provisioner:"someprovisioner",
@@ -315,19 +316,18 @@ func TestProvisionerd(t *testing.T) {
315316
didComplete atomic.Bool
316317
didLog atomic.Bool
317318
didAcquireJob atomic.Bool
319+
completeChan=make(chanstruct{})
320+
completeOnce sync.Once
318321
)
319-
varcomplete sync.Once
320-
completeChan:=make(chanstruct{})
322+
321323
closer:=createProvisionerd(t,func(ctx context.Context) (proto.DRPCProvisionerDaemonClient,error) {
322324
returncreateProvisionerDaemonClient(t,provisionerDaemonTestServer{
323325
acquireJob:func(ctx context.Context,_*proto.Empty) (*proto.AcquiredJob,error) {
324-
ifdidAcquireJob.Load() {
325-
complete.Do(func() {
326-
close(completeChan)
327-
})
326+
if!didAcquireJob.CAS(false,true) {
327+
completeOnce.Do(func() {close(completeChan) })
328328
return&proto.AcquiredJob{},nil
329329
}
330-
didAcquireJob.Store(true)
330+
331331
return&proto.AcquiredJob{
332332
JobId:"test",
333333
Provisioner:"someprovisioner",
@@ -386,16 +386,18 @@ func TestProvisionerd(t *testing.T) {
386386
var (
387387
didFail atomic.Bool
388388
didAcquireJob atomic.Bool
389+
completeChan=make(chanstruct{})
390+
completeOnce sync.Once
389391
)
390-
completeChan:=make(chanstruct{})
392+
391393
closer:=createProvisionerd(t,func(ctx context.Context) (proto.DRPCProvisionerDaemonClient,error) {
392394
returncreateProvisionerDaemonClient(t,provisionerDaemonTestServer{
393395
acquireJob:func(ctx context.Context,_*proto.Empty) (*proto.AcquiredJob,error) {
394-
ifdidAcquireJob.Load() {
395-
close(completeChan)
396+
if!didAcquireJob.CAS(false,true) {
397+
completeOnce.Do(func() {close(completeChan) })
396398
return&proto.AcquiredJob{},nil
397399
}
398-
didAcquireJob.Store(true)
400+
399401
return&proto.AcquiredJob{
400402
JobId:"test",
401403
Provisioner:"someprovisioner",
@@ -585,10 +587,15 @@ func TestProvisionerd(t *testing.T) {
585587

586588
t.Run("ReconnectAndFail",func(t*testing.T) {
587589
t.Parallel()
588-
varsecond atomic.Bool
589-
failChan:=make(chanstruct{})
590-
failedChan:=make(chanstruct{})
591-
completeChan:=make(chanstruct{})
590+
var (
591+
second atomic.Bool
592+
failChan=make(chanstruct{})
593+
failOnce sync.Once
594+
failedChan=make(chanstruct{})
595+
failedOnce sync.Once
596+
completeChan=make(chanstruct{})
597+
completeOnce sync.Once
598+
)
592599
server:=createProvisionerd(t,func(ctx context.Context) (proto.DRPCProvisionerDaemonClient,error) {
593600
client:=createProvisionerDaemonClient(t,provisionerDaemonTestServer{
594601
acquireJob:func(ctx context.Context,_*proto.Empty) (*proto.AcquiredJob,error) {
@@ -613,10 +620,10 @@ func TestProvisionerd(t *testing.T) {
613620
},
614621
failJob:func(ctx context.Context,job*proto.FailedJob) (*proto.Empty,error) {
615622
ifsecond.Load() {
616-
close(completeChan)
623+
completeOnce.Do(func() {close(completeChan) })
617624
return&proto.Empty{},nil
618625
}
619-
close(failChan)
626+
failOnce.Do(func() {close(failChan) })
620627
<-failedChan
621628
return&proto.Empty{},nil
622629
},
@@ -626,7 +633,7 @@ func TestProvisionerd(t *testing.T) {
626633
<-failChan
627634
_=client.DRPCConn().Close()
628635
second.Store(true)
629-
close(failedChan)
636+
failedOnce.Do(func() {close(failedChan) })
630637
}()
631638
}
632639
returnclient,nil
@@ -651,18 +658,20 @@ func TestProvisionerd(t *testing.T) {
651658

652659
t.Run("ReconnectAndComplete",func(t*testing.T) {
653660
t.Parallel()
654-
varcompleted sync.Once
655-
varsecond atomic.Bool
656-
failChan:=make(chanstruct{})
657-
failedChan:=make(chanstruct{})
658-
completeChan:=make(chanstruct{})
661+
var (
662+
second atomic.Bool
663+
failChan=make(chanstruct{})
664+
failOnce sync.Once
665+
failedChan=make(chanstruct{})
666+
failedOnce sync.Once
667+
completeChan=make(chanstruct{})
668+
completeOnce sync.Once
669+
)
659670
server:=createProvisionerd(t,func(ctx context.Context) (proto.DRPCProvisionerDaemonClient,error) {
660671
client:=createProvisionerDaemonClient(t,provisionerDaemonTestServer{
661672
acquireJob:func(ctx context.Context,_*proto.Empty) (*proto.AcquiredJob,error) {
662673
ifsecond.Load() {
663-
completed.Do(func() {
664-
close(completeChan)
665-
})
674+
completeOnce.Do(func() {close(completeChan) })
666675
return&proto.AcquiredJob{},nil
667676
}
668677
return&proto.AcquiredJob{
@@ -688,7 +697,7 @@ func TestProvisionerd(t *testing.T) {
688697
ifsecond.Load() {
689698
return&proto.Empty{},nil
690699
}
691-
close(failChan)
700+
failOnce.Do(func() {close(failChan) })
692701
<-failedChan
693702
return&proto.Empty{},nil
694703
},
@@ -698,7 +707,7 @@ func TestProvisionerd(t *testing.T) {
698707
<-failChan
699708
_=client.DRPCConn().Close()
700709
second.Store(true)
701-
close(failedChan)
710+
failedOnce.Do(func() {close(failedChan) })
702711
}()
703712
}
704713
returnclient,nil

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp