Re-comitting r5711: "Fixing a flaky test in video_engine_tests"

The CL was reverted in r5712, due to bots going red. However, these bots
are unrelated to this CL.

Original description:
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/10099004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5713 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
henrik.lundin@webrtc.org 2014-03-18 08:43:29 +00:00
parent 12499ff20b
commit ed8b281265

View File

@ -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) {