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

Unified Diff: webrtc/api/rtcstatscollector_unittest.cc

Issue 2527113002: Collecting RTCIceCandidatePairStats.transport_id and improved unittests (Closed)
Patch Set: Rebase with master and update rtcstats_integrationtest.cc to include transport_id Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/api/rtcstatscollector.cc ('k') | webrtc/api/stats/rtcstats.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/api/rtcstatscollector_unittest.cc
diff --git a/webrtc/api/rtcstatscollector_unittest.cc b/webrtc/api/rtcstatscollector_unittest.cc
index e4c311836776be9b633a0ef663901cc6110e2d20..37356e00428a493d34fdb5ea6d9e965745f3ca86 100644
--- a/webrtc/api/rtcstatscollector_unittest.cc
+++ b/webrtc/api/rtcstatscollector_unittest.cc
@@ -516,68 +516,6 @@ class RTCStatsCollectorTest : public testing::Test {
return candidate_stats;
}
- void ExpectReportContainsCandidatePair(
- const rtc::scoped_refptr<const RTCStatsReport>& report,
- const cricket::TransportStats& transport_stats) {
- for (const auto& channel_stats : transport_stats.channel_stats) {
- for (const cricket::ConnectionInfo& info :
- channel_stats.connection_infos) {
- const std::string& id = "RTCIceCandidatePair_" +
- info.local_candidate.id() + "_" + info.remote_candidate.id();
- const RTCStats* stats = report->Get(id);
- ASSERT_TRUE(stats);
- const RTCIceCandidatePairStats& candidate_pair_stats =
- stats->cast_to<RTCIceCandidatePairStats>();
-
- // TODO(hbos): Define all the undefined |candidate_pair_stats| stats.
- // The EXPECT_FALSE are for the undefined stats, see also todos listed
- // in rtcstats_objects.h. crbug.com/633550
- EXPECT_FALSE(candidate_pair_stats.transport_id.is_defined());
- const RTCIceCandidateStats* local_candidate =
- ExpectReportContainsCandidate(report, info.local_candidate, true);
- EXPECT_EQ(*candidate_pair_stats.local_candidate_id,
- local_candidate->id());
- const RTCIceCandidateStats* remote_candidate =
- ExpectReportContainsCandidate(report, info.remote_candidate, false);
- EXPECT_EQ(*candidate_pair_stats.remote_candidate_id,
- remote_candidate->id());
-
- EXPECT_FALSE(candidate_pair_stats.state.is_defined());
- EXPECT_FALSE(candidate_pair_stats.priority.is_defined());
- EXPECT_FALSE(candidate_pair_stats.nominated.is_defined());
- EXPECT_EQ(*candidate_pair_stats.writable, info.writable);
- EXPECT_FALSE(candidate_pair_stats.readable.is_defined());
- EXPECT_EQ(*candidate_pair_stats.bytes_sent,
- static_cast<uint64_t>(info.sent_total_bytes));
- EXPECT_EQ(*candidate_pair_stats.bytes_received,
- static_cast<uint64_t>(info.recv_total_bytes));
- EXPECT_FALSE(candidate_pair_stats.total_rtt.is_defined());
- EXPECT_EQ(*candidate_pair_stats.current_rtt,
- static_cast<double>(info.rtt) / 1000.0);
- EXPECT_FALSE(
- candidate_pair_stats.available_outgoing_bitrate.is_defined());
- EXPECT_FALSE(
- candidate_pair_stats.available_incoming_bitrate.is_defined());
- EXPECT_FALSE(candidate_pair_stats.requests_received.is_defined());
- EXPECT_EQ(*candidate_pair_stats.requests_sent,
- static_cast<uint64_t>(info.sent_ping_requests_total));
- EXPECT_EQ(*candidate_pair_stats.responses_received,
- static_cast<uint64_t>(info.recv_ping_responses));
- EXPECT_EQ(*candidate_pair_stats.responses_sent,
- static_cast<uint64_t>(info.sent_ping_responses));
- EXPECT_FALSE(
- candidate_pair_stats.retransmissions_received.is_defined());
- EXPECT_FALSE(candidate_pair_stats.retransmissions_sent.is_defined());
- EXPECT_FALSE(
- candidate_pair_stats.consent_requests_received.is_defined());
- EXPECT_FALSE(candidate_pair_stats.consent_requests_sent.is_defined());
- EXPECT_FALSE(
- candidate_pair_stats.consent_responses_received.is_defined());
- EXPECT_FALSE(candidate_pair_stats.consent_responses_sent.is_defined());
- }
- }
- }
-
void ExpectReportContainsCertificateInfo(
const rtc::scoped_refptr<const RTCStatsReport>& report,
const CertificateInfo& cert_info) {
@@ -599,72 +537,6 @@ class RTCStatsCollectorTest : public testing::Test {
}
}
- void ExpectReportContainsTransportStats(
- const rtc::scoped_refptr<const RTCStatsReport>& report,
- const cricket::TransportStats& transport,
- const CertificateInfo* local_certinfo,
- const CertificateInfo* remote_certinfo) {
- std::string rtcp_transport_stats_id;
- for (const auto& channel_stats : transport.channel_stats) {
- if (channel_stats.component == cricket::ICE_CANDIDATE_COMPONENT_RTCP) {
- rtcp_transport_stats_id = "RTCTransport_" + transport.transport_name +
- "_" + rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTCP);
- }
- }
- for (const auto& channel_stats : transport.channel_stats) {
- const cricket::ConnectionInfo* best_connection_info = nullptr;
- const RTCStats* stats = report->Get(
- "RTCTransport_" + transport.transport_name + "_" +
- rtc::ToString<>(channel_stats.component));
- ASSERT_TRUE(stats);
- const RTCTransportStats& transport_stats =
- stats->cast_to<const RTCTransportStats>();
- uint64_t bytes_sent = 0;
- uint64_t bytes_received = 0;
- for (const cricket::ConnectionInfo& info :
- channel_stats.connection_infos) {
- bytes_sent += info.sent_total_bytes;
- bytes_received += info.recv_total_bytes;
- if (info.best_connection)
- best_connection_info = &info;
- }
- EXPECT_EQ(*transport_stats.bytes_sent, bytes_sent);
- EXPECT_EQ(*transport_stats.bytes_received, bytes_received);
- if (best_connection_info) {
- EXPECT_EQ(*transport_stats.active_connection, true);
- // TODO(hbos): Instead of testing how the ID looks, test that the
- // corresponding pair's IP addresses are equal to the IP addresses of
- // the |best_connection_info| data. crbug.com/653873
- EXPECT_EQ(*transport_stats.selected_candidate_pair_id,
- "RTCIceCandidatePair_" +
- best_connection_info->local_candidate.id() + "_" +
- best_connection_info->remote_candidate.id());
- EXPECT_TRUE(report->Get(*transport_stats.selected_candidate_pair_id));
- } else {
- EXPECT_EQ(*transport_stats.active_connection, false);
- EXPECT_FALSE(transport_stats.selected_candidate_pair_id.is_defined());
- }
- if (channel_stats.component != cricket::ICE_CANDIDATE_COMPONENT_RTCP &&
- !rtcp_transport_stats_id.empty()) {
- EXPECT_EQ(*transport_stats.rtcp_transport_stats_id,
- rtcp_transport_stats_id);
- } else {
- EXPECT_FALSE(transport_stats.rtcp_transport_stats_id.is_defined());
- }
- if (local_certinfo && remote_certinfo) {
- EXPECT_EQ(*transport_stats.local_certificate_id,
- "RTCCertificate_" + local_certinfo->fingerprints[0]);
- EXPECT_EQ(*transport_stats.remote_certificate_id,
- "RTCCertificate_" + remote_certinfo->fingerprints[0]);
- EXPECT_TRUE(report->Get(*transport_stats.local_certificate_id));
- EXPECT_TRUE(report->Get(*transport_stats.remote_certificate_id));
- } else {
- EXPECT_FALSE(transport_stats.local_certificate_id.is_defined());
- EXPECT_FALSE(transport_stats.remote_certificate_id.is_defined());
- }
- }
- }
-
void ExpectReportContainsDataChannel(
const rtc::scoped_refptr<const RTCStatsReport>& report,
const DataChannel& data_channel) {
@@ -1138,6 +1010,7 @@ TEST_F(RTCStatsCollectorTest, CollectRTCIceCandidatePairStats) {
connection_info.sent_ping_responses = 1000;
cricket::TransportChannelStats transport_channel_stats;
+ transport_channel_stats.component = cricket::ICE_CANDIDATE_COMPONENT_RTP;
transport_channel_stats.connection_infos.push_back(connection_info);
session_stats.transport_stats["transport"].transport_name = "transport";
session_stats.transport_stats["transport"].channel_stats.push_back(
@@ -1151,8 +1024,35 @@ TEST_F(RTCStatsCollectorTest, CollectRTCIceCandidatePairStats) {
}));
rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
- ExpectReportContainsCandidatePair(
- report, session_stats.transport_stats["transport"]);
+
+ RTCIceCandidatePairStats expected_pair("RTCIceCandidatePair_" +
+ local_candidate->id() + "_" +
+ remote_candidate->id(),
+ report->timestamp_us());
+ expected_pair.transport_id =
+ "RTCTransport_transport_" +
+ rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP);
+ expected_pair.local_candidate_id = "RTCIceCandidate_" + local_candidate->id();
+ expected_pair.remote_candidate_id =
+ "RTCIceCandidate_" + remote_candidate->id();
+ expected_pair.writable = true;
+ expected_pair.bytes_sent = 42;
+ expected_pair.bytes_received = 1234;
+ expected_pair.current_rtt = 1.337;
+ expected_pair.requests_sent = 1010;
+ expected_pair.responses_received = 4321;
+ expected_pair.responses_sent = 1000;
+
+ EXPECT_TRUE(report->Get(expected_pair.id()));
+ EXPECT_EQ(
+ expected_pair,
+ report->Get(expected_pair.id())->cast_to<RTCIceCandidatePairStats>());
+
+ EXPECT_TRUE(report->Get(*expected_pair.local_candidate_id));
+ ExpectReportContainsCandidate(report, connection_info.local_candidate, true);
+ EXPECT_TRUE(report->Get(*expected_pair.remote_candidate_id));
+ ExpectReportContainsCandidate(report, connection_info.remote_candidate,
+ false);
}
TEST_F(RTCStatsCollectorTest, CollectRTCPeerConnectionStats) {
@@ -1713,8 +1613,19 @@ TEST_F(RTCStatsCollectorTest, CollectRTCTransportStats) {
// Get stats without RTCP, an active connection or certificates.
rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
- ExpectReportContainsTransportStats(
- report, session_stats.transport_stats["transport"], nullptr, nullptr);
+
+ RTCTransportStats expected_rtp_transport(
+ "RTCTransport_transport_" +
+ rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTP),
+ report->timestamp_us());
+ expected_rtp_transport.bytes_sent = 42;
+ expected_rtp_transport.bytes_received = 1337;
+ expected_rtp_transport.active_connection = false;
+
+ EXPECT_TRUE(report->Get(expected_rtp_transport.id()));
+ EXPECT_EQ(
+ expected_rtp_transport,
+ report->Get(expected_rtp_transport.id())->cast_to<RTCTransportStats>());
cricket::ConnectionInfo rtcp_connection_info;
rtcp_connection_info.best_connection = false;
@@ -1732,16 +1643,48 @@ TEST_F(RTCStatsCollectorTest, CollectRTCTransportStats) {
collector_->ClearCachedStatsReport();
// Get stats with RTCP and without an active connection or certificates.
report = GetStatsReport();
- ExpectReportContainsTransportStats(
- report, session_stats.transport_stats["transport"], nullptr, nullptr);
+
+ RTCTransportStats expected_rtcp_transport(
+ "RTCTransport_transport_" +
+ rtc::ToString<>(cricket::ICE_CANDIDATE_COMPONENT_RTCP),
+ report->timestamp_us());
+ expected_rtcp_transport.bytes_sent = 1337;
+ expected_rtcp_transport.bytes_received = 42;
+ expected_rtcp_transport.active_connection = false;
+
+ expected_rtp_transport.rtcp_transport_stats_id = expected_rtcp_transport.id();
+
+ EXPECT_TRUE(report->Get(expected_rtp_transport.id()));
+ EXPECT_EQ(
+ expected_rtp_transport,
+ report->Get(expected_rtp_transport.id())->cast_to<RTCTransportStats>());
+ EXPECT_TRUE(report->Get(expected_rtcp_transport.id()));
+ EXPECT_EQ(
+ expected_rtcp_transport,
+ report->Get(expected_rtcp_transport.id())->cast_to<RTCTransportStats>());
// Get stats with an active connection.
- rtcp_connection_info.best_connection = true;
+ session_stats.transport_stats["transport"]
+ .channel_stats[1]
+ .connection_infos[0]
+ .best_connection = true;
collector_->ClearCachedStatsReport();
report = GetStatsReport();
- ExpectReportContainsTransportStats(
- report, session_stats.transport_stats["transport"], nullptr, nullptr);
+
+ expected_rtcp_transport.active_connection = true;
+ expected_rtcp_transport.selected_candidate_pair_id =
+ "RTCIceCandidatePair_" + rtcp_local_candidate->id() + "_" +
+ rtcp_remote_candidate->id();
+
+ EXPECT_TRUE(report->Get(expected_rtp_transport.id()));
+ EXPECT_EQ(
+ expected_rtp_transport,
+ report->Get(expected_rtp_transport.id())->cast_to<RTCTransportStats>());
+ EXPECT_TRUE(report->Get(expected_rtcp_transport.id()));
+ EXPECT_EQ(
+ expected_rtcp_transport,
+ report->Get(expected_rtcp_transport.id())->cast_to<RTCTransportStats>());
// Get stats with certificates.
std::unique_ptr<CertificateInfo> local_certinfo =
@@ -1769,9 +1712,25 @@ TEST_F(RTCStatsCollectorTest, CollectRTCTransportStats) {
collector_->ClearCachedStatsReport();
report = GetStatsReport();
- ExpectReportContainsTransportStats(
- report, session_stats.transport_stats["transport"],
- local_certinfo.get(), remote_certinfo.get());
+
+ expected_rtp_transport.local_certificate_id =
+ "RTCCertificate_" + local_certinfo->fingerprints[0];
+ expected_rtp_transport.remote_certificate_id =
+ "RTCCertificate_" + remote_certinfo->fingerprints[0];
+
+ expected_rtcp_transport.local_certificate_id =
+ *expected_rtp_transport.local_certificate_id;
+ expected_rtcp_transport.remote_certificate_id =
+ *expected_rtp_transport.remote_certificate_id;
+
+ EXPECT_TRUE(report->Get(expected_rtp_transport.id()));
+ EXPECT_EQ(
+ expected_rtp_transport,
+ report->Get(expected_rtp_transport.id())->cast_to<RTCTransportStats>());
+ EXPECT_TRUE(report->Get(expected_rtcp_transport.id()));
+ EXPECT_EQ(
+ expected_rtcp_transport,
+ report->Get(expected_rtcp_transport.id())->cast_to<RTCTransportStats>());
}
class RTCStatsCollectorTestWithFakeCollector : public testing::Test {
« no previous file with comments | « webrtc/api/rtcstatscollector.cc ('k') | webrtc/api/stats/rtcstats.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698