From 17287fd0f0e9b6338ad743976119d2aa79cdf92d Mon Sep 17 00:00:00 2001 From: Yutaka Takeda Date: Mon, 17 Nov 2025 01:54:55 -0800 Subject: [PATCH] Fix flaky test TestPeerConnection_Media_Sample --- peerconnection_media_test.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/peerconnection_media_test.go b/peerconnection_media_test.go index 1005bcbe..91037f98 100644 --- a/peerconnection_media_test.go +++ b/peerconnection_media_test.go @@ -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)