(Auto)update libjingle 68891947-> 68893961

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6383 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
buildbot@webrtc.org 2014-06-10 09:39:06 +00:00
parent 86f613d6b8
commit 3eb2c2f4c3
2 changed files with 43 additions and 19 deletions

View File

@ -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.

View File

@ -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();
}