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

Commitc775ea8

Browse files
authored
test: fix a race in TestReinit (#17902)
closescoder/internal#632`pubsubReinitSpy` used to signal that a subscription had happened beforeit actually had.This created a slight opportunity for the main goroutine to publishbefore the actual subscription was listening. The published event wasthen dropped, leading to a failed test.
1 parent1a41608 commitc775ea8

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

‎coderd/workspaceagents_test.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2650,8 +2650,8 @@ func TestReinit(t *testing.T) {
26502650

26512651
db,ps:=dbtestutil.NewDB(t)
26522652
pubsubSpy:=pubsubReinitSpy{
2653-
Pubsub:ps,
2654-
subscribed:make(chanstring),
2653+
Pubsub:ps,
2654+
triedToSubscribe:make(chanstring),
26552655
}
26562656
client:=coderdtest.New(t,&coderdtest.Options{
26572657
Database:db,
@@ -2664,9 +2664,9 @@ func TestReinit(t *testing.T) {
26642664
OwnerID:user.UserID,
26652665
}).WithAgent().Do()
26662666

2667-
pubsubSpy.Mutex.Lock()
2667+
pubsubSpy.Lock()
26682668
pubsubSpy.expectedEvent=agentsdk.PrebuildClaimedChannel(r.Workspace.ID)
2669-
pubsubSpy.Mutex.Unlock()
2669+
pubsubSpy.Unlock()
26702670

26712671
agentCtx:=testutil.Context(t,testutil.WaitShort)
26722672
agentClient:=agentsdk.New(client.URL)
@@ -2681,7 +2681,7 @@ func TestReinit(t *testing.T) {
26812681

26822682
// We need to subscribe before we publish, lest we miss the event
26832683
ctx:=testutil.Context(t,testutil.WaitShort)
2684-
testutil.TryReceive(ctx,t,pubsubSpy.subscribed)// Wait for the appropriate subscription
2684+
testutil.TryReceive(ctx,t,pubsubSpy.triedToSubscribe)
26852685

26862686
// Now that we're subscribed, publish the event
26872687
err:=prebuilds.NewPubsubWorkspaceClaimPublisher(ps).PublishWorkspaceClaim(agentsdk.ReinitializationEvent{
@@ -2699,15 +2699,16 @@ func TestReinit(t *testing.T) {
26992699
typepubsubReinitSpystruct {
27002700
pubsub.Pubsub
27012701
sync.Mutex
2702-
subscribedchanstring
2703-
expectedEventstring
2702+
triedToSubscribechanstring
2703+
expectedEventstring
27042704
}
27052705

27062706
func (p*pubsubReinitSpy)Subscribe(eventstring,listener pubsub.Listener) (cancelfunc(),errerror) {
2707+
cancel,err=p.Pubsub.Subscribe(event,listener)
27072708
p.Lock()
27082709
ifp.expectedEvent!=""&&event==p.expectedEvent {
2709-
close(p.subscribed)
2710+
close(p.triedToSubscribe)
27102711
}
27112712
p.Unlock()
2712-
returnp.Pubsub.Subscribe(event,listener)
2713+
returncancel,err
27132714
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp