OLD | NEW |
1 /* | 1 /* |
2 * libjingle | 2 * libjingle |
3 * Copyright 2014 Google Inc. | 3 * Copyright 2014 Google Inc. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 } // namespace cricket | 71 } // namespace cricket |
72 | 72 |
73 namespace webrtc { | 73 namespace webrtc { |
74 | 74 |
75 // Error return values | 75 // Error return values |
76 const char kNotFound[] = "NOT FOUND"; | 76 const char kNotFound[] = "NOT FOUND"; |
77 | 77 |
78 // Constant names for track identification. | 78 // Constant names for track identification. |
79 const char kLocalTrackId[] = "local_track_id"; | 79 const char kLocalTrackId[] = "local_track_id"; |
80 const char kRemoteTrackId[] = "remote_track_id"; | 80 const char kRemoteTrackId[] = "remote_track_id"; |
81 const uint32 kSsrcOfTrack = 1234; | 81 const uint32_t kSsrcOfTrack = 1234; |
82 | 82 |
83 class MockWebRtcSession : public webrtc::WebRtcSession { | 83 class MockWebRtcSession : public webrtc::WebRtcSession { |
84 public: | 84 public: |
85 explicit MockWebRtcSession(cricket::ChannelManager* channel_manager) | 85 explicit MockWebRtcSession(cricket::ChannelManager* channel_manager) |
86 : WebRtcSession(channel_manager, rtc::Thread::Current(), | 86 : WebRtcSession(channel_manager, rtc::Thread::Current(), |
87 rtc::Thread::Current(), NULL, NULL) { | 87 rtc::Thread::Current(), NULL, NULL) { |
88 } | 88 } |
89 MOCK_METHOD0(voice_channel, cricket::VoiceChannel*()); | 89 MOCK_METHOD0(voice_channel, cricket::VoiceChannel*()); |
90 MOCK_METHOD0(video_channel, cricket::VideoChannel*()); | 90 MOCK_METHOD0(video_channel, cricket::VideoChannel*()); |
91 MOCK_CONST_METHOD0(mediastream_signaling, const MediaStreamSignaling*()); | 91 MOCK_CONST_METHOD0(mediastream_signaling, const MediaStreamSignaling*()); |
92 // Libjingle uses "local" for a outgoing track, and "remote" for a incoming | 92 // Libjingle uses "local" for a outgoing track, and "remote" for a incoming |
93 // track. | 93 // track. |
94 MOCK_METHOD2(GetLocalTrackIdBySsrc, bool(uint32, std::string*)); | 94 MOCK_METHOD2(GetLocalTrackIdBySsrc, bool(uint32_t, std::string*)); |
95 MOCK_METHOD2(GetRemoteTrackIdBySsrc, bool(uint32, std::string*)); | 95 MOCK_METHOD2(GetRemoteTrackIdBySsrc, bool(uint32_t, std::string*)); |
96 MOCK_METHOD1(GetTransportStats, bool(cricket::SessionStats*)); | 96 MOCK_METHOD1(GetTransportStats, bool(cricket::SessionStats*)); |
97 MOCK_METHOD2(GetLocalCertificate, | 97 MOCK_METHOD2(GetLocalCertificate, |
98 bool(const std::string& transport_name, | 98 bool(const std::string& transport_name, |
99 rtc::scoped_refptr<rtc::RTCCertificate>* certificate)); | 99 rtc::scoped_refptr<rtc::RTCCertificate>* certificate)); |
100 MOCK_METHOD2(GetRemoteSSLCertificate, | 100 MOCK_METHOD2(GetRemoteSSLCertificate, |
101 bool(const std::string& transport_name, | 101 bool(const std::string& transport_name, |
102 rtc::SSLCertificate** cert)); | 102 rtc::SSLCertificate** cert)); |
103 }; | 103 }; |
104 | 104 |
105 class MockVideoMediaChannel : public cricket::FakeVideoMediaChannel { | 105 class MockVideoMediaChannel : public cricket::FakeVideoMediaChannel { |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
294 | 294 |
295 void VerifyVoiceReceiverInfoReport( | 295 void VerifyVoiceReceiverInfoReport( |
296 const StatsReport* report, | 296 const StatsReport* report, |
297 const cricket::VoiceReceiverInfo& info) { | 297 const cricket::VoiceReceiverInfo& info) { |
298 std::string value_in_report; | 298 std::string value_in_report; |
299 EXPECT_TRUE(GetValue( | 299 EXPECT_TRUE(GetValue( |
300 report, StatsReport::kStatsValueNameAudioOutputLevel, &value_in_report)); | 300 report, StatsReport::kStatsValueNameAudioOutputLevel, &value_in_report)); |
301 EXPECT_EQ(rtc::ToString<int>(info.audio_level), value_in_report); | 301 EXPECT_EQ(rtc::ToString<int>(info.audio_level), value_in_report); |
302 EXPECT_TRUE(GetValue( | 302 EXPECT_TRUE(GetValue( |
303 report, StatsReport::kStatsValueNameBytesReceived, &value_in_report)); | 303 report, StatsReport::kStatsValueNameBytesReceived, &value_in_report)); |
304 EXPECT_EQ(rtc::ToString<int64>(info.bytes_rcvd), value_in_report); | 304 EXPECT_EQ(rtc::ToString<int64_t>(info.bytes_rcvd), value_in_report); |
305 EXPECT_TRUE(GetValue( | 305 EXPECT_TRUE(GetValue( |
306 report, StatsReport::kStatsValueNameJitterReceived, &value_in_report)); | 306 report, StatsReport::kStatsValueNameJitterReceived, &value_in_report)); |
307 EXPECT_EQ(rtc::ToString<int>(info.jitter_ms), value_in_report); | 307 EXPECT_EQ(rtc::ToString<int>(info.jitter_ms), value_in_report); |
308 EXPECT_TRUE(GetValue( | 308 EXPECT_TRUE(GetValue( |
309 report, StatsReport::kStatsValueNameJitterBufferMs, &value_in_report)); | 309 report, StatsReport::kStatsValueNameJitterBufferMs, &value_in_report)); |
310 EXPECT_EQ(rtc::ToString<int>(info.jitter_buffer_ms), value_in_report); | 310 EXPECT_EQ(rtc::ToString<int>(info.jitter_buffer_ms), value_in_report); |
311 EXPECT_TRUE(GetValue( | 311 EXPECT_TRUE(GetValue( |
312 report, StatsReport::kStatsValueNamePreferredJitterBufferMs, | 312 report, StatsReport::kStatsValueNamePreferredJitterBufferMs, |
313 &value_in_report)); | 313 &value_in_report)); |
314 EXPECT_EQ(rtc::ToString<int>(info.jitter_buffer_preferred_ms), | 314 EXPECT_EQ(rtc::ToString<int>(info.jitter_buffer_preferred_ms), |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 | 360 |
361 | 361 |
362 void VerifyVoiceSenderInfoReport(const StatsReport* report, | 362 void VerifyVoiceSenderInfoReport(const StatsReport* report, |
363 const cricket::VoiceSenderInfo& sinfo) { | 363 const cricket::VoiceSenderInfo& sinfo) { |
364 std::string value_in_report; | 364 std::string value_in_report; |
365 EXPECT_TRUE(GetValue( | 365 EXPECT_TRUE(GetValue( |
366 report, StatsReport::kStatsValueNameCodecName, &value_in_report)); | 366 report, StatsReport::kStatsValueNameCodecName, &value_in_report)); |
367 EXPECT_EQ(sinfo.codec_name, value_in_report); | 367 EXPECT_EQ(sinfo.codec_name, value_in_report); |
368 EXPECT_TRUE(GetValue( | 368 EXPECT_TRUE(GetValue( |
369 report, StatsReport::kStatsValueNameBytesSent, &value_in_report)); | 369 report, StatsReport::kStatsValueNameBytesSent, &value_in_report)); |
370 EXPECT_EQ(rtc::ToString<int64>(sinfo.bytes_sent), value_in_report); | 370 EXPECT_EQ(rtc::ToString<int64_t>(sinfo.bytes_sent), value_in_report); |
371 EXPECT_TRUE(GetValue( | 371 EXPECT_TRUE(GetValue( |
372 report, StatsReport::kStatsValueNamePacketsSent, &value_in_report)); | 372 report, StatsReport::kStatsValueNamePacketsSent, &value_in_report)); |
373 EXPECT_EQ(rtc::ToString<int>(sinfo.packets_sent), value_in_report); | 373 EXPECT_EQ(rtc::ToString<int>(sinfo.packets_sent), value_in_report); |
374 EXPECT_TRUE(GetValue( | 374 EXPECT_TRUE(GetValue( |
375 report, StatsReport::kStatsValueNamePacketsLost, &value_in_report)); | 375 report, StatsReport::kStatsValueNamePacketsLost, &value_in_report)); |
376 EXPECT_EQ(rtc::ToString<int>(sinfo.packets_lost), value_in_report); | 376 EXPECT_EQ(rtc::ToString<int>(sinfo.packets_lost), value_in_report); |
377 EXPECT_TRUE(GetValue( | 377 EXPECT_TRUE(GetValue( |
378 report, StatsReport::kStatsValueNameRtt, &value_in_report)); | 378 report, StatsReport::kStatsValueNameRtt, &value_in_report)); |
379 EXPECT_EQ(rtc::ToString<int>(sinfo.rtt_ms), value_in_report); | 379 EXPECT_EQ(rtc::ToString<int>(sinfo.rtt_ms), value_in_report); |
380 EXPECT_TRUE(GetValue( | 380 EXPECT_TRUE(GetValue( |
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
603 // Verify the existence of the track report. | 603 // Verify the existence of the track report. |
604 const StatsReport* report = FindNthReportByType( | 604 const StatsReport* report = FindNthReportByType( |
605 *reports, StatsReport::kStatsReportTypeSsrc, 1); | 605 *reports, StatsReport::kStatsReportTypeSsrc, 1); |
606 EXPECT_FALSE(report == NULL); | 606 EXPECT_FALSE(report == NULL); |
607 EXPECT_EQ(stats->GetTimeNow(), report->timestamp()); | 607 EXPECT_EQ(stats->GetTimeNow(), report->timestamp()); |
608 std::string track_id = ExtractSsrcStatsValue( | 608 std::string track_id = ExtractSsrcStatsValue( |
609 *reports, StatsReport::kStatsValueNameTrackId); | 609 *reports, StatsReport::kStatsValueNameTrackId); |
610 EXPECT_EQ(audio_track->id(), track_id); | 610 EXPECT_EQ(audio_track->id(), track_id); |
611 std::string ssrc_id = ExtractSsrcStatsValue( | 611 std::string ssrc_id = ExtractSsrcStatsValue( |
612 *reports, StatsReport::kStatsValueNameSsrc); | 612 *reports, StatsReport::kStatsValueNameSsrc); |
613 EXPECT_EQ(rtc::ToString<uint32>(kSsrcOfTrack), ssrc_id); | 613 EXPECT_EQ(rtc::ToString<uint32_t>(kSsrcOfTrack), ssrc_id); |
614 | 614 |
615 // Verifies the values in the track report. | 615 // Verifies the values in the track report. |
616 if (voice_sender_info) { | 616 if (voice_sender_info) { |
617 UpdateVoiceSenderInfoFromAudioTrack(audio_track, voice_sender_info); | 617 UpdateVoiceSenderInfoFromAudioTrack(audio_track, voice_sender_info); |
618 VerifyVoiceSenderInfoReport(report, *voice_sender_info); | 618 VerifyVoiceSenderInfoReport(report, *voice_sender_info); |
619 } | 619 } |
620 if (voice_receiver_info) { | 620 if (voice_receiver_info) { |
621 VerifyVoiceReceiverInfoReport(report, *voice_receiver_info); | 621 VerifyVoiceReceiverInfoReport(report, *voice_receiver_info); |
622 } | 622 } |
623 | 623 |
624 // Verify we get the same result by passing a track to GetStats(). | 624 // Verify we get the same result by passing a track to GetStats(). |
625 StatsReports track_reports; // returned values. | 625 StatsReports track_reports; // returned values. |
626 stats->GetStats(audio_track, &track_reports); | 626 stats->GetStats(audio_track, &track_reports); |
627 const StatsReport* track_report = FindNthReportByType( | 627 const StatsReport* track_report = FindNthReportByType( |
628 track_reports, StatsReport::kStatsReportTypeSsrc, 1); | 628 track_reports, StatsReport::kStatsReportTypeSsrc, 1); |
629 EXPECT_TRUE(track_report); | 629 EXPECT_TRUE(track_report); |
630 EXPECT_EQ(stats->GetTimeNow(), track_report->timestamp()); | 630 EXPECT_EQ(stats->GetTimeNow(), track_report->timestamp()); |
631 track_id = ExtractSsrcStatsValue(track_reports, | 631 track_id = ExtractSsrcStatsValue(track_reports, |
632 StatsReport::kStatsValueNameTrackId); | 632 StatsReport::kStatsValueNameTrackId); |
633 EXPECT_EQ(audio_track->id(), track_id); | 633 EXPECT_EQ(audio_track->id(), track_id); |
634 ssrc_id = ExtractSsrcStatsValue(track_reports, | 634 ssrc_id = ExtractSsrcStatsValue(track_reports, |
635 StatsReport::kStatsValueNameSsrc); | 635 StatsReport::kStatsValueNameSsrc); |
636 EXPECT_EQ(rtc::ToString<uint32>(kSsrcOfTrack), ssrc_id); | 636 EXPECT_EQ(rtc::ToString<uint32_t>(kSsrcOfTrack), ssrc_id); |
637 if (voice_sender_info) | 637 if (voice_sender_info) |
638 VerifyVoiceSenderInfoReport(track_report, *voice_sender_info); | 638 VerifyVoiceSenderInfoReport(track_report, *voice_sender_info); |
639 if (voice_receiver_info) | 639 if (voice_receiver_info) |
640 VerifyVoiceReceiverInfoReport(track_report, *voice_receiver_info); | 640 VerifyVoiceReceiverInfoReport(track_report, *voice_receiver_info); |
641 } | 641 } |
642 | 642 |
643 void TestCertificateReports(const rtc::FakeSSLCertificate& local_cert, | 643 void TestCertificateReports(const rtc::FakeSSLCertificate& local_cert, |
644 const std::vector<std::string>& local_ders, | 644 const std::vector<std::string>& local_ders, |
645 const rtc::FakeSSLCertificate& remote_cert, | 645 const rtc::FakeSSLCertificate& remote_cert, |
646 const std::vector<std::string>& remote_ders) { | 646 const std::vector<std::string>& remote_ders) { |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
768 | 768 |
769 StatsReport::Id reportId = StatsReport::NewTypedIntId( | 769 StatsReport::Id reportId = StatsReport::NewTypedIntId( |
770 StatsReport::kStatsReportTypeDataChannel, id); | 770 StatsReport::kStatsReportTypeDataChannel, id); |
771 | 771 |
772 EXPECT_TRUE(reportId->Equals(report->id())); | 772 EXPECT_TRUE(reportId->Equals(report->id())); |
773 | 773 |
774 EXPECT_EQ(stats.GetTimeNow(), report->timestamp()); | 774 EXPECT_EQ(stats.GetTimeNow(), report->timestamp()); |
775 EXPECT_EQ(label, ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, | 775 EXPECT_EQ(label, ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, |
776 reports, | 776 reports, |
777 StatsReport::kStatsValueNameLabel)); | 777 StatsReport::kStatsValueNameLabel)); |
778 EXPECT_EQ(rtc::ToString<int64>(id), | 778 EXPECT_EQ(rtc::ToString<int64_t>(id), |
779 ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, | 779 ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, reports, |
780 reports, | |
781 StatsReport::kStatsValueNameDataChannelId)); | 780 StatsReport::kStatsValueNameDataChannelId)); |
782 EXPECT_EQ(state, ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, | 781 EXPECT_EQ(state, ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, |
783 reports, | 782 reports, |
784 StatsReport::kStatsValueNameState)); | 783 StatsReport::kStatsValueNameState)); |
785 EXPECT_EQ("", ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, | 784 EXPECT_EQ("", ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, |
786 reports, | 785 reports, |
787 StatsReport::kStatsValueNameProtocol)); | 786 StatsReport::kStatsValueNameProtocol)); |
788 } | 787 } |
789 | 788 |
790 // This test verifies that 64-bit counters are passed successfully. | 789 // This test verifies that 64-bit counters are passed successfully. |
(...skipping 12 matching lines...) Expand all Loading... |
803 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), | 802 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), |
804 Return(true))); | 803 Return(true))); |
805 | 804 |
806 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 805 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
807 cricket::VideoChannel video_channel(rtc::Thread::Current(), | 806 cricket::VideoChannel video_channel(rtc::Thread::Current(), |
808 media_channel, NULL, kVideoChannelName, false); | 807 media_channel, NULL, kVideoChannelName, false); |
809 StatsReports reports; // returned values. | 808 StatsReports reports; // returned values. |
810 cricket::VideoSenderInfo video_sender_info; | 809 cricket::VideoSenderInfo video_sender_info; |
811 cricket::VideoMediaInfo stats_read; | 810 cricket::VideoMediaInfo stats_read; |
812 // The number of bytes must be larger than 0xFFFFFFFF for this test. | 811 // The number of bytes must be larger than 0xFFFFFFFF for this test. |
813 const int64 kBytesSent = 12345678901234LL; | 812 const int64_t kBytesSent = 12345678901234LL; |
814 const std::string kBytesSentString("12345678901234"); | 813 const std::string kBytesSentString("12345678901234"); |
815 | 814 |
816 AddOutgoingVideoTrackStats(); | 815 AddOutgoingVideoTrackStats(); |
817 stats.AddStream(stream_); | 816 stats.AddStream(stream_); |
818 | 817 |
819 // Construct a stats value to read. | 818 // Construct a stats value to read. |
820 video_sender_info.add_ssrc(1234); | 819 video_sender_info.add_ssrc(1234); |
821 video_sender_info.bytes_sent = kBytesSent; | 820 video_sender_info.bytes_sent = kBytesSent; |
822 stats_read.senders.push_back(video_sender_info); | 821 stats_read.senders.push_back(video_sender_info); |
823 | 822 |
(...skipping 27 matching lines...) Expand all Loading... |
851 | 850 |
852 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 851 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
853 cricket::VideoChannel video_channel(rtc::Thread::Current(), | 852 cricket::VideoChannel video_channel(rtc::Thread::Current(), |
854 media_channel, NULL, kVideoChannelName, false); | 853 media_channel, NULL, kVideoChannelName, false); |
855 | 854 |
856 StatsReports reports; // returned values. | 855 StatsReports reports; // returned values. |
857 cricket::VideoSenderInfo video_sender_info; | 856 cricket::VideoSenderInfo video_sender_info; |
858 cricket::VideoMediaInfo stats_read; | 857 cricket::VideoMediaInfo stats_read; |
859 // Set up an SSRC just to test that we get both kinds of stats back: SSRC and | 858 // Set up an SSRC just to test that we get both kinds of stats back: SSRC and |
860 // BWE. | 859 // BWE. |
861 const int64 kBytesSent = 12345678901234LL; | 860 const int64_t kBytesSent = 12345678901234LL; |
862 const std::string kBytesSentString("12345678901234"); | 861 const std::string kBytesSentString("12345678901234"); |
863 | 862 |
864 AddOutgoingVideoTrackStats(); | 863 AddOutgoingVideoTrackStats(); |
865 stats.AddStream(stream_); | 864 stats.AddStream(stream_); |
866 | 865 |
867 // Construct a stats value to read. | 866 // Construct a stats value to read. |
868 video_sender_info.add_ssrc(1234); | 867 video_sender_info.add_ssrc(1234); |
869 video_sender_info.bytes_sent = kBytesSent; | 868 video_sender_info.bytes_sent = kBytesSent; |
870 stats_read.senders.push_back(video_sender_info); | 869 stats_read.senders.push_back(video_sender_info); |
871 cricket::BandwidthEstimationInfo bwe; | 870 cricket::BandwidthEstimationInfo bwe; |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
966 | 965 |
967 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 966 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
968 cricket::VideoChannel video_channel(rtc::Thread::Current(), | 967 cricket::VideoChannel video_channel(rtc::Thread::Current(), |
969 media_channel, NULL, kVideoChannelName, false); | 968 media_channel, NULL, kVideoChannelName, false); |
970 AddOutgoingVideoTrackStats(); | 969 AddOutgoingVideoTrackStats(); |
971 stats.AddStream(stream_); | 970 stats.AddStream(stream_); |
972 | 971 |
973 // Constructs an ssrc stats update. | 972 // Constructs an ssrc stats update. |
974 cricket::VideoSenderInfo video_sender_info; | 973 cricket::VideoSenderInfo video_sender_info; |
975 cricket::VideoMediaInfo stats_read; | 974 cricket::VideoMediaInfo stats_read; |
976 const int64 kBytesSent = 12345678901234LL; | 975 const int64_t kBytesSent = 12345678901234LL; |
977 | 976 |
978 // Construct a stats value to read. | 977 // Construct a stats value to read. |
979 video_sender_info.add_ssrc(1234); | 978 video_sender_info.add_ssrc(1234); |
980 video_sender_info.bytes_sent = kBytesSent; | 979 video_sender_info.bytes_sent = kBytesSent; |
981 stats_read.senders.push_back(video_sender_info); | 980 stats_read.senders.push_back(video_sender_info); |
982 | 981 |
983 EXPECT_CALL(session_, video_channel()).WillRepeatedly(Return(&video_channel)); | 982 EXPECT_CALL(session_, video_channel()).WillRepeatedly(Return(&video_channel)); |
984 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); | 983 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); |
985 EXPECT_CALL(*media_channel, GetStats(_)) | 984 EXPECT_CALL(*media_channel, GetStats(_)) |
986 .WillOnce(DoAll(SetArgPointee<0>(stats_read), | 985 .WillOnce(DoAll(SetArgPointee<0>(stats_read), |
(...skipping 15 matching lines...) Expand all Loading... |
1002 // |reports| should contain at least one session report, one track report, | 1001 // |reports| should contain at least one session report, one track report, |
1003 // and one ssrc report. | 1002 // and one ssrc report. |
1004 EXPECT_LE((size_t)3, reports.size()); | 1003 EXPECT_LE((size_t)3, reports.size()); |
1005 track_report = FindNthReportByType( | 1004 track_report = FindNthReportByType( |
1006 reports, StatsReport::kStatsReportTypeTrack, 1); | 1005 reports, StatsReport::kStatsReportTypeTrack, 1); |
1007 EXPECT_TRUE(track_report); | 1006 EXPECT_TRUE(track_report); |
1008 EXPECT_EQ(stats.GetTimeNow(), track_report->timestamp()); | 1007 EXPECT_EQ(stats.GetTimeNow(), track_report->timestamp()); |
1009 | 1008 |
1010 std::string ssrc_id = ExtractSsrcStatsValue( | 1009 std::string ssrc_id = ExtractSsrcStatsValue( |
1011 reports, StatsReport::kStatsValueNameSsrc); | 1010 reports, StatsReport::kStatsValueNameSsrc); |
1012 EXPECT_EQ(rtc::ToString<uint32>(kSsrcOfTrack), ssrc_id); | 1011 EXPECT_EQ(rtc::ToString<uint32_t>(kSsrcOfTrack), ssrc_id); |
1013 | 1012 |
1014 std::string track_id = ExtractSsrcStatsValue( | 1013 std::string track_id = ExtractSsrcStatsValue( |
1015 reports, StatsReport::kStatsValueNameTrackId); | 1014 reports, StatsReport::kStatsValueNameTrackId); |
1016 EXPECT_EQ(kLocalTrackId, track_id); | 1015 EXPECT_EQ(kLocalTrackId, track_id); |
1017 } | 1016 } |
1018 | 1017 |
1019 // This test verifies that an SSRC object has the identifier of a Transport | 1018 // This test verifies that an SSRC object has the identifier of a Transport |
1020 // stats object, and that this transport stats object exists in stats. | 1019 // stats object, and that this transport stats object exists in stats. |
1021 TEST_F(StatsCollectorTest, TransportObjectLinkedFromSsrcObject) { | 1020 TEST_F(StatsCollectorTest, TransportObjectLinkedFromSsrcObject) { |
1022 StatsCollectorForTest stats(&session_); | 1021 StatsCollectorForTest stats(&session_); |
1023 | 1022 |
1024 EXPECT_CALL(session_, GetLocalCertificate(_, _)) | 1023 EXPECT_CALL(session_, GetLocalCertificate(_, _)) |
1025 .WillRepeatedly(Return(false)); | 1024 .WillRepeatedly(Return(false)); |
1026 EXPECT_CALL(session_, GetRemoteSSLCertificate(_, _)) | 1025 EXPECT_CALL(session_, GetRemoteSSLCertificate(_, _)) |
1027 .WillRepeatedly(Return(false)); | 1026 .WillRepeatedly(Return(false)); |
1028 | 1027 |
1029 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 1028 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
1030 // The transport_name known by the video channel. | 1029 // The transport_name known by the video channel. |
1031 const std::string kVcName("vcname"); | 1030 const std::string kVcName("vcname"); |
1032 cricket::VideoChannel video_channel(rtc::Thread::Current(), | 1031 cricket::VideoChannel video_channel(rtc::Thread::Current(), |
1033 media_channel, NULL, kVcName, false); | 1032 media_channel, NULL, kVcName, false); |
1034 AddOutgoingVideoTrackStats(); | 1033 AddOutgoingVideoTrackStats(); |
1035 stats.AddStream(stream_); | 1034 stats.AddStream(stream_); |
1036 | 1035 |
1037 // Constructs an ssrc stats update. | 1036 // Constructs an ssrc stats update. |
1038 cricket::VideoSenderInfo video_sender_info; | 1037 cricket::VideoSenderInfo video_sender_info; |
1039 cricket::VideoMediaInfo stats_read; | 1038 cricket::VideoMediaInfo stats_read; |
1040 const int64 kBytesSent = 12345678901234LL; | 1039 const int64_t kBytesSent = 12345678901234LL; |
1041 | 1040 |
1042 // Construct a stats value to read. | 1041 // Construct a stats value to read. |
1043 video_sender_info.add_ssrc(1234); | 1042 video_sender_info.add_ssrc(1234); |
1044 video_sender_info.bytes_sent = kBytesSent; | 1043 video_sender_info.bytes_sent = kBytesSent; |
1045 stats_read.senders.push_back(video_sender_info); | 1044 stats_read.senders.push_back(video_sender_info); |
1046 | 1045 |
1047 EXPECT_CALL(session_, video_channel()).WillRepeatedly(Return(&video_channel)); | 1046 EXPECT_CALL(session_, video_channel()).WillRepeatedly(Return(&video_channel)); |
1048 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); | 1047 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); |
1049 EXPECT_CALL(*media_channel, GetStats(_)) | 1048 EXPECT_CALL(*media_channel, GetStats(_)) |
1050 .WillRepeatedly(DoAll(SetArgPointee<0>(stats_read), | 1049 .WillRepeatedly(DoAll(SetArgPointee<0>(stats_read), |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1172 | 1171 |
1173 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 1172 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
1174 cricket::VideoChannel video_channel(rtc::Thread::Current(), | 1173 cricket::VideoChannel video_channel(rtc::Thread::Current(), |
1175 media_channel, NULL, kVideoChannelName, false); | 1174 media_channel, NULL, kVideoChannelName, false); |
1176 AddIncomingVideoTrackStats(); | 1175 AddIncomingVideoTrackStats(); |
1177 stats.AddStream(stream_); | 1176 stats.AddStream(stream_); |
1178 | 1177 |
1179 // Constructs an ssrc stats update. | 1178 // Constructs an ssrc stats update. |
1180 cricket::VideoReceiverInfo video_receiver_info; | 1179 cricket::VideoReceiverInfo video_receiver_info; |
1181 cricket::VideoMediaInfo stats_read; | 1180 cricket::VideoMediaInfo stats_read; |
1182 const int64 kNumOfPacketsConcealed = 54321; | 1181 const int64_t kNumOfPacketsConcealed = 54321; |
1183 | 1182 |
1184 // Construct a stats value to read. | 1183 // Construct a stats value to read. |
1185 video_receiver_info.add_ssrc(1234); | 1184 video_receiver_info.add_ssrc(1234); |
1186 video_receiver_info.packets_concealed = kNumOfPacketsConcealed; | 1185 video_receiver_info.packets_concealed = kNumOfPacketsConcealed; |
1187 stats_read.receivers.push_back(video_receiver_info); | 1186 stats_read.receivers.push_back(video_receiver_info); |
1188 | 1187 |
1189 EXPECT_CALL(session_, video_channel()).WillRepeatedly(Return(&video_channel)); | 1188 EXPECT_CALL(session_, video_channel()).WillRepeatedly(Return(&video_channel)); |
1190 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); | 1189 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); |
1191 EXPECT_CALL(*media_channel, GetStats(_)) | 1190 EXPECT_CALL(*media_channel, GetStats(_)) |
1192 .WillOnce(DoAll(SetArgPointee<0>(stats_read), | 1191 .WillOnce(DoAll(SetArgPointee<0>(stats_read), |
1193 Return(true))); | 1192 Return(true))); |
1194 | 1193 |
1195 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); | 1194 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); |
1196 StatsReports reports; | 1195 StatsReports reports; |
1197 stats.GetStats(NULL, &reports); | 1196 stats.GetStats(NULL, &reports); |
1198 // |reports| should contain at least one session report, one track report, | 1197 // |reports| should contain at least one session report, one track report, |
1199 // and one ssrc report. | 1198 // and one ssrc report. |
1200 EXPECT_LE(static_cast<size_t>(3), reports.size()); | 1199 EXPECT_LE(static_cast<size_t>(3), reports.size()); |
1201 const StatsReport* track_report = FindNthReportByType( | 1200 const StatsReport* track_report = FindNthReportByType( |
1202 reports, StatsReport::kStatsReportTypeTrack, 1); | 1201 reports, StatsReport::kStatsReportTypeTrack, 1); |
1203 EXPECT_TRUE(track_report); | 1202 EXPECT_TRUE(track_report); |
1204 EXPECT_EQ(stats.GetTimeNow(), track_report->timestamp()); | 1203 EXPECT_EQ(stats.GetTimeNow(), track_report->timestamp()); |
1205 | 1204 |
1206 std::string ssrc_id = ExtractSsrcStatsValue( | 1205 std::string ssrc_id = ExtractSsrcStatsValue( |
1207 reports, StatsReport::kStatsValueNameSsrc); | 1206 reports, StatsReport::kStatsValueNameSsrc); |
1208 EXPECT_EQ(rtc::ToString<uint32>(kSsrcOfTrack), ssrc_id); | 1207 EXPECT_EQ(rtc::ToString<uint32_t>(kSsrcOfTrack), ssrc_id); |
1209 | 1208 |
1210 std::string track_id = ExtractSsrcStatsValue( | 1209 std::string track_id = ExtractSsrcStatsValue( |
1211 reports, StatsReport::kStatsValueNameTrackId); | 1210 reports, StatsReport::kStatsValueNameTrackId); |
1212 EXPECT_EQ(kRemoteTrackId, track_id); | 1211 EXPECT_EQ(kRemoteTrackId, track_id); |
1213 } | 1212 } |
1214 | 1213 |
1215 // This test verifies the Ice Candidate report should contain the correct | 1214 // This test verifies the Ice Candidate report should contain the correct |
1216 // information from local/remote candidates. | 1215 // information from local/remote candidates. |
1217 TEST_F(StatsCollectorTest, IceCandidateReport) { | 1216 TEST_F(StatsCollectorTest, IceCandidateReport) { |
1218 StatsCollectorForTest stats(&session_); | 1217 StatsCollectorForTest stats(&session_); |
1219 | 1218 |
1220 StatsReports reports; // returned values. | 1219 StatsReports reports; // returned values. |
1221 | 1220 |
1222 const int local_port = 2000; | 1221 const int local_port = 2000; |
1223 const char local_ip[] = "192.168.0.1"; | 1222 const char local_ip[] = "192.168.0.1"; |
1224 const int remote_port = 2001; | 1223 const int remote_port = 2001; |
1225 const char remote_ip[] = "192.168.0.2"; | 1224 const char remote_ip[] = "192.168.0.2"; |
1226 | 1225 |
1227 rtc::SocketAddress local_address(local_ip, local_port); | 1226 rtc::SocketAddress local_address(local_ip, local_port); |
1228 rtc::SocketAddress remote_address(remote_ip, remote_port); | 1227 rtc::SocketAddress remote_address(remote_ip, remote_port); |
1229 rtc::AdapterType network_type = rtc::ADAPTER_TYPE_ETHERNET; | 1228 rtc::AdapterType network_type = rtc::ADAPTER_TYPE_ETHERNET; |
1230 uint32 priority = 1000; | 1229 uint32_t priority = 1000; |
1231 | 1230 |
1232 cricket::Candidate c; | 1231 cricket::Candidate c; |
1233 ASSERT(c.id().length() > 0); | 1232 ASSERT(c.id().length() > 0); |
1234 c.set_type(cricket::LOCAL_PORT_TYPE); | 1233 c.set_type(cricket::LOCAL_PORT_TYPE); |
1235 c.set_protocol(cricket::UDP_PROTOCOL_NAME); | 1234 c.set_protocol(cricket::UDP_PROTOCOL_NAME); |
1236 c.set_address(local_address); | 1235 c.set_address(local_address); |
1237 c.set_priority(priority); | 1236 c.set_priority(priority); |
1238 c.set_network_type(network_type); | 1237 c.set_network_type(network_type); |
1239 std::string report_id = AddCandidateReport(&stats, c, true)->id()->ToString(); | 1238 std::string report_id = AddCandidateReport(&stats, c, true)->id()->ToString(); |
1240 EXPECT_EQ("Cand-" + c.id(), report_id); | 1239 EXPECT_EQ("Cand-" + c.id(), report_id); |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1583 // The report will exist since we don't remove them in RemoveStream(). | 1582 // The report will exist since we don't remove them in RemoveStream(). |
1584 const StatsReport* report = FindNthReportByType( | 1583 const StatsReport* report = FindNthReportByType( |
1585 reports, StatsReport::kStatsReportTypeSsrc, 1); | 1584 reports, StatsReport::kStatsReportTypeSsrc, 1); |
1586 EXPECT_FALSE(report == NULL); | 1585 EXPECT_FALSE(report == NULL); |
1587 EXPECT_EQ(stats.GetTimeNow(), report->timestamp()); | 1586 EXPECT_EQ(stats.GetTimeNow(), report->timestamp()); |
1588 std::string track_id = ExtractSsrcStatsValue( | 1587 std::string track_id = ExtractSsrcStatsValue( |
1589 reports, StatsReport::kStatsValueNameTrackId); | 1588 reports, StatsReport::kStatsValueNameTrackId); |
1590 EXPECT_EQ(kLocalTrackId, track_id); | 1589 EXPECT_EQ(kLocalTrackId, track_id); |
1591 std::string ssrc_id = ExtractSsrcStatsValue( | 1590 std::string ssrc_id = ExtractSsrcStatsValue( |
1592 reports, StatsReport::kStatsValueNameSsrc); | 1591 reports, StatsReport::kStatsValueNameSsrc); |
1593 EXPECT_EQ(rtc::ToString<uint32>(kSsrcOfTrack), ssrc_id); | 1592 EXPECT_EQ(rtc::ToString<uint32_t>(kSsrcOfTrack), ssrc_id); |
1594 | 1593 |
1595 // Verifies the values in the track report, no value will be changed by the | 1594 // Verifies the values in the track report, no value will be changed by the |
1596 // AudioTrackInterface::GetSignalValue() and | 1595 // AudioTrackInterface::GetSignalValue() and |
1597 // AudioProcessorInterface::AudioProcessorStats::GetStats(); | 1596 // AudioProcessorInterface::AudioProcessorStats::GetStats(); |
1598 VerifyVoiceSenderInfoReport(report, voice_sender_info); | 1597 VerifyVoiceSenderInfoReport(report, voice_sender_info); |
1599 } | 1598 } |
1600 | 1599 |
1601 // This test verifies that when ongoing and incoming audio tracks are using | 1600 // This test verifies that when ongoing and incoming audio tracks are using |
1602 // the same ssrc, they populate stats reports correctly. | 1601 // the same ssrc, they populate stats reports correctly. |
1603 TEST_F(StatsCollectorTest, LocalAndRemoteTracksWithSameSsrc) { | 1602 TEST_F(StatsCollectorTest, LocalAndRemoteTracksWithSameSsrc) { |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1732 cricket::VoiceSenderInfo new_voice_sender_info; | 1731 cricket::VoiceSenderInfo new_voice_sender_info; |
1733 InitVoiceSenderInfo(&new_voice_sender_info); | 1732 InitVoiceSenderInfo(&new_voice_sender_info); |
1734 cricket::VoiceMediaInfo new_stats_read; | 1733 cricket::VoiceMediaInfo new_stats_read; |
1735 reports.clear(); | 1734 reports.clear(); |
1736 SetupAndVerifyAudioTrackStats( | 1735 SetupAndVerifyAudioTrackStats( |
1737 new_audio_track.get(), stream_.get(), &stats, &voice_channel, kVcName, | 1736 new_audio_track.get(), stream_.get(), &stats, &voice_channel, kVcName, |
1738 media_channel, &new_voice_sender_info, NULL, &new_stats_read, &reports); | 1737 media_channel, &new_voice_sender_info, NULL, &new_stats_read, &reports); |
1739 } | 1738 } |
1740 | 1739 |
1741 } // namespace webrtc | 1740 } // namespace webrtc |
OLD | NEW |