Skip to content

Commit d56bead

Browse files
aler9Sean-Der
authored andcommitted
Fix race condition in test
In TestPeerConnection_Zero_PayloadType, WriteSample might be called after closePairNow, resulting in failure. This patch fixes the issue.
1 parent ca05618 commit d56bead

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

peerconnection_media_test.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1752,26 +1752,28 @@ func TestPeerConnection_Zero_PayloadType(t *testing.T) {
17521752

17531753
assert.NoError(t, signalPair(pcOffer, pcAnswer))
17541754

1755-
onTrackFired, onTrackFiredCancel := context.WithCancel(context.Background())
1755+
trackFired := make(chan struct{})
1756+
17561757
pcAnswer.OnTrack(func(track *TrackRemote, _ *RTPReceiver) {
17571758
require.Equal(t, track.Codec().MimeType, MimeTypePCMU)
1758-
onTrackFiredCancel()
1759+
close(trackFired)
17591760
})
17601761

1761-
go func() {
1762+
func() {
17621763
ticker := time.NewTicker(20 * time.Millisecond)
17631764
defer ticker.Stop()
17641765

1765-
select {
1766-
case <-onTrackFired.Done():
1767-
return
1768-
case <-ticker.C:
1769-
if routineErr := audioTrack.WriteSample(media.Sample{Data: []byte{0x00}, Duration: time.Second}); routineErr != nil {
1770-
fmt.Println(routineErr)
1766+
for {
1767+
select {
1768+
case <-trackFired:
1769+
return
1770+
case <-ticker.C:
1771+
if routineErr := audioTrack.WriteSample(media.Sample{Data: []byte{0x00}, Duration: time.Second}); routineErr != nil {
1772+
fmt.Println(routineErr)
1773+
}
17711774
}
17721775
}
17731776
}()
17741777

1775-
<-onTrackFired.Done()
17761778
closePairNow(t, pcOffer, pcAnswer)
17771779
}

0 commit comments

Comments
 (0)