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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 } // namespace cricket | 66 } // namespace cricket |
67 | 67 |
68 namespace webrtc { | 68 namespace webrtc { |
69 | 69 |
70 // Error return values | 70 // Error return values |
71 const char kNotFound[] = "NOT FOUND"; | 71 const char kNotFound[] = "NOT FOUND"; |
72 | 72 |
73 // Constant names for track identification. | 73 // Constant names for track identification. |
74 const char kLocalTrackId[] = "local_track_id"; | 74 const char kLocalTrackId[] = "local_track_id"; |
75 const char kRemoteTrackId[] = "remote_track_id"; | 75 const char kRemoteTrackId[] = "remote_track_id"; |
76 const uint32 kSsrcOfTrack = 1234; | 76 const uint32_t kSsrcOfTrack = 1234; |
77 | 77 |
78 class MockWebRtcSession : public webrtc::WebRtcSession { | 78 class MockWebRtcSession : public webrtc::WebRtcSession { |
79 public: | 79 public: |
80 explicit MockWebRtcSession(cricket::ChannelManager* channel_manager) | 80 explicit MockWebRtcSession(cricket::ChannelManager* channel_manager) |
81 : WebRtcSession(channel_manager, rtc::Thread::Current(), | 81 : WebRtcSession(channel_manager, rtc::Thread::Current(), |
82 rtc::Thread::Current(), NULL, NULL) { | 82 rtc::Thread::Current(), NULL, NULL) { |
83 } | 83 } |
84 MOCK_METHOD0(voice_channel, cricket::VoiceChannel*()); | 84 MOCK_METHOD0(voice_channel, cricket::VoiceChannel*()); |
85 MOCK_METHOD0(video_channel, cricket::VideoChannel*()); | 85 MOCK_METHOD0(video_channel, cricket::VideoChannel*()); |
86 MOCK_CONST_METHOD0(mediastream_signaling, const MediaStreamSignaling*()); | 86 MOCK_CONST_METHOD0(mediastream_signaling, const MediaStreamSignaling*()); |
87 // Libjingle uses "local" for a outgoing track, and "remote" for a incoming | 87 // Libjingle uses "local" for a outgoing track, and "remote" for a incoming |
88 // track. | 88 // track. |
89 MOCK_METHOD2(GetLocalTrackIdBySsrc, bool(uint32, std::string*)); | 89 MOCK_METHOD2(GetLocalTrackIdBySsrc, bool(uint32_t, std::string*)); |
90 MOCK_METHOD2(GetRemoteTrackIdBySsrc, bool(uint32, std::string*)); | 90 MOCK_METHOD2(GetRemoteTrackIdBySsrc, bool(uint32_t, std::string*)); |
91 MOCK_METHOD1(GetTransportStats, bool(cricket::SessionStats*)); | 91 MOCK_METHOD1(GetTransportStats, bool(cricket::SessionStats*)); |
92 MOCK_METHOD1(GetTransport, cricket::Transport*(const std::string&)); | 92 MOCK_METHOD1(GetTransport, cricket::Transport*(const std::string&)); |
93 }; | 93 }; |
94 | 94 |
95 class MockVideoMediaChannel : public cricket::FakeVideoMediaChannel { | 95 class MockVideoMediaChannel : public cricket::FakeVideoMediaChannel { |
96 public: | 96 public: |
97 MockVideoMediaChannel() : | 97 MockVideoMediaChannel() : |
98 cricket::FakeVideoMediaChannel(NULL, cricket::VideoOptions()) {} | 98 cricket::FakeVideoMediaChannel(NULL, cricket::VideoOptions()) {} |
99 MOCK_METHOD1(GetStats, bool(cricket::VideoMediaInfo*)); | 99 MOCK_METHOD1(GetStats, bool(cricket::VideoMediaInfo*)); |
100 }; | 100 }; |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
284 | 284 |
285 void VerifyVoiceReceiverInfoReport( | 285 void VerifyVoiceReceiverInfoReport( |
286 const StatsReport* report, | 286 const StatsReport* report, |
287 const cricket::VoiceReceiverInfo& info) { | 287 const cricket::VoiceReceiverInfo& info) { |
288 std::string value_in_report; | 288 std::string value_in_report; |
289 EXPECT_TRUE(GetValue( | 289 EXPECT_TRUE(GetValue( |
290 report, StatsReport::kStatsValueNameAudioOutputLevel, &value_in_report)); | 290 report, StatsReport::kStatsValueNameAudioOutputLevel, &value_in_report)); |
291 EXPECT_EQ(rtc::ToString<int>(info.audio_level), value_in_report); | 291 EXPECT_EQ(rtc::ToString<int>(info.audio_level), value_in_report); |
292 EXPECT_TRUE(GetValue( | 292 EXPECT_TRUE(GetValue( |
293 report, StatsReport::kStatsValueNameBytesReceived, &value_in_report)); | 293 report, StatsReport::kStatsValueNameBytesReceived, &value_in_report)); |
294 EXPECT_EQ(rtc::ToString<int64>(info.bytes_rcvd), value_in_report); | 294 EXPECT_EQ(rtc::ToString<int64_t>(info.bytes_rcvd), value_in_report); |
295 EXPECT_TRUE(GetValue( | 295 EXPECT_TRUE(GetValue( |
296 report, StatsReport::kStatsValueNameJitterReceived, &value_in_report)); | 296 report, StatsReport::kStatsValueNameJitterReceived, &value_in_report)); |
297 EXPECT_EQ(rtc::ToString<int>(info.jitter_ms), value_in_report); | 297 EXPECT_EQ(rtc::ToString<int>(info.jitter_ms), value_in_report); |
298 EXPECT_TRUE(GetValue( | 298 EXPECT_TRUE(GetValue( |
299 report, StatsReport::kStatsValueNameJitterBufferMs, &value_in_report)); | 299 report, StatsReport::kStatsValueNameJitterBufferMs, &value_in_report)); |
300 EXPECT_EQ(rtc::ToString<int>(info.jitter_buffer_ms), value_in_report); | 300 EXPECT_EQ(rtc::ToString<int>(info.jitter_buffer_ms), value_in_report); |
301 EXPECT_TRUE(GetValue( | 301 EXPECT_TRUE(GetValue( |
302 report, StatsReport::kStatsValueNamePreferredJitterBufferMs, | 302 report, StatsReport::kStatsValueNamePreferredJitterBufferMs, |
303 &value_in_report)); | 303 &value_in_report)); |
304 EXPECT_EQ(rtc::ToString<int>(info.jitter_buffer_preferred_ms), | 304 EXPECT_EQ(rtc::ToString<int>(info.jitter_buffer_preferred_ms), |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
350 | 350 |
351 | 351 |
352 void VerifyVoiceSenderInfoReport(const StatsReport* report, | 352 void VerifyVoiceSenderInfoReport(const StatsReport* report, |
353 const cricket::VoiceSenderInfo& sinfo) { | 353 const cricket::VoiceSenderInfo& sinfo) { |
354 std::string value_in_report; | 354 std::string value_in_report; |
355 EXPECT_TRUE(GetValue( | 355 EXPECT_TRUE(GetValue( |
356 report, StatsReport::kStatsValueNameCodecName, &value_in_report)); | 356 report, StatsReport::kStatsValueNameCodecName, &value_in_report)); |
357 EXPECT_EQ(sinfo.codec_name, value_in_report); | 357 EXPECT_EQ(sinfo.codec_name, value_in_report); |
358 EXPECT_TRUE(GetValue( | 358 EXPECT_TRUE(GetValue( |
359 report, StatsReport::kStatsValueNameBytesSent, &value_in_report)); | 359 report, StatsReport::kStatsValueNameBytesSent, &value_in_report)); |
360 EXPECT_EQ(rtc::ToString<int64>(sinfo.bytes_sent), value_in_report); | 360 EXPECT_EQ(rtc::ToString<int64_t>(sinfo.bytes_sent), value_in_report); |
361 EXPECT_TRUE(GetValue( | 361 EXPECT_TRUE(GetValue( |
362 report, StatsReport::kStatsValueNamePacketsSent, &value_in_report)); | 362 report, StatsReport::kStatsValueNamePacketsSent, &value_in_report)); |
363 EXPECT_EQ(rtc::ToString<int>(sinfo.packets_sent), value_in_report); | 363 EXPECT_EQ(rtc::ToString<int>(sinfo.packets_sent), value_in_report); |
364 EXPECT_TRUE(GetValue( | 364 EXPECT_TRUE(GetValue( |
365 report, StatsReport::kStatsValueNamePacketsLost, &value_in_report)); | 365 report, StatsReport::kStatsValueNamePacketsLost, &value_in_report)); |
366 EXPECT_EQ(rtc::ToString<int>(sinfo.packets_lost), value_in_report); | 366 EXPECT_EQ(rtc::ToString<int>(sinfo.packets_lost), value_in_report); |
367 EXPECT_TRUE(GetValue( | 367 EXPECT_TRUE(GetValue( |
368 report, StatsReport::kStatsValueNameRtt, &value_in_report)); | 368 report, StatsReport::kStatsValueNameRtt, &value_in_report)); |
369 EXPECT_EQ(rtc::ToString<int>(sinfo.rtt_ms), value_in_report); | 369 EXPECT_EQ(rtc::ToString<int>(sinfo.rtt_ms), value_in_report); |
370 EXPECT_TRUE(GetValue( | 370 EXPECT_TRUE(GetValue( |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
595 // Verify the existence of the track report. | 595 // Verify the existence of the track report. |
596 const StatsReport* report = FindNthReportByType( | 596 const StatsReport* report = FindNthReportByType( |
597 *reports, StatsReport::kStatsReportTypeSsrc, 1); | 597 *reports, StatsReport::kStatsReportTypeSsrc, 1); |
598 EXPECT_FALSE(report == NULL); | 598 EXPECT_FALSE(report == NULL); |
599 EXPECT_EQ(stats->GetTimeNow(), report->timestamp()); | 599 EXPECT_EQ(stats->GetTimeNow(), report->timestamp()); |
600 std::string track_id = ExtractSsrcStatsValue( | 600 std::string track_id = ExtractSsrcStatsValue( |
601 *reports, StatsReport::kStatsValueNameTrackId); | 601 *reports, StatsReport::kStatsValueNameTrackId); |
602 EXPECT_EQ(audio_track->id(), track_id); | 602 EXPECT_EQ(audio_track->id(), track_id); |
603 std::string ssrc_id = ExtractSsrcStatsValue( | 603 std::string ssrc_id = ExtractSsrcStatsValue( |
604 *reports, StatsReport::kStatsValueNameSsrc); | 604 *reports, StatsReport::kStatsValueNameSsrc); |
605 EXPECT_EQ(rtc::ToString<uint32>(kSsrcOfTrack), ssrc_id); | 605 EXPECT_EQ(rtc::ToString<uint32_t>(kSsrcOfTrack), ssrc_id); |
606 | 606 |
607 // Verifies the values in the track report. | 607 // Verifies the values in the track report. |
608 if (voice_sender_info) { | 608 if (voice_sender_info) { |
609 UpdateVoiceSenderInfoFromAudioTrack(audio_track, voice_sender_info); | 609 UpdateVoiceSenderInfoFromAudioTrack(audio_track, voice_sender_info); |
610 VerifyVoiceSenderInfoReport(report, *voice_sender_info); | 610 VerifyVoiceSenderInfoReport(report, *voice_sender_info); |
611 } | 611 } |
612 if (voice_receiver_info) { | 612 if (voice_receiver_info) { |
613 VerifyVoiceReceiverInfoReport(report, *voice_receiver_info); | 613 VerifyVoiceReceiverInfoReport(report, *voice_receiver_info); |
614 } | 614 } |
615 | 615 |
616 // Verify we get the same result by passing a track to GetStats(). | 616 // Verify we get the same result by passing a track to GetStats(). |
617 StatsReports track_reports; // returned values. | 617 StatsReports track_reports; // returned values. |
618 stats->GetStats(audio_track, &track_reports); | 618 stats->GetStats(audio_track, &track_reports); |
619 const StatsReport* track_report = FindNthReportByType( | 619 const StatsReport* track_report = FindNthReportByType( |
620 track_reports, StatsReport::kStatsReportTypeSsrc, 1); | 620 track_reports, StatsReport::kStatsReportTypeSsrc, 1); |
621 EXPECT_TRUE(track_report); | 621 EXPECT_TRUE(track_report); |
622 EXPECT_EQ(stats->GetTimeNow(), track_report->timestamp()); | 622 EXPECT_EQ(stats->GetTimeNow(), track_report->timestamp()); |
623 track_id = ExtractSsrcStatsValue(track_reports, | 623 track_id = ExtractSsrcStatsValue(track_reports, |
624 StatsReport::kStatsValueNameTrackId); | 624 StatsReport::kStatsValueNameTrackId); |
625 EXPECT_EQ(audio_track->id(), track_id); | 625 EXPECT_EQ(audio_track->id(), track_id); |
626 ssrc_id = ExtractSsrcStatsValue(track_reports, | 626 ssrc_id = ExtractSsrcStatsValue(track_reports, |
627 StatsReport::kStatsValueNameSsrc); | 627 StatsReport::kStatsValueNameSsrc); |
628 EXPECT_EQ(rtc::ToString<uint32>(kSsrcOfTrack), ssrc_id); | 628 EXPECT_EQ(rtc::ToString<uint32_t>(kSsrcOfTrack), ssrc_id); |
629 if (voice_sender_info) | 629 if (voice_sender_info) |
630 VerifyVoiceSenderInfoReport(track_report, *voice_sender_info); | 630 VerifyVoiceSenderInfoReport(track_report, *voice_sender_info); |
631 if (voice_receiver_info) | 631 if (voice_receiver_info) |
632 VerifyVoiceReceiverInfoReport(track_report, *voice_receiver_info); | 632 VerifyVoiceReceiverInfoReport(track_report, *voice_receiver_info); |
633 } | 633 } |
634 | 634 |
635 void TestCertificateReports(const rtc::FakeSSLCertificate& local_cert, | 635 void TestCertificateReports(const rtc::FakeSSLCertificate& local_cert, |
636 const std::vector<std::string>& local_ders, | 636 const std::vector<std::string>& local_ders, |
637 const rtc::FakeSSLCertificate& remote_cert, | 637 const rtc::FakeSSLCertificate& remote_cert, |
638 const std::vector<std::string>& remote_ders) { | 638 const std::vector<std::string>& remote_ders) { |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
767 | 767 |
768 StatsReport::Id reportId = StatsReport::NewTypedIntId( | 768 StatsReport::Id reportId = StatsReport::NewTypedIntId( |
769 StatsReport::kStatsReportTypeDataChannel, id); | 769 StatsReport::kStatsReportTypeDataChannel, id); |
770 | 770 |
771 EXPECT_TRUE(reportId->Equals(report->id())); | 771 EXPECT_TRUE(reportId->Equals(report->id())); |
772 | 772 |
773 EXPECT_EQ(stats.GetTimeNow(), report->timestamp()); | 773 EXPECT_EQ(stats.GetTimeNow(), report->timestamp()); |
774 EXPECT_EQ(label, ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, | 774 EXPECT_EQ(label, ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, |
775 reports, | 775 reports, |
776 StatsReport::kStatsValueNameLabel)); | 776 StatsReport::kStatsValueNameLabel)); |
777 EXPECT_EQ(rtc::ToString<int64>(id), | 777 EXPECT_EQ(rtc::ToString<int64_t>(id), |
778 ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, | 778 ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, reports, |
779 reports, | |
780 StatsReport::kStatsValueNameDataChannelId)); | 779 StatsReport::kStatsValueNameDataChannelId)); |
781 EXPECT_EQ(state, ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, | 780 EXPECT_EQ(state, ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, |
782 reports, | 781 reports, |
783 StatsReport::kStatsValueNameState)); | 782 StatsReport::kStatsValueNameState)); |
784 EXPECT_EQ("", ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, | 783 EXPECT_EQ("", ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, |
785 reports, | 784 reports, |
786 StatsReport::kStatsValueNameProtocol)); | 785 StatsReport::kStatsValueNameProtocol)); |
787 } | 786 } |
788 | 787 |
789 // This test verifies that 64-bit counters are passed successfully. | 788 // This test verifies that 64-bit counters are passed successfully. |
790 TEST_F(StatsCollectorTest, BytesCounterHandles64Bits) { | 789 TEST_F(StatsCollectorTest, BytesCounterHandles64Bits) { |
791 StatsCollectorForTest stats(&session_); | 790 StatsCollectorForTest stats(&session_); |
792 | 791 |
793 const char kVideoChannelName[] = "video"; | 792 const char kVideoChannelName[] = "video"; |
794 | 793 |
795 InitSessionStats(kVideoChannelName); | 794 InitSessionStats(kVideoChannelName); |
796 EXPECT_CALL(session_, GetTransportStats(_)) | 795 EXPECT_CALL(session_, GetTransportStats(_)) |
797 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), | 796 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), |
798 Return(true))); | 797 Return(true))); |
799 EXPECT_CALL(session_, GetTransport(_)) | 798 EXPECT_CALL(session_, GetTransport(_)) |
800 .WillRepeatedly(Return(static_cast<cricket::Transport*>(NULL))); | 799 .WillRepeatedly(Return(static_cast<cricket::Transport*>(NULL))); |
801 | 800 |
802 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 801 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
803 cricket::VideoChannel video_channel(rtc::Thread::Current(), | 802 cricket::VideoChannel video_channel(rtc::Thread::Current(), |
804 media_channel, NULL, kVideoChannelName, false); | 803 media_channel, NULL, kVideoChannelName, false); |
805 StatsReports reports; // returned values. | 804 StatsReports reports; // returned values. |
806 cricket::VideoSenderInfo video_sender_info; | 805 cricket::VideoSenderInfo video_sender_info; |
807 cricket::VideoMediaInfo stats_read; | 806 cricket::VideoMediaInfo stats_read; |
808 // The number of bytes must be larger than 0xFFFFFFFF for this test. | 807 // The number of bytes must be larger than 0xFFFFFFFF for this test. |
809 const int64 kBytesSent = 12345678901234LL; | 808 const int64_t kBytesSent = 12345678901234LL; |
810 const std::string kBytesSentString("12345678901234"); | 809 const std::string kBytesSentString("12345678901234"); |
811 | 810 |
812 AddOutgoingVideoTrackStats(); | 811 AddOutgoingVideoTrackStats(); |
813 stats.AddStream(stream_); | 812 stats.AddStream(stream_); |
814 | 813 |
815 // Construct a stats value to read. | 814 // Construct a stats value to read. |
816 video_sender_info.add_ssrc(1234); | 815 video_sender_info.add_ssrc(1234); |
817 video_sender_info.bytes_sent = kBytesSent; | 816 video_sender_info.bytes_sent = kBytesSent; |
818 stats_read.senders.push_back(video_sender_info); | 817 stats_read.senders.push_back(video_sender_info); |
819 | 818 |
(...skipping 24 matching lines...) Expand all Loading... |
844 | 843 |
845 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 844 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
846 cricket::VideoChannel video_channel(rtc::Thread::Current(), | 845 cricket::VideoChannel video_channel(rtc::Thread::Current(), |
847 media_channel, NULL, kVideoChannelName, false); | 846 media_channel, NULL, kVideoChannelName, false); |
848 | 847 |
849 StatsReports reports; // returned values. | 848 StatsReports reports; // returned values. |
850 cricket::VideoSenderInfo video_sender_info; | 849 cricket::VideoSenderInfo video_sender_info; |
851 cricket::VideoMediaInfo stats_read; | 850 cricket::VideoMediaInfo stats_read; |
852 // Set up an SSRC just to test that we get both kinds of stats back: SSRC and | 851 // Set up an SSRC just to test that we get both kinds of stats back: SSRC and |
853 // BWE. | 852 // BWE. |
854 const int64 kBytesSent = 12345678901234LL; | 853 const int64_t kBytesSent = 12345678901234LL; |
855 const std::string kBytesSentString("12345678901234"); | 854 const std::string kBytesSentString("12345678901234"); |
856 | 855 |
857 AddOutgoingVideoTrackStats(); | 856 AddOutgoingVideoTrackStats(); |
858 stats.AddStream(stream_); | 857 stats.AddStream(stream_); |
859 | 858 |
860 // Construct a stats value to read. | 859 // Construct a stats value to read. |
861 video_sender_info.add_ssrc(1234); | 860 video_sender_info.add_ssrc(1234); |
862 video_sender_info.bytes_sent = kBytesSent; | 861 video_sender_info.bytes_sent = kBytesSent; |
863 stats_read.senders.push_back(video_sender_info); | 862 stats_read.senders.push_back(video_sender_info); |
864 cricket::BandwidthEstimationInfo bwe; | 863 cricket::BandwidthEstimationInfo bwe; |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
956 | 955 |
957 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 956 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
958 cricket::VideoChannel video_channel(rtc::Thread::Current(), | 957 cricket::VideoChannel video_channel(rtc::Thread::Current(), |
959 media_channel, NULL, kVideoChannelName, false); | 958 media_channel, NULL, kVideoChannelName, false); |
960 AddOutgoingVideoTrackStats(); | 959 AddOutgoingVideoTrackStats(); |
961 stats.AddStream(stream_); | 960 stats.AddStream(stream_); |
962 | 961 |
963 // Constructs an ssrc stats update. | 962 // Constructs an ssrc stats update. |
964 cricket::VideoSenderInfo video_sender_info; | 963 cricket::VideoSenderInfo video_sender_info; |
965 cricket::VideoMediaInfo stats_read; | 964 cricket::VideoMediaInfo stats_read; |
966 const int64 kBytesSent = 12345678901234LL; | 965 const int64_t kBytesSent = 12345678901234LL; |
967 | 966 |
968 // Construct a stats value to read. | 967 // Construct a stats value to read. |
969 video_sender_info.add_ssrc(1234); | 968 video_sender_info.add_ssrc(1234); |
970 video_sender_info.bytes_sent = kBytesSent; | 969 video_sender_info.bytes_sent = kBytesSent; |
971 stats_read.senders.push_back(video_sender_info); | 970 stats_read.senders.push_back(video_sender_info); |
972 | 971 |
973 EXPECT_CALL(session_, video_channel()).WillRepeatedly(Return(&video_channel)); | 972 EXPECT_CALL(session_, video_channel()).WillRepeatedly(Return(&video_channel)); |
974 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); | 973 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); |
975 EXPECT_CALL(*media_channel, GetStats(_)) | 974 EXPECT_CALL(*media_channel, GetStats(_)) |
976 .WillOnce(DoAll(SetArgPointee<0>(stats_read), | 975 .WillOnce(DoAll(SetArgPointee<0>(stats_read), |
(...skipping 15 matching lines...) Expand all Loading... |
992 // |reports| should contain at least one session report, one track report, | 991 // |reports| should contain at least one session report, one track report, |
993 // and one ssrc report. | 992 // and one ssrc report. |
994 EXPECT_LE((size_t)3, reports.size()); | 993 EXPECT_LE((size_t)3, reports.size()); |
995 track_report = FindNthReportByType( | 994 track_report = FindNthReportByType( |
996 reports, StatsReport::kStatsReportTypeTrack, 1); | 995 reports, StatsReport::kStatsReportTypeTrack, 1); |
997 EXPECT_TRUE(track_report); | 996 EXPECT_TRUE(track_report); |
998 EXPECT_EQ(stats.GetTimeNow(), track_report->timestamp()); | 997 EXPECT_EQ(stats.GetTimeNow(), track_report->timestamp()); |
999 | 998 |
1000 std::string ssrc_id = ExtractSsrcStatsValue( | 999 std::string ssrc_id = ExtractSsrcStatsValue( |
1001 reports, StatsReport::kStatsValueNameSsrc); | 1000 reports, StatsReport::kStatsValueNameSsrc); |
1002 EXPECT_EQ(rtc::ToString<uint32>(kSsrcOfTrack), ssrc_id); | 1001 EXPECT_EQ(rtc::ToString<uint32_t>(kSsrcOfTrack), ssrc_id); |
1003 | 1002 |
1004 std::string track_id = ExtractSsrcStatsValue( | 1003 std::string track_id = ExtractSsrcStatsValue( |
1005 reports, StatsReport::kStatsValueNameTrackId); | 1004 reports, StatsReport::kStatsValueNameTrackId); |
1006 EXPECT_EQ(kLocalTrackId, track_id); | 1005 EXPECT_EQ(kLocalTrackId, track_id); |
1007 } | 1006 } |
1008 | 1007 |
1009 // This test verifies that an SSRC object has the identifier of a Transport | 1008 // This test verifies that an SSRC object has the identifier of a Transport |
1010 // stats object, and that this transport stats object exists in stats. | 1009 // stats object, and that this transport stats object exists in stats. |
1011 TEST_F(StatsCollectorTest, TransportObjectLinkedFromSsrcObject) { | 1010 TEST_F(StatsCollectorTest, TransportObjectLinkedFromSsrcObject) { |
1012 StatsCollectorForTest stats(&session_); | 1011 StatsCollectorForTest stats(&session_); |
1013 | 1012 |
1014 // Ignore unused callback (logspam). | 1013 // Ignore unused callback (logspam). |
1015 EXPECT_CALL(session_, GetTransport(_)) | 1014 EXPECT_CALL(session_, GetTransport(_)) |
1016 .WillRepeatedly(Return(static_cast<cricket::Transport*>(NULL))); | 1015 .WillRepeatedly(Return(static_cast<cricket::Transport*>(NULL))); |
1017 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 1016 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
1018 // The content_name known by the video channel. | 1017 // The content_name known by the video channel. |
1019 const std::string kVcName("vcname"); | 1018 const std::string kVcName("vcname"); |
1020 cricket::VideoChannel video_channel(rtc::Thread::Current(), | 1019 cricket::VideoChannel video_channel(rtc::Thread::Current(), |
1021 media_channel, NULL, kVcName, false); | 1020 media_channel, NULL, kVcName, false); |
1022 AddOutgoingVideoTrackStats(); | 1021 AddOutgoingVideoTrackStats(); |
1023 stats.AddStream(stream_); | 1022 stats.AddStream(stream_); |
1024 | 1023 |
1025 // Constructs an ssrc stats update. | 1024 // Constructs an ssrc stats update. |
1026 cricket::VideoSenderInfo video_sender_info; | 1025 cricket::VideoSenderInfo video_sender_info; |
1027 cricket::VideoMediaInfo stats_read; | 1026 cricket::VideoMediaInfo stats_read; |
1028 const int64 kBytesSent = 12345678901234LL; | 1027 const int64_t kBytesSent = 12345678901234LL; |
1029 | 1028 |
1030 // Construct a stats value to read. | 1029 // Construct a stats value to read. |
1031 video_sender_info.add_ssrc(1234); | 1030 video_sender_info.add_ssrc(1234); |
1032 video_sender_info.bytes_sent = kBytesSent; | 1031 video_sender_info.bytes_sent = kBytesSent; |
1033 stats_read.senders.push_back(video_sender_info); | 1032 stats_read.senders.push_back(video_sender_info); |
1034 | 1033 |
1035 EXPECT_CALL(session_, video_channel()).WillRepeatedly(Return(&video_channel)); | 1034 EXPECT_CALL(session_, video_channel()).WillRepeatedly(Return(&video_channel)); |
1036 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); | 1035 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); |
1037 EXPECT_CALL(*media_channel, GetStats(_)) | 1036 EXPECT_CALL(*media_channel, GetStats(_)) |
1038 .WillRepeatedly(DoAll(SetArgPointee<0>(stats_read), | 1037 .WillRepeatedly(DoAll(SetArgPointee<0>(stats_read), |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1155 | 1154 |
1156 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); | 1155 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); |
1157 cricket::VideoChannel video_channel(rtc::Thread::Current(), | 1156 cricket::VideoChannel video_channel(rtc::Thread::Current(), |
1158 media_channel, NULL, kVideoChannelName, false); | 1157 media_channel, NULL, kVideoChannelName, false); |
1159 AddIncomingVideoTrackStats(); | 1158 AddIncomingVideoTrackStats(); |
1160 stats.AddStream(stream_); | 1159 stats.AddStream(stream_); |
1161 | 1160 |
1162 // Constructs an ssrc stats update. | 1161 // Constructs an ssrc stats update. |
1163 cricket::VideoReceiverInfo video_receiver_info; | 1162 cricket::VideoReceiverInfo video_receiver_info; |
1164 cricket::VideoMediaInfo stats_read; | 1163 cricket::VideoMediaInfo stats_read; |
1165 const int64 kNumOfPacketsConcealed = 54321; | 1164 const int64_t kNumOfPacketsConcealed = 54321; |
1166 | 1165 |
1167 // Construct a stats value to read. | 1166 // Construct a stats value to read. |
1168 video_receiver_info.add_ssrc(1234); | 1167 video_receiver_info.add_ssrc(1234); |
1169 video_receiver_info.packets_concealed = kNumOfPacketsConcealed; | 1168 video_receiver_info.packets_concealed = kNumOfPacketsConcealed; |
1170 stats_read.receivers.push_back(video_receiver_info); | 1169 stats_read.receivers.push_back(video_receiver_info); |
1171 | 1170 |
1172 EXPECT_CALL(session_, video_channel()).WillRepeatedly(Return(&video_channel)); | 1171 EXPECT_CALL(session_, video_channel()).WillRepeatedly(Return(&video_channel)); |
1173 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); | 1172 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); |
1174 EXPECT_CALL(*media_channel, GetStats(_)) | 1173 EXPECT_CALL(*media_channel, GetStats(_)) |
1175 .WillOnce(DoAll(SetArgPointee<0>(stats_read), | 1174 .WillOnce(DoAll(SetArgPointee<0>(stats_read), |
1176 Return(true))); | 1175 Return(true))); |
1177 | 1176 |
1178 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); | 1177 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); |
1179 StatsReports reports; | 1178 StatsReports reports; |
1180 stats.GetStats(NULL, &reports); | 1179 stats.GetStats(NULL, &reports); |
1181 // |reports| should contain at least one session report, one track report, | 1180 // |reports| should contain at least one session report, one track report, |
1182 // and one ssrc report. | 1181 // and one ssrc report. |
1183 EXPECT_LE(static_cast<size_t>(3), reports.size()); | 1182 EXPECT_LE(static_cast<size_t>(3), reports.size()); |
1184 const StatsReport* track_report = FindNthReportByType( | 1183 const StatsReport* track_report = FindNthReportByType( |
1185 reports, StatsReport::kStatsReportTypeTrack, 1); | 1184 reports, StatsReport::kStatsReportTypeTrack, 1); |
1186 EXPECT_TRUE(track_report); | 1185 EXPECT_TRUE(track_report); |
1187 EXPECT_EQ(stats.GetTimeNow(), track_report->timestamp()); | 1186 EXPECT_EQ(stats.GetTimeNow(), track_report->timestamp()); |
1188 | 1187 |
1189 std::string ssrc_id = ExtractSsrcStatsValue( | 1188 std::string ssrc_id = ExtractSsrcStatsValue( |
1190 reports, StatsReport::kStatsValueNameSsrc); | 1189 reports, StatsReport::kStatsValueNameSsrc); |
1191 EXPECT_EQ(rtc::ToString<uint32>(kSsrcOfTrack), ssrc_id); | 1190 EXPECT_EQ(rtc::ToString<uint32_t>(kSsrcOfTrack), ssrc_id); |
1192 | 1191 |
1193 std::string track_id = ExtractSsrcStatsValue( | 1192 std::string track_id = ExtractSsrcStatsValue( |
1194 reports, StatsReport::kStatsValueNameTrackId); | 1193 reports, StatsReport::kStatsValueNameTrackId); |
1195 EXPECT_EQ(kRemoteTrackId, track_id); | 1194 EXPECT_EQ(kRemoteTrackId, track_id); |
1196 } | 1195 } |
1197 | 1196 |
1198 // This test verifies the Ice Candidate report should contain the correct | 1197 // This test verifies the Ice Candidate report should contain the correct |
1199 // information from local/remote candidates. | 1198 // information from local/remote candidates. |
1200 TEST_F(StatsCollectorTest, IceCandidateReport) { | 1199 TEST_F(StatsCollectorTest, IceCandidateReport) { |
1201 StatsCollectorForTest stats(&session_); | 1200 StatsCollectorForTest stats(&session_); |
1202 | 1201 |
1203 StatsReports reports; // returned values. | 1202 StatsReports reports; // returned values. |
1204 | 1203 |
1205 const int local_port = 2000; | 1204 const int local_port = 2000; |
1206 const char local_ip[] = "192.168.0.1"; | 1205 const char local_ip[] = "192.168.0.1"; |
1207 const int remote_port = 2001; | 1206 const int remote_port = 2001; |
1208 const char remote_ip[] = "192.168.0.2"; | 1207 const char remote_ip[] = "192.168.0.2"; |
1209 | 1208 |
1210 rtc::SocketAddress local_address(local_ip, local_port); | 1209 rtc::SocketAddress local_address(local_ip, local_port); |
1211 rtc::SocketAddress remote_address(remote_ip, remote_port); | 1210 rtc::SocketAddress remote_address(remote_ip, remote_port); |
1212 rtc::AdapterType network_type = rtc::ADAPTER_TYPE_ETHERNET; | 1211 rtc::AdapterType network_type = rtc::ADAPTER_TYPE_ETHERNET; |
1213 uint32 priority = 1000; | 1212 uint32_t priority = 1000; |
1214 | 1213 |
1215 cricket::Candidate c; | 1214 cricket::Candidate c; |
1216 ASSERT(c.id().length() > 0); | 1215 ASSERT(c.id().length() > 0); |
1217 c.set_type(cricket::LOCAL_PORT_TYPE); | 1216 c.set_type(cricket::LOCAL_PORT_TYPE); |
1218 c.set_protocol(cricket::UDP_PROTOCOL_NAME); | 1217 c.set_protocol(cricket::UDP_PROTOCOL_NAME); |
1219 c.set_address(local_address); | 1218 c.set_address(local_address); |
1220 c.set_priority(priority); | 1219 c.set_priority(priority); |
1221 c.set_network_type(network_type); | 1220 c.set_network_type(network_type); |
1222 std::string report_id = AddCandidateReport(&stats, c, true)->id()->ToString(); | 1221 std::string report_id = AddCandidateReport(&stats, c, true)->id()->ToString(); |
1223 EXPECT_EQ("Cand-" + c.id(), report_id); | 1222 EXPECT_EQ("Cand-" + c.id(), report_id); |
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1558 // The report will exist since we don't remove them in RemoveStream(). | 1557 // The report will exist since we don't remove them in RemoveStream(). |
1559 const StatsReport* report = FindNthReportByType( | 1558 const StatsReport* report = FindNthReportByType( |
1560 reports, StatsReport::kStatsReportTypeSsrc, 1); | 1559 reports, StatsReport::kStatsReportTypeSsrc, 1); |
1561 EXPECT_FALSE(report == NULL); | 1560 EXPECT_FALSE(report == NULL); |
1562 EXPECT_EQ(stats.GetTimeNow(), report->timestamp()); | 1561 EXPECT_EQ(stats.GetTimeNow(), report->timestamp()); |
1563 std::string track_id = ExtractSsrcStatsValue( | 1562 std::string track_id = ExtractSsrcStatsValue( |
1564 reports, StatsReport::kStatsValueNameTrackId); | 1563 reports, StatsReport::kStatsValueNameTrackId); |
1565 EXPECT_EQ(kLocalTrackId, track_id); | 1564 EXPECT_EQ(kLocalTrackId, track_id); |
1566 std::string ssrc_id = ExtractSsrcStatsValue( | 1565 std::string ssrc_id = ExtractSsrcStatsValue( |
1567 reports, StatsReport::kStatsValueNameSsrc); | 1566 reports, StatsReport::kStatsValueNameSsrc); |
1568 EXPECT_EQ(rtc::ToString<uint32>(kSsrcOfTrack), ssrc_id); | 1567 EXPECT_EQ(rtc::ToString<uint32_t>(kSsrcOfTrack), ssrc_id); |
1569 | 1568 |
1570 // Verifies the values in the track report, no value will be changed by the | 1569 // Verifies the values in the track report, no value will be changed by the |
1571 // AudioTrackInterface::GetSignalValue() and | 1570 // AudioTrackInterface::GetSignalValue() and |
1572 // AudioProcessorInterface::AudioProcessorStats::GetStats(); | 1571 // AudioProcessorInterface::AudioProcessorStats::GetStats(); |
1573 VerifyVoiceSenderInfoReport(report, voice_sender_info); | 1572 VerifyVoiceSenderInfoReport(report, voice_sender_info); |
1574 } | 1573 } |
1575 | 1574 |
1576 // This test verifies that when ongoing and incoming audio tracks are using | 1575 // This test verifies that when ongoing and incoming audio tracks are using |
1577 // the same ssrc, they populate stats reports correctly. | 1576 // the same ssrc, they populate stats reports correctly. |
1578 TEST_F(StatsCollectorTest, LocalAndRemoteTracksWithSameSsrc) { | 1577 TEST_F(StatsCollectorTest, LocalAndRemoteTracksWithSameSsrc) { |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1703 cricket::VoiceSenderInfo new_voice_sender_info; | 1702 cricket::VoiceSenderInfo new_voice_sender_info; |
1704 InitVoiceSenderInfo(&new_voice_sender_info); | 1703 InitVoiceSenderInfo(&new_voice_sender_info); |
1705 cricket::VoiceMediaInfo new_stats_read; | 1704 cricket::VoiceMediaInfo new_stats_read; |
1706 reports.clear(); | 1705 reports.clear(); |
1707 SetupAndVerifyAudioTrackStats( | 1706 SetupAndVerifyAudioTrackStats( |
1708 new_audio_track.get(), stream_.get(), &stats, &voice_channel, kVcName, | 1707 new_audio_track.get(), stream_.get(), &stats, &voice_channel, kVcName, |
1709 media_channel, &new_voice_sender_info, NULL, &new_stats_read, &reports); | 1708 media_channel, &new_voice_sender_info, NULL, &new_stats_read, &reports); |
1710 } | 1709 } |
1711 | 1710 |
1712 } // namespace webrtc | 1711 } // namespace webrtc |
OLD | NEW |