diff options
author | buildbot@webrtc.org <buildbot@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2014-06-10 09:39:06 +0000 |
---|---|---|
committer | buildbot@webrtc.org <buildbot@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2014-06-10 09:39:06 +0000 |
commit | 3eb2c2f4c35ab62ede70d34699eecc17956b0fcf (patch) | |
tree | 1d8a8ee5d42f8eb0e56a7f3a8fa4adb75950a69e | |
parent | 86f613d6b893d03c822373f7e7ec51db78a90f9f (diff) | |
download | webrtc-3eb2c2f4c35ab62ede70d34699eecc17956b0fcf.tar.gz |
(Auto)update libjingle 68891947-> 68893961
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6383 4adac7df-926f-26a2-2b94-8c16560cd09d
-rw-r--r-- | talk/media/base/videoengine_unittest.h | 52 | ||||
-rw-r--r-- | talk/media/webrtc/webrtcvideoengine_unittest.cc | 10 |
2 files changed, 43 insertions, 19 deletions
diff --git a/talk/media/base/videoengine_unittest.h b/talk/media/base/videoengine_unittest.h index 54b55005ac..382fb775e8 100644 --- a/talk/media/base/videoengine_unittest.h +++ b/talk/media/base/videoengine_unittest.h @@ -792,14 +792,45 @@ class VideoMediaChannelTest : public testing::Test, EXPECT_FRAME_WAIT(3, codec.width, codec.height, kTimeout); EXPECT_EQ(2, renderer_.num_set_sizes()); } + void SendReceiveManyAndGetStats(const cricket::VideoCodec& codec, + int duration_sec, int fps) { + EXPECT_TRUE(SetOneCodec(codec)); + EXPECT_TRUE(SetSend(true)); + EXPECT_TRUE(channel_->SetRender(true)); + EXPECT_EQ(0, renderer_.num_rendered_frames()); + for (int i = 0; i < duration_sec; ++i) { + for (int frame = 1; frame <= fps; ++frame) { + EXPECT_TRUE(WaitAndSendFrame(1000 / fps)); + EXPECT_FRAME_WAIT(frame + i * fps, codec.width, codec.height, kTimeout); + } + cricket::VideoMediaInfo info; + EXPECT_TRUE(channel_->GetStats(cricket::StatsOptions(), &info)); + // For webrtc, |framerate_sent| and |framerate_rcvd| depend on periodic + // callbacks (1 sec). + // Received |fraction_lost| and |packets_lost| are from sent RTCP packet. + // One sent packet needed (sent about once per second). + // |framerate_input|, |framerate_decoded| and |framerate_output| are using + // RateTracker. RateTracker needs to be called twice (with >1 second in + // b/w calls) before a framerate is calculated. + // Therefore insert frames (and call GetStats each sec) for a few seconds + // before testing stats. + } + talk_base::scoped_ptr<const talk_base::Buffer> p(GetRtpPacket(0)); + EXPECT_EQ(codec.id, GetPayloadType(p.get())); + } + // Test that stats work properly for a 1-1 call. void GetStats() { - SendAndReceive(DefaultCodec()); + const int kDurationSec = 3; + const int kFps = 10; + SendReceiveManyAndGetStats(DefaultCodec(), kDurationSec, kFps); + cricket::VideoMediaInfo info; EXPECT_TRUE(channel_->GetStats(cricket::StatsOptions(), &info)); ASSERT_EQ(1U, info.senders.size()); // TODO(whyuan): bytes_sent and bytes_rcvd are different. Are both payload? + // For webrtc, bytes_sent does not include the RTP header length. EXPECT_GT(info.senders[0].bytes_sent, 0); EXPECT_EQ(NumRtpPackets(), info.senders[0].packets_sent); EXPECT_EQ(0.0, info.senders[0].fraction_lost); @@ -819,7 +850,8 @@ class VideoMediaChannelTest : public testing::Test, EXPECT_EQ(NumRtpPackets(), info.receivers[0].packets_rcvd); EXPECT_EQ(0.0, info.receivers[0].fraction_lost); EXPECT_EQ(0, info.receivers[0].packets_lost); - EXPECT_EQ(0, info.receivers[0].packets_concealed); + // TODO(asapersson): Not set for webrtc. Handle missing stats. + // EXPECT_EQ(0, info.receivers[0].packets_concealed); EXPECT_EQ(0, info.receivers[0].firs_sent); EXPECT_EQ(0, info.receivers[0].plis_sent); EXPECT_EQ(0, info.receivers[0].nacks_sent); @@ -860,16 +892,11 @@ class VideoMediaChannelTest : public testing::Test, ASSERT_EQ(1U, info.senders.size()); // TODO(whyuan): bytes_sent and bytes_rcvd are different. Are both payload? + // For webrtc, bytes_sent does not include the RTP header length. EXPECT_GT(info.senders[0].bytes_sent, 0); EXPECT_EQ(NumRtpPackets(), info.senders[0].packets_sent); - EXPECT_EQ(0.0, info.senders[0].fraction_lost); - EXPECT_EQ(0, info.senders[0].firs_rcvd); - EXPECT_EQ(0, info.senders[0].plis_rcvd); - EXPECT_EQ(0, info.senders[0].nacks_rcvd); EXPECT_EQ(DefaultCodec().width, info.senders[0].send_frame_width); EXPECT_EQ(DefaultCodec().height, info.senders[0].send_frame_height); - EXPECT_GT(info.senders[0].framerate_input, 0); - EXPECT_GT(info.senders[0].framerate_sent, 0); ASSERT_EQ(2U, info.receivers.size()); for (size_t i = 0; i < info.receivers.size(); ++i) { @@ -877,17 +904,8 @@ class VideoMediaChannelTest : public testing::Test, EXPECT_EQ(i + 1, info.receivers[i].ssrcs()[0]); EXPECT_EQ(NumRtpBytes(), info.receivers[i].bytes_rcvd); EXPECT_EQ(NumRtpPackets(), info.receivers[i].packets_rcvd); - EXPECT_EQ(0.0, info.receivers[i].fraction_lost); - EXPECT_EQ(0, info.receivers[i].packets_lost); - EXPECT_EQ(0, info.receivers[i].packets_concealed); - EXPECT_EQ(0, info.receivers[i].firs_sent); - EXPECT_EQ(0, info.receivers[i].plis_sent); - EXPECT_EQ(0, info.receivers[i].nacks_sent); EXPECT_EQ(DefaultCodec().width, info.receivers[i].frame_width); EXPECT_EQ(DefaultCodec().height, info.receivers[i].frame_height); - EXPECT_GT(info.receivers[i].framerate_rcvd, 0); - EXPECT_GT(info.receivers[i].framerate_decoded, 0); - EXPECT_GT(info.receivers[i].framerate_output, 0); } } // Test that stats work properly for a conf call with multiple send streams. diff --git a/talk/media/webrtc/webrtcvideoengine_unittest.cc b/talk/media/webrtc/webrtcvideoengine_unittest.cc index da8e62d565..da0c9321f2 100644 --- a/talk/media/webrtc/webrtcvideoengine_unittest.cc +++ b/talk/media/webrtc/webrtcvideoengine_unittest.cc @@ -2323,13 +2323,19 @@ TEST_F(WebRtcVideoMediaChannelTest, DISABLED_SendVp8HdAndReceiveAdaptedVp8Vga) { EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); } -// TODO(juberti): Fix this test to tolerate missing stats. +#ifdef USE_WEBRTC_DEV_BRANCH +TEST_F(WebRtcVideoMediaChannelTest, GetStats) { +#else TEST_F(WebRtcVideoMediaChannelTest, DISABLED_GetStats) { +#endif Base::GetStats(); } -// TODO(juberti): Fix this test to tolerate missing stats. +#ifdef USE_WEBRTC_DEV_BRANCH +TEST_F(WebRtcVideoMediaChannelTest, GetStatsMultipleRecvStreams) { +#else TEST_F(WebRtcVideoMediaChannelTest, DISABLED_GetStatsMultipleRecvStreams) { +#endif Base::GetStatsMultipleRecvStreams(); } |