aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbuildbot@webrtc.org <buildbot@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2014-06-10 09:39:06 +0000
committerbuildbot@webrtc.org <buildbot@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2014-06-10 09:39:06 +0000
commit3eb2c2f4c35ab62ede70d34699eecc17956b0fcf (patch)
tree1d8a8ee5d42f8eb0e56a7f3a8fa4adb75950a69e
parent86f613d6b893d03c822373f7e7ec51db78a90f9f (diff)
downloadwebrtc-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.h52
-rw-r--r--talk/media/webrtc/webrtcvideoengine_unittest.cc10
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();
}