Index: webrtc/pc/statscollector_unittest.cc |
diff --git a/webrtc/pc/statscollector_unittest.cc b/webrtc/pc/statscollector_unittest.cc |
index e9a2c5c9d56deddf7dc48b563ce391b0b688a6a8..165457c9c82493b1e181c4f36958e5c724f969a8 100644 |
--- a/webrtc/pc/statscollector_unittest.cc |
+++ b/webrtc/pc/statscollector_unittest.cc |
@@ -900,8 +900,75 @@ TEST_F(StatsCollectorTest, BytesCounterHandles64Bits) { |
EXPECT_EQ(kBytesSentString, result); |
} |
-// Test that BWE information is reported via stats. |
-TEST_F(StatsCollectorTest, BandwidthEstimationInfoIsReported) { |
+// Test that audio BWE information is reported via stats. |
+TEST_F(StatsCollectorTest, AudioBandwidthEstimationInfoIsReported) { |
+ StatsCollectorForTest stats(&pc_); |
+ |
+ EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
+ .WillRepeatedly(Return(false)); |
+ EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
+ .WillRepeatedly(Return(nullptr)); |
+ |
+ const char kAudioChannelName[] = "audio"; |
+ |
+ InitSessionStats(kAudioChannelName); |
+ EXPECT_CALL(session_, GetStats(_)) |
+ .WillRepeatedly(Invoke([this](const ChannelNamePairs&) { |
+ return std::unique_ptr<SessionStats>(new SessionStats(session_stats_)); |
+ })); |
+ |
+ MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); |
+ cricket::VoiceChannel voice_channel( |
+ worker_thread_, network_thread_, nullptr, nullptr, media_channel, |
+ kAudioChannelName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); |
+ |
+ StatsReports reports; // returned values. |
+ cricket::VoiceSenderInfo voice_sender_info; |
+ cricket::VoiceMediaInfo stats_read; |
+ // Set up an SSRC just to test that we get both kinds of stats back: SSRC and |
+ // BWE. |
+ const int64_t kBytesSent = 12345678901234LL; |
+ const std::string kBytesSentString("12345678901234"); |
+ |
+ AddOutgoingAudioTrackStats(); |
+ stats.AddStream(stream_); |
+ |
+ // Construct a stats value to read. |
+ voice_sender_info.add_ssrc(1234); |
+ voice_sender_info.bytes_sent = kBytesSent; |
+ stats_read.senders.push_back(voice_sender_info); |
+ |
+ webrtc::Call::Stats call_stats; |
+ const int kSendBandwidth = 1234567; |
+ const int kRecvBandwidth = 12345678; |
+ const int kPacerDelay = 123; |
+ call_stats.send_bandwidth_bps = kSendBandwidth; |
+ call_stats.recv_bandwidth_bps = kRecvBandwidth; |
+ call_stats.pacer_delay_ms = kPacerDelay; |
+ EXPECT_CALL(session_, GetCallStats()).WillRepeatedly(Return(call_stats)); |
+ EXPECT_CALL(session_, voice_channel()).WillRepeatedly(Return(&voice_channel)); |
+ EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull()); |
+ EXPECT_CALL(*media_channel, GetStats(_)) |
+ .WillOnce(DoAll(SetArgPointee<0>(stats_read), Return(true))); |
+ |
+ stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); |
+ stats.GetStats(NULL, &reports); |
+ std::string result = |
+ ExtractSsrcStatsValue(reports, StatsReport::kStatsValueNameBytesSent); |
+ EXPECT_EQ(kBytesSentString, result); |
+ result = ExtractBweStatsValue( |
+ reports, StatsReport::kStatsValueNameAvailableSendBandwidth); |
+ EXPECT_EQ(rtc::ToString(kSendBandwidth), result); |
+ result = ExtractBweStatsValue( |
+ reports, StatsReport::kStatsValueNameAvailableReceiveBandwidth); |
+ EXPECT_EQ(rtc::ToString(kRecvBandwidth), result); |
+ result = |
+ ExtractBweStatsValue(reports, StatsReport::kStatsValueNameBucketDelay); |
+ EXPECT_EQ(rtc::ToString(kPacerDelay), result); |
+} |
+ |
+// Test that video BWE information is reported via stats. |
+TEST_F(StatsCollectorTest, VideoBandwidthEstimationInfoIsReported) { |
StatsCollectorForTest stats(&pc_); |
EXPECT_CALL(session_, GetLocalCertificate(_, _)) |