Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Side by Side Diff: webrtc/api/statscollector_unittest.cc

Issue 2567243003: RTCStatsCollector: Utilize network thread to minimize thread hops. (Closed)
Patch Set: GetSessionStats replacing GetTransportStats, getting certificate from any thread Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2014 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2014 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 23 matching lines...) Expand all
34 #include "webrtc/media/base/fakemediaengine.h" 34 #include "webrtc/media/base/fakemediaengine.h"
35 #include "webrtc/media/base/test/mock_mediachannel.h" 35 #include "webrtc/media/base/test/mock_mediachannel.h"
36 #include "webrtc/p2p/base/faketransportcontroller.h" 36 #include "webrtc/p2p/base/faketransportcontroller.h"
37 #include "webrtc/pc/channelmanager.h" 37 #include "webrtc/pc/channelmanager.h"
38 #include "webrtc/test/gmock.h" 38 #include "webrtc/test/gmock.h"
39 #include "webrtc/test/gtest.h" 39 #include "webrtc/test/gtest.h"
40 40
41 using testing::_; 41 using testing::_;
42 using testing::DoAll; 42 using testing::DoAll;
43 using testing::Field; 43 using testing::Field;
44 using testing::Invoke;
44 using testing::Return; 45 using testing::Return;
45 using testing::ReturnNull; 46 using testing::ReturnNull;
46 using testing::ReturnRef; 47 using testing::ReturnRef;
47 using testing::SetArgPointee; 48 using testing::SetArgPointee;
48 using webrtc::PeerConnectionInterface; 49 using webrtc::PeerConnectionInterface;
49 using webrtc::StatsReport; 50 using webrtc::StatsReport;
50 using webrtc::StatsReports; 51 using webrtc::StatsReports;
51 52
52 namespace cricket { 53 namespace cricket {
53 54
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 channel_manager_(new cricket::ChannelManager(media_engine_, 498 channel_manager_(new cricket::ChannelManager(media_engine_,
498 worker_thread_, 499 worker_thread_,
499 network_thread_)), 500 network_thread_)),
500 media_controller_( 501 media_controller_(
501 webrtc::MediaControllerInterface::Create(cricket::MediaConfig(), 502 webrtc::MediaControllerInterface::Create(cricket::MediaConfig(),
502 worker_thread_, 503 worker_thread_,
503 channel_manager_.get(), 504 channel_manager_.get(),
504 &event_log_)), 505 &event_log_)),
505 session_(media_controller_.get()) { 506 session_(media_controller_.get()) {
506 // By default, we ignore session GetStats calls. 507 // By default, we ignore session GetStats calls.
507 EXPECT_CALL(session_, GetTransportStats(_)).WillRepeatedly(Return(false)); 508 EXPECT_CALL(session_, GetSessionStats(_)).WillRepeatedly(ReturnNull());
508 // Add default returns for mock classes. 509 // Add default returns for mock classes.
509 EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull()); 510 EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull());
510 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); 511 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull());
511 EXPECT_CALL(pc_, session()).WillRepeatedly(Return(&session_)); 512 EXPECT_CALL(pc_, session()).WillRepeatedly(Return(&session_));
512 EXPECT_CALL(pc_, sctp_data_channels()) 513 EXPECT_CALL(pc_, sctp_data_channels())
513 .WillRepeatedly(ReturnRef(data_channels_)); 514 .WillRepeatedly(ReturnRef(data_channels_));
514 } 515 }
515 516
516 ~StatsCollectorTest() {} 517 ~StatsCollectorTest() {}
517 518
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
600 cricket::VoiceSenderInfo* voice_sender_info, 601 cricket::VoiceSenderInfo* voice_sender_info,
601 cricket::VoiceReceiverInfo* voice_receiver_info, 602 cricket::VoiceReceiverInfo* voice_receiver_info,
602 cricket::VoiceMediaInfo* stats_read, 603 cricket::VoiceMediaInfo* stats_read,
603 StatsReports* reports) { 604 StatsReports* reports) {
604 // A track can't have both sender report and recv report at the same time 605 // A track can't have both sender report and recv report at the same time
605 // for now, this might change in the future though. 606 // for now, this might change in the future though.
606 ASSERT((voice_sender_info == NULL) ^ (voice_receiver_info == NULL)); 607 ASSERT((voice_sender_info == NULL) ^ (voice_receiver_info == NULL));
607 608
608 // Instruct the session to return stats containing the transport channel. 609 // Instruct the session to return stats containing the transport channel.
609 InitSessionStats(vc_name); 610 InitSessionStats(vc_name);
610 EXPECT_CALL(session_, GetTransportStats(_)) 611 EXPECT_CALL(session_, GetSessionStats(_)).WillRepeatedly(Invoke(
611 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), 612 [this](const ChannelNamePairs&) {
612 Return(true))); 613 return std::unique_ptr<SessionStats>(
614 new SessionStats(session_stats_));
615 }));
613 616
614 // Constructs an ssrc stats update. 617 // Constructs an ssrc stats update.
615 if (voice_sender_info) 618 if (voice_sender_info)
616 stats_read->senders.push_back(*voice_sender_info); 619 stats_read->senders.push_back(*voice_sender_info);
617 if (voice_receiver_info) 620 if (voice_receiver_info)
618 stats_read->receivers.push_back(*voice_receiver_info); 621 stats_read->receivers.push_back(*voice_receiver_info);
619 622
620 EXPECT_CALL(session_, voice_channel()).WillRepeatedly( 623 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(
621 Return(voice_channel)); 624 Return(voice_channel));
622 EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull()); 625 EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull());
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 rtc::RTCCertificate::Create(std::unique_ptr<rtc::FakeSSLIdentity>( 703 rtc::RTCCertificate::Create(std::unique_ptr<rtc::FakeSSLIdentity>(
701 new rtc::FakeSSLIdentity(local_cert)))); 704 new rtc::FakeSSLIdentity(local_cert))));
702 705
703 // Configure MockWebRtcSession 706 // Configure MockWebRtcSession
704 EXPECT_CALL(session_, 707 EXPECT_CALL(session_,
705 GetLocalCertificate(transport_stats.transport_name, _)) 708 GetLocalCertificate(transport_stats.transport_name, _))
706 .WillOnce(DoAll(SetArgPointee<1>(local_certificate), Return(true))); 709 .WillOnce(DoAll(SetArgPointee<1>(local_certificate), Return(true)));
707 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer( 710 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(
708 transport_stats.transport_name)) 711 transport_stats.transport_name))
709 .WillOnce(Return(remote_cert.release())); 712 .WillOnce(Return(remote_cert.release()));
710 EXPECT_CALL(session_, GetTransportStats(_)) 713 EXPECT_CALL(session_, GetSessionStats(_)).WillOnce(Invoke(
711 .WillOnce(DoAll(SetArgPointee<0>(session_stats), 714 [&session_stats](const ChannelNamePairs&) {
712 Return(true))); 715 return std::unique_ptr<SessionStats>(
716 new SessionStats(session_stats));
717 }));
713 718
714 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); 719 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard);
715 720
716 stats.GetStats(NULL, &reports); 721 stats.GetStats(NULL, &reports);
717 722
718 const StatsReport* channel_report = FindNthReportByType( 723 const StatsReport* channel_report = FindNthReportByType(
719 reports, StatsReport::kStatsReportTypeComponent, 1); 724 reports, StatsReport::kStatsReportTypeComponent, 1);
720 EXPECT_TRUE(channel_report != NULL); 725 EXPECT_TRUE(channel_report != NULL);
721 726
722 // Check local certificate chain. 727 // Check local certificate chain.
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 StatsCollectorForTest stats(&pc_); 846 StatsCollectorForTest stats(&pc_);
842 847
843 EXPECT_CALL(session_, GetLocalCertificate(_, _)) 848 EXPECT_CALL(session_, GetLocalCertificate(_, _))
844 .WillRepeatedly(Return(false)); 849 .WillRepeatedly(Return(false));
845 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) 850 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_))
846 .WillRepeatedly(Return(nullptr)); 851 .WillRepeatedly(Return(nullptr));
847 852
848 const char kVideoChannelName[] = "video"; 853 const char kVideoChannelName[] = "video";
849 854
850 InitSessionStats(kVideoChannelName); 855 InitSessionStats(kVideoChannelName);
851 EXPECT_CALL(session_, GetTransportStats(_)) 856 EXPECT_CALL(session_, GetSessionStats(_)).WillRepeatedly(Invoke(
852 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), 857 [this](const ChannelNamePairs&) {
853 Return(true))); 858 return std::unique_ptr<SessionStats>(
859 new SessionStats(session_stats_));
860 }));
854 861
855 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); 862 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel();
856 cricket::VideoChannel video_channel(worker_thread_, network_thread_, 863 cricket::VideoChannel video_channel(worker_thread_, network_thread_,
857 media_channel, nullptr, kVideoChannelName, 864 media_channel, nullptr, kVideoChannelName,
858 false); 865 false);
859 StatsReports reports; // returned values. 866 StatsReports reports; // returned values.
860 cricket::VideoSenderInfo video_sender_info; 867 cricket::VideoSenderInfo video_sender_info;
861 cricket::VideoMediaInfo stats_read; 868 cricket::VideoMediaInfo stats_read;
862 // The number of bytes must be larger than 0xFFFFFFFF for this test. 869 // The number of bytes must be larger than 0xFFFFFFFF for this test.
863 const int64_t kBytesSent = 12345678901234LL; 870 const int64_t kBytesSent = 12345678901234LL;
(...skipping 24 matching lines...) Expand all
888 StatsCollectorForTest stats(&pc_); 895 StatsCollectorForTest stats(&pc_);
889 896
890 EXPECT_CALL(session_, GetLocalCertificate(_, _)) 897 EXPECT_CALL(session_, GetLocalCertificate(_, _))
891 .WillRepeatedly(Return(false)); 898 .WillRepeatedly(Return(false));
892 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) 899 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_))
893 .WillRepeatedly(Return(nullptr)); 900 .WillRepeatedly(Return(nullptr));
894 901
895 const char kVideoChannelName[] = "video"; 902 const char kVideoChannelName[] = "video";
896 903
897 InitSessionStats(kVideoChannelName); 904 InitSessionStats(kVideoChannelName);
898 EXPECT_CALL(session_, GetTransportStats(_)) 905 EXPECT_CALL(session_, GetSessionStats(_)).WillRepeatedly(Invoke(
899 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), 906 [this](const ChannelNamePairs&) {
900 Return(true))); 907 return std::unique_ptr<SessionStats>(
908 new SessionStats(session_stats_));
909 }));
901 910
902 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); 911 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel();
903 cricket::VideoChannel video_channel(worker_thread_, network_thread_, 912 cricket::VideoChannel video_channel(worker_thread_, network_thread_,
904 media_channel, nullptr, kVideoChannelName, 913 media_channel, nullptr, kVideoChannelName,
905 false); 914 false);
906 915
907 StatsReports reports; // returned values. 916 StatsReports reports; // returned values.
908 cricket::VideoSenderInfo video_sender_info; 917 cricket::VideoSenderInfo video_sender_info;
909 cricket::VideoMediaInfo stats_read; 918 cricket::VideoMediaInfo stats_read;
910 // Set up an SSRC just to test that we get both kinds of stats back: SSRC and 919 // Set up an SSRC just to test that we get both kinds of stats back: SSRC and
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 TEST_F(StatsCollectorTest, TrackAndSsrcObjectExistAfterUpdateSsrcStats) { 1009 TEST_F(StatsCollectorTest, TrackAndSsrcObjectExistAfterUpdateSsrcStats) {
1001 StatsCollectorForTest stats(&pc_); 1010 StatsCollectorForTest stats(&pc_);
1002 1011
1003 EXPECT_CALL(session_, GetLocalCertificate(_, _)) 1012 EXPECT_CALL(session_, GetLocalCertificate(_, _))
1004 .WillRepeatedly(Return(false)); 1013 .WillRepeatedly(Return(false));
1005 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) 1014 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_))
1006 .WillRepeatedly(Return(nullptr)); 1015 .WillRepeatedly(Return(nullptr));
1007 1016
1008 const char kVideoChannelName[] = "video"; 1017 const char kVideoChannelName[] = "video";
1009 InitSessionStats(kVideoChannelName); 1018 InitSessionStats(kVideoChannelName);
1010 EXPECT_CALL(session_, GetTransportStats(_)) 1019 EXPECT_CALL(session_, GetSessionStats(_)).WillRepeatedly(Invoke(
1011 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), 1020 [this](const ChannelNamePairs&) {
1012 Return(true))); 1021 return std::unique_ptr<SessionStats>(
1022 new SessionStats(session_stats_));
1023 }));
1013 1024
1014 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); 1025 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel();
1015 cricket::VideoChannel video_channel(worker_thread_, network_thread_, 1026 cricket::VideoChannel video_channel(worker_thread_, network_thread_,
1016 media_channel, nullptr, kVideoChannelName, 1027 media_channel, nullptr, kVideoChannelName,
1017 false); 1028 false);
1018 AddOutgoingVideoTrackStats(); 1029 AddOutgoingVideoTrackStats();
1019 stats.AddStream(stream_); 1030 stats.AddStream(stream_);
1020 1031
1021 // Constructs an ssrc stats update. 1032 // Constructs an ssrc stats update.
1022 cricket::VideoSenderInfo video_sender_info; 1033 cricket::VideoSenderInfo video_sender_info;
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
1096 video_sender_info.bytes_sent = kBytesSent; 1107 video_sender_info.bytes_sent = kBytesSent;
1097 stats_read.senders.push_back(video_sender_info); 1108 stats_read.senders.push_back(video_sender_info);
1098 1109
1099 EXPECT_CALL(session_, video_channel()).WillRepeatedly(Return(&video_channel)); 1110 EXPECT_CALL(session_, video_channel()).WillRepeatedly(Return(&video_channel));
1100 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); 1111 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull());
1101 EXPECT_CALL(*media_channel, GetStats(_)) 1112 EXPECT_CALL(*media_channel, GetStats(_))
1102 .WillRepeatedly(DoAll(SetArgPointee<0>(stats_read), 1113 .WillRepeatedly(DoAll(SetArgPointee<0>(stats_read),
1103 Return(true))); 1114 Return(true)));
1104 1115
1105 InitSessionStats(kVcName); 1116 InitSessionStats(kVcName);
1106 EXPECT_CALL(session_, GetTransportStats(_)) 1117 EXPECT_CALL(session_, GetSessionStats(_)).WillRepeatedly(Invoke(
1107 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), 1118 [this](const ChannelNamePairs&) {
1108 Return(true))); 1119 return std::unique_ptr<SessionStats>(
1120 new SessionStats(session_stats_));
1121 }));
1109 1122
1110 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); 1123 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard);
1111 StatsReports reports; 1124 StatsReports reports;
1112 stats.GetStats(NULL, &reports); 1125 stats.GetStats(NULL, &reports);
1113 std::string transport_id = ExtractStatsValue( 1126 std::string transport_id = ExtractStatsValue(
1114 StatsReport::kStatsReportTypeSsrc, 1127 StatsReport::kStatsReportTypeSsrc,
1115 reports, 1128 reports,
1116 StatsReport::kStatsValueNameTransportId); 1129 StatsReport::kStatsValueNameTransportId);
1117 ASSERT_NE(kNotFound, transport_id); 1130 ASSERT_NE(kNotFound, transport_id);
1118 // Transport id component ID will always be 1. 1131 // Transport id component ID will always be 1.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1165 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); 1178 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel();
1166 // The transport_name known by the video channel. 1179 // The transport_name known by the video channel.
1167 const std::string kVcName("vcname"); 1180 const std::string kVcName("vcname");
1168 cricket::VideoChannel video_channel(worker_thread_, network_thread_, 1181 cricket::VideoChannel video_channel(worker_thread_, network_thread_,
1169 media_channel, nullptr, kVcName, false); 1182 media_channel, nullptr, kVcName, false);
1170 AddOutgoingVideoTrackStats(); 1183 AddOutgoingVideoTrackStats();
1171 stats.AddStream(stream_); 1184 stats.AddStream(stream_);
1172 1185
1173 // Instruct the session to return stats containing the transport channel. 1186 // Instruct the session to return stats containing the transport channel.
1174 InitSessionStats(kVcName); 1187 InitSessionStats(kVcName);
1175 EXPECT_CALL(session_, GetTransportStats(_)) 1188 EXPECT_CALL(session_, GetSessionStats(_)).WillRepeatedly(Invoke(
1176 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), 1189 [this](const ChannelNamePairs&) {
1177 Return(true))); 1190 return std::unique_ptr<SessionStats>(
1191 new SessionStats(session_stats_));
1192 }));
1178 1193
1179 // Constructs an ssrc stats update. 1194 // Constructs an ssrc stats update.
1180 cricket::VideoMediaInfo stats_read; 1195 cricket::VideoMediaInfo stats_read;
1181 1196
1182 cricket::SsrcReceiverInfo remote_ssrc_stats; 1197 cricket::SsrcReceiverInfo remote_ssrc_stats;
1183 remote_ssrc_stats.timestamp = 12345.678; 1198 remote_ssrc_stats.timestamp = 12345.678;
1184 remote_ssrc_stats.ssrc = kSsrcOfTrack; 1199 remote_ssrc_stats.ssrc = kSsrcOfTrack;
1185 cricket::VideoSenderInfo video_sender_info; 1200 cricket::VideoSenderInfo video_sender_info;
1186 video_sender_info.add_ssrc(kSsrcOfTrack); 1201 video_sender_info.add_ssrc(kSsrcOfTrack);
1187 video_sender_info.remote_stats.push_back(remote_ssrc_stats); 1202 video_sender_info.remote_stats.push_back(remote_ssrc_stats);
(...skipping 20 matching lines...) Expand all
1208 TEST_F(StatsCollectorTest, ReportsFromRemoteTrack) { 1223 TEST_F(StatsCollectorTest, ReportsFromRemoteTrack) {
1209 StatsCollectorForTest stats(&pc_); 1224 StatsCollectorForTest stats(&pc_);
1210 1225
1211 EXPECT_CALL(session_, GetLocalCertificate(_, _)) 1226 EXPECT_CALL(session_, GetLocalCertificate(_, _))
1212 .WillRepeatedly(Return(false)); 1227 .WillRepeatedly(Return(false));
1213 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) 1228 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_))
1214 .WillRepeatedly(Return(nullptr)); 1229 .WillRepeatedly(Return(nullptr));
1215 1230
1216 const char kVideoChannelName[] = "video"; 1231 const char kVideoChannelName[] = "video";
1217 InitSessionStats(kVideoChannelName); 1232 InitSessionStats(kVideoChannelName);
1218 EXPECT_CALL(session_, GetTransportStats(_)) 1233 EXPECT_CALL(session_, GetSessionStats(_)).WillRepeatedly(Invoke(
1219 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), 1234 [this](const ChannelNamePairs&) {
1220 Return(true))); 1235 return std::unique_ptr<SessionStats>(
1236 new SessionStats(session_stats_));
1237 }));
1221 1238
1222 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); 1239 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel();
1223 cricket::VideoChannel video_channel(worker_thread_, network_thread_, 1240 cricket::VideoChannel video_channel(worker_thread_, network_thread_,
1224 media_channel, nullptr, kVideoChannelName, 1241 media_channel, nullptr, kVideoChannelName,
1225 false); 1242 false);
1226 AddIncomingVideoTrackStats(); 1243 AddIncomingVideoTrackStats();
1227 stats.AddStream(stream_); 1244 stats.AddStream(stream_);
1228 1245
1229 // Constructs an ssrc stats update. 1246 // Constructs an ssrc stats update.
1230 cricket::VideoReceiverInfo video_receiver_info; 1247 cricket::VideoReceiverInfo video_receiver_info;
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
1414 1431
1415 cricket::TransportStats transport_stats; 1432 cricket::TransportStats transport_stats;
1416 transport_stats.transport_name = "audio"; 1433 transport_stats.transport_name = "audio";
1417 transport_stats.channel_stats.push_back(channel_stats); 1434 transport_stats.channel_stats.push_back(channel_stats);
1418 1435
1419 SessionStats session_stats; 1436 SessionStats session_stats;
1420 session_stats.transport_stats[transport_stats.transport_name] = 1437 session_stats.transport_stats[transport_stats.transport_name] =
1421 transport_stats; 1438 transport_stats;
1422 1439
1423 // Configure MockWebRtcSession 1440 // Configure MockWebRtcSession
1424 EXPECT_CALL(session_, GetTransportStats(_)) 1441 EXPECT_CALL(session_, GetSessionStats(_)).WillRepeatedly(Invoke(
1425 .WillOnce(DoAll(SetArgPointee<0>(session_stats), 1442 [&session_stats](const ChannelNamePairs&) {
1426 Return(true))); 1443 return std::unique_ptr<SessionStats>(
1444 new SessionStats(session_stats));
1445 }));
1427 1446
1428 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); 1447 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard);
1429 stats.GetStats(NULL, &reports); 1448 stats.GetStats(NULL, &reports);
1430 1449
1431 // Check that the local certificate is absent. 1450 // Check that the local certificate is absent.
1432 std::string local_certificate_id = ExtractStatsValue( 1451 std::string local_certificate_id = ExtractStatsValue(
1433 StatsReport::kStatsReportTypeComponent, 1452 StatsReport::kStatsReportTypeComponent,
1434 reports, 1453 reports,
1435 StatsReport::kStatsValueNameLocalCertificateId); 1454 StatsReport::kStatsValueNameLocalCertificateId);
1436 ASSERT_EQ(kNotFound, local_certificate_id); 1455 ASSERT_EQ(kNotFound, local_certificate_id);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1471 1490
1472 cricket::TransportStats transport_stats; 1491 cricket::TransportStats transport_stats;
1473 transport_stats.transport_name = "audio"; 1492 transport_stats.transport_name = "audio";
1474 transport_stats.channel_stats.push_back(channel_stats); 1493 transport_stats.channel_stats.push_back(channel_stats);
1475 1494
1476 SessionStats session_stats; 1495 SessionStats session_stats;
1477 session_stats.transport_stats[transport_stats.transport_name] = 1496 session_stats.transport_stats[transport_stats.transport_name] =
1478 transport_stats; 1497 transport_stats;
1479 1498
1480 // Configure MockWebRtcSession 1499 // Configure MockWebRtcSession
1481 EXPECT_CALL(session_, GetTransportStats(_)) 1500 EXPECT_CALL(session_, GetSessionStats(_)).WillRepeatedly(Invoke(
1482 .WillOnce(DoAll(SetArgPointee<0>(session_stats), 1501 [&session_stats](const ChannelNamePairs&) {
1483 Return(true))); 1502 return std::unique_ptr<SessionStats>(
1503 new SessionStats(session_stats));
1504 }));
1484 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); 1505 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard);
1485 stats.GetStats(NULL, &reports); 1506 stats.GetStats(NULL, &reports);
1486 1507
1487 // Check that the local certificate is absent. 1508 // Check that the local certificate is absent.
1488 std::string local_certificate_id = ExtractStatsValue( 1509 std::string local_certificate_id = ExtractStatsValue(
1489 StatsReport::kStatsReportTypeComponent, 1510 StatsReport::kStatsReportTypeComponent,
1490 reports, 1511 reports,
1491 StatsReport::kStatsValueNameLocalCertificateId); 1512 StatsReport::kStatsValueNameLocalCertificateId);
1492 ASSERT_EQ(kNotFound, local_certificate_id); 1513 ASSERT_EQ(kNotFound, local_certificate_id);
1493 1514
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1550 webrtc::MediaStream::Create("remotestreamlabel")); 1571 webrtc::MediaStream::Create("remotestreamlabel"));
1551 rtc::scoped_refptr<FakeAudioTrackWithInitValue> remote_track( 1572 rtc::scoped_refptr<FakeAudioTrackWithInitValue> remote_track(
1552 new rtc::RefCountedObject<FakeAudioTrackWithInitValue>(kRemoteTrackId)); 1573 new rtc::RefCountedObject<FakeAudioTrackWithInitValue>(kRemoteTrackId));
1553 EXPECT_CALL(session_, GetRemoteTrackIdBySsrc(kSsrcOfTrack, _)) 1574 EXPECT_CALL(session_, GetRemoteTrackIdBySsrc(kSsrcOfTrack, _))
1554 .WillOnce(DoAll(SetArgPointee<1>(kRemoteTrackId), Return(true))); 1575 .WillOnce(DoAll(SetArgPointee<1>(kRemoteTrackId), Return(true)));
1555 remote_stream->AddTrack(remote_track); 1576 remote_stream->AddTrack(remote_track);
1556 stats.AddStream(remote_stream); 1577 stats.AddStream(remote_stream);
1557 1578
1558 // Instruct the session to return stats containing the transport channel. 1579 // Instruct the session to return stats containing the transport channel.
1559 InitSessionStats(kVcName); 1580 InitSessionStats(kVcName);
1560 EXPECT_CALL(session_, GetTransportStats(_)) 1581 EXPECT_CALL(session_, GetSessionStats(_)).WillRepeatedly(Invoke(
1561 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), Return(true))); 1582 [this](const ChannelNamePairs&) {
1583 return std::unique_ptr<SessionStats>(
1584 new SessionStats(session_stats_));
1585 }));
1562 1586
1563 cricket::VoiceSenderInfo voice_sender_info; 1587 cricket::VoiceSenderInfo voice_sender_info;
1564 voice_sender_info.add_ssrc(kSsrcOfTrack); 1588 voice_sender_info.add_ssrc(kSsrcOfTrack);
1565 // These values are set to -1 initially in audio_send_stream. 1589 // These values are set to -1 initially in audio_send_stream.
1566 // The voice_sender_info will read the values from audio_send_stream. 1590 // The voice_sender_info will read the values from audio_send_stream.
1567 voice_sender_info.rtt_ms = -1; 1591 voice_sender_info.rtt_ms = -1;
1568 voice_sender_info.packets_lost = -1; 1592 voice_sender_info.packets_lost = -1;
1569 voice_sender_info.jitter_ms = -1; 1593 voice_sender_info.jitter_ms = -1;
1570 1594
1571 // Some of the contents in |voice_sender_info| needs to be updated from the 1595 // Some of the contents in |voice_sender_info| needs to be updated from the
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1704 const std::string kVcName("vcname"); 1728 const std::string kVcName("vcname");
1705 cricket::VoiceChannel voice_channel(worker_thread_, network_thread_, 1729 cricket::VoiceChannel voice_channel(worker_thread_, network_thread_,
1706 media_engine_, media_channel, nullptr, 1730 media_engine_, media_channel, nullptr,
1707 kVcName, false); 1731 kVcName, false);
1708 AddOutgoingAudioTrackStats(); 1732 AddOutgoingAudioTrackStats();
1709 stats.AddStream(stream_); 1733 stats.AddStream(stream_);
1710 stats.AddLocalAudioTrack(audio_track_.get(), kSsrcOfTrack); 1734 stats.AddLocalAudioTrack(audio_track_.get(), kSsrcOfTrack);
1711 1735
1712 // Instruct the session to return stats containing the transport channel. 1736 // Instruct the session to return stats containing the transport channel.
1713 InitSessionStats(kVcName); 1737 InitSessionStats(kVcName);
1714 EXPECT_CALL(session_, GetTransportStats(_)) 1738 EXPECT_CALL(session_, GetSessionStats(_)).WillRepeatedly(Invoke(
1715 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), 1739 [this](const ChannelNamePairs&) {
1716 Return(true))); 1740 return std::unique_ptr<SessionStats>(
1741 new SessionStats(session_stats_));
1742 }));
1717 1743
1718 stats.RemoveLocalAudioTrack(audio_track_.get(), kSsrcOfTrack); 1744 stats.RemoveLocalAudioTrack(audio_track_.get(), kSsrcOfTrack);
1719 cricket::VoiceSenderInfo voice_sender_info; 1745 cricket::VoiceSenderInfo voice_sender_info;
1720 InitVoiceSenderInfo(&voice_sender_info); 1746 InitVoiceSenderInfo(&voice_sender_info);
1721 1747
1722 // Constructs an ssrc stats update. 1748 // Constructs an ssrc stats update.
1723 cricket::VoiceMediaInfo stats_read; 1749 cricket::VoiceMediaInfo stats_read;
1724 stats_read.senders.push_back(voice_sender_info); 1750 stats_read.senders.push_back(voice_sender_info);
1725 1751
1726 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(Return(&voice_channel)); 1752 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(Return(&voice_channel));
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1778 webrtc::MediaStream::Create("remotestreamlabel")); 1804 webrtc::MediaStream::Create("remotestreamlabel"));
1779 rtc::scoped_refptr<FakeAudioTrack> remote_track( 1805 rtc::scoped_refptr<FakeAudioTrack> remote_track(
1780 new rtc::RefCountedObject<FakeAudioTrack>(kRemoteTrackId)); 1806 new rtc::RefCountedObject<FakeAudioTrack>(kRemoteTrackId));
1781 EXPECT_CALL(session_, GetRemoteTrackIdBySsrc(kSsrcOfTrack, _)) 1807 EXPECT_CALL(session_, GetRemoteTrackIdBySsrc(kSsrcOfTrack, _))
1782 .WillOnce(DoAll(SetArgPointee<1>(kRemoteTrackId), Return(true))); 1808 .WillOnce(DoAll(SetArgPointee<1>(kRemoteTrackId), Return(true)));
1783 remote_stream->AddTrack(remote_track); 1809 remote_stream->AddTrack(remote_track);
1784 stats.AddStream(remote_stream); 1810 stats.AddStream(remote_stream);
1785 1811
1786 // Instruct the session to return stats containing the transport channel. 1812 // Instruct the session to return stats containing the transport channel.
1787 InitSessionStats(kVcName); 1813 InitSessionStats(kVcName);
1788 EXPECT_CALL(session_, GetTransportStats(_)) 1814 EXPECT_CALL(session_, GetSessionStats(_)).WillRepeatedly(Invoke(
1789 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), 1815 [this](const ChannelNamePairs&) {
1790 Return(true))); 1816 return std::unique_ptr<SessionStats>(
1817 new SessionStats(session_stats_));
1818 }));
1791 1819
1792 cricket::VoiceSenderInfo voice_sender_info; 1820 cricket::VoiceSenderInfo voice_sender_info;
1793 InitVoiceSenderInfo(&voice_sender_info); 1821 InitVoiceSenderInfo(&voice_sender_info);
1794 1822
1795 // Some of the contents in |voice_sender_info| needs to be updated from the 1823 // Some of the contents in |voice_sender_info| needs to be updated from the
1796 // |audio_track_|. 1824 // |audio_track_|.
1797 UpdateVoiceSenderInfoFromAudioTrack(audio_track_.get(), &voice_sender_info); 1825 UpdateVoiceSenderInfoFromAudioTrack(audio_track_.get(), &voice_sender_info);
1798 1826
1799 cricket::VoiceReceiverInfo voice_receiver_info; 1827 cricket::VoiceReceiverInfo voice_receiver_info;
1800 InitVoiceReceiverInfo(&voice_receiver_info); 1828 InitVoiceReceiverInfo(&voice_receiver_info);
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
1898 StatsCollectorForTest stats(&pc_); 1926 StatsCollectorForTest stats(&pc_);
1899 1927
1900 EXPECT_CALL(session_, GetLocalCertificate(_, _)) 1928 EXPECT_CALL(session_, GetLocalCertificate(_, _))
1901 .WillRepeatedly(Return(false)); 1929 .WillRepeatedly(Return(false));
1902 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) 1930 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_))
1903 .WillRepeatedly(Return(nullptr)); 1931 .WillRepeatedly(Return(nullptr));
1904 1932
1905 const char kVideoChannelName[] = "video"; 1933 const char kVideoChannelName[] = "video";
1906 1934
1907 InitSessionStats(kVideoChannelName); 1935 InitSessionStats(kVideoChannelName);
1908 EXPECT_CALL(session_, GetTransportStats(_)) 1936 EXPECT_CALL(session_, GetSessionStats(_)).WillRepeatedly(Invoke(
1909 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), Return(true))); 1937 [this](const ChannelNamePairs&) {
1938 return std::unique_ptr<SessionStats>(
1939 new SessionStats(session_stats_));
1940 }));
1910 1941
1911 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); 1942 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel();
1912 cricket::VideoChannel video_channel(worker_thread_, network_thread_, 1943 cricket::VideoChannel video_channel(worker_thread_, network_thread_,
1913 media_channel, nullptr, kVideoChannelName, 1944 media_channel, nullptr, kVideoChannelName,
1914 false); 1945 false);
1915 StatsReports reports; // returned values. 1946 StatsReports reports; // returned values.
1916 cricket::VideoSenderInfo video_sender_info; 1947 cricket::VideoSenderInfo video_sender_info;
1917 cricket::VideoMediaInfo stats_read; 1948 cricket::VideoMediaInfo stats_read;
1918 1949
1919 AddOutgoingVideoTrackStats(); 1950 AddOutgoingVideoTrackStats();
(...skipping 23 matching lines...) Expand all
1943 StatsCollectorForTest stats(&pc_); 1974 StatsCollectorForTest stats(&pc_);
1944 1975
1945 EXPECT_CALL(session_, GetLocalCertificate(_, _)) 1976 EXPECT_CALL(session_, GetLocalCertificate(_, _))
1946 .WillRepeatedly(Return(false)); 1977 .WillRepeatedly(Return(false));
1947 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) 1978 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_))
1948 .WillRepeatedly(Return(nullptr)); 1979 .WillRepeatedly(Return(nullptr));
1949 1980
1950 const char kVideoChannelName[] = "video"; 1981 const char kVideoChannelName[] = "video";
1951 1982
1952 InitSessionStats(kVideoChannelName); 1983 InitSessionStats(kVideoChannelName);
1953 EXPECT_CALL(session_, GetTransportStats(_)) 1984 EXPECT_CALL(session_, GetSessionStats(_)).WillRepeatedly(Invoke(
1954 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), Return(true))); 1985 [this](const ChannelNamePairs&) {
1986 return std::unique_ptr<SessionStats>(
1987 new SessionStats(session_stats_));
1988 }));
1955 1989
1956 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); 1990 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel();
1957 cricket::VideoChannel video_channel(worker_thread_, network_thread_, 1991 cricket::VideoChannel video_channel(worker_thread_, network_thread_,
1958 media_channel, nullptr, kVideoChannelName, 1992 media_channel, nullptr, kVideoChannelName,
1959 false); 1993 false);
1960 StatsReports reports; // returned values. 1994 StatsReports reports; // returned values.
1961 cricket::VideoReceiverInfo video_receiver_info; 1995 cricket::VideoReceiverInfo video_receiver_info;
1962 cricket::VideoMediaInfo stats_read; 1996 cricket::VideoMediaInfo stats_read;
1963 1997
1964 AddIncomingVideoTrackStats(); 1998 AddIncomingVideoTrackStats();
1965 stats.AddStream(stream_); 1999 stats.AddStream(stream_);
1966 2000
1967 // Construct a stats value to read. 2001 // Construct a stats value to read.
1968 video_receiver_info.add_ssrc(1234); 2002 video_receiver_info.add_ssrc(1234);
1969 video_receiver_info.frames_decoded = 10; 2003 video_receiver_info.frames_decoded = 10;
1970 stats_read.receivers.push_back(video_receiver_info); 2004 stats_read.receivers.push_back(video_receiver_info);
1971 2005
1972 EXPECT_CALL(session_, video_channel()).WillRepeatedly(Return(&video_channel)); 2006 EXPECT_CALL(session_, video_channel()).WillRepeatedly(Return(&video_channel));
1973 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); 2007 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull());
1974 EXPECT_CALL(*media_channel, GetStats(_)) 2008 EXPECT_CALL(*media_channel, GetStats(_))
1975 .WillOnce(DoAll(SetArgPointee<0>(stats_read), Return(true))); 2009 .WillOnce(DoAll(SetArgPointee<0>(stats_read), Return(true)));
1976 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); 2010 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard);
1977 stats.GetStats(NULL, &reports); 2011 stats.GetStats(NULL, &reports);
1978 EXPECT_EQ(rtc::ToString(video_receiver_info.frames_decoded), 2012 EXPECT_EQ(rtc::ToString(video_receiver_info.frames_decoded),
1979 ExtractSsrcStatsValue(reports, 2013 ExtractSsrcStatsValue(reports,
1980 StatsReport::kStatsValueNameFramesDecoded)); 2014 StatsReport::kStatsValueNameFramesDecoded));
1981 } 2015 }
1982 2016
1983 } // namespace webrtc 2017 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698