(Auto)update libjingle 66867790-> 66887616
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6128 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
c156174da8
commit
3e01e0b16c
@ -85,7 +85,7 @@ using webrtc::StreamCollectionInterface;
|
||||
|
||||
static const int kMaxWaitMs = 2000;
|
||||
static const int kMaxWaitForStatsMs = 3000;
|
||||
static const int kMaxWaitForFramesMs = 5000;
|
||||
static const int kMaxWaitForFramesMs = 10000;
|
||||
static const int kEndAudioFrameCount = 3;
|
||||
static const int kEndVideoFrameCount = 3;
|
||||
|
||||
|
||||
@ -63,6 +63,18 @@ const char StatsReport::kStatsValueNameComponent[] = "googComponent";
|
||||
const char StatsReport::kStatsValueNameContentName[] = "googContentName";
|
||||
const char StatsReport::kStatsValueNameCpuLimitedResolution[] =
|
||||
"googCpuLimitedResolution";
|
||||
const char StatsReport::kStatsValueNameDecodingCTSG[] =
|
||||
"googDecodingCTSG";
|
||||
const char StatsReport::kStatsValueNameDecodingCTN[] =
|
||||
"googDecodingCTN";
|
||||
const char StatsReport::kStatsValueNameDecodingNormal[] =
|
||||
"googDecodingNormal";
|
||||
const char StatsReport::kStatsValueNameDecodingPLC[] =
|
||||
"googDecodingPLC";
|
||||
const char StatsReport::kStatsValueNameDecodingCNG[] =
|
||||
"googDecodingCNG";
|
||||
const char StatsReport::kStatsValueNameDecodingPLCCNG[] =
|
||||
"googDecodingPLCCNG";
|
||||
const char StatsReport::kStatsValueNameDer[] = "googDerBase64";
|
||||
// Echo metrics from the audio processing module.
|
||||
const char StatsReport::kStatsValueNameEchoCancellationQualityMin[] =
|
||||
@ -273,6 +285,18 @@ void ExtractStats(const cricket::VoiceReceiverInfo& info, StatsReport* report) {
|
||||
info.packets_rcvd);
|
||||
report->AddValue(StatsReport::kStatsValueNamePacketsLost,
|
||||
info.packets_lost);
|
||||
report->AddValue(StatsReport::kStatsValueNameDecodingCTSG,
|
||||
info.decoding_calls_to_silence_generator);
|
||||
report->AddValue(StatsReport::kStatsValueNameDecodingCTN,
|
||||
info.decoding_calls_to_neteq);
|
||||
report->AddValue(StatsReport::kStatsValueNameDecodingNormal,
|
||||
info.decoding_normal);
|
||||
report->AddValue(StatsReport::kStatsValueNameDecodingPLC,
|
||||
info.decoding_plc);
|
||||
report->AddValue(StatsReport::kStatsValueNameDecodingCNG,
|
||||
info.decoding_cng);
|
||||
report->AddValue(StatsReport::kStatsValueNameDecodingPLCCNG,
|
||||
info.decoding_plc_cng);
|
||||
}
|
||||
|
||||
void ExtractStats(const cricket::VoiceSenderInfo& info, StatsReport* report) {
|
||||
|
||||
@ -263,6 +263,58 @@ void CheckCertChainReports(const StatsReports& reports,
|
||||
EXPECT_EQ(ders.size(), i);
|
||||
}
|
||||
|
||||
void VerifyVoiceReceiverInfoReport(const StatsReport* report,
|
||||
const cricket::VoiceReceiverInfo& sinfo) {
|
||||
std::string value_in_report;
|
||||
EXPECT_TRUE(GetValue(
|
||||
report, StatsReport::kStatsValueNameAudioOutputLevel, &value_in_report));
|
||||
EXPECT_EQ(talk_base::ToString<int>(sinfo.audio_level), value_in_report);
|
||||
EXPECT_TRUE(GetValue(
|
||||
report, StatsReport::kStatsValueNameBytesReceived, &value_in_report));
|
||||
EXPECT_EQ(talk_base::ToString<int>(sinfo.bytes_rcvd), value_in_report);
|
||||
EXPECT_TRUE(GetValue(
|
||||
report, StatsReport::kStatsValueNameJitterReceived, &value_in_report));
|
||||
EXPECT_EQ(talk_base::ToString<int>(sinfo.jitter_ms), value_in_report);
|
||||
EXPECT_TRUE(GetValue(
|
||||
report, StatsReport::kStatsValueNameJitterBufferMs, &value_in_report));
|
||||
EXPECT_EQ(talk_base::ToString<int>(sinfo.jitter_buffer_ms), value_in_report);
|
||||
EXPECT_TRUE(GetValue(
|
||||
report, StatsReport::kStatsValueNamePreferredJitterBufferMs,
|
||||
&value_in_report));
|
||||
EXPECT_EQ(talk_base::ToString<int>(sinfo.jitter_buffer_preferred_ms),
|
||||
value_in_report);
|
||||
EXPECT_TRUE(GetValue(
|
||||
report, StatsReport::kStatsValueNameCurrentDelayMs, &value_in_report));
|
||||
EXPECT_EQ(talk_base::ToString<int>(sinfo.delay_estimate_ms), value_in_report);
|
||||
EXPECT_TRUE(GetValue(
|
||||
report, StatsReport::kStatsValueNameExpandRate, &value_in_report));
|
||||
EXPECT_EQ(talk_base::ToString<float>(sinfo.expand_rate), value_in_report);
|
||||
EXPECT_TRUE(GetValue(
|
||||
report, StatsReport::kStatsValueNamePacketsReceived, &value_in_report));
|
||||
EXPECT_EQ(talk_base::ToString<int>(sinfo.packets_rcvd), value_in_report);
|
||||
EXPECT_TRUE(GetValue(
|
||||
report, StatsReport::kStatsValueNameDecodingCTSG, &value_in_report));
|
||||
EXPECT_EQ(talk_base::ToString<int>(sinfo.decoding_calls_to_silence_generator),
|
||||
value_in_report);
|
||||
EXPECT_TRUE(GetValue(
|
||||
report, StatsReport::kStatsValueNameDecodingCTN, &value_in_report));
|
||||
EXPECT_EQ(talk_base::ToString<int>(sinfo.decoding_calls_to_neteq),
|
||||
value_in_report);
|
||||
EXPECT_TRUE(GetValue(
|
||||
report, StatsReport::kStatsValueNameDecodingNormal, &value_in_report));
|
||||
EXPECT_EQ(talk_base::ToString<int>(sinfo.decoding_normal), value_in_report);
|
||||
EXPECT_TRUE(GetValue(
|
||||
report, StatsReport::kStatsValueNameDecodingPLC, &value_in_report));
|
||||
EXPECT_EQ(talk_base::ToString<int>(sinfo.decoding_plc), value_in_report);
|
||||
EXPECT_TRUE(GetValue(
|
||||
report, StatsReport::kStatsValueNameDecodingCNG, &value_in_report));
|
||||
EXPECT_EQ(talk_base::ToString<int>(sinfo.decoding_cng), value_in_report);
|
||||
EXPECT_TRUE(GetValue(
|
||||
report, StatsReport::kStatsValueNameDecodingPLCCNG, &value_in_report));
|
||||
EXPECT_EQ(talk_base::ToString<int>(sinfo.decoding_plc_cng), value_in_report);
|
||||
}
|
||||
|
||||
|
||||
void VerifyVoiceSenderInfoReport(const StatsReport* report,
|
||||
const cricket::VoiceSenderInfo& sinfo) {
|
||||
std::string value_in_report;
|
||||
@ -1067,6 +1119,66 @@ TEST_F(StatsCollectorTest, GetStatsFromLocalAudioTrack) {
|
||||
VerifyVoiceSenderInfoReport(track_report, voice_sender_info);
|
||||
}
|
||||
|
||||
|
||||
// This test verifies that audio receive streams populate stats reports
|
||||
// correctly.
|
||||
TEST_F(StatsCollectorTest, GetStatsFromRemoteStream) {
|
||||
webrtc::StatsCollector stats; // Implementation under test.
|
||||
MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel();
|
||||
// The content_name known by the voice channel.
|
||||
const std::string kVcName("vcname");
|
||||
cricket::VoiceChannel voice_channel(talk_base::Thread::Current(),
|
||||
media_engine_, media_channel, &session_, kVcName, false);
|
||||
stream_ = webrtc::MediaStream::Create("remoteStreamLabel");
|
||||
stats.AddStream(stream_);
|
||||
|
||||
stats.set_session(&session_);
|
||||
|
||||
// Instruct the session to return stats containing the transport channel.
|
||||
InitSessionStats(kVcName);
|
||||
EXPECT_CALL(session_, GetStats(_))
|
||||
.WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_),
|
||||
Return(true)));
|
||||
|
||||
cricket::VoiceReceiverInfo voice_receiver_info;
|
||||
voice_receiver_info.add_ssrc(kSsrcOfTrack);
|
||||
voice_receiver_info.bytes_rcvd = 100;
|
||||
voice_receiver_info.packets_rcvd = 101;
|
||||
voice_receiver_info.packets_lost = 102;
|
||||
voice_receiver_info.fraction_lost = 103;
|
||||
voice_receiver_info.packets_lost = 104;
|
||||
voice_receiver_info.ext_seqnum = 105;
|
||||
voice_receiver_info.jitter_ms = 106;
|
||||
voice_receiver_info.jitter_buffer_ms = 107;
|
||||
voice_receiver_info.jitter_buffer_preferred_ms = 108;
|
||||
voice_receiver_info.delay_estimate_ms = 109;
|
||||
voice_receiver_info.audio_level = 110;
|
||||
voice_receiver_info.expand_rate = 111;
|
||||
|
||||
// Constructs an ssrc stats update.
|
||||
cricket::VoiceMediaInfo stats_read;
|
||||
stats_read.receivers.push_back(voice_receiver_info);
|
||||
|
||||
EXPECT_CALL(session_, voice_channel()).WillRepeatedly(Return(&voice_channel));
|
||||
EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull());
|
||||
EXPECT_CALL(*media_channel, GetStats(_))
|
||||
.WillRepeatedly(DoAll(SetArgPointee<0>(stats_read),
|
||||
Return(true)));
|
||||
EXPECT_CALL(session_, GetTrackIdBySsrc(kSsrcOfTrack, _))
|
||||
.WillRepeatedly(Return(true));
|
||||
|
||||
StatsReports reports; // returned values.
|
||||
stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard);
|
||||
stats.GetStats(NULL, &reports);
|
||||
|
||||
// Verify the remote report.
|
||||
const StatsReport* report = FindNthReportByType(
|
||||
reports, StatsReport::kStatsReportTypeSsrc, 1);
|
||||
EXPECT_FALSE(report == NULL);
|
||||
VerifyVoiceReceiverInfoReport(report, voice_receiver_info);
|
||||
}
|
||||
|
||||
|
||||
// This test verifies that a local stats object won't update its statistics
|
||||
// after a RemoveLocalAudioTrack() call.
|
||||
TEST_F(StatsCollectorTest, GetStatsAfterRemoveAudioStream) {
|
||||
|
||||
@ -200,6 +200,12 @@ class StatsReport {
|
||||
static const char kStatsValueNameRecvPacketGroupArrivalTimeDebug[];
|
||||
static const char kStatsValueNameRecvPacketGroupPropagationDeltaDebug[];
|
||||
static const char kStatsValueNameRecvPacketGroupPropagationDeltaSumDebug[];
|
||||
static const char kStatsValueNameDecodingCTSG[];
|
||||
static const char kStatsValueNameDecodingCTN[];
|
||||
static const char kStatsValueNameDecodingNormal[];
|
||||
static const char kStatsValueNameDecodingPLC[];
|
||||
static const char kStatsValueNameDecodingCNG[];
|
||||
static const char kStatsValueNameDecodingPLCCNG[];
|
||||
};
|
||||
|
||||
typedef std::vector<StatsReport> StatsReports;
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
static const char kStreamLabelBase[] = "stream_label";
|
||||
static const char kVideoTrackLabelBase[] = "video_track";
|
||||
static const char kAudioTrackLabelBase[] = "audio_track";
|
||||
static const int kMaxWait = 5000;
|
||||
static const int kMaxWait = 10000;
|
||||
static const int kTestAudioFrameCount = 3;
|
||||
static const int kTestVideoFrameCount = 3;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user