From d0f0c76cd9ea8fed1edce0f94832a6a659029c64 Mon Sep 17 00:00:00 2001 From: "henrik.lundin@webrtc.org" Date: Mon, 17 Mar 2014 21:09:10 +0000 Subject: [PATCH] Fixing a flaky test in video_engine_tests VideoSendStreamTest.SuspendBelowMinBitrate was flaky. The problem was that when the first non-padding packet was sent after the stream was resumed, the statistics had not always been updated so that stats.suspended was false. After seeing the first non-padding packet after suspension, the test will now go into a state where it waits for the statistics to be changed. BUG=3068 R=pbos@webrtc.org TBR=stefan@webrtc.org Review URL: https://webrtc-codereview.appspot.com/10069004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5711 4adac7df-926f-26a2-2b94-8c16560cd09d --- webrtc/video/video_send_stream_tests.cc | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/webrtc/video/video_send_stream_tests.cc b/webrtc/video/video_send_stream_tests.cc index 6cc0f6862..6a6b0e13f 100644 --- a/webrtc/video/video_send_stream_tests.cc +++ b/webrtc/video/video_send_stream_tests.cc @@ -870,7 +870,8 @@ TEST_F(VideoSendStreamTest, CanChangeSendCodec) { // 3. Wait until |kSuspendTimeFrames| have been captured without seeing any RTP // packets. // 4. Signal a high REMB and then wait for the RTP stream to start again. -// When the stream is detected again, the test ends. +// When the stream is detected again, and the stats show that the stream +// is no longer suspended, the test ends. TEST_F(VideoSendStreamTest, SuspendBelowMinBitrate) { static const int kSuspendTimeFrames = 60; // Suspend for 2 seconds @ 30 fps. @@ -922,10 +923,15 @@ TEST_F(VideoSendStreamTest, SuspendBelowMinBitrate) { } } else if (test_state_ == kWaitingForPacket) { if (header.paddingLength == 0) { - // Non-padding packet observed. Test is complete. - assert(*send_stream_ptr_); - VideoSendStream::Stats stats = (*send_stream_ptr_)->GetStats(); - EXPECT_FALSE(stats.suspended); + // Non-padding packet observed. Test is almost complete. Will just + // have to wait for the stats to change. + test_state_ = kWaitingForStats; + } + } else if (test_state_ == kWaitingForStats) { + assert(*send_stream_ptr_); + VideoSendStream::Stats stats = (*send_stream_ptr_)->GetStats(); + if (stats.suspended == false) { + // Stats flipped to false. Test is complete. observation_complete_->Set(); } } @@ -957,7 +963,7 @@ TEST_F(VideoSendStreamTest, SuspendBelowMinBitrate) { kBeforeSuspend, kDuringSuspend, kWaitingForPacket, - kAfterSuspend + kWaitingForStats }; virtual void SendRtcpFeedback(int remb_value) {