Fix flaky test TestPeerConnection_Media_Sample

This commit is contained in:
Yutaka Takeda
2025-11-17 01:54:55 -08:00
parent 27a8f9ba49
commit 17287fd0f0

View File

@@ -73,6 +73,7 @@ func TestPeerConnection_Media_Sample(t *testing.T) {
awaitRTCPReceiverSend := make(chan error)
trackMetadataValid := make(chan error)
peerConnectionConnected := make(chan struct{})
pcAnswer.OnTrack(func(track *TrackRemote, receiver *RTPReceiver) {
if track.ID() != expectedTrackID {
@@ -143,12 +144,19 @@ func TestPeerConnection_Media_Sample(t *testing.T) {
sender, err := pcOffer.AddTrack(vp8Track)
assert.NoError(t, err)
// Wait for PeerConnection to be fully connected (DTLS + SRTP ready)
pcOffer.OnConnectionStateChange(func(state PeerConnectionState) {
if state == PeerConnectionStateConnected {
close(peerConnectionConnected)
}
})
go func() {
// Wait for DTLS/SRTP to be ready before sending media
<-peerConnectionConnected
for {
time.Sleep(time.Millisecond * 100)
if pcOffer.ICEConnectionState() != ICEConnectionStateConnected {
continue
}
if routineErr := vp8Track.WriteSample(media.Sample{Data: []byte{0x00}, Duration: time.Second}); routineErr != nil {
//nolint:forbidigo // not a test failure
fmt.Println(routineErr)