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

Side by Side Diff: talk/app/webrtc/statscollector_unittest.cc

Issue 1246913005: TransportController refactoring (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: More renaming, formatting and other polish Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * 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,
11 * this list of conditions and the following disclaimer in the documentation 11 * this list of conditions and the following disclaimer in the documentation
12 * and/or other materials provided with the distribution. 12 * and/or other materials provided with the distribution.
13 * 3. The name of the author may not be used to endorse or promote products 13 * 3. The name of the author may not be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
19 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 19 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28 #include <stdio.h> 28 #include <stdio.h>
29 29
30 #include <algorithm>
31
30 #include "talk/app/webrtc/statscollector.h" 32 #include "talk/app/webrtc/statscollector.h"
31 33
32 #include "talk/app/webrtc/mediastream.h" 34 #include "talk/app/webrtc/mediastream.h"
33 #include "talk/app/webrtc/mediastreaminterface.h" 35 #include "talk/app/webrtc/mediastreaminterface.h"
34 #include "talk/app/webrtc/mediastreamsignaling.h" 36 #include "talk/app/webrtc/mediastreamsignaling.h"
35 #include "talk/app/webrtc/mediastreamtrack.h" 37 #include "talk/app/webrtc/mediastreamtrack.h"
36 #include "talk/app/webrtc/test/fakedatachannelprovider.h" 38 #include "talk/app/webrtc/test/fakedatachannelprovider.h"
37 #include "talk/app/webrtc/test/fakemediastreamsignaling.h" 39 #include "talk/app/webrtc/test/fakemediastreamsignaling.h"
38 #include "talk/app/webrtc/videotrack.h" 40 #include "talk/app/webrtc/videotrack.h"
39 #include "talk/media/base/fakemediaengine.h" 41 #include "talk/media/base/fakemediaengine.h"
40 #include "talk/media/devices/fakedevicemanager.h" 42 #include "talk/media/devices/fakedevicemanager.h"
41 #include "talk/session/media/channelmanager.h" 43 #include "talk/session/media/channelmanager.h"
42 #include "testing/gmock/include/gmock/gmock.h" 44 #include "testing/gmock/include/gmock/gmock.h"
43 #include "testing/gtest/include/gtest/gtest.h" 45 #include "testing/gtest/include/gtest/gtest.h"
44 #include "webrtc/base/base64.h" 46 #include "webrtc/base/base64.h"
45 #include "webrtc/base/fakesslidentity.h" 47 #include "webrtc/base/fakesslidentity.h"
46 #include "webrtc/base/gunit.h" 48 #include "webrtc/base/gunit.h"
47 #include "webrtc/base/network.h" 49 #include "webrtc/base/network.h"
48 #include "webrtc/p2p/base/fakesession.h" 50 #include "webrtc/p2p/base/faketransportcontroller.h"
49 51
50 using rtc::scoped_ptr; 52 using rtc::scoped_ptr;
51 using testing::_; 53 using testing::_;
52 using testing::DoAll; 54 using testing::DoAll;
53 using testing::Field; 55 using testing::Field;
54 using testing::Return; 56 using testing::Return;
55 using testing::ReturnNull; 57 using testing::ReturnNull;
56 using testing::SetArgPointee; 58 using testing::SetArgPointee;
57 using webrtc::PeerConnectionInterface; 59 using webrtc::PeerConnectionInterface;
58 using webrtc::StatsReport; 60 using webrtc::StatsReport;
(...skipping 23 matching lines...) Expand all
82 rtc::Thread::Current(), NULL, NULL) { 84 rtc::Thread::Current(), NULL, NULL) {
83 } 85 }
84 MOCK_METHOD0(voice_channel, cricket::VoiceChannel*()); 86 MOCK_METHOD0(voice_channel, cricket::VoiceChannel*());
85 MOCK_METHOD0(video_channel, cricket::VideoChannel*()); 87 MOCK_METHOD0(video_channel, cricket::VideoChannel*());
86 MOCK_CONST_METHOD0(mediastream_signaling, const MediaStreamSignaling*()); 88 MOCK_CONST_METHOD0(mediastream_signaling, const MediaStreamSignaling*());
87 // Libjingle uses "local" for a outgoing track, and "remote" for a incoming 89 // Libjingle uses "local" for a outgoing track, and "remote" for a incoming
88 // track. 90 // track.
89 MOCK_METHOD2(GetLocalTrackIdBySsrc, bool(uint32, std::string*)); 91 MOCK_METHOD2(GetLocalTrackIdBySsrc, bool(uint32, std::string*));
90 MOCK_METHOD2(GetRemoteTrackIdBySsrc, bool(uint32, std::string*)); 92 MOCK_METHOD2(GetRemoteTrackIdBySsrc, bool(uint32, std::string*));
91 MOCK_METHOD1(GetTransportStats, bool(cricket::SessionStats*)); 93 MOCK_METHOD1(GetTransportStats, bool(cricket::SessionStats*));
92 MOCK_METHOD1(GetTransport, cricket::Transport*(const std::string&)); 94 MOCK_METHOD2(GetLocalCertificate,
95 bool(const std::string& transport_name,
96 rtc::scoped_refptr<rtc::RTCCertificate>* certificate));
97 MOCK_METHOD2(GetRemoteCertificate,
98 bool(const std::string& transport_name,
99 rtc::SSLCertificate** cert));
93 }; 100 };
94 101
95 class MockVideoMediaChannel : public cricket::FakeVideoMediaChannel { 102 class MockVideoMediaChannel : public cricket::FakeVideoMediaChannel {
96 public: 103 public:
97 MockVideoMediaChannel() : cricket::FakeVideoMediaChannel(NULL) {} 104 MockVideoMediaChannel() : cricket::FakeVideoMediaChannel(NULL) {}
98 105
99 // MOCK_METHOD0(transport_channel, cricket::TransportChannel*()); 106 // MOCK_METHOD0(transport_channel, cricket::TransportChannel*());
100 MOCK_METHOD1(GetStats, bool(cricket::VideoMediaInfo*)); 107 MOCK_METHOD1(GetStats, bool(cricket::VideoMediaInfo*));
101 }; 108 };
102 109
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 ~StatsCollectorTest() {} 501 ~StatsCollectorTest() {}
495 502
496 // This creates a standard setup with a transport called "trspname" 503 // This creates a standard setup with a transport called "trspname"
497 // having one transport channel 504 // having one transport channel
498 // and the specified virtual connection name. 505 // and the specified virtual connection name.
499 void InitSessionStats(const std::string& vc_name) { 506 void InitSessionStats(const std::string& vc_name) {
500 const std::string kTransportName("trspname"); 507 const std::string kTransportName("trspname");
501 cricket::TransportStats transport_stats; 508 cricket::TransportStats transport_stats;
502 cricket::TransportChannelStats channel_stats; 509 cricket::TransportChannelStats channel_stats;
503 channel_stats.component = 1; 510 channel_stats.component = 1;
504 transport_stats.content_name = kTransportName; 511 transport_stats.transport_name = kTransportName;
505 transport_stats.channel_stats.push_back(channel_stats); 512 transport_stats.channel_stats.push_back(channel_stats);
506 513
507 session_stats_.transport_stats[kTransportName] = transport_stats; 514 session_stats_.transport_stats[kTransportName] = transport_stats;
508 session_stats_.proxy_to_transport[vc_name] = kTransportName; 515 session_stats_.proxy_to_transport[vc_name] = kTransportName;
509 } 516 }
510 517
511 // Adds a outgoing video track with a given SSRC into the stats. 518 // Adds a outgoing video track with a given SSRC into the stats.
512 void AddOutgoingVideoTrackStats() { 519 void AddOutgoingVideoTrackStats() {
513 stream_ = webrtc::MediaStream::Create("streamlabel"); 520 stream_ = webrtc::MediaStream::Create("streamlabel");
514 track_= webrtc::VideoTrack::Create(kLocalTrackId, NULL); 521 track_= webrtc::VideoTrack::Create(kLocalTrackId, NULL);
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 648
642 StatsReports reports; // returned values. 649 StatsReports reports; // returned values.
643 650
644 // Fake stats to process. 651 // Fake stats to process.
645 cricket::TransportChannelStats channel_stats; 652 cricket::TransportChannelStats channel_stats;
646 channel_stats.component = 1; 653 channel_stats.component = 1;
647 channel_stats.srtp_cipher = "the-srtp-cipher"; 654 channel_stats.srtp_cipher = "the-srtp-cipher";
648 channel_stats.ssl_cipher = "the-ssl-cipher"; 655 channel_stats.ssl_cipher = "the-ssl-cipher";
649 656
650 cricket::TransportStats transport_stats; 657 cricket::TransportStats transport_stats;
651 transport_stats.content_name = "audio"; 658 transport_stats.transport_name = "audio";
652 transport_stats.channel_stats.push_back(channel_stats); 659 transport_stats.channel_stats.push_back(channel_stats);
653 660
654 cricket::SessionStats session_stats; 661 cricket::SessionStats session_stats;
655 session_stats.transport_stats[transport_stats.content_name] = 662 session_stats.transport_stats[transport_stats.transport_name] =
656 transport_stats; 663 transport_stats;
657 664
658 // Fake certificates to report. 665 // Fake certificate to report
659 rtc::scoped_refptr<rtc::RTCCertificate> local_certificate( 666 rtc::scoped_refptr<rtc::RTCCertificate> local_certificate(
660 rtc::RTCCertificate::Create(rtc::scoped_ptr<rtc::FakeSSLIdentity>( 667 rtc::RTCCertificate::Create(
661 new rtc::FakeSSLIdentity(local_cert)).Pass())); 668 rtc::scoped_ptr<rtc::FakeSSLIdentity>(
662 rtc::scoped_ptr<rtc::FakeSSLCertificate> remote_cert_copy( 669 new rtc::FakeSSLIdentity(local_cert)).Pass()));
663 remote_cert.GetReference());
664
665 // Fake transport object.
666 rtc::scoped_ptr<cricket::FakeTransport> transport(
667 new cricket::FakeTransport(
668 session_.signaling_thread(),
669 session_.worker_thread(),
670 transport_stats.content_name));
671 transport->SetCertificate(local_certificate);
672 cricket::FakeTransportChannel* channel =
673 static_cast<cricket::FakeTransportChannel*>(
674 transport->CreateChannel(channel_stats.component));
675 EXPECT_FALSE(channel == NULL);
676 channel->SetRemoteCertificate(remote_cert_copy.get());
677 670
678 // Configure MockWebRtcSession 671 // Configure MockWebRtcSession
679 EXPECT_CALL(session_, GetTransport(transport_stats.content_name)) 672 EXPECT_CALL(session_,
680 .WillRepeatedly(Return(transport.get())); 673 GetLocalCertificate(transport_stats.transport_name, _))
674 .WillOnce(DoAll(SetArgPointee<1>(local_certificate), Return(true)));
675 EXPECT_CALL(session_,
676 GetRemoteCertificate(transport_stats.transport_name, _))
677 .WillOnce(
678 DoAll(SetArgPointee<1>(remote_cert.GetReference()), Return(true)));
681 EXPECT_CALL(session_, GetTransportStats(_)) 679 EXPECT_CALL(session_, GetTransportStats(_))
682 .WillOnce(DoAll(SetArgPointee<0>(session_stats), 680 .WillOnce(DoAll(SetArgPointee<0>(session_stats),
683 Return(true))); 681 Return(true)));
684 EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull()); 682 EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull());
685 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); 683 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull());
686 684
687 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); 685 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard);
688 686
689 stats.GetStats(NULL, &reports); 687 stats.GetStats(NULL, &reports);
690 688
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
784 StatsReport::kStatsValueNameState)); 782 StatsReport::kStatsValueNameState));
785 EXPECT_EQ("", ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel, 783 EXPECT_EQ("", ExtractStatsValue(StatsReport::kStatsReportTypeDataChannel,
786 reports, 784 reports,
787 StatsReport::kStatsValueNameProtocol)); 785 StatsReport::kStatsValueNameProtocol));
788 } 786 }
789 787
790 // This test verifies that 64-bit counters are passed successfully. 788 // This test verifies that 64-bit counters are passed successfully.
791 TEST_F(StatsCollectorTest, BytesCounterHandles64Bits) { 789 TEST_F(StatsCollectorTest, BytesCounterHandles64Bits) {
792 StatsCollectorForTest stats(&session_); 790 StatsCollectorForTest stats(&session_);
793 791
792 EXPECT_CALL(session_, GetLocalCertificate(_, _))
793 .WillRepeatedly(Return(false));
794 EXPECT_CALL(session_, GetRemoteCertificate(_, _))
795 .WillRepeatedly(Return(false));
796
794 const char kVideoChannelName[] = "video"; 797 const char kVideoChannelName[] = "video";
795 798
796 InitSessionStats(kVideoChannelName); 799 InitSessionStats(kVideoChannelName);
797 EXPECT_CALL(session_, GetTransportStats(_)) 800 EXPECT_CALL(session_, GetTransportStats(_))
798 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), 801 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_),
799 Return(true))); 802 Return(true)));
800 EXPECT_CALL(session_, GetTransport(_))
801 .WillRepeatedly(Return(static_cast<cricket::Transport*>(NULL)));
802 803
803 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); 804 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel();
804 cricket::VideoChannel video_channel(rtc::Thread::Current(), 805 cricket::VideoChannel video_channel(rtc::Thread::Current(),
805 media_channel, NULL, kVideoChannelName, false); 806 media_channel, NULL, kVideoChannelName, false);
806 StatsReports reports; // returned values. 807 StatsReports reports; // returned values.
807 cricket::VideoSenderInfo video_sender_info; 808 cricket::VideoSenderInfo video_sender_info;
808 cricket::VideoMediaInfo stats_read; 809 cricket::VideoMediaInfo stats_read;
809 // The number of bytes must be larger than 0xFFFFFFFF for this test. 810 // The number of bytes must be larger than 0xFFFFFFFF for this test.
810 const int64 kBytesSent = 12345678901234LL; 811 const int64 kBytesSent = 12345678901234LL;
811 const std::string kBytesSentString("12345678901234"); 812 const std::string kBytesSentString("12345678901234");
(...skipping 15 matching lines...) Expand all
827 stats.GetStats(NULL, &reports); 828 stats.GetStats(NULL, &reports);
828 std::string result = ExtractSsrcStatsValue(reports, 829 std::string result = ExtractSsrcStatsValue(reports,
829 StatsReport::kStatsValueNameBytesSent); 830 StatsReport::kStatsValueNameBytesSent);
830 EXPECT_EQ(kBytesSentString, result); 831 EXPECT_EQ(kBytesSentString, result);
831 } 832 }
832 833
833 // Test that BWE information is reported via stats. 834 // Test that BWE information is reported via stats.
834 TEST_F(StatsCollectorTest, BandwidthEstimationInfoIsReported) { 835 TEST_F(StatsCollectorTest, BandwidthEstimationInfoIsReported) {
835 StatsCollectorForTest stats(&session_); 836 StatsCollectorForTest stats(&session_);
836 837
838 EXPECT_CALL(session_, GetLocalCertificate(_, _))
839 .WillRepeatedly(Return(false));
840 EXPECT_CALL(session_, GetRemoteCertificate(_, _))
841 .WillRepeatedly(Return(false));
842
837 const char kVideoChannelName[] = "video"; 843 const char kVideoChannelName[] = "video";
838 844
839 InitSessionStats(kVideoChannelName); 845 InitSessionStats(kVideoChannelName);
840 EXPECT_CALL(session_, GetTransportStats(_)) 846 EXPECT_CALL(session_, GetTransportStats(_))
841 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), 847 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_),
842 Return(true))); 848 Return(true)));
843 EXPECT_CALL(session_, GetTransport(_))
844 .WillRepeatedly(Return(static_cast<cricket::Transport*>(NULL)));
845 849
846 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); 850 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel();
847 cricket::VideoChannel video_channel(rtc::Thread::Current(), 851 cricket::VideoChannel video_channel(rtc::Thread::Current(),
848 media_channel, NULL, kVideoChannelName, false); 852 media_channel, NULL, kVideoChannelName, false);
849 853
850 StatsReports reports; // returned values. 854 StatsReports reports; // returned values.
851 cricket::VideoSenderInfo video_sender_info; 855 cricket::VideoSenderInfo video_sender_info;
852 cricket::VideoMediaInfo stats_read; 856 cricket::VideoMediaInfo stats_read;
853 // Set up an SSRC just to test that we get both kinds of stats back: SSRC and 857 // Set up an SSRC just to test that we get both kinds of stats back: SSRC and
854 // BWE. 858 // BWE.
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
940 reports, 944 reports,
941 StatsReport::kStatsValueNameTrackId); 945 StatsReport::kStatsValueNameTrackId);
942 EXPECT_EQ(kLocalTrackId, trackValue); 946 EXPECT_EQ(kLocalTrackId, trackValue);
943 } 947 }
944 948
945 // This test verifies that the empty track report exists in the returned stats 949 // This test verifies that the empty track report exists in the returned stats
946 // when StatsCollector::UpdateStats is called with ssrc stats. 950 // when StatsCollector::UpdateStats is called with ssrc stats.
947 TEST_F(StatsCollectorTest, TrackAndSsrcObjectExistAfterUpdateSsrcStats) { 951 TEST_F(StatsCollectorTest, TrackAndSsrcObjectExistAfterUpdateSsrcStats) {
948 StatsCollectorForTest stats(&session_); 952 StatsCollectorForTest stats(&session_);
949 953
954 EXPECT_CALL(session_, GetLocalCertificate(_, _))
955 .WillRepeatedly(Return(false));
956 EXPECT_CALL(session_, GetRemoteCertificate(_, _))
957 .WillRepeatedly(Return(false));
958
950 const char kVideoChannelName[] = "video"; 959 const char kVideoChannelName[] = "video";
951 InitSessionStats(kVideoChannelName); 960 InitSessionStats(kVideoChannelName);
952 EXPECT_CALL(session_, GetTransportStats(_)) 961 EXPECT_CALL(session_, GetTransportStats(_))
953 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), 962 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_),
954 Return(true))); 963 Return(true)));
955 EXPECT_CALL(session_, GetTransport(_))
956 .WillRepeatedly(Return(static_cast<cricket::Transport*>(NULL)));
957 964
958 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); 965 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel();
959 cricket::VideoChannel video_channel(rtc::Thread::Current(), 966 cricket::VideoChannel video_channel(rtc::Thread::Current(),
960 media_channel, NULL, kVideoChannelName, false); 967 media_channel, NULL, kVideoChannelName, false);
961 AddOutgoingVideoTrackStats(); 968 AddOutgoingVideoTrackStats();
962 stats.AddStream(stream_); 969 stats.AddStream(stream_);
963 970
964 // Constructs an ssrc stats update. 971 // Constructs an ssrc stats update.
965 cricket::VideoSenderInfo video_sender_info; 972 cricket::VideoSenderInfo video_sender_info;
966 cricket::VideoMediaInfo stats_read; 973 cricket::VideoMediaInfo stats_read;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1005 std::string track_id = ExtractSsrcStatsValue( 1012 std::string track_id = ExtractSsrcStatsValue(
1006 reports, StatsReport::kStatsValueNameTrackId); 1013 reports, StatsReport::kStatsValueNameTrackId);
1007 EXPECT_EQ(kLocalTrackId, track_id); 1014 EXPECT_EQ(kLocalTrackId, track_id);
1008 } 1015 }
1009 1016
1010 // This test verifies that an SSRC object has the identifier of a Transport 1017 // This test verifies that an SSRC object has the identifier of a Transport
1011 // stats object, and that this transport stats object exists in stats. 1018 // stats object, and that this transport stats object exists in stats.
1012 TEST_F(StatsCollectorTest, TransportObjectLinkedFromSsrcObject) { 1019 TEST_F(StatsCollectorTest, TransportObjectLinkedFromSsrcObject) {
1013 StatsCollectorForTest stats(&session_); 1020 StatsCollectorForTest stats(&session_);
1014 1021
1015 // Ignore unused callback (logspam). 1022 EXPECT_CALL(session_, GetLocalCertificate(_, _))
1016 EXPECT_CALL(session_, GetTransport(_)) 1023 .WillRepeatedly(Return(false));
1017 .WillRepeatedly(Return(static_cast<cricket::Transport*>(NULL))); 1024 EXPECT_CALL(session_, GetRemoteCertificate(_, _))
1025 .WillRepeatedly(Return(false));
1026
1018 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); 1027 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel();
1019 // The content_name known by the video channel. 1028 // The transport_name known by the video channel.
1020 const std::string kVcName("vcname"); 1029 const std::string kVcName("vcname");
1021 cricket::VideoChannel video_channel(rtc::Thread::Current(), 1030 cricket::VideoChannel video_channel(rtc::Thread::Current(),
1022 media_channel, NULL, kVcName, false); 1031 media_channel, NULL, kVcName, false);
1023 AddOutgoingVideoTrackStats(); 1032 AddOutgoingVideoTrackStats();
1024 stats.AddStream(stream_); 1033 stats.AddStream(stream_);
1025 1034
1026 // Constructs an ssrc stats update. 1035 // Constructs an ssrc stats update.
1027 cricket::VideoSenderInfo video_sender_info; 1036 cricket::VideoSenderInfo video_sender_info;
1028 cricket::VideoMediaInfo stats_read; 1037 cricket::VideoMediaInfo stats_read;
1029 const int64 kBytesSent = 12345678901234LL; 1038 const int64 kBytesSent = 12345678901234LL;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1067 const StatsReport* transport_report = FindReportById(reports, id); 1076 const StatsReport* transport_report = FindReportById(reports, id);
1068 ASSERT_FALSE(transport_report == NULL); 1077 ASSERT_FALSE(transport_report == NULL);
1069 } 1078 }
1070 1079
1071 // This test verifies that a remote stats object will not be created for 1080 // This test verifies that a remote stats object will not be created for
1072 // an outgoing SSRC where remote stats are not returned. 1081 // an outgoing SSRC where remote stats are not returned.
1073 TEST_F(StatsCollectorTest, RemoteSsrcInfoIsAbsent) { 1082 TEST_F(StatsCollectorTest, RemoteSsrcInfoIsAbsent) {
1074 StatsCollectorForTest stats(&session_); 1083 StatsCollectorForTest stats(&session_);
1075 1084
1076 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); 1085 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel();
1077 // The content_name known by the video channel. 1086 // The transport_name known by the video channel.
1078 const std::string kVcName("vcname"); 1087 const std::string kVcName("vcname");
1079 cricket::VideoChannel video_channel(rtc::Thread::Current(), 1088 cricket::VideoChannel video_channel(rtc::Thread::Current(),
1080 media_channel, NULL, kVcName, false); 1089 media_channel, NULL, kVcName, false);
1081 AddOutgoingVideoTrackStats(); 1090 AddOutgoingVideoTrackStats();
1082 stats.AddStream(stream_); 1091 stats.AddStream(stream_);
1083 1092
1084 EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull()); 1093 EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull());
1085 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); 1094 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull());
1086 1095
1087 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); 1096 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard);
1088 StatsReports reports; 1097 StatsReports reports;
1089 stats.GetStats(NULL, &reports); 1098 stats.GetStats(NULL, &reports);
1090 const StatsReport* remote_report = FindNthReportByType(reports, 1099 const StatsReport* remote_report = FindNthReportByType(reports,
1091 StatsReport::kStatsReportTypeRemoteSsrc, 1); 1100 StatsReport::kStatsReportTypeRemoteSsrc, 1);
1092 EXPECT_TRUE(remote_report == NULL); 1101 EXPECT_TRUE(remote_report == NULL);
1093 } 1102 }
1094 1103
1095 // This test verifies that a remote stats object will be created for 1104 // This test verifies that a remote stats object will be created for
1096 // an outgoing SSRC where stats are returned. 1105 // an outgoing SSRC where stats are returned.
1097 TEST_F(StatsCollectorTest, RemoteSsrcInfoIsPresent) { 1106 TEST_F(StatsCollectorTest, RemoteSsrcInfoIsPresent) {
1098 StatsCollectorForTest stats(&session_); 1107 StatsCollectorForTest stats(&session_);
1099 1108
1100 // Ignore unused callback (logspam). 1109 EXPECT_CALL(session_, GetLocalCertificate(_, _))
1101 EXPECT_CALL(session_, GetTransport(_)) 1110 .WillRepeatedly(Return(false));
1102 .WillRepeatedly(Return(static_cast<cricket::Transport*>(NULL))); 1111 EXPECT_CALL(session_, GetRemoteCertificate(_, _))
1112 .WillRepeatedly(Return(false));
1113
1103 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); 1114 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel();
1104 // The content_name known by the video channel. 1115 // The transport_name known by the video channel.
1105 const std::string kVcName("vcname"); 1116 const std::string kVcName("vcname");
1106 cricket::VideoChannel video_channel(rtc::Thread::Current(), 1117 cricket::VideoChannel video_channel(rtc::Thread::Current(),
1107 media_channel, NULL, kVcName, false); 1118 media_channel, NULL, kVcName, false);
1108 AddOutgoingVideoTrackStats(); 1119 AddOutgoingVideoTrackStats();
1109 stats.AddStream(stream_); 1120 stats.AddStream(stream_);
1110 1121
1111 // Instruct the session to return stats containing the transport channel. 1122 // Instruct the session to return stats containing the transport channel.
1112 InitSessionStats(kVcName); 1123 InitSessionStats(kVcName);
1113 EXPECT_CALL(session_, GetTransportStats(_)) 1124 EXPECT_CALL(session_, GetTransportStats(_))
1114 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), 1125 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_),
(...skipping 24 matching lines...) Expand all
1139 StatsReport::kStatsReportTypeRemoteSsrc, 1); 1150 StatsReport::kStatsReportTypeRemoteSsrc, 1);
1140 EXPECT_FALSE(remote_report == NULL); 1151 EXPECT_FALSE(remote_report == NULL);
1141 EXPECT_EQ(12345.678, remote_report->timestamp()); 1152 EXPECT_EQ(12345.678, remote_report->timestamp());
1142 } 1153 }
1143 1154
1144 // This test verifies that the empty track report exists in the returned stats 1155 // This test verifies that the empty track report exists in the returned stats
1145 // when StatsCollector::UpdateStats is called with ssrc stats. 1156 // when StatsCollector::UpdateStats is called with ssrc stats.
1146 TEST_F(StatsCollectorTest, ReportsFromRemoteTrack) { 1157 TEST_F(StatsCollectorTest, ReportsFromRemoteTrack) {
1147 StatsCollectorForTest stats(&session_); 1158 StatsCollectorForTest stats(&session_);
1148 1159
1160 EXPECT_CALL(session_, GetLocalCertificate(_, _))
1161 .WillRepeatedly(Return(false));
1162 EXPECT_CALL(session_, GetRemoteCertificate(_, _))
1163 .WillRepeatedly(Return(false));
1164
1149 const char kVideoChannelName[] = "video"; 1165 const char kVideoChannelName[] = "video";
1150 InitSessionStats(kVideoChannelName); 1166 InitSessionStats(kVideoChannelName);
1151 EXPECT_CALL(session_, GetTransportStats(_)) 1167 EXPECT_CALL(session_, GetTransportStats(_))
1152 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_), 1168 .WillRepeatedly(DoAll(SetArgPointee<0>(session_stats_),
1153 Return(true))); 1169 Return(true)));
1154 EXPECT_CALL(session_, GetTransport(_))
1155 .WillRepeatedly(Return(static_cast<cricket::Transport*>(NULL)));
1156 1170
1157 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel(); 1171 MockVideoMediaChannel* media_channel = new MockVideoMediaChannel();
1158 cricket::VideoChannel video_channel(rtc::Thread::Current(), 1172 cricket::VideoChannel video_channel(rtc::Thread::Current(),
1159 media_channel, NULL, kVideoChannelName, false); 1173 media_channel, NULL, kVideoChannelName, false);
1160 AddIncomingVideoTrackStats(); 1174 AddIncomingVideoTrackStats();
1161 stats.AddStream(stream_); 1175 stats.AddStream(stream_);
1162 1176
1163 // Constructs an ssrc stats update. 1177 // Constructs an ssrc stats update.
1164 cricket::VideoReceiverInfo video_receiver_info; 1178 cricket::VideoReceiverInfo video_receiver_info;
1165 cricket::VideoMediaInfo stats_read; 1179 cricket::VideoMediaInfo stats_read;
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1324 1338
1325 TestCertificateReports(local_cert, std::vector<std::string>(1, local_der), 1339 TestCertificateReports(local_cert, std::vector<std::string>(1, local_der),
1326 remote_cert, std::vector<std::string>(1, remote_der)); 1340 remote_cert, std::vector<std::string>(1, remote_der));
1327 } 1341 }
1328 1342
1329 // This test verifies that the stats are generated correctly when no 1343 // This test verifies that the stats are generated correctly when no
1330 // transport is present. 1344 // transport is present.
1331 TEST_F(StatsCollectorTest, NoTransport) { 1345 TEST_F(StatsCollectorTest, NoTransport) {
1332 StatsCollectorForTest stats(&session_); 1346 StatsCollectorForTest stats(&session_);
1333 1347
1348 EXPECT_CALL(session_, GetLocalCertificate(_, _))
1349 .WillRepeatedly(Return(false));
1350 EXPECT_CALL(session_, GetRemoteCertificate(_, _))
1351 .WillRepeatedly(Return(false));
1352
1334 StatsReports reports; // returned values. 1353 StatsReports reports; // returned values.
1335 1354
1336 // Fake stats to process. 1355 // Fake stats to process.
1337 cricket::TransportChannelStats channel_stats; 1356 cricket::TransportChannelStats channel_stats;
1338 channel_stats.component = 1; 1357 channel_stats.component = 1;
1339 1358
1340 cricket::TransportStats transport_stats; 1359 cricket::TransportStats transport_stats;
1341 transport_stats.content_name = "audio"; 1360 transport_stats.transport_name = "audio";
1342 transport_stats.channel_stats.push_back(channel_stats); 1361 transport_stats.channel_stats.push_back(channel_stats);
1343 1362
1344 cricket::SessionStats session_stats; 1363 cricket::SessionStats session_stats;
1345 session_stats.transport_stats[transport_stats.content_name] = 1364 session_stats.transport_stats[transport_stats.transport_name] =
1346 transport_stats; 1365 transport_stats;
1347 1366
1348 // Configure MockWebRtcSession 1367 // Configure MockWebRtcSession
1349 EXPECT_CALL(session_, GetTransport(transport_stats.content_name))
1350 .WillRepeatedly(ReturnNull());
1351 EXPECT_CALL(session_, GetTransportStats(_)) 1368 EXPECT_CALL(session_, GetTransportStats(_))
1352 .WillOnce(DoAll(SetArgPointee<0>(session_stats), 1369 .WillOnce(DoAll(SetArgPointee<0>(session_stats),
1353 Return(true))); 1370 Return(true)));
1354 1371
1355 EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull()); 1372 EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull());
1356 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); 1373 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull());
1357 1374
1358 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); 1375 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard);
1359 stats.GetStats(NULL, &reports); 1376 stats.GetStats(NULL, &reports);
1360 1377
(...skipping 22 matching lines...) Expand all
1383 reports, 1400 reports,
1384 StatsReport::kStatsValueNameSrtpCipher); 1401 StatsReport::kStatsValueNameSrtpCipher);
1385 ASSERT_EQ(kNotFound, srtp_cipher); 1402 ASSERT_EQ(kNotFound, srtp_cipher);
1386 } 1403 }
1387 1404
1388 // This test verifies that the stats are generated correctly when the transport 1405 // This test verifies that the stats are generated correctly when the transport
1389 // does not have any certificates. 1406 // does not have any certificates.
1390 TEST_F(StatsCollectorTest, NoCertificates) { 1407 TEST_F(StatsCollectorTest, NoCertificates) {
1391 StatsCollectorForTest stats(&session_); 1408 StatsCollectorForTest stats(&session_);
1392 1409
1410 EXPECT_CALL(session_, GetLocalCertificate(_, _))
1411 .WillRepeatedly(Return(false));
1412 EXPECT_CALL(session_, GetRemoteCertificate(_, _))
1413 .WillRepeatedly(Return(false));
1414
1393 StatsReports reports; // returned values. 1415 StatsReports reports; // returned values.
1394 1416
1395 // Fake stats to process. 1417 // Fake stats to process.
1396 cricket::TransportChannelStats channel_stats; 1418 cricket::TransportChannelStats channel_stats;
1397 channel_stats.component = 1; 1419 channel_stats.component = 1;
1398 1420
1399 cricket::TransportStats transport_stats; 1421 cricket::TransportStats transport_stats;
1400 transport_stats.content_name = "audio"; 1422 transport_stats.transport_name = "audio";
1401 transport_stats.channel_stats.push_back(channel_stats); 1423 transport_stats.channel_stats.push_back(channel_stats);
1402 1424
1403 cricket::SessionStats session_stats; 1425 cricket::SessionStats session_stats;
1404 session_stats.transport_stats[transport_stats.content_name] = 1426 session_stats.transport_stats[transport_stats.transport_name] =
1405 transport_stats; 1427 transport_stats;
1406 1428
1407 // Fake transport object. 1429 // Fake transport object.
1408 rtc::scoped_ptr<cricket::FakeTransport> transport( 1430 rtc::scoped_ptr<cricket::FakeTransport> transport(
1409 new cricket::FakeTransport( 1431 new cricket::FakeTransport(transport_stats.transport_name));
1410 session_.signaling_thread(),
1411 session_.worker_thread(),
1412 transport_stats.content_name));
1413 1432
1414 // Configure MockWebRtcSession 1433 // Configure MockWebRtcSession
1415 EXPECT_CALL(session_, GetTransport(transport_stats.content_name))
1416 .WillRepeatedly(Return(transport.get()));
1417 EXPECT_CALL(session_, GetTransportStats(_)) 1434 EXPECT_CALL(session_, GetTransportStats(_))
1418 .WillOnce(DoAll(SetArgPointee<0>(session_stats), 1435 .WillOnce(DoAll(SetArgPointee<0>(session_stats),
1419 Return(true))); 1436 Return(true)));
1420 EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull()); 1437 EXPECT_CALL(session_, video_channel()).WillRepeatedly(ReturnNull());
1421 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull()); 1438 EXPECT_CALL(session_, voice_channel()).WillRepeatedly(ReturnNull());
1422 1439
1423 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard); 1440 stats.UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard);
1424 stats.GetStats(NULL, &reports); 1441 stats.GetStats(NULL, &reports);
1425 1442
1426 // Check that the local certificate is absent. 1443 // Check that the local certificate is absent.
(...skipping 25 matching lines...) Expand all
1452 1469
1453 TestCertificateReports(local_cert, std::vector<std::string>(1, local_der), 1470 TestCertificateReports(local_cert, std::vector<std::string>(1, local_der),
1454 remote_cert, std::vector<std::string>()); 1471 remote_cert, std::vector<std::string>());
1455 } 1472 }
1456 1473
1457 // This test verifies that a local stats object can get statistics via 1474 // This test verifies that a local stats object can get statistics via
1458 // AudioTrackInterface::GetStats() method. 1475 // AudioTrackInterface::GetStats() method.
1459 TEST_F(StatsCollectorTest, GetStatsFromLocalAudioTrack) { 1476 TEST_F(StatsCollectorTest, GetStatsFromLocalAudioTrack) {
1460 StatsCollectorForTest stats(&session_); 1477 StatsCollectorForTest stats(&session_);
1461 1478
1462 // Ignore unused callback (logspam). 1479 EXPECT_CALL(session_, GetLocalCertificate(_, _))
1463 EXPECT_CALL(session_, GetTransport(_)) 1480 .WillRepeatedly(Return(false));
1464 .WillRepeatedly(Return(static_cast<cricket::Transport*>(NULL))); 1481 EXPECT_CALL(session_, GetRemoteCertificate(_, _))
1482 .WillRepeatedly(Return(false));
1465 1483
1466 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); 1484 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel();
1467 // The content_name known by the voice channel. 1485 // The transport_name known by the voice channel.
1468 const std::string kVcName("vcname"); 1486 const std::string kVcName("vcname");
1469 cricket::VoiceChannel voice_channel(rtc::Thread::Current(), 1487 cricket::VoiceChannel voice_channel(rtc::Thread::Current(),
1470 media_engine_, media_channel, NULL, kVcName, false); 1488 media_engine_, media_channel, NULL, kVcName, false);
1471 AddOutgoingAudioTrackStats(); 1489 AddOutgoingAudioTrackStats();
1472 stats.AddStream(stream_); 1490 stats.AddStream(stream_);
1473 stats.AddLocalAudioTrack(audio_track_, kSsrcOfTrack); 1491 stats.AddLocalAudioTrack(audio_track_, kSsrcOfTrack);
1474 1492
1475 cricket::VoiceSenderInfo voice_sender_info; 1493 cricket::VoiceSenderInfo voice_sender_info;
1476 InitVoiceSenderInfo(&voice_sender_info); 1494 InitVoiceSenderInfo(&voice_sender_info);
1477 1495
1478 cricket::VoiceMediaInfo stats_read; 1496 cricket::VoiceMediaInfo stats_read;
1479 StatsReports reports; // returned values. 1497 StatsReports reports; // returned values.
1480 SetupAndVerifyAudioTrackStats( 1498 SetupAndVerifyAudioTrackStats(
1481 audio_track_.get(), stream_.get(), &stats, &voice_channel, kVcName, 1499 audio_track_.get(), stream_.get(), &stats, &voice_channel, kVcName,
1482 media_channel, &voice_sender_info, NULL, &stats_read, &reports); 1500 media_channel, &voice_sender_info, NULL, &stats_read, &reports);
1483 1501
1484 // Verify that there is no remote report for the local audio track because 1502 // Verify that there is no remote report for the local audio track because
1485 // we did not set it up. 1503 // we did not set it up.
1486 const StatsReport* remote_report = FindNthReportByType(reports, 1504 const StatsReport* remote_report = FindNthReportByType(reports,
1487 StatsReport::kStatsReportTypeRemoteSsrc, 1); 1505 StatsReport::kStatsReportTypeRemoteSsrc, 1);
1488 EXPECT_TRUE(remote_report == NULL); 1506 EXPECT_TRUE(remote_report == NULL);
1489 } 1507 }
1490 1508
1491 // This test verifies that audio receive streams populate stats reports 1509 // This test verifies that audio receive streams populate stats reports
1492 // correctly. 1510 // correctly.
1493 TEST_F(StatsCollectorTest, GetStatsFromRemoteStream) { 1511 TEST_F(StatsCollectorTest, GetStatsFromRemoteStream) {
1494 StatsCollectorForTest stats(&session_); 1512 StatsCollectorForTest stats(&session_);
1495 1513
1496 // Ignore unused callback (logspam). 1514 EXPECT_CALL(session_, GetLocalCertificate(_, _))
1497 EXPECT_CALL(session_, GetTransport(_)) 1515 .WillRepeatedly(Return(false));
1498 .WillRepeatedly(Return(static_cast<cricket::Transport*>(NULL))); 1516 EXPECT_CALL(session_, GetRemoteCertificate(_, _))
1517 .WillRepeatedly(Return(false));
1518
1499 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); 1519 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel();
1500 // The content_name known by the voice channel. 1520 // The transport_name known by the voice channel.
1501 const std::string kVcName("vcname"); 1521 const std::string kVcName("vcname");
1502 cricket::VoiceChannel voice_channel(rtc::Thread::Current(), 1522 cricket::VoiceChannel voice_channel(rtc::Thread::Current(),
1503 media_engine_, media_channel, NULL, kVcName, false); 1523 media_engine_, media_channel, NULL, kVcName, false);
1504 AddIncomingAudioTrackStats(); 1524 AddIncomingAudioTrackStats();
1505 stats.AddStream(stream_); 1525 stats.AddStream(stream_);
1506 1526
1507 cricket::VoiceReceiverInfo voice_receiver_info; 1527 cricket::VoiceReceiverInfo voice_receiver_info;
1508 InitVoiceReceiverInfo(&voice_receiver_info); 1528 InitVoiceReceiverInfo(&voice_receiver_info);
1509 voice_receiver_info.codec_name = "fake_codec"; 1529 voice_receiver_info.codec_name = "fake_codec";
1510 1530
1511 cricket::VoiceMediaInfo stats_read; 1531 cricket::VoiceMediaInfo stats_read;
1512 StatsReports reports; // returned values. 1532 StatsReports reports; // returned values.
1513 SetupAndVerifyAudioTrackStats( 1533 SetupAndVerifyAudioTrackStats(
1514 audio_track_.get(), stream_.get(), &stats, &voice_channel, kVcName, 1534 audio_track_.get(), stream_.get(), &stats, &voice_channel, kVcName,
1515 media_channel, NULL, &voice_receiver_info, &stats_read, &reports); 1535 media_channel, NULL, &voice_receiver_info, &stats_read, &reports);
1516 } 1536 }
1517 1537
1518 // This test verifies that a local stats object won't update its statistics 1538 // This test verifies that a local stats object won't update its statistics
1519 // after a RemoveLocalAudioTrack() call. 1539 // after a RemoveLocalAudioTrack() call.
1520 TEST_F(StatsCollectorTest, GetStatsAfterRemoveAudioStream) { 1540 TEST_F(StatsCollectorTest, GetStatsAfterRemoveAudioStream) {
1521 StatsCollectorForTest stats(&session_); 1541 StatsCollectorForTest stats(&session_);
1522 1542
1523 // Ignore unused callback (logspam). 1543 EXPECT_CALL(session_, GetLocalCertificate(_, _))
1524 EXPECT_CALL(session_, GetTransport(_)) 1544 .WillRepeatedly(Return(false));
1525 .WillRepeatedly(Return(static_cast<cricket::Transport*>(NULL))); 1545 EXPECT_CALL(session_, GetRemoteCertificate(_, _))
1546 .WillRepeatedly(Return(false));
1547
1526 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); 1548 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel();
1527 // The content_name known by the voice channel. 1549 // The transport_name known by the voice channel.
1528 const std::string kVcName("vcname"); 1550 const std::string kVcName("vcname");
1529 cricket::VoiceChannel voice_channel(rtc::Thread::Current(), 1551 cricket::VoiceChannel voice_channel(rtc::Thread::Current(),
1530 media_engine_, media_channel, NULL, kVcName, false); 1552 media_engine_, media_channel, NULL, kVcName, false);
1531 AddOutgoingAudioTrackStats(); 1553 AddOutgoingAudioTrackStats();
1532 stats.AddStream(stream_); 1554 stats.AddStream(stream_);
1533 stats.AddLocalAudioTrack(audio_track_.get(), kSsrcOfTrack); 1555 stats.AddLocalAudioTrack(audio_track_.get(), kSsrcOfTrack);
1534 1556
1535 // Instruct the session to return stats containing the transport channel. 1557 // Instruct the session to return stats containing the transport channel.
1536 InitSessionStats(kVcName); 1558 InitSessionStats(kVcName);
1537 EXPECT_CALL(session_, GetTransportStats(_)) 1559 EXPECT_CALL(session_, GetTransportStats(_))
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1572 // AudioTrackInterface::GetSignalValue() and 1594 // AudioTrackInterface::GetSignalValue() and
1573 // AudioProcessorInterface::AudioProcessorStats::GetStats(); 1595 // AudioProcessorInterface::AudioProcessorStats::GetStats();
1574 VerifyVoiceSenderInfoReport(report, voice_sender_info); 1596 VerifyVoiceSenderInfoReport(report, voice_sender_info);
1575 } 1597 }
1576 1598
1577 // This test verifies that when ongoing and incoming audio tracks are using 1599 // This test verifies that when ongoing and incoming audio tracks are using
1578 // the same ssrc, they populate stats reports correctly. 1600 // the same ssrc, they populate stats reports correctly.
1579 TEST_F(StatsCollectorTest, LocalAndRemoteTracksWithSameSsrc) { 1601 TEST_F(StatsCollectorTest, LocalAndRemoteTracksWithSameSsrc) {
1580 StatsCollectorForTest stats(&session_); 1602 StatsCollectorForTest stats(&session_);
1581 1603
1582 // Ignore unused callback (logspam). 1604 EXPECT_CALL(session_, GetLocalCertificate(_, _))
1583 EXPECT_CALL(session_, GetTransport(_)) 1605 .WillRepeatedly(Return(false));
1584 .WillRepeatedly(Return(static_cast<cricket::Transport*>(NULL))); 1606 EXPECT_CALL(session_, GetRemoteCertificate(_, _))
1607 .WillRepeatedly(Return(false));
1608
1585 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); 1609 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel();
1586 // The content_name known by the voice channel. 1610 // The transport_name known by the voice channel.
1587 const std::string kVcName("vcname"); 1611 const std::string kVcName("vcname");
1588 cricket::VoiceChannel voice_channel(rtc::Thread::Current(), 1612 cricket::VoiceChannel voice_channel(rtc::Thread::Current(),
1589 media_engine_, media_channel, NULL, kVcName, false); 1613 media_engine_, media_channel, NULL, kVcName, false);
1590 1614
1591 // Create a local stream with a local audio track and adds it to the stats. 1615 // Create a local stream with a local audio track and adds it to the stats.
1592 AddOutgoingAudioTrackStats(); 1616 AddOutgoingAudioTrackStats();
1593 stats.AddStream(stream_); 1617 stats.AddStream(stream_);
1594 stats.AddLocalAudioTrack(audio_track_.get(), kSsrcOfTrack); 1618 stats.AddLocalAudioTrack(audio_track_.get(), kSsrcOfTrack);
1595 1619
1596 // Create a remote stream with a remote audio track and adds it to the stats. 1620 // Create a remote stream with a remote audio track and adds it to the stats.
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1657 VerifyVoiceReceiverInfoReport(track_report, voice_receiver_info); 1681 VerifyVoiceReceiverInfoReport(track_report, voice_receiver_info);
1658 } 1682 }
1659 1683
1660 // This test verifies that when two outgoing audio tracks are using the same 1684 // This test verifies that when two outgoing audio tracks are using the same
1661 // ssrc at different times, they populate stats reports correctly. 1685 // ssrc at different times, they populate stats reports correctly.
1662 // TODO(xians): Figure out if it is possible to encapsulate the setup and 1686 // TODO(xians): Figure out if it is possible to encapsulate the setup and
1663 // avoid duplication of code in test cases. 1687 // avoid duplication of code in test cases.
1664 TEST_F(StatsCollectorTest, TwoLocalTracksWithSameSsrc) { 1688 TEST_F(StatsCollectorTest, TwoLocalTracksWithSameSsrc) {
1665 StatsCollectorForTest stats(&session_); 1689 StatsCollectorForTest stats(&session_);
1666 1690
1667 // Ignore unused callback (logspam). 1691 EXPECT_CALL(session_, GetLocalCertificate(_, _))
1668 EXPECT_CALL(session_, GetTransport(_)) 1692 .WillRepeatedly(Return(false));
1669 .WillRepeatedly(Return(static_cast<cricket::Transport*>(NULL))); 1693 EXPECT_CALL(session_, GetRemoteCertificate(_, _))
1694 .WillRepeatedly(Return(false));
1695
1670 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel(); 1696 MockVoiceMediaChannel* media_channel = new MockVoiceMediaChannel();
1671 // The content_name known by the voice channel. 1697 // The transport_name known by the voice channel.
1672 const std::string kVcName("vcname"); 1698 const std::string kVcName("vcname");
1673 cricket::VoiceChannel voice_channel(rtc::Thread::Current(), 1699 cricket::VoiceChannel voice_channel(rtc::Thread::Current(),
1674 media_engine_, media_channel, NULL, kVcName, false); 1700 media_engine_, media_channel, NULL, kVcName, false);
1675 1701
1676 // Create a local stream with a local audio track and adds it to the stats. 1702 // Create a local stream with a local audio track and adds it to the stats.
1677 AddOutgoingAudioTrackStats(); 1703 AddOutgoingAudioTrackStats();
1678 stats.AddStream(stream_); 1704 stats.AddStream(stream_);
1679 stats.AddLocalAudioTrack(audio_track_, kSsrcOfTrack); 1705 stats.AddLocalAudioTrack(audio_track_, kSsrcOfTrack);
1680 1706
1681 cricket::VoiceSenderInfo voice_sender_info; 1707 cricket::VoiceSenderInfo voice_sender_info;
(...skipping 22 matching lines...) Expand all
1704 cricket::VoiceSenderInfo new_voice_sender_info; 1730 cricket::VoiceSenderInfo new_voice_sender_info;
1705 InitVoiceSenderInfo(&new_voice_sender_info); 1731 InitVoiceSenderInfo(&new_voice_sender_info);
1706 cricket::VoiceMediaInfo new_stats_read; 1732 cricket::VoiceMediaInfo new_stats_read;
1707 reports.clear(); 1733 reports.clear();
1708 SetupAndVerifyAudioTrackStats( 1734 SetupAndVerifyAudioTrackStats(
1709 new_audio_track.get(), stream_.get(), &stats, &voice_channel, kVcName, 1735 new_audio_track.get(), stream_.get(), &stats, &voice_channel, kVcName,
1710 media_channel, &new_voice_sender_info, NULL, &new_stats_read, &reports); 1736 media_channel, &new_voice_sender_info, NULL, &new_stats_read, &reports);
1711 } 1737 }
1712 1738
1713 } // namespace webrtc 1739 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698