OLD | NEW |
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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 MOCK_METHOD0(voice_channel, cricket::VoiceChannel*()); | 74 MOCK_METHOD0(voice_channel, cricket::VoiceChannel*()); |
75 MOCK_METHOD0(video_channel, cricket::VideoChannel*()); | 75 MOCK_METHOD0(video_channel, cricket::VideoChannel*()); |
76 // Libjingle uses "local" for a outgoing track, and "remote" for a incoming | 76 // Libjingle uses "local" for a outgoing track, and "remote" for a incoming |
77 // track. | 77 // track. |
78 MOCK_METHOD2(GetLocalTrackIdBySsrc, bool(uint32_t, std::string*)); | 78 MOCK_METHOD2(GetLocalTrackIdBySsrc, bool(uint32_t, std::string*)); |
79 MOCK_METHOD2(GetRemoteTrackIdBySsrc, bool(uint32_t, std::string*)); | 79 MOCK_METHOD2(GetRemoteTrackIdBySsrc, bool(uint32_t, std::string*)); |
80 MOCK_METHOD1(GetTransportStats, bool(SessionStats*)); | 80 MOCK_METHOD1(GetTransportStats, bool(SessionStats*)); |
81 MOCK_METHOD2(GetLocalCertificate, | 81 MOCK_METHOD2(GetLocalCertificate, |
82 bool(const std::string& transport_name, | 82 bool(const std::string& transport_name, |
83 rtc::scoped_refptr<rtc::RTCCertificate>* certificate)); | 83 rtc::scoped_refptr<rtc::RTCCertificate>* certificate)); |
84 MOCK_METHOD2(GetRemoteSSLCertificate, | 84 |
85 bool(const std::string& transport_name, | 85 // Workaround for gmock's inability to cope with move-only return values. |
86 rtc::SSLCertificate** cert)); | 86 rtc::scoped_ptr<rtc::SSLCertificate> GetRemoteSSLCertificate( |
| 87 const std::string& transport_name) override { |
| 88 return rtc::scoped_ptr<rtc::SSLCertificate>( |
| 89 GetRemoteSSLCertificate_ReturnsRawPointer(transport_name)); |
| 90 } |
| 91 MOCK_METHOD1(GetRemoteSSLCertificate_ReturnsRawPointer, |
| 92 rtc::SSLCertificate*(const std::string& transport_name)); |
87 }; | 93 }; |
88 | 94 |
89 // The factory isn't really used; it just satisfies the base PeerConnection. | 95 // The factory isn't really used; it just satisfies the base PeerConnection. |
90 class FakePeerConnectionFactory | 96 class FakePeerConnectionFactory |
91 : public rtc::RefCountedObject<PeerConnectionFactory> {}; | 97 : public rtc::RefCountedObject<PeerConnectionFactory> {}; |
92 | 98 |
93 class MockPeerConnection | 99 class MockPeerConnection |
94 : public rtc::RefCountedObject<webrtc::PeerConnection> { | 100 : public rtc::RefCountedObject<webrtc::PeerConnection> { |
95 public: | 101 public: |
96 MockPeerConnection() | 102 MockPeerConnection() |
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
652 EXPECT_EQ(audio_track->id(), track_id); | 658 EXPECT_EQ(audio_track->id(), track_id); |
653 ssrc_id = ExtractSsrcStatsValue(track_reports, | 659 ssrc_id = ExtractSsrcStatsValue(track_reports, |
654 StatsReport::kStatsValueNameSsrc); | 660 StatsReport::kStatsValueNameSsrc); |
655 EXPECT_EQ(rtc::ToString<uint32_t>(kSsrcOfTrack), ssrc_id); | 661 EXPECT_EQ(rtc::ToString<uint32_t>(kSsrcOfTrack), ssrc_id); |
656 if (voice_sender_info) | 662 if (voice_sender_info) |
657 VerifyVoiceSenderInfoReport(track_report, *voice_sender_info); | 663 VerifyVoiceSenderInfoReport(track_report, *voice_sender_info); |
658 if (voice_receiver_info) | 664 if (voice_receiver_info) |
659 VerifyVoiceReceiverInfoReport(track_report, *voice_receiver_info); | 665 VerifyVoiceReceiverInfoReport(track_report, *voice_receiver_info); |
660 } | 666 } |
661 | 667 |
662 void TestCertificateReports(const rtc::FakeSSLCertificate& local_cert, | 668 void TestCertificateReports( |
663 const std::vector<std::string>& local_ders, | 669 const rtc::FakeSSLCertificate& local_cert, |
664 const rtc::FakeSSLCertificate& remote_cert, | 670 const std::vector<std::string>& local_ders, |
665 const std::vector<std::string>& remote_ders) { | 671 rtc::scoped_ptr<rtc::FakeSSLCertificate> remote_cert, |
| 672 const std::vector<std::string>& remote_ders) { |
666 StatsCollectorForTest stats(&pc_); | 673 StatsCollectorForTest stats(&pc_); |
667 | 674 |
668 StatsReports reports; // returned values. | 675 StatsReports reports; // returned values. |
669 | 676 |
670 // Fake stats to process. | 677 // Fake stats to process. |
671 cricket::TransportChannelStats channel_stats; | 678 cricket::TransportChannelStats channel_stats; |
672 channel_stats.component = 1; | 679 channel_stats.component = 1; |
673 channel_stats.srtp_crypto_suite = rtc::SRTP_AES128_CM_SHA1_80; | 680 channel_stats.srtp_crypto_suite = rtc::SRTP_AES128_CM_SHA1_80; |
674 channel_stats.ssl_cipher_suite = TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA; | 681 channel_stats.ssl_cipher_suite = TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA; |
675 | 682 |
676 cricket::TransportStats transport_stats; | 683 cricket::TransportStats transport_stats; |
677 transport_stats.transport_name = "audio"; | 684 transport_stats.transport_name = "audio"; |
678 transport_stats.channel_stats.push_back(channel_stats); | 685 transport_stats.channel_stats.push_back(channel_stats); |
679 | 686 |
680 SessionStats session_stats; | 687 SessionStats session_stats; |
681 session_stats.transport_stats[transport_stats.transport_name] = | 688 session_stats.transport_stats[transport_stats.transport_name] = |
682 transport_stats; | 689 transport_stats; |
683 | 690 |
684 // Fake certificate to report | 691 // Fake certificate to report |
685 rtc::scoped_refptr<rtc::RTCCertificate> local_certificate( | 692 rtc::scoped_refptr<rtc::RTCCertificate> local_certificate( |
686 rtc::RTCCertificate::Create(rtc::scoped_ptr<rtc::FakeSSLIdentity>( | 693 rtc::RTCCertificate::Create(rtc::scoped_ptr<rtc::FakeSSLIdentity>( |
687 new rtc::FakeSSLIdentity(local_cert)))); | 694 new rtc::FakeSSLIdentity(local_cert)))); |
688 | 695 |
689 // Configure MockWebRtcSession | 696 // Configure MockWebRtcSession |
690 EXPECT_CALL(session_, | 697 EXPECT_CALL(session_, |
691 GetLocalCertificate(transport_stats.transport_name, _)) | 698 GetLocalCertificate(transport_stats.transport_name, _)) |
692 .WillOnce(DoAll(SetArgPointee<1>(local_certificate), Return(true))); | 699 .WillOnce(DoAll(SetArgPointee<1>(local_certificate), Return(true))); |
693 EXPECT_CALL(session_, | 700 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer( |
694 GetRemoteSSLCertificate(transport_stats.transport_name, _)) | 701 transport_stats.transport_name)) |
695 .WillOnce( | 702 .WillOnce(Return(remote_cert.release())); |
696 DoAll(SetArgPointee<1>(remote_cert.GetReference()), Return(true))); | |
697 EXPECT_CALL(session_, GetTransportStats(_)) | 703 EXPECT_CALL(session_, GetTransportStats(_)) |
698 .WillOnce(DoAll(SetArgPointee<0>(session_stats), | 704 .WillOnce(DoAll(SetArgPointee<0>(session_stats), |
699 Return(true))); | 705 Return(true))); |
700 | 706 |
701 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); | 707 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); |
702 | 708 |
703 stats.GetStats(NULL, &reports); | 709 stats.GetStats(NULL, &reports); |
704 | 710 |
705 const StatsReport* channel_report = FindNthReportByType( | 711 const StatsReport* channel_report = FindNthReportByType( |
706 reports, StatsReport::kStatsReportTypeComponent, 1); | 712 reports, StatsReport::kStatsReportTypeComponent, 1); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
796 reports, | 802 reports, |
797 StatsReport::kStatsValueNameProtocol)); | 803 StatsReport::kStatsValueNameProtocol)); |
798 } | 804 } |
799 | 805 |
800 // This test verifies that 64-bit counters are passed successfully. | 806 // This test verifies that 64-bit counters are passed successfully. |
801 TEST_F(StatsCollectorTest, BytesCounterHandles64Bits) { | 807 TEST_F(StatsCollectorTest, BytesCounterHandles64Bits) { |
802 StatsCollectorForTest stats(&pc_); | 808 StatsCollectorForTest stats(&pc_); |
803 | 809 |
804 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 810 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
805 .WillRepeatedly(Return(false)); | 811 .WillRepeatedly(Return(false)); |
806 EXPECT_CALL(session_, GetRemoteSSLCertificate(_, _)) | 812 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
807 .WillRepeatedly(Return(false)); | 813 .WillRepeatedly(Return(nullptr)); |
808 | 814 |
809 const char kVideoChannelName[] = "video"; | 815 const char kVideoChannelName[] = "video"; |
810 | 816 |
811 InitSessionStats(kVideoChannelName); | 817 InitSessionStats(kVideoChannelName); |
812 EXPECT_CALL(session_, GetTransportStats(_)) | 818 EXPECT_CALL(session_, GetTransportStats(_)) |
813 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), | 819 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), |
814 Return(true))); | 820 Return(true))); |
815 | 821 |
816 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 822 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
817 cricket::VideoChannel video_channel(rtc::Thread::Current(), media_channel, | 823 cricket::VideoChannel video_channel(rtc::Thread::Current(), media_channel, |
(...skipping 24 matching lines...) Expand all Loading... |
842 StatsReport::kStatsValueNameBytesSent); | 848 StatsReport::kStatsValueNameBytesSent); |
843 EXPECT_EQ(kBytesSentString, result); | 849 EXPECT_EQ(kBytesSentString, result); |
844 } | 850 } |
845 | 851 |
846 // Test that BWE information is reported via stats. | 852 // Test that BWE information is reported via stats. |
847 TEST_F(StatsCollectorTest, BandwidthEstimationInfoIsReported) { | 853 TEST_F(StatsCollectorTest, BandwidthEstimationInfoIsReported) { |
848 StatsCollectorForTest stats(&pc_); | 854 StatsCollectorForTest stats(&pc_); |
849 | 855 |
850 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 856 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
851 .WillRepeatedly(Return(false)); | 857 .WillRepeatedly(Return(false)); |
852 EXPECT_CALL(session_, GetRemoteSSLCertificate(_, _)) | 858 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
853 .WillRepeatedly(Return(false)); | 859 .WillRepeatedly(Return(nullptr)); |
854 | 860 |
855 const char kVideoChannelName[] = "video"; | 861 const char kVideoChannelName[] = "video"; |
856 | 862 |
857 InitSessionStats(kVideoChannelName); | 863 InitSessionStats(kVideoChannelName); |
858 EXPECT_CALL(session_, GetTransportStats(_)) | 864 EXPECT_CALL(session_, GetTransportStats(_)) |
859 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), | 865 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), |
860 Return(true))); | 866 Return(true))); |
861 | 867 |
862 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 868 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
863 cricket::VideoChannel video_channel(rtc::Thread::Current(), media_channel, | 869 cricket::VideoChannel video_channel(rtc::Thread::Current(), media_channel, |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
954 EXPECT_EQ(kLocalTrackId, trackValue); | 960 EXPECT_EQ(kLocalTrackId, trackValue); |
955 } | 961 } |
956 | 962 |
957 // This test verifies that the empty track report exists in the returned stats | 963 // This test verifies that the empty track report exists in the returned stats |
958 // when StatsCollector::UpdateStats is called with ssrc stats. | 964 // when StatsCollector::UpdateStats is called with ssrc stats. |
959 TEST_F(StatsCollectorTest, TrackAndSsrcObjectExistAfterUpdateSsrcStats) { | 965 TEST_F(StatsCollectorTest, TrackAndSsrcObjectExistAfterUpdateSsrcStats) { |
960 StatsCollectorForTest stats(&pc_); | 966 StatsCollectorForTest stats(&pc_); |
961 | 967 |
962 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 968 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
963 .WillRepeatedly(Return(false)); | 969 .WillRepeatedly(Return(false)); |
964 EXPECT_CALL(session_, GetRemoteSSLCertificate(_, _)) | 970 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
965 .WillRepeatedly(Return(false)); | 971 .WillRepeatedly(Return(nullptr)); |
966 | 972 |
967 const char kVideoChannelName[] = "video"; | 973 const char kVideoChannelName[] = "video"; |
968 InitSessionStats(kVideoChannelName); | 974 InitSessionStats(kVideoChannelName); |
969 EXPECT_CALL(session_, GetTransportStats(_)) | 975 EXPECT_CALL(session_, GetTransportStats(_)) |
970 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), | 976 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), |
971 Return(true))); | 977 Return(true))); |
972 | 978 |
973 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 979 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
974 cricket::VideoChannel video_channel(rtc::Thread::Current(), media_channel, | 980 cricket::VideoChannel video_channel(rtc::Thread::Current(), media_channel, |
975 nullptr, kVideoChannelName, false); | 981 nullptr, kVideoChannelName, false); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1026 EXPECT_EQ("video", media_type); | 1032 EXPECT_EQ("video", media_type); |
1027 } | 1033 } |
1028 | 1034 |
1029 // This test verifies that an SSRC object has the identifier of a Transport | 1035 // This test verifies that an SSRC object has the identifier of a Transport |
1030 // stats object, and that this transport stats object exists in stats. | 1036 // stats object, and that this transport stats object exists in stats. |
1031 TEST_F(StatsCollectorTest, TransportObjectLinkedFromSsrcObject) { | 1037 TEST_F(StatsCollectorTest, TransportObjectLinkedFromSsrcObject) { |
1032 StatsCollectorForTest stats(&pc_); | 1038 StatsCollectorForTest stats(&pc_); |
1033 | 1039 |
1034 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1040 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1035 .WillRepeatedly(Return(false)); | 1041 .WillRepeatedly(Return(false)); |
1036 EXPECT_CALL(session_, GetRemoteSSLCertificate(_, _)) | 1042 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1037 .WillRepeatedly(Return(false)); | 1043 .WillRepeatedly(Return(nullptr)); |
1038 | 1044 |
1039 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 1045 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
1040 // The transport_name known by the video channel. | 1046 // The transport_name known by the video channel. |
1041 const std::string kVcName("vcname"); | 1047 const std::string kVcName("vcname"); |
1042 cricket::VideoChannel video_channel(rtc::Thread::Current(), media_channel, | 1048 cricket::VideoChannel video_channel(rtc::Thread::Current(), media_channel, |
1043 nullptr, kVcName, false); | 1049 nullptr, kVcName, false); |
1044 AddOutgoingVideoTrackStats(); | 1050 AddOutgoingVideoTrackStats(); |
1045 stats.AddStream(stream_); | 1051 stats.AddStream(stream_); |
1046 | 1052 |
1047 // Constructs an ssrc stats update. | 1053 // Constructs an ssrc stats update. |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1110 EXPECT_TRUE(remote_report == NULL); | 1116 EXPECT_TRUE(remote_report == NULL); |
1111 } | 1117 } |
1112 | 1118 |
1113 // This test verifies that a remote stats object will be created for | 1119 // This test verifies that a remote stats object will be created for |
1114 // an outgoing SSRC where stats are returned. | 1120 // an outgoing SSRC where stats are returned. |
1115 TEST_F(StatsCollectorTest, RemoteSsrcInfoIsPresent) { | 1121 TEST_F(StatsCollectorTest, RemoteSsrcInfoIsPresent) { |
1116 StatsCollectorForTest stats(&pc_); | 1122 StatsCollectorForTest stats(&pc_); |
1117 | 1123 |
1118 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1124 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1119 .WillRepeatedly(Return(false)); | 1125 .WillRepeatedly(Return(false)); |
1120 EXPECT_CALL(session_, GetRemoteSSLCertificate(_, _)) | 1126 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1121 .WillRepeatedly(Return(false)); | 1127 .WillRepeatedly(Return(nullptr)); |
1122 | 1128 |
1123 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 1129 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
1124 // The transport_name known by the video channel. | 1130 // The transport_name known by the video channel. |
1125 const std::string kVcName("vcname"); | 1131 const std::string kVcName("vcname"); |
1126 cricket::VideoChannel video_channel(rtc::Thread::Current(), media_channel, | 1132 cricket::VideoChannel video_channel(rtc::Thread::Current(), media_channel, |
1127 nullptr, kVcName, false); | 1133 nullptr, kVcName, false); |
1128 AddOutgoingVideoTrackStats(); | 1134 AddOutgoingVideoTrackStats(); |
1129 stats.AddStream(stream_); | 1135 stats.AddStream(stream_); |
1130 | 1136 |
1131 // Instruct the session to return stats containing the transport channel. | 1137 // Instruct the session to return stats containing the transport channel. |
(...skipping 29 matching lines...) Expand all Loading... |
1161 EXPECT_EQ(12345.678, remote_report->timestamp()); | 1167 EXPECT_EQ(12345.678, remote_report->timestamp()); |
1162 } | 1168 } |
1163 | 1169 |
1164 // This test verifies that the empty track report exists in the returned stats | 1170 // This test verifies that the empty track report exists in the returned stats |
1165 // when StatsCollector::UpdateStats is called with ssrc stats. | 1171 // when StatsCollector::UpdateStats is called with ssrc stats. |
1166 TEST_F(StatsCollectorTest, ReportsFromRemoteTrack) { | 1172 TEST_F(StatsCollectorTest, ReportsFromRemoteTrack) { |
1167 StatsCollectorForTest stats(&pc_); | 1173 StatsCollectorForTest stats(&pc_); |
1168 | 1174 |
1169 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1175 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1170 .WillRepeatedly(Return(false)); | 1176 .WillRepeatedly(Return(false)); |
1171 EXPECT_CALL(session_, GetRemoteSSLCertificate(_, _)) | 1177 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1172 .WillRepeatedly(Return(false)); | 1178 .WillRepeatedly(Return(nullptr)); |
1173 | 1179 |
1174 const char kVideoChannelName[] = "video"; | 1180 const char kVideoChannelName[] = "video"; |
1175 InitSessionStats(kVideoChannelName); | 1181 InitSessionStats(kVideoChannelName); |
1176 EXPECT_CALL(session_, GetTransportStats(_)) | 1182 EXPECT_CALL(session_, GetTransportStats(_)) |
1177 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), | 1183 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), |
1178 Return(true))); | 1184 Return(true))); |
1179 | 1185 |
1180 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 1186 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
1181 cricket::VideoChannel video_channel(rtc::Thread::Current(), media_channel, | 1187 cricket::VideoChannel video_channel(rtc::Thread::Current(), media_channel, |
1182 nullptr, kVideoChannelName, false); | 1188 nullptr, kVideoChannelName, false); |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1322 local_ders[3] = "der"; | 1328 local_ders[3] = "der"; |
1323 local_ders[4] = "values"; | 1329 local_ders[4] = "values"; |
1324 rtc::FakeSSLCertificate local_cert(DersToPems(local_ders)); | 1330 rtc::FakeSSLCertificate local_cert(DersToPems(local_ders)); |
1325 | 1331 |
1326 // Build remote certificate chain | 1332 // Build remote certificate chain |
1327 std::vector<std::string> remote_ders(4); | 1333 std::vector<std::string> remote_ders(4); |
1328 remote_ders[0] = "A"; | 1334 remote_ders[0] = "A"; |
1329 remote_ders[1] = "non-"; | 1335 remote_ders[1] = "non-"; |
1330 remote_ders[2] = "intersecting"; | 1336 remote_ders[2] = "intersecting"; |
1331 remote_ders[3] = "set"; | 1337 remote_ders[3] = "set"; |
1332 rtc::FakeSSLCertificate remote_cert(DersToPems(remote_ders)); | 1338 auto remote_cert = rtc::scoped_ptr<rtc::FakeSSLCertificate>( |
| 1339 new rtc::FakeSSLCertificate(DersToPems(remote_ders))); |
1333 | 1340 |
1334 TestCertificateReports(local_cert, local_ders, remote_cert, remote_ders); | 1341 TestCertificateReports(local_cert, local_ders, std::move(remote_cert), |
| 1342 remote_ders); |
1335 } | 1343 } |
1336 | 1344 |
1337 // This test verifies that all certificates without chains are correctly | 1345 // This test verifies that all certificates without chains are correctly |
1338 // reported. | 1346 // reported. |
1339 TEST_F(StatsCollectorTest, ChainlessCertificateReportsCreated) { | 1347 TEST_F(StatsCollectorTest, ChainlessCertificateReportsCreated) { |
1340 // Build local certificate. | 1348 // Build local certificate. |
1341 std::string local_der = "This is the local der."; | 1349 std::string local_der = "This is the local der."; |
1342 rtc::FakeSSLCertificate local_cert(DerToPem(local_der)); | 1350 rtc::FakeSSLCertificate local_cert(DerToPem(local_der)); |
1343 | 1351 |
1344 // Build remote certificate. | 1352 // Build remote certificate. |
1345 std::string remote_der = "This is somebody else's der."; | 1353 std::string remote_der = "This is somebody else's der."; |
1346 rtc::FakeSSLCertificate remote_cert(DerToPem(remote_der)); | 1354 auto remote_cert = rtc::scoped_ptr<rtc::FakeSSLCertificate>( |
| 1355 new rtc::FakeSSLCertificate(DerToPem(remote_der))); |
1347 | 1356 |
1348 TestCertificateReports(local_cert, std::vector<std::string>(1, local_der), | 1357 TestCertificateReports(local_cert, std::vector<std::string>(1, local_der), |
1349 remote_cert, std::vector<std::string>(1, remote_der)); | 1358 std::move(remote_cert), |
| 1359 std::vector<std::string>(1, remote_der)); |
1350 } | 1360 } |
1351 | 1361 |
1352 // This test verifies that the stats are generated correctly when no | 1362 // This test verifies that the stats are generated correctly when no |
1353 // transport is present. | 1363 // transport is present. |
1354 TEST_F(StatsCollectorTest, NoTransport) { | 1364 TEST_F(StatsCollectorTest, NoTransport) { |
1355 StatsCollectorForTest stats(&pc_); | 1365 StatsCollectorForTest stats(&pc_); |
1356 | 1366 |
1357 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1367 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1358 .WillRepeatedly(Return(false)); | 1368 .WillRepeatedly(Return(false)); |
1359 EXPECT_CALL(session_, GetRemoteSSLCertificate(_, _)) | 1369 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1360 .WillRepeatedly(Return(false)); | 1370 .WillRepeatedly(Return(nullptr)); |
1361 | 1371 |
1362 StatsReports reports; // returned values. | 1372 StatsReports reports; // returned values. |
1363 | 1373 |
1364 // Fake stats to process. | 1374 // Fake stats to process. |
1365 cricket::TransportChannelStats channel_stats; | 1375 cricket::TransportChannelStats channel_stats; |
1366 channel_stats.component = 1; | 1376 channel_stats.component = 1; |
1367 | 1377 |
1368 cricket::TransportStats transport_stats; | 1378 cricket::TransportStats transport_stats; |
1369 transport_stats.transport_name = "audio"; | 1379 transport_stats.transport_name = "audio"; |
1370 transport_stats.channel_stats.push_back(channel_stats); | 1380 transport_stats.channel_stats.push_back(channel_stats); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1406 ASSERT_EQ(kNotFound, srtp_crypto_suite); | 1416 ASSERT_EQ(kNotFound, srtp_crypto_suite); |
1407 } | 1417 } |
1408 | 1418 |
1409 // This test verifies that the stats are generated correctly when the transport | 1419 // This test verifies that the stats are generated correctly when the transport |
1410 // does not have any certificates. | 1420 // does not have any certificates. |
1411 TEST_F(StatsCollectorTest, NoCertificates) { | 1421 TEST_F(StatsCollectorTest, NoCertificates) { |
1412 StatsCollectorForTest stats(&pc_); | 1422 StatsCollectorForTest stats(&pc_); |
1413 | 1423 |
1414 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1424 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1415 .WillRepeatedly(Return(false)); | 1425 .WillRepeatedly(Return(false)); |
1416 EXPECT_CALL(session_, GetRemoteSSLCertificate(_, _)) | 1426 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1417 .WillRepeatedly(Return(false)); | 1427 .WillRepeatedly(Return(nullptr)); |
1418 | 1428 |
1419 StatsReports reports; // returned values. | 1429 StatsReports reports; // returned values. |
1420 | 1430 |
1421 // Fake stats to process. | 1431 // Fake stats to process. |
1422 cricket::TransportChannelStats channel_stats; | 1432 cricket::TransportChannelStats channel_stats; |
1423 channel_stats.component = 1; | 1433 channel_stats.component = 1; |
1424 | 1434 |
1425 cricket::TransportStats transport_stats; | 1435 cricket::TransportStats transport_stats; |
1426 transport_stats.transport_name = "audio"; | 1436 transport_stats.transport_name = "audio"; |
1427 transport_stats.channel_stats.push_back(channel_stats); | 1437 transport_stats.channel_stats.push_back(channel_stats); |
(...skipping 30 matching lines...) Expand all Loading... |
1458 | 1468 |
1459 // This test verifies that a remote certificate with an unsupported digest | 1469 // This test verifies that a remote certificate with an unsupported digest |
1460 // algorithm is correctly ignored. | 1470 // algorithm is correctly ignored. |
1461 TEST_F(StatsCollectorTest, UnsupportedDigestIgnored) { | 1471 TEST_F(StatsCollectorTest, UnsupportedDigestIgnored) { |
1462 // Build a local certificate. | 1472 // Build a local certificate. |
1463 std::string local_der = "This is the local der."; | 1473 std::string local_der = "This is the local der."; |
1464 rtc::FakeSSLCertificate local_cert(DerToPem(local_der)); | 1474 rtc::FakeSSLCertificate local_cert(DerToPem(local_der)); |
1465 | 1475 |
1466 // Build a remote certificate with an unsupported digest algorithm. | 1476 // Build a remote certificate with an unsupported digest algorithm. |
1467 std::string remote_der = "This is somebody else's der."; | 1477 std::string remote_der = "This is somebody else's der."; |
1468 rtc::FakeSSLCertificate remote_cert(DerToPem(remote_der)); | 1478 auto remote_cert = rtc::scoped_ptr<rtc::FakeSSLCertificate>( |
1469 remote_cert.set_digest_algorithm("foobar"); | 1479 new rtc::FakeSSLCertificate(DerToPem(remote_der))); |
| 1480 remote_cert->set_digest_algorithm("foobar"); |
1470 | 1481 |
1471 TestCertificateReports(local_cert, std::vector<std::string>(1, local_der), | 1482 TestCertificateReports(local_cert, std::vector<std::string>(1, local_der), |
1472 remote_cert, std::vector<std::string>()); | 1483 std::move(remote_cert), std::vector<std::string>()); |
1473 } | 1484 } |
1474 | 1485 |
1475 // This test verifies that a local stats object can get statistics via | 1486 // This test verifies that a local stats object can get statistics via |
1476 // AudioTrackInterface::GetStats() method. | 1487 // AudioTrackInterface::GetStats() method. |
1477 TEST_F(StatsCollectorTest, GetStatsFromLocalAudioTrack) { | 1488 TEST_F(StatsCollectorTest, GetStatsFromLocalAudioTrack) { |
1478 StatsCollectorForTest stats(&pc_); | 1489 StatsCollectorForTest stats(&pc_); |
1479 | 1490 |
1480 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1491 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1481 .WillRepeatedly(Return(false)); | 1492 .WillRepeatedly(Return(false)); |
1482 EXPECT_CALL(session_, GetRemoteSSLCertificate(_, _)) | 1493 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1483 .WillRepeatedly(Return(false)); | 1494 .WillRepeatedly(Return(nullptr)); |
1484 | 1495 |
1485 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); | 1496 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); |
1486 // The transport_name known by the voice channel. | 1497 // The transport_name known by the voice channel. |
1487 const std::string kVcName("vcname"); | 1498 const std::string kVcName("vcname"); |
1488 cricket::VoiceChannel voice_channel(rtc::Thread::Current(), media_engine_, | 1499 cricket::VoiceChannel voice_channel(rtc::Thread::Current(), media_engine_, |
1489 media_channel, nullptr, kVcName, false); | 1500 media_channel, nullptr, kVcName, false); |
1490 AddOutgoingAudioTrackStats(); | 1501 AddOutgoingAudioTrackStats(); |
1491 stats.AddStream(stream_); | 1502 stats.AddStream(stream_); |
1492 stats.AddLocalAudioTrack(audio_track_, kSsrcOfTrack); | 1503 stats.AddLocalAudioTrack(audio_track_, kSsrcOfTrack); |
1493 | 1504 |
(...skipping 13 matching lines...) Expand all Loading... |
1507 EXPECT_TRUE(remote_report == NULL); | 1518 EXPECT_TRUE(remote_report == NULL); |
1508 } | 1519 } |
1509 | 1520 |
1510 // This test verifies that audio receive streams populate stats reports | 1521 // This test verifies that audio receive streams populate stats reports |
1511 // correctly. | 1522 // correctly. |
1512 TEST_F(StatsCollectorTest, GetStatsFromRemoteStream) { | 1523 TEST_F(StatsCollectorTest, GetStatsFromRemoteStream) { |
1513 StatsCollectorForTest stats(&pc_); | 1524 StatsCollectorForTest stats(&pc_); |
1514 | 1525 |
1515 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1526 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1516 .WillRepeatedly(Return(false)); | 1527 .WillRepeatedly(Return(false)); |
1517 EXPECT_CALL(session_, GetRemoteSSLCertificate(_, _)) | 1528 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1518 .WillRepeatedly(Return(false)); | 1529 .WillRepeatedly(Return(nullptr)); |
1519 | 1530 |
1520 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); | 1531 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); |
1521 // The transport_name known by the voice channel. | 1532 // The transport_name known by the voice channel. |
1522 const std::string kVcName("vcname"); | 1533 const std::string kVcName("vcname"); |
1523 cricket::VoiceChannel voice_channel(rtc::Thread::Current(), media_engine_, | 1534 cricket::VoiceChannel voice_channel(rtc::Thread::Current(), media_engine_, |
1524 media_channel, nullptr, kVcName, false); | 1535 media_channel, nullptr, kVcName, false); |
1525 AddIncomingAudioTrackStats(); | 1536 AddIncomingAudioTrackStats(); |
1526 stats.AddStream(stream_); | 1537 stats.AddStream(stream_); |
1527 | 1538 |
1528 cricket::VoiceReceiverInfo voice_receiver_info; | 1539 cricket::VoiceReceiverInfo voice_receiver_info; |
1529 InitVoiceReceiverInfo(&voice_receiver_info); | 1540 InitVoiceReceiverInfo(&voice_receiver_info); |
1530 voice_receiver_info.codec_name = "fake_codec"; | 1541 voice_receiver_info.codec_name = "fake_codec"; |
1531 | 1542 |
1532 cricket::VoiceMediaInfo stats_read; | 1543 cricket::VoiceMediaInfo stats_read; |
1533 StatsReports reports; // returned values. | 1544 StatsReports reports; // returned values. |
1534 SetupAndVerifyAudioTrackStats( | 1545 SetupAndVerifyAudioTrackStats( |
1535 audio_track_.get(), stream_.get(), &stats, &voice_channel, kVcName, | 1546 audio_track_.get(), stream_.get(), &stats, &voice_channel, kVcName, |
1536 media_channel, NULL, &voice_receiver_info, &stats_read, &reports); | 1547 media_channel, NULL, &voice_receiver_info, &stats_read, &reports); |
1537 } | 1548 } |
1538 | 1549 |
1539 // This test verifies that a local stats object won't update its statistics | 1550 // This test verifies that a local stats object won't update its statistics |
1540 // after a RemoveLocalAudioTrack() call. | 1551 // after a RemoveLocalAudioTrack() call. |
1541 TEST_F(StatsCollectorTest, GetStatsAfterRemoveAudioStream) { | 1552 TEST_F(StatsCollectorTest, GetStatsAfterRemoveAudioStream) { |
1542 StatsCollectorForTest stats(&pc_); | 1553 StatsCollectorForTest stats(&pc_); |
1543 | 1554 |
1544 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1555 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1545 .WillRepeatedly(Return(false)); | 1556 .WillRepeatedly(Return(false)); |
1546 EXPECT_CALL(session_, GetRemoteSSLCertificate(_, _)) | 1557 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1547 .WillRepeatedly(Return(false)); | 1558 .WillRepeatedly(Return(nullptr)); |
1548 | 1559 |
1549 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); | 1560 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); |
1550 // The transport_name known by the voice channel. | 1561 // The transport_name known by the voice channel. |
1551 const std::string kVcName("vcname"); | 1562 const std::string kVcName("vcname"); |
1552 cricket::VoiceChannel voice_channel(rtc::Thread::Current(), media_engine_, | 1563 cricket::VoiceChannel voice_channel(rtc::Thread::Current(), media_engine_, |
1553 media_channel, nullptr, kVcName, false); | 1564 media_channel, nullptr, kVcName, false); |
1554 AddOutgoingAudioTrackStats(); | 1565 AddOutgoingAudioTrackStats(); |
1555 stats.AddStream(stream_); | 1566 stats.AddStream(stream_); |
1556 stats.AddLocalAudioTrack(audio_track_.get(), kSsrcOfTrack); | 1567 stats.AddLocalAudioTrack(audio_track_.get(), kSsrcOfTrack); |
1557 | 1568 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1597 VerifyVoiceSenderInfoReport(report, voice_sender_info); | 1608 VerifyVoiceSenderInfoReport(report, voice_sender_info); |
1598 } | 1609 } |
1599 | 1610 |
1600 // This test verifies that when ongoing and incoming audio tracks are using | 1611 // This test verifies that when ongoing and incoming audio tracks are using |
1601 // the same ssrc, they populate stats reports correctly. | 1612 // the same ssrc, they populate stats reports correctly. |
1602 TEST_F(StatsCollectorTest, LocalAndRemoteTracksWithSameSsrc) { | 1613 TEST_F(StatsCollectorTest, LocalAndRemoteTracksWithSameSsrc) { |
1603 StatsCollectorForTest stats(&pc_); | 1614 StatsCollectorForTest stats(&pc_); |
1604 | 1615 |
1605 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1616 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1606 .WillRepeatedly(Return(false)); | 1617 .WillRepeatedly(Return(false)); |
1607 EXPECT_CALL(session_, GetRemoteSSLCertificate(_, _)) | 1618 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1608 .WillRepeatedly(Return(false)); | 1619 .WillRepeatedly(Return(nullptr)); |
1609 | 1620 |
1610 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); | 1621 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); |
1611 // The transport_name known by the voice channel. | 1622 // The transport_name known by the voice channel. |
1612 const std::string kVcName("vcname"); | 1623 const std::string kVcName("vcname"); |
1613 cricket::VoiceChannel voice_channel(rtc::Thread::Current(), media_engine_, | 1624 cricket::VoiceChannel voice_channel(rtc::Thread::Current(), media_engine_, |
1614 media_channel, nullptr, kVcName, false); | 1625 media_channel, nullptr, kVcName, false); |
1615 | 1626 |
1616 // Create a local stream with a local audio track and adds it to the stats. | 1627 // Create a local stream with a local audio track and adds it to the stats. |
1617 AddOutgoingAudioTrackStats(); | 1628 AddOutgoingAudioTrackStats(); |
1618 stats.AddStream(stream_); | 1629 stats.AddStream(stream_); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1684 | 1695 |
1685 // This test verifies that when two outgoing audio tracks are using the same | 1696 // This test verifies that when two outgoing audio tracks are using the same |
1686 // ssrc at different times, they populate stats reports correctly. | 1697 // ssrc at different times, they populate stats reports correctly. |
1687 // TODO(xians): Figure out if it is possible to encapsulate the setup and | 1698 // TODO(xians): Figure out if it is possible to encapsulate the setup and |
1688 // avoid duplication of code in test cases. | 1699 // avoid duplication of code in test cases. |
1689 TEST_F(StatsCollectorTest, TwoLocalTracksWithSameSsrc) { | 1700 TEST_F(StatsCollectorTest, TwoLocalTracksWithSameSsrc) { |
1690 StatsCollectorForTest stats(&pc_); | 1701 StatsCollectorForTest stats(&pc_); |
1691 | 1702 |
1692 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1703 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1693 .WillRepeatedly(Return(false)); | 1704 .WillRepeatedly(Return(false)); |
1694 EXPECT_CALL(session_, GetRemoteSSLCertificate(_, _)) | 1705 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1695 .WillRepeatedly(Return(false)); | 1706 .WillRepeatedly(Return(nullptr)); |
1696 | 1707 |
1697 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); | 1708 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); |
1698 // The transport_name known by the voice channel. | 1709 // The transport_name known by the voice channel. |
1699 const std::string kVcName("vcname"); | 1710 const std::string kVcName("vcname"); |
1700 cricket::VoiceChannel voice_channel(rtc::Thread::Current(), media_engine_, | 1711 cricket::VoiceChannel voice_channel(rtc::Thread::Current(), media_engine_, |
1701 media_channel, nullptr, kVcName, false); | 1712 media_channel, nullptr, kVcName, false); |
1702 | 1713 |
1703 // Create a local stream with a local audio track and adds it to the stats. | 1714 // Create a local stream with a local audio track and adds it to the stats. |
1704 AddOutgoingAudioTrackStats(); | 1715 AddOutgoingAudioTrackStats(); |
1705 stats.AddStream(stream_); | 1716 stats.AddStream(stream_); |
(...skipping 25 matching lines...) Expand all Loading... |
1731 cricket::VoiceSenderInfo new_voice_sender_info; | 1742 cricket::VoiceSenderInfo new_voice_sender_info; |
1732 InitVoiceSenderInfo(&new_voice_sender_info); | 1743 InitVoiceSenderInfo(&new_voice_sender_info); |
1733 cricket::VoiceMediaInfo new_stats_read; | 1744 cricket::VoiceMediaInfo new_stats_read; |
1734 reports.clear(); | 1745 reports.clear(); |
1735 SetupAndVerifyAudioTrackStats( | 1746 SetupAndVerifyAudioTrackStats( |
1736 new_audio_track.get(), stream_.get(), &stats, &voice_channel, kVcName, | 1747 new_audio_track.get(), stream_.get(), &stats, &voice_channel, kVcName, |
1737 media_channel, &new_voice_sender_info, NULL, &new_stats_read, &reports); | 1748 media_channel, &new_voice_sender_info, NULL, &new_stats_read, &reports); |
1738 } | 1749 } |
1739 | 1750 |
1740 } // namespace webrtc | 1751 } // namespace webrtc |
OLD | NEW |