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 554 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
565 protected: | 565 protected: |
566 StatsCollectorTest() | 566 StatsCollectorTest() |
567 : worker_thread_(rtc::Thread::Current()), | 567 : worker_thread_(rtc::Thread::Current()), |
568 network_thread_(rtc::Thread::Current()), | 568 network_thread_(rtc::Thread::Current()), |
569 media_engine_(new cricket::FakeMediaEngine()), | 569 media_engine_(new cricket::FakeMediaEngine()), |
570 channel_manager_(new cricket::ChannelManager( | 570 channel_manager_(new cricket::ChannelManager( |
571 std::unique_ptr<cricket::MediaEngineInterface>(media_engine_), | 571 std::unique_ptr<cricket::MediaEngineInterface>(media_engine_), |
572 worker_thread_, | 572 worker_thread_, |
573 network_thread_)), | 573 network_thread_)), |
574 | 574 |
575 session_(channel_manager_.get(), cricket::MediaConfig()) { | 575 session_(channel_manager_.get(), cricket::MediaConfig()), |
| 576 pc_(new rtc::RefCountedObject<MockPeerConnection>()) { |
576 // By default, we ignore session GetStats calls. | 577 // By default, we ignore session GetStats calls. |
577 EXPECT_CALL(session_, GetStats(_)).WillRepeatedly(ReturnNull()); | 578 EXPECT_CALL(session_, GetStats(_)).WillRepeatedly(ReturnNull()); |
578 // Add default returns for mock classes. | 579 // Add default returns for mock classes. |
579 EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull()); | 580 EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull()); |
580 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); | 581 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); |
581 EXPECT_CALL(pc_, session()).WillRepeatedly(Return(&session_)); | 582 EXPECT_CALL(*pc_, session()).WillRepeatedly(Return(&session_)); |
582 EXPECT_CALL(pc_, sctp_data_channels()) | 583 EXPECT_CALL(*pc_, sctp_data_channels()) |
583 .WillRepeatedly(ReturnRef(data_channels_)); | 584 .WillRepeatedly(ReturnRef(data_channels_)); |
584 EXPECT_CALL(pc_, GetSenders()).WillRepeatedly(Return( | 585 EXPECT_CALL(*pc_, GetSenders()).WillRepeatedly(Return( |
585 std::vector<rtc::scoped_refptr<RtpSenderInterface>>())); | 586 std::vector<rtc::scoped_refptr<RtpSenderInterface>>())); |
586 EXPECT_CALL(pc_, GetReceivers()).WillRepeatedly(Return( | 587 EXPECT_CALL(*pc_, GetReceivers()).WillRepeatedly(Return( |
587 std::vector<rtc::scoped_refptr<RtpReceiverInterface>>())); | 588 std::vector<rtc::scoped_refptr<RtpReceiverInterface>>())); |
588 } | 589 } |
589 | 590 |
590 ~StatsCollectorTest() {} | 591 ~StatsCollectorTest() {} |
591 | 592 |
592 // This creates a standard setup with a transport called "trspname" | 593 // This creates a standard setup with a transport called "trspname" |
593 // having one transport channel | 594 // having one transport channel |
594 // and the specified virtual connection name. | 595 // and the specified virtual connection name. |
595 void InitSessionStats(const std::string& vc_name) { | 596 void InitSessionStats(const std::string& vc_name) { |
596 const std::string kTransportName("trspname"); | 597 const std::string kTransportName("trspname"); |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
747 VerifyVoiceSenderInfoReport(track_report, *voice_sender_info); | 748 VerifyVoiceSenderInfoReport(track_report, *voice_sender_info); |
748 if (voice_receiver_info) | 749 if (voice_receiver_info) |
749 VerifyVoiceReceiverInfoReport(track_report, *voice_receiver_info); | 750 VerifyVoiceReceiverInfoReport(track_report, *voice_receiver_info); |
750 } | 751 } |
751 | 752 |
752 void TestCertificateReports( | 753 void TestCertificateReports( |
753 const rtc::FakeSSLCertificate& local_cert, | 754 const rtc::FakeSSLCertificate& local_cert, |
754 const std::vector<std::string>& local_ders, | 755 const std::vector<std::string>& local_ders, |
755 std::unique_ptr<rtc::FakeSSLCertificate> remote_cert, | 756 std::unique_ptr<rtc::FakeSSLCertificate> remote_cert, |
756 const std::vector<std::string>& remote_ders) { | 757 const std::vector<std::string>& remote_ders) { |
757 StatsCollectorForTest stats(&pc_); | 758 StatsCollectorForTest stats(pc_); |
758 | 759 |
759 StatsReports reports; // returned values. | 760 StatsReports reports; // returned values. |
760 | 761 |
761 // Fake stats to process. | 762 // Fake stats to process. |
762 cricket::TransportChannelStats channel_stats; | 763 cricket::TransportChannelStats channel_stats; |
763 channel_stats.component = 1; | 764 channel_stats.component = 1; |
764 channel_stats.srtp_crypto_suite = rtc::SRTP_AES128_CM_SHA1_80; | 765 channel_stats.srtp_crypto_suite = rtc::SRTP_AES128_CM_SHA1_80; |
765 channel_stats.ssl_cipher_suite = | 766 channel_stats.ssl_cipher_suite = |
766 internal::TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA; | 767 internal::TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA; |
767 | 768 |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
839 srtp_crypto_suite); | 840 srtp_crypto_suite); |
840 } | 841 } |
841 | 842 |
842 webrtc::RtcEventLogNullImpl event_log_; | 843 webrtc::RtcEventLogNullImpl event_log_; |
843 rtc::Thread* const worker_thread_; | 844 rtc::Thread* const worker_thread_; |
844 rtc::Thread* const network_thread_; | 845 rtc::Thread* const network_thread_; |
845 // |media_engine_| is actually owned by |channel_manager_|. | 846 // |media_engine_| is actually owned by |channel_manager_|. |
846 cricket::FakeMediaEngine* media_engine_; | 847 cricket::FakeMediaEngine* media_engine_; |
847 std::unique_ptr<cricket::ChannelManager> channel_manager_; | 848 std::unique_ptr<cricket::ChannelManager> channel_manager_; |
848 MockWebRtcSession session_; | 849 MockWebRtcSession session_; |
849 MockPeerConnection pc_; | 850 rtc::scoped_refptr<MockPeerConnection> pc_; |
850 FakeDataChannelProvider data_channel_provider_; | 851 FakeDataChannelProvider data_channel_provider_; |
851 SessionStats session_stats_; | 852 SessionStats session_stats_; |
852 rtc::scoped_refptr<webrtc::MediaStream> stream_; | 853 rtc::scoped_refptr<webrtc::MediaStream> stream_; |
853 rtc::scoped_refptr<webrtc::VideoTrack> track_; | 854 rtc::scoped_refptr<webrtc::VideoTrack> track_; |
854 rtc::scoped_refptr<FakeAudioTrack> audio_track_; | 855 rtc::scoped_refptr<FakeAudioTrack> audio_track_; |
855 std::vector<rtc::scoped_refptr<DataChannel>> data_channels_; | 856 std::vector<rtc::scoped_refptr<DataChannel>> data_channels_; |
856 }; | 857 }; |
857 | 858 |
858 TEST_F(StatsCollectorTest, FilterOutNegativeDataChannelId) { | 859 TEST_F(StatsCollectorTest, FilterOutNegativeDataChannelId) { |
859 const std::string label = "hacks"; | 860 const std::string label = "hacks"; |
860 // The data channel id is from the Config which is -1 initially. | 861 // The data channel id is from the Config which is -1 initially. |
861 const int id = -1; | 862 const int id = -1; |
862 const std::string state = DataChannelInterface::DataStateString( | 863 const std::string state = DataChannelInterface::DataStateString( |
863 DataChannelInterface::DataState::kConnecting); | 864 DataChannelInterface::DataState::kConnecting); |
864 | 865 |
865 AddDataChannel(cricket::DCT_SCTP, label, id); | 866 AddDataChannel(cricket::DCT_SCTP, label, id); |
866 StatsCollectorForTest stats(&pc_); | 867 StatsCollectorForTest stats(pc_); |
867 | 868 |
868 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); | 869 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); |
869 | 870 |
870 StatsReports reports; | 871 StatsReports reports; |
871 stats.GetStats(NULL, &reports); | 872 stats.GetStats(NULL, &reports); |
872 | 873 |
873 const StatsReport* report = | 874 const StatsReport* report = |
874 FindNthReportByType(reports, StatsReport::kStatsReportTypeDataChannel, 1); | 875 FindNthReportByType(reports, StatsReport::kStatsReportTypeDataChannel, 1); |
875 | 876 |
876 std::string value_in_report; | 877 std::string value_in_report; |
877 EXPECT_FALSE(GetValue(report, StatsReport::kStatsValueNameDataChannelId, | 878 EXPECT_FALSE(GetValue(report, StatsReport::kStatsValueNameDataChannelId, |
878 &value_in_report)); | 879 &value_in_report)); |
879 } | 880 } |
880 | 881 |
881 // Verify that ExtractDataInfo populates reports. | 882 // Verify that ExtractDataInfo populates reports. |
882 TEST_F(StatsCollectorTest, ExtractDataInfo) { | 883 TEST_F(StatsCollectorTest, ExtractDataInfo) { |
883 const std::string label = "hacks"; | 884 const std::string label = "hacks"; |
884 const int id = 31337; | 885 const int id = 31337; |
885 const std::string state = DataChannelInterface::DataStateString( | 886 const std::string state = DataChannelInterface::DataStateString( |
886 DataChannelInterface::DataState::kConnecting); | 887 DataChannelInterface::DataState::kConnecting); |
887 | 888 |
888 AddDataChannel(cricket::DCT_SCTP, label, id); | 889 AddDataChannel(cricket::DCT_SCTP, label, id); |
889 StatsCollectorForTest stats(&pc_); | 890 StatsCollectorForTest stats(pc_); |
890 | 891 |
891 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); | 892 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); |
892 | 893 |
893 StatsReports reports; | 894 StatsReports reports; |
894 stats.GetStats(NULL, &reports); | 895 stats.GetStats(NULL, &reports); |
895 | 896 |
896 const StatsReport* report = | 897 const StatsReport* report = |
897 FindNthReportByType(reports, StatsReport::kStatsReportTypeDataChannel, 1); | 898 FindNthReportByType(reports, StatsReport::kStatsReportTypeDataChannel, 1); |
898 | 899 |
899 StatsReport::Id reportId = StatsReport::NewTypedIntId( | 900 StatsReport::Id reportId = StatsReport::NewTypedIntId( |
(...skipping 11 matching lines...) Expand all Loading... |
911 EXPECT_EQ(state, ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, | 912 EXPECT_EQ(state, ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, |
912 reports, | 913 reports, |
913 StatsReport::kStatsValueNameState)); | 914 StatsReport::kStatsValueNameState)); |
914 EXPECT_EQ("", ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, | 915 EXPECT_EQ("", ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, |
915 reports, | 916 reports, |
916 StatsReport::kStatsValueNameProtocol)); | 917 StatsReport::kStatsValueNameProtocol)); |
917 } | 918 } |
918 | 919 |
919 // This test verifies that 64-bit counters are passed successfully. | 920 // This test verifies that 64-bit counters are passed successfully. |
920 TEST_F(StatsCollectorTest, BytesCounterHandles64Bits) { | 921 TEST_F(StatsCollectorTest, BytesCounterHandles64Bits) { |
921 StatsCollectorForTest stats(&pc_); | 922 StatsCollectorForTest stats(pc_); |
922 | 923 |
923 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 924 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
924 .WillRepeatedly(Return(false)); | 925 .WillRepeatedly(Return(false)); |
925 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 926 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
926 .WillRepeatedly(Return(nullptr)); | 927 .WillRepeatedly(Return(nullptr)); |
927 | 928 |
928 const char kVideoChannelName[] = "video"; | 929 const char kVideoChannelName[] = "video"; |
929 | 930 |
930 InitSessionStats(kVideoChannelName); | 931 InitSessionStats(kVideoChannelName); |
931 EXPECT_CALL(session_, GetStats(_)).WillRepeatedly(Invoke( | 932 EXPECT_CALL(session_, GetStats(_)).WillRepeatedly(Invoke( |
(...skipping 28 matching lines...) Expand all Loading... |
960 Return(true))); | 961 Return(true))); |
961 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); | 962 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); |
962 stats.GetStats(NULL, &reports); | 963 stats.GetStats(NULL, &reports); |
963 std::string result = ExtractSsrcStatsValue(reports, | 964 std::string result = ExtractSsrcStatsValue(reports, |
964 StatsReport::kStatsValueNameBytesSent); | 965 StatsReport::kStatsValueNameBytesSent); |
965 EXPECT_EQ(kBytesSentString, result); | 966 EXPECT_EQ(kBytesSentString, result); |
966 } | 967 } |
967 | 968 |
968 // Test that audio BWE information is reported via stats. | 969 // Test that audio BWE information is reported via stats. |
969 TEST_F(StatsCollectorTest, AudioBandwidthEstimationInfoIsReported) { | 970 TEST_F(StatsCollectorTest, AudioBandwidthEstimationInfoIsReported) { |
970 StatsCollectorForTest stats(&pc_); | 971 StatsCollectorForTest stats(pc_); |
971 | 972 |
972 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 973 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
973 .WillRepeatedly(Return(false)); | 974 .WillRepeatedly(Return(false)); |
974 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 975 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
975 .WillRepeatedly(Return(nullptr)); | 976 .WillRepeatedly(Return(nullptr)); |
976 | 977 |
977 const char kAudioChannelName[] = "audio"; | 978 const char kAudioChannelName[] = "audio"; |
978 | 979 |
979 InitSessionStats(kAudioChannelName); | 980 InitSessionStats(kAudioChannelName); |
980 EXPECT_CALL(session_, GetStats(_)) | 981 EXPECT_CALL(session_, GetStats(_)) |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1027 result = ExtractBweStatsValue( | 1028 result = ExtractBweStatsValue( |
1028 reports, StatsReport::kStatsValueNameAvailableReceiveBandwidth); | 1029 reports, StatsReport::kStatsValueNameAvailableReceiveBandwidth); |
1029 EXPECT_EQ(rtc::ToString(kRecvBandwidth), result); | 1030 EXPECT_EQ(rtc::ToString(kRecvBandwidth), result); |
1030 result = | 1031 result = |
1031 ExtractBweStatsValue(reports, StatsReport::kStatsValueNameBucketDelay); | 1032 ExtractBweStatsValue(reports, StatsReport::kStatsValueNameBucketDelay); |
1032 EXPECT_EQ(rtc::ToString(kPacerDelay), result); | 1033 EXPECT_EQ(rtc::ToString(kPacerDelay), result); |
1033 } | 1034 } |
1034 | 1035 |
1035 // Test that video BWE information is reported via stats. | 1036 // Test that video BWE information is reported via stats. |
1036 TEST_F(StatsCollectorTest, VideoBandwidthEstimationInfoIsReported) { | 1037 TEST_F(StatsCollectorTest, VideoBandwidthEstimationInfoIsReported) { |
1037 StatsCollectorForTest stats(&pc_); | 1038 StatsCollectorForTest stats(pc_); |
1038 | 1039 |
1039 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1040 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1040 .WillRepeatedly(Return(false)); | 1041 .WillRepeatedly(Return(false)); |
1041 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 1042 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1042 .WillRepeatedly(Return(nullptr)); | 1043 .WillRepeatedly(Return(nullptr)); |
1043 | 1044 |
1044 const char kVideoChannelName[] = "video"; | 1045 const char kVideoChannelName[] = "video"; |
1045 | 1046 |
1046 InitSessionStats(kVideoChannelName); | 1047 InitSessionStats(kVideoChannelName); |
1047 EXPECT_CALL(session_, GetStats(_)).WillRepeatedly(Invoke( | 1048 EXPECT_CALL(session_, GetStats(_)).WillRepeatedly(Invoke( |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1096 reports, StatsReport::kStatsValueNameAvailableReceiveBandwidth); | 1097 reports, StatsReport::kStatsValueNameAvailableReceiveBandwidth); |
1097 EXPECT_EQ(rtc::ToString(kRecvBandwidth), result); | 1098 EXPECT_EQ(rtc::ToString(kRecvBandwidth), result); |
1098 result = | 1099 result = |
1099 ExtractBweStatsValue(reports, StatsReport::kStatsValueNameBucketDelay); | 1100 ExtractBweStatsValue(reports, StatsReport::kStatsValueNameBucketDelay); |
1100 EXPECT_EQ(rtc::ToString(kPacerDelay), result); | 1101 EXPECT_EQ(rtc::ToString(kPacerDelay), result); |
1101 } | 1102 } |
1102 | 1103 |
1103 // This test verifies that an object of type "googSession" always | 1104 // This test verifies that an object of type "googSession" always |
1104 // exists in the returned stats. | 1105 // exists in the returned stats. |
1105 TEST_F(StatsCollectorTest, SessionObjectExists) { | 1106 TEST_F(StatsCollectorTest, SessionObjectExists) { |
1106 StatsCollectorForTest stats(&pc_); | 1107 StatsCollectorForTest stats(pc_); |
1107 | 1108 |
1108 StatsReports reports; // returned values. | 1109 StatsReports reports; // returned values. |
1109 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); | 1110 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); |
1110 stats.GetStats(NULL, &reports); | 1111 stats.GetStats(NULL, &reports); |
1111 const StatsReport* session_report = FindNthReportByType( | 1112 const StatsReport* session_report = FindNthReportByType( |
1112 reports, StatsReport::kStatsReportTypeSession, 1); | 1113 reports, StatsReport::kStatsReportTypeSession, 1); |
1113 EXPECT_FALSE(session_report == NULL); | 1114 EXPECT_FALSE(session_report == NULL); |
1114 } | 1115 } |
1115 | 1116 |
1116 // This test verifies that only one object of type "googSession" exists | 1117 // This test verifies that only one object of type "googSession" exists |
1117 // in the returned stats. | 1118 // in the returned stats. |
1118 TEST_F(StatsCollectorTest, OnlyOneSessionObjectExists) { | 1119 TEST_F(StatsCollectorTest, OnlyOneSessionObjectExists) { |
1119 StatsCollectorForTest stats(&pc_); | 1120 StatsCollectorForTest stats(pc_); |
1120 | 1121 |
1121 StatsReports reports; // returned values. | 1122 StatsReports reports; // returned values. |
1122 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); | 1123 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); |
1123 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); | 1124 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); |
1124 stats.GetStats(NULL, &reports); | 1125 stats.GetStats(NULL, &reports); |
1125 const StatsReport* session_report = FindNthReportByType( | 1126 const StatsReport* session_report = FindNthReportByType( |
1126 reports, StatsReport::kStatsReportTypeSession, 1); | 1127 reports, StatsReport::kStatsReportTypeSession, 1); |
1127 EXPECT_FALSE(session_report == NULL); | 1128 EXPECT_FALSE(session_report == NULL); |
1128 session_report = FindNthReportByType( | 1129 session_report = FindNthReportByType( |
1129 reports, StatsReport::kStatsReportTypeSession, 2); | 1130 reports, StatsReport::kStatsReportTypeSession, 2); |
1130 EXPECT_EQ(NULL, session_report); | 1131 EXPECT_EQ(NULL, session_report); |
1131 } | 1132 } |
1132 | 1133 |
1133 // This test verifies that the empty track report exists in the returned stats | 1134 // This test verifies that the empty track report exists in the returned stats |
1134 // without calling StatsCollector::UpdateStats. | 1135 // without calling StatsCollector::UpdateStats. |
1135 TEST_F(StatsCollectorTest, TrackObjectExistsWithoutUpdateStats) { | 1136 TEST_F(StatsCollectorTest, TrackObjectExistsWithoutUpdateStats) { |
1136 StatsCollectorForTest stats(&pc_); | 1137 StatsCollectorForTest stats(pc_); |
1137 | 1138 |
1138 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 1139 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
1139 cricket::VideoChannel video_channel( | 1140 cricket::VideoChannel video_channel( |
1140 worker_thread_, network_thread_, nullptr, media_channel, "video", | 1141 worker_thread_, network_thread_, nullptr, media_channel, "video", |
1141 kDefaultRtcpMuxRequired, kDefaultSrtpRequired); | 1142 kDefaultRtcpMuxRequired, kDefaultSrtpRequired); |
1142 AddOutgoingVideoTrackStats(); | 1143 AddOutgoingVideoTrackStats(); |
1143 stats.AddStream(stream_); | 1144 stats.AddStream(stream_); |
1144 | 1145 |
1145 // Verfies the existence of the track report. | 1146 // Verfies the existence of the track report. |
1146 StatsReports reports; | 1147 StatsReports reports; |
1147 stats.GetStats(NULL, &reports); | 1148 stats.GetStats(NULL, &reports); |
1148 EXPECT_EQ((size_t)1, reports.size()); | 1149 EXPECT_EQ((size_t)1, reports.size()); |
1149 EXPECT_EQ(StatsReport::kStatsReportTypeTrack, reports[0]->type()); | 1150 EXPECT_EQ(StatsReport::kStatsReportTypeTrack, reports[0]->type()); |
1150 EXPECT_EQ(0, reports[0]->timestamp()); | 1151 EXPECT_EQ(0, reports[0]->timestamp()); |
1151 | 1152 |
1152 std::string trackValue = | 1153 std::string trackValue = |
1153 ExtractStatsValue(StatsReport::kStatsReportTypeTrack, | 1154 ExtractStatsValue(StatsReport::kStatsReportTypeTrack, |
1154 reports, | 1155 reports, |
1155 StatsReport::kStatsValueNameTrackId); | 1156 StatsReport::kStatsValueNameTrackId); |
1156 EXPECT_EQ(kLocalTrackId, trackValue); | 1157 EXPECT_EQ(kLocalTrackId, trackValue); |
1157 } | 1158 } |
1158 | 1159 |
1159 // This test verifies that the empty track report exists in the returned stats | 1160 // This test verifies that the empty track report exists in the returned stats |
1160 // when StatsCollector::UpdateStats is called with ssrc stats. | 1161 // when StatsCollector::UpdateStats is called with ssrc stats. |
1161 TEST_F(StatsCollectorTest, TrackAndSsrcObjectExistAfterUpdateSsrcStats) { | 1162 TEST_F(StatsCollectorTest, TrackAndSsrcObjectExistAfterUpdateSsrcStats) { |
1162 StatsCollectorForTest stats(&pc_); | 1163 StatsCollectorForTest stats(pc_); |
1163 | 1164 |
1164 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1165 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1165 .WillRepeatedly(Return(false)); | 1166 .WillRepeatedly(Return(false)); |
1166 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 1167 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1167 .WillRepeatedly(Return(nullptr)); | 1168 .WillRepeatedly(Return(nullptr)); |
1168 | 1169 |
1169 const char kVideoChannelName[] = "video"; | 1170 const char kVideoChannelName[] = "video"; |
1170 InitSessionStats(kVideoChannelName); | 1171 InitSessionStats(kVideoChannelName); |
1171 EXPECT_CALL(session_, GetStats(_)).WillRepeatedly(Invoke( | 1172 EXPECT_CALL(session_, GetStats(_)).WillRepeatedly(Invoke( |
1172 [this](const ChannelNamePairs&) { | 1173 [this](const ChannelNamePairs&) { |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1227 EXPECT_EQ(kLocalTrackId, track_id); | 1228 EXPECT_EQ(kLocalTrackId, track_id); |
1228 | 1229 |
1229 std::string media_type = ExtractSsrcStatsValue(reports, | 1230 std::string media_type = ExtractSsrcStatsValue(reports, |
1230 StatsReport::kStatsValueNameMediaType); | 1231 StatsReport::kStatsValueNameMediaType); |
1231 EXPECT_EQ("video", media_type); | 1232 EXPECT_EQ("video", media_type); |
1232 } | 1233 } |
1233 | 1234 |
1234 // This test verifies that an SSRC object has the identifier of a Transport | 1235 // This test verifies that an SSRC object has the identifier of a Transport |
1235 // stats object, and that this transport stats object exists in stats. | 1236 // stats object, and that this transport stats object exists in stats. |
1236 TEST_F(StatsCollectorTest, TransportObjectLinkedFromSsrcObject) { | 1237 TEST_F(StatsCollectorTest, TransportObjectLinkedFromSsrcObject) { |
1237 StatsCollectorForTest stats(&pc_); | 1238 StatsCollectorForTest stats(pc_); |
1238 | 1239 |
1239 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1240 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1240 .WillRepeatedly(Return(false)); | 1241 .WillRepeatedly(Return(false)); |
1241 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 1242 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1242 .WillRepeatedly(Return(nullptr)); | 1243 .WillRepeatedly(Return(nullptr)); |
1243 | 1244 |
1244 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 1245 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
1245 // The transport_name known by the video channel. | 1246 // The transport_name known by the video channel. |
1246 const std::string kVcName("vcname"); | 1247 const std::string kVcName("vcname"); |
1247 cricket::VideoChannel video_channel( | 1248 cricket::VideoChannel video_channel( |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1293 content = content.substr(0, index); | 1294 content = content.substr(0, index); |
1294 StatsReport::Id id(StatsReport::NewComponentId(content, 1)); | 1295 StatsReport::Id id(StatsReport::NewComponentId(content, 1)); |
1295 ASSERT_EQ(transport_id, id->ToString()); | 1296 ASSERT_EQ(transport_id, id->ToString()); |
1296 const StatsReport* transport_report = FindReportById(reports, id); | 1297 const StatsReport* transport_report = FindReportById(reports, id); |
1297 ASSERT_FALSE(transport_report == NULL); | 1298 ASSERT_FALSE(transport_report == NULL); |
1298 } | 1299 } |
1299 | 1300 |
1300 // This test verifies that a remote stats object will not be created for | 1301 // This test verifies that a remote stats object will not be created for |
1301 // an outgoing SSRC where remote stats are not returned. | 1302 // an outgoing SSRC where remote stats are not returned. |
1302 TEST_F(StatsCollectorTest, RemoteSsrcInfoIsAbsent) { | 1303 TEST_F(StatsCollectorTest, RemoteSsrcInfoIsAbsent) { |
1303 StatsCollectorForTest stats(&pc_); | 1304 StatsCollectorForTest stats(pc_); |
1304 | 1305 |
1305 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 1306 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
1306 // The transport_name known by the video channel. | 1307 // The transport_name known by the video channel. |
1307 const std::string kVcName("vcname"); | 1308 const std::string kVcName("vcname"); |
1308 cricket::VideoChannel video_channel( | 1309 cricket::VideoChannel video_channel( |
1309 worker_thread_, network_thread_, nullptr, media_channel, kVcName, | 1310 worker_thread_, network_thread_, nullptr, media_channel, kVcName, |
1310 kDefaultRtcpMuxRequired, kDefaultSrtpRequired); | 1311 kDefaultRtcpMuxRequired, kDefaultSrtpRequired); |
1311 AddOutgoingVideoTrackStats(); | 1312 AddOutgoingVideoTrackStats(); |
1312 stats.AddStream(stream_); | 1313 stats.AddStream(stream_); |
1313 | 1314 |
1314 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); | 1315 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); |
1315 StatsReports reports; | 1316 StatsReports reports; |
1316 stats.GetStats(NULL, &reports); | 1317 stats.GetStats(NULL, &reports); |
1317 const StatsReport* remote_report = FindNthReportByType(reports, | 1318 const StatsReport* remote_report = FindNthReportByType(reports, |
1318 StatsReport::kStatsReportTypeRemoteSsrc, 1); | 1319 StatsReport::kStatsReportTypeRemoteSsrc, 1); |
1319 EXPECT_TRUE(remote_report == NULL); | 1320 EXPECT_TRUE(remote_report == NULL); |
1320 } | 1321 } |
1321 | 1322 |
1322 // This test verifies that a remote stats object will be created for | 1323 // This test verifies that a remote stats object will be created for |
1323 // an outgoing SSRC where stats are returned. | 1324 // an outgoing SSRC where stats are returned. |
1324 TEST_F(StatsCollectorTest, RemoteSsrcInfoIsPresent) { | 1325 TEST_F(StatsCollectorTest, RemoteSsrcInfoIsPresent) { |
1325 StatsCollectorForTest stats(&pc_); | 1326 StatsCollectorForTest stats(pc_); |
1326 | 1327 |
1327 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1328 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1328 .WillRepeatedly(Return(false)); | 1329 .WillRepeatedly(Return(false)); |
1329 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 1330 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1330 .WillRepeatedly(Return(nullptr)); | 1331 .WillRepeatedly(Return(nullptr)); |
1331 | 1332 |
1332 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 1333 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
1333 // The transport_name known by the video channel. | 1334 // The transport_name known by the video channel. |
1334 const std::string kVcName("vcname"); | 1335 const std::string kVcName("vcname"); |
1335 cricket::VideoChannel video_channel( | 1336 cricket::VideoChannel video_channel( |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1369 | 1370 |
1370 const StatsReport* remote_report = FindNthReportByType(reports, | 1371 const StatsReport* remote_report = FindNthReportByType(reports, |
1371 StatsReport::kStatsReportTypeRemoteSsrc, 1); | 1372 StatsReport::kStatsReportTypeRemoteSsrc, 1); |
1372 EXPECT_FALSE(remote_report == NULL); | 1373 EXPECT_FALSE(remote_report == NULL); |
1373 EXPECT_EQ(12345.678, remote_report->timestamp()); | 1374 EXPECT_EQ(12345.678, remote_report->timestamp()); |
1374 } | 1375 } |
1375 | 1376 |
1376 // This test verifies that the empty track report exists in the returned stats | 1377 // This test verifies that the empty track report exists in the returned stats |
1377 // when StatsCollector::UpdateStats is called with ssrc stats. | 1378 // when StatsCollector::UpdateStats is called with ssrc stats. |
1378 TEST_F(StatsCollectorTest, ReportsFromRemoteTrack) { | 1379 TEST_F(StatsCollectorTest, ReportsFromRemoteTrack) { |
1379 StatsCollectorForTest stats(&pc_); | 1380 StatsCollectorForTest stats(pc_); |
1380 | 1381 |
1381 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1382 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1382 .WillRepeatedly(Return(false)); | 1383 .WillRepeatedly(Return(false)); |
1383 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 1384 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1384 .WillRepeatedly(Return(nullptr)); | 1385 .WillRepeatedly(Return(nullptr)); |
1385 | 1386 |
1386 const char kVideoChannelName[] = "video"; | 1387 const char kVideoChannelName[] = "video"; |
1387 InitSessionStats(kVideoChannelName); | 1388 InitSessionStats(kVideoChannelName); |
1388 EXPECT_CALL(session_, GetStats(_)).WillRepeatedly(Invoke( | 1389 EXPECT_CALL(session_, GetStats(_)).WillRepeatedly(Invoke( |
1389 [this](const ChannelNamePairs&) { | 1390 [this](const ChannelNamePairs&) { |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1430 EXPECT_EQ(rtc::ToString<uint32_t>(kSsrcOfTrack), ssrc_id); | 1431 EXPECT_EQ(rtc::ToString<uint32_t>(kSsrcOfTrack), ssrc_id); |
1431 | 1432 |
1432 std::string track_id = ExtractSsrcStatsValue( | 1433 std::string track_id = ExtractSsrcStatsValue( |
1433 reports, StatsReport::kStatsValueNameTrackId); | 1434 reports, StatsReport::kStatsValueNameTrackId); |
1434 EXPECT_EQ(kRemoteTrackId, track_id); | 1435 EXPECT_EQ(kRemoteTrackId, track_id); |
1435 } | 1436 } |
1436 | 1437 |
1437 // This test verifies the Ice Candidate report should contain the correct | 1438 // This test verifies the Ice Candidate report should contain the correct |
1438 // information from local/remote candidates. | 1439 // information from local/remote candidates. |
1439 TEST_F(StatsCollectorTest, IceCandidateReport) { | 1440 TEST_F(StatsCollectorTest, IceCandidateReport) { |
1440 StatsCollectorForTest stats(&pc_); | 1441 StatsCollectorForTest stats(pc_); |
1441 | 1442 |
1442 StatsReports reports; // returned values. | 1443 StatsReports reports; // returned values. |
1443 | 1444 |
1444 const int local_port = 2000; | 1445 const int local_port = 2000; |
1445 const char local_ip[] = "192.168.0.1"; | 1446 const char local_ip[] = "192.168.0.1"; |
1446 const int remote_port = 2001; | 1447 const int remote_port = 2001; |
1447 const char remote_ip[] = "192.168.0.2"; | 1448 const char remote_ip[] = "192.168.0.2"; |
1448 | 1449 |
1449 rtc::SocketAddress local_address(local_ip, local_port); | 1450 rtc::SocketAddress local_address(local_ip, local_port); |
1450 rtc::SocketAddress remote_address(remote_ip, remote_port); | 1451 rtc::SocketAddress remote_address(remote_ip, remote_port); |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1564 new rtc::FakeSSLCertificate(DerToPem(remote_der))); | 1565 new rtc::FakeSSLCertificate(DerToPem(remote_der))); |
1565 | 1566 |
1566 TestCertificateReports(local_cert, std::vector<std::string>(1, local_der), | 1567 TestCertificateReports(local_cert, std::vector<std::string>(1, local_der), |
1567 std::move(remote_cert), | 1568 std::move(remote_cert), |
1568 std::vector<std::string>(1, remote_der)); | 1569 std::vector<std::string>(1, remote_der)); |
1569 } | 1570 } |
1570 | 1571 |
1571 // This test verifies that the stats are generated correctly when no | 1572 // This test verifies that the stats are generated correctly when no |
1572 // transport is present. | 1573 // transport is present. |
1573 TEST_F(StatsCollectorTest, NoTransport) { | 1574 TEST_F(StatsCollectorTest, NoTransport) { |
1574 StatsCollectorForTest stats(&pc_); | 1575 StatsCollectorForTest stats(pc_); |
1575 | 1576 |
1576 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1577 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1577 .WillRepeatedly(Return(false)); | 1578 .WillRepeatedly(Return(false)); |
1578 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 1579 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1579 .WillRepeatedly(Return(nullptr)); | 1580 .WillRepeatedly(Return(nullptr)); |
1580 | 1581 |
1581 StatsReports reports; // returned values. | 1582 StatsReports reports; // returned values. |
1582 | 1583 |
1583 // Fake stats to process. | 1584 // Fake stats to process. |
1584 cricket::TransportChannelStats channel_stats; | 1585 cricket::TransportChannelStats channel_stats; |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1623 ASSERT_EQ(kNotFound, dtls_cipher_suite); | 1624 ASSERT_EQ(kNotFound, dtls_cipher_suite); |
1624 std::string srtp_crypto_suite = | 1625 std::string srtp_crypto_suite = |
1625 ExtractStatsValue(StatsReport::kStatsReportTypeComponent, reports, | 1626 ExtractStatsValue(StatsReport::kStatsReportTypeComponent, reports, |
1626 StatsReport::kStatsValueNameSrtpCipher); | 1627 StatsReport::kStatsValueNameSrtpCipher); |
1627 ASSERT_EQ(kNotFound, srtp_crypto_suite); | 1628 ASSERT_EQ(kNotFound, srtp_crypto_suite); |
1628 } | 1629 } |
1629 | 1630 |
1630 // This test verifies that the stats are generated correctly when the transport | 1631 // This test verifies that the stats are generated correctly when the transport |
1631 // does not have any certificates. | 1632 // does not have any certificates. |
1632 TEST_F(StatsCollectorTest, NoCertificates) { | 1633 TEST_F(StatsCollectorTest, NoCertificates) { |
1633 StatsCollectorForTest stats(&pc_); | 1634 StatsCollectorForTest stats(pc_); |
1634 | 1635 |
1635 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1636 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1636 .WillRepeatedly(Return(false)); | 1637 .WillRepeatedly(Return(false)); |
1637 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 1638 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1638 .WillRepeatedly(Return(nullptr)); | 1639 .WillRepeatedly(Return(nullptr)); |
1639 | 1640 |
1640 StatsReports reports; // returned values. | 1641 StatsReports reports; // returned values. |
1641 | 1642 |
1642 // Fake stats to process. | 1643 // Fake stats to process. |
1643 cricket::TransportChannelStats channel_stats; | 1644 cricket::TransportChannelStats channel_stats; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1688 new rtc::FakeSSLCertificate(DerToPem(remote_der))); | 1689 new rtc::FakeSSLCertificate(DerToPem(remote_der))); |
1689 remote_cert->set_digest_algorithm("foobar"); | 1690 remote_cert->set_digest_algorithm("foobar"); |
1690 | 1691 |
1691 TestCertificateReports(local_cert, std::vector<std::string>(1, local_der), | 1692 TestCertificateReports(local_cert, std::vector<std::string>(1, local_der), |
1692 std::move(remote_cert), std::vector<std::string>()); | 1693 std::move(remote_cert), std::vector<std::string>()); |
1693 } | 1694 } |
1694 | 1695 |
1695 // This test verifies that the audio/video related stats which are -1 initially | 1696 // This test verifies that the audio/video related stats which are -1 initially |
1696 // will be filtered out. | 1697 // will be filtered out. |
1697 TEST_F(StatsCollectorTest, FilterOutNegativeInitialValues) { | 1698 TEST_F(StatsCollectorTest, FilterOutNegativeInitialValues) { |
1698 StatsCollectorForTest stats(&pc_); | 1699 StatsCollectorForTest stats(pc_); |
1699 | 1700 |
1700 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1701 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1701 .WillRepeatedly(Return(false)); | 1702 .WillRepeatedly(Return(false)); |
1702 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 1703 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1703 .WillRepeatedly(Return(nullptr)); | 1704 .WillRepeatedly(Return(nullptr)); |
1704 | 1705 |
1705 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); | 1706 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); |
1706 // The transport_name known by the voice channel. | 1707 // The transport_name known by the voice channel. |
1707 const std::string kVcName("vcname"); | 1708 const std::string kVcName("vcname"); |
1708 cricket::VoiceChannel voice_channel( | 1709 cricket::VoiceChannel voice_channel( |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1798 EXPECT_FALSE(GetValue(report, | 1799 EXPECT_FALSE(GetValue(report, |
1799 StatsReport::kStatsValueNameCaptureStartNtpTimeMs, | 1800 StatsReport::kStatsValueNameCaptureStartNtpTimeMs, |
1800 &value_in_report)); | 1801 &value_in_report)); |
1801 EXPECT_FALSE(GetValue(report, StatsReport::kStatsValueNameAudioInputLevel, | 1802 EXPECT_FALSE(GetValue(report, StatsReport::kStatsValueNameAudioInputLevel, |
1802 &value_in_report)); | 1803 &value_in_report)); |
1803 } | 1804 } |
1804 | 1805 |
1805 // This test verifies that a local stats object can get statistics via | 1806 // This test verifies that a local stats object can get statistics via |
1806 // AudioTrackInterface::GetStats() method. | 1807 // AudioTrackInterface::GetStats() method. |
1807 TEST_F(StatsCollectorTest, GetStatsFromLocalAudioTrack) { | 1808 TEST_F(StatsCollectorTest, GetStatsFromLocalAudioTrack) { |
1808 StatsCollectorForTest stats(&pc_); | 1809 StatsCollectorForTest stats(pc_); |
1809 | 1810 |
1810 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1811 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1811 .WillRepeatedly(Return(false)); | 1812 .WillRepeatedly(Return(false)); |
1812 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 1813 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1813 .WillRepeatedly(Return(nullptr)); | 1814 .WillRepeatedly(Return(nullptr)); |
1814 | 1815 |
1815 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); | 1816 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); |
1816 // The transport_name known by the voice channel. | 1817 // The transport_name known by the voice channel. |
1817 const std::string kVcName("vcname"); | 1818 const std::string kVcName("vcname"); |
1818 cricket::VoiceChannel voice_channel( | 1819 cricket::VoiceChannel voice_channel( |
(...skipping 15 matching lines...) Expand all Loading... |
1834 // Verify that there is no remote report for the local audio track because | 1835 // Verify that there is no remote report for the local audio track because |
1835 // we did not set it up. | 1836 // we did not set it up. |
1836 const StatsReport* remote_report = FindNthReportByType(reports, | 1837 const StatsReport* remote_report = FindNthReportByType(reports, |
1837 StatsReport::kStatsReportTypeRemoteSsrc, 1); | 1838 StatsReport::kStatsReportTypeRemoteSsrc, 1); |
1838 EXPECT_TRUE(remote_report == NULL); | 1839 EXPECT_TRUE(remote_report == NULL); |
1839 } | 1840 } |
1840 | 1841 |
1841 // This test verifies that audio receive streams populate stats reports | 1842 // This test verifies that audio receive streams populate stats reports |
1842 // correctly. | 1843 // correctly. |
1843 TEST_F(StatsCollectorTest, GetStatsFromRemoteStream) { | 1844 TEST_F(StatsCollectorTest, GetStatsFromRemoteStream) { |
1844 StatsCollectorForTest stats(&pc_); | 1845 StatsCollectorForTest stats(pc_); |
1845 | 1846 |
1846 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1847 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1847 .WillRepeatedly(Return(false)); | 1848 .WillRepeatedly(Return(false)); |
1848 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 1849 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1849 .WillRepeatedly(Return(nullptr)); | 1850 .WillRepeatedly(Return(nullptr)); |
1850 | 1851 |
1851 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); | 1852 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); |
1852 // The transport_name known by the voice channel. | 1853 // The transport_name known by the voice channel. |
1853 const std::string kVcName("vcname"); | 1854 const std::string kVcName("vcname"); |
1854 cricket::VoiceChannel voice_channel( | 1855 cricket::VoiceChannel voice_channel( |
1855 worker_thread_, network_thread_, nullptr, media_engine_, media_channel, | 1856 worker_thread_, network_thread_, nullptr, media_engine_, media_channel, |
1856 kVcName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); | 1857 kVcName, kDefaultRtcpMuxRequired, kDefaultSrtpRequired); |
1857 AddIncomingAudioTrackStats(); | 1858 AddIncomingAudioTrackStats(); |
1858 stats.AddStream(stream_); | 1859 stats.AddStream(stream_); |
1859 | 1860 |
1860 cricket::VoiceReceiverInfo voice_receiver_info; | 1861 cricket::VoiceReceiverInfo voice_receiver_info; |
1861 InitVoiceReceiverInfo(&voice_receiver_info); | 1862 InitVoiceReceiverInfo(&voice_receiver_info); |
1862 voice_receiver_info.codec_name = "fake_codec"; | 1863 voice_receiver_info.codec_name = "fake_codec"; |
1863 | 1864 |
1864 cricket::VoiceMediaInfo stats_read; | 1865 cricket::VoiceMediaInfo stats_read; |
1865 StatsReports reports; // returned values. | 1866 StatsReports reports; // returned values. |
1866 SetupAndVerifyAudioTrackStats( | 1867 SetupAndVerifyAudioTrackStats( |
1867 audio_track_.get(), stream_.get(), &stats, &voice_channel, kVcName, | 1868 audio_track_.get(), stream_.get(), &stats, &voice_channel, kVcName, |
1868 media_channel, NULL, &voice_receiver_info, &stats_read, &reports); | 1869 media_channel, NULL, &voice_receiver_info, &stats_read, &reports); |
1869 } | 1870 } |
1870 | 1871 |
1871 // This test verifies that a local stats object won't update its statistics | 1872 // This test verifies that a local stats object won't update its statistics |
1872 // after a RemoveLocalAudioTrack() call. | 1873 // after a RemoveLocalAudioTrack() call. |
1873 TEST_F(StatsCollectorTest, GetStatsAfterRemoveAudioStream) { | 1874 TEST_F(StatsCollectorTest, GetStatsAfterRemoveAudioStream) { |
1874 StatsCollectorForTest stats(&pc_); | 1875 StatsCollectorForTest stats(pc_); |
1875 | 1876 |
1876 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1877 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1877 .WillRepeatedly(Return(false)); | 1878 .WillRepeatedly(Return(false)); |
1878 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 1879 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1879 .WillRepeatedly(Return(nullptr)); | 1880 .WillRepeatedly(Return(nullptr)); |
1880 | 1881 |
1881 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); | 1882 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); |
1882 // The transport_name known by the voice channel. | 1883 // The transport_name known by the voice channel. |
1883 const std::string kVcName("vcname"); | 1884 const std::string kVcName("vcname"); |
1884 cricket::VoiceChannel voice_channel( | 1885 cricket::VoiceChannel voice_channel( |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1928 | 1929 |
1929 // Verifies the values in the track report, no value will be changed by the | 1930 // Verifies the values in the track report, no value will be changed by the |
1930 // AudioTrackInterface::GetSignalValue() and | 1931 // AudioTrackInterface::GetSignalValue() and |
1931 // AudioProcessorInterface::AudioProcessorStats::GetStats(); | 1932 // AudioProcessorInterface::AudioProcessorStats::GetStats(); |
1932 VerifyVoiceSenderInfoReport(report, voice_sender_info); | 1933 VerifyVoiceSenderInfoReport(report, voice_sender_info); |
1933 } | 1934 } |
1934 | 1935 |
1935 // This test verifies that when ongoing and incoming audio tracks are using | 1936 // This test verifies that when ongoing and incoming audio tracks are using |
1936 // the same ssrc, they populate stats reports correctly. | 1937 // the same ssrc, they populate stats reports correctly. |
1937 TEST_F(StatsCollectorTest, LocalAndRemoteTracksWithSameSsrc) { | 1938 TEST_F(StatsCollectorTest, LocalAndRemoteTracksWithSameSsrc) { |
1938 StatsCollectorForTest stats(&pc_); | 1939 StatsCollectorForTest stats(pc_); |
1939 | 1940 |
1940 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1941 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1941 .WillRepeatedly(Return(false)); | 1942 .WillRepeatedly(Return(false)); |
1942 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 1943 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
1943 .WillRepeatedly(Return(nullptr)); | 1944 .WillRepeatedly(Return(nullptr)); |
1944 | 1945 |
1945 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); | 1946 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); |
1946 // The transport_name known by the voice channel. | 1947 // The transport_name known by the voice channel. |
1947 const std::string kVcName("vcname"); | 1948 const std::string kVcName("vcname"); |
1948 cricket::VoiceChannel voice_channel( | 1949 cricket::VoiceChannel voice_channel( |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2018 StatsReport::kStatsValueNameTrackId); | 2019 StatsReport::kStatsValueNameTrackId); |
2019 EXPECT_EQ(kRemoteTrackId, track_id); | 2020 EXPECT_EQ(kRemoteTrackId, track_id); |
2020 VerifyVoiceReceiverInfoReport(track_report, voice_receiver_info); | 2021 VerifyVoiceReceiverInfoReport(track_report, voice_receiver_info); |
2021 } | 2022 } |
2022 | 2023 |
2023 // This test verifies that when two outgoing audio tracks are using the same | 2024 // This test verifies that when two outgoing audio tracks are using the same |
2024 // ssrc at different times, they populate stats reports correctly. | 2025 // ssrc at different times, they populate stats reports correctly. |
2025 // TODO(xians): Figure out if it is possible to encapsulate the setup and | 2026 // TODO(xians): Figure out if it is possible to encapsulate the setup and |
2026 // avoid duplication of code in test cases. | 2027 // avoid duplication of code in test cases. |
2027 TEST_F(StatsCollectorTest, TwoLocalTracksWithSameSsrc) { | 2028 TEST_F(StatsCollectorTest, TwoLocalTracksWithSameSsrc) { |
2028 StatsCollectorForTest stats(&pc_); | 2029 StatsCollectorForTest stats(pc_); |
2029 | 2030 |
2030 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 2031 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
2031 .WillRepeatedly(Return(false)); | 2032 .WillRepeatedly(Return(false)); |
2032 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 2033 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
2033 .WillRepeatedly(Return(nullptr)); | 2034 .WillRepeatedly(Return(nullptr)); |
2034 | 2035 |
2035 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); | 2036 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); |
2036 // The transport_name known by the voice channel. | 2037 // The transport_name known by the voice channel. |
2037 const std::string kVcName("vcname"); | 2038 const std::string kVcName("vcname"); |
2038 cricket::VoiceChannel voice_channel( | 2039 cricket::VoiceChannel voice_channel( |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2072 InitVoiceSenderInfo(&new_voice_sender_info); | 2073 InitVoiceSenderInfo(&new_voice_sender_info); |
2073 cricket::VoiceMediaInfo new_stats_read; | 2074 cricket::VoiceMediaInfo new_stats_read; |
2074 reports.clear(); | 2075 reports.clear(); |
2075 SetupAndVerifyAudioTrackStats( | 2076 SetupAndVerifyAudioTrackStats( |
2076 new_audio_track.get(), stream_.get(), &stats, &voice_channel, kVcName, | 2077 new_audio_track.get(), stream_.get(), &stats, &voice_channel, kVcName, |
2077 media_channel, &new_voice_sender_info, NULL, &new_stats_read, &reports); | 2078 media_channel, &new_voice_sender_info, NULL, &new_stats_read, &reports); |
2078 } | 2079 } |
2079 | 2080 |
2080 // This test verifies that stats are correctly set in video send ssrc stats. | 2081 // This test verifies that stats are correctly set in video send ssrc stats. |
2081 TEST_F(StatsCollectorTest, VerifyVideoSendSsrcStats) { | 2082 TEST_F(StatsCollectorTest, VerifyVideoSendSsrcStats) { |
2082 StatsCollectorForTest stats(&pc_); | 2083 StatsCollectorForTest stats(pc_); |
2083 | 2084 |
2084 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 2085 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
2085 .WillRepeatedly(Return(false)); | 2086 .WillRepeatedly(Return(false)); |
2086 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 2087 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
2087 .WillRepeatedly(Return(nullptr)); | 2088 .WillRepeatedly(Return(nullptr)); |
2088 | 2089 |
2089 const char kVideoChannelName[] = "video"; | 2090 const char kVideoChannelName[] = "video"; |
2090 | 2091 |
2091 InitSessionStats(kVideoChannelName); | 2092 InitSessionStats(kVideoChannelName); |
2092 EXPECT_CALL(session_, GetStats(_)).WillRepeatedly(Invoke( | 2093 EXPECT_CALL(session_, GetStats(_)).WillRepeatedly(Invoke( |
(...skipping 27 matching lines...) Expand all Loading... |
2120 stats.GetStats(NULL, &reports); | 2121 stats.GetStats(NULL, &reports); |
2121 EXPECT_EQ(rtc::ToString(video_sender_info.frames_encoded), | 2122 EXPECT_EQ(rtc::ToString(video_sender_info.frames_encoded), |
2122 ExtractSsrcStatsValue(reports, | 2123 ExtractSsrcStatsValue(reports, |
2123 StatsReport::kStatsValueNameFramesEncoded)); | 2124 StatsReport::kStatsValueNameFramesEncoded)); |
2124 EXPECT_EQ(rtc::ToString(*video_sender_info.qp_sum), | 2125 EXPECT_EQ(rtc::ToString(*video_sender_info.qp_sum), |
2125 ExtractSsrcStatsValue(reports, StatsReport::kStatsValueNameQpSum)); | 2126 ExtractSsrcStatsValue(reports, StatsReport::kStatsValueNameQpSum)); |
2126 } | 2127 } |
2127 | 2128 |
2128 // This test verifies that stats are correctly set in video receive ssrc stats. | 2129 // This test verifies that stats are correctly set in video receive ssrc stats. |
2129 TEST_F(StatsCollectorTest, VerifyVideoReceiveSsrcStats) { | 2130 TEST_F(StatsCollectorTest, VerifyVideoReceiveSsrcStats) { |
2130 StatsCollectorForTest stats(&pc_); | 2131 StatsCollectorForTest stats(pc_); |
2131 | 2132 |
2132 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 2133 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
2133 .WillRepeatedly(Return(false)); | 2134 .WillRepeatedly(Return(false)); |
2134 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) | 2135 EXPECT_CALL(session_, GetRemoteSSLCertificate_ReturnsRawPointer(_)) |
2135 .WillRepeatedly(Return(nullptr)); | 2136 .WillRepeatedly(Return(nullptr)); |
2136 | 2137 |
2137 const char kVideoChannelName[] = "video"; | 2138 const char kVideoChannelName[] = "video"; |
2138 | 2139 |
2139 InitSessionStats(kVideoChannelName); | 2140 InitSessionStats(kVideoChannelName); |
2140 EXPECT_CALL(session_, GetStats(_)).WillRepeatedly(Invoke( | 2141 EXPECT_CALL(session_, GetStats(_)).WillRepeatedly(Invoke( |
(...skipping 26 matching lines...) Expand all Loading... |
2167 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); | 2168 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); |
2168 stats.GetStats(NULL, &reports); | 2169 stats.GetStats(NULL, &reports); |
2169 EXPECT_EQ(rtc::ToString(video_receiver_info.frames_decoded), | 2170 EXPECT_EQ(rtc::ToString(video_receiver_info.frames_decoded), |
2170 ExtractSsrcStatsValue(reports, | 2171 ExtractSsrcStatsValue(reports, |
2171 StatsReport::kStatsValueNameFramesDecoded)); | 2172 StatsReport::kStatsValueNameFramesDecoded)); |
2172 EXPECT_EQ(rtc::ToString(*video_receiver_info.qp_sum), | 2173 EXPECT_EQ(rtc::ToString(*video_receiver_info.qp_sum), |
2173 ExtractSsrcStatsValue(reports, StatsReport::kStatsValueNameQpSum)); | 2174 ExtractSsrcStatsValue(reports, StatsReport::kStatsValueNameQpSum)); |
2174 } | 2175 } |
2175 | 2176 |
2176 } // namespace webrtc | 2177 } // namespace webrtc |
OLD | NEW |