Skip to content

Commit 2be39bb

Browse files
committed
Fix flaky test deadlock
1 parent d60ef2f commit 2be39bb

File tree

3 files changed

+48
-19
lines changed

3 files changed

+48
-19
lines changed

pkg/sender_test.go

+8-3
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ forLoop:
118118
assert.NotEqual(t, fakePkt.PayloadType, pkt.PayloadType)
119119
assert.Equal(t, senderTrack.Codec().PayloadType, pkt.PayloadType)
120120
tmr.Stop()
121-
return
121+
break
122122
}
123123
select {
124124
case <-tmr.C:
@@ -127,6 +127,8 @@ forLoop:
127127
}
128128
})
129129
}
130+
_ = sfu.Close()
131+
_ = remote.Close()
130132
}
131133

132134
func TestWebRTCSender_receiveRTCP(t *testing.T) {
@@ -218,6 +220,7 @@ forLoop:
218220
assert.NoError(t, err)
219221
err = remote.WriteRTCP([]rtcp.Packet{tt.want, tt.want, tt.want, tt.want})
220222
assert.NoError(t, err)
223+
testLoop:
221224
for {
222225
select {
223226
case <-tmr.C:
@@ -227,11 +230,11 @@ forLoop:
227230
case *rtcp.PictureLossIndication:
228231
tmr.Stop()
229232
wss.Close()
230-
return
233+
break testLoop
231234
case *rtcp.FullIntraRequest:
232235
tmr.Stop()
233236
wss.Close()
234-
return
237+
break testLoop
235238
case *rtcp.TransportLayerNack:
236239
continue
237240
}
@@ -241,6 +244,8 @@ forLoop:
241244
}
242245
})
243246
}
247+
_ = sfu.Close()
248+
_ = remote.Close()
244249
}
245250

246251
func TestWebRTCSender_Close(t *testing.T) {

pkg/simulcastsender_test.go

+9-4
Original file line numberDiff line numberDiff line change
@@ -160,13 +160,14 @@ forLoop:
160160
}
161161
tmr := time.NewTimer(100 * time.Millisecond)
162162
s.WriteRTP(tt.fields.packet)
163+
testLoop:
163164
for {
164165
select {
165166
case <-tmr.C:
166167
t.Fatal("PLI packet not received")
167168
case <-gotPli:
168169
tmr.Stop()
169-
return
170+
break testLoop
170171
}
171172
}
172173
}
@@ -187,7 +188,8 @@ forLoop:
187188

188189
})
189190
}
190-
191+
_ = sfu.Close()
192+
_ = remote.Close()
191193
}
192194

193195
func TestWebRTCSimulcastSender_receiveRTCP(t *testing.T) {
@@ -278,6 +280,7 @@ forLoop:
278280
}
279281
go wss.receiveRTCP()
280282
tmr := time.NewTimer(1000 * time.Millisecond)
283+
testLoop:
281284
for {
282285
select {
283286
case <-tmr.C:
@@ -291,19 +294,21 @@ forLoop:
291294
assert.Equal(t, recvSSRC, pkt.DestinationSSRC()[0])
292295
tmr.Stop()
293296
wss.Close()
294-
return
297+
break testLoop
295298
case *rtcp.FullIntraRequest:
296299
assert.Equal(t, recvSSRC, pkt.DestinationSSRC()[0])
297300
tmr.Stop()
298301
wss.Close()
299-
return
302+
break testLoop
300303
case *rtcp.TransportLayerNack:
301304
continue
302305
}
303306
}
304307
}
305308
})
306309
}
310+
_ = sfu.Close()
311+
_ = remote.Close()
307312
}
308313

309314
func TestWebRTCSimulcastSender_Close(t *testing.T) {

pkg/webrtctransport_test.go

+31-12
Original file line numberDiff line numberDiff line change
@@ -437,17 +437,20 @@ func TestWebRTCTransport_OnDataChannel(t *testing.T) {
437437
err = signalPair(remote, sfu)
438438
assert.NoError(t, err)
439439
tmr := time.NewTimer(5000 * time.Millisecond)
440+
testLoop:
440441
for {
441442
select {
442443
case <-tmr.C:
443444
t.Fatal("onDataChannel not called")
444445
case <-dcChan:
445446
tmr.Stop()
446-
return
447+
break testLoop
447448
}
448449
}
449450
})
450451
}
452+
_ = sfu.Close()
453+
_ = remote.Close()
451454
}
452455

453456
func TestWebRTCTransport_OnNegotiationNeeded(t *testing.T) {
@@ -502,17 +505,20 @@ func TestWebRTCTransport_OnNegotiationNeeded(t *testing.T) {
502505
_, err = sfu.AddTrack(senderTrack)
503506
assert.NoError(t, err)
504507
tmr := time.NewTimer(5000 * time.Millisecond)
508+
testLoop:
505509
for {
506510
select {
507511
case <-tmr.C:
508512
t.Fatal("onNegotiation not called")
509513
case <-negChan:
510514
tmr.Stop()
511-
return
515+
break testLoop
512516
}
513517
}
514518
})
515519
}
520+
_ = sfu.Close()
521+
_ = remote.Close()
516522
}
517523

518524
func TestWebRTCTransport_OnTrack(t *testing.T) {
@@ -747,25 +753,38 @@ forLoop:
747753
SenderSSRC: 12345,
748754
MediaSSRC: 12345,
749755
}
750-
rtcpChan <- &rtcp.PictureLossIndication{
751-
SenderSSRC: 12345,
752-
MediaSSRC: 12345,
753-
}
754756
go p.sendRTCP(tt.args.recv)
755757
tmr := time.NewTimer(1000 * time.Millisecond)
758+
gotRTCP := make(chan struct{}, 1)
759+
go func() {
760+
for {
761+
pkt, err := s.ReadRTCP()
762+
assert.NoError(t, err)
763+
if len(pkt) > 0 {
764+
gotRTCP <- struct{}{}
765+
return
766+
}
767+
}
768+
}()
769+
770+
testLoop:
756771
for {
757-
pkt, err := s.ReadRTCP()
758-
assert.NoError(t, err)
759-
if len(pkt) > 0 {
772+
select {
773+
case <-time.After(10 * time.Millisecond):
774+
rtcpChan <- &rtcp.PictureLossIndication{
775+
SenderSSRC: 12345,
776+
MediaSSRC: 12345,
777+
}
778+
case <-gotRTCP:
760779
close(rtcpChan)
761780
tmr.Stop()
762-
return
763-
}
764-
select {
781+
break testLoop
765782
case <-tmr.C:
766783
t.Fatal("onNegotiation not called")
767784
}
768785
}
769786
})
770787
}
788+
_ = sfu.Close()
789+
_ = remote.Close()
771790
}

0 commit comments

Comments
 (0)