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

Unified Diff: webrtc/api/rtcstatscollector_unittest.cc

Issue 2390693003: RTCIceCandidatePairStats added. (Closed)
Patch Set: Addressed comments (added requests_sent/responses_sent) Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/api/rtcstatscollector.cc ('k') | webrtc/api/stats/rtcstats_objects.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 0da772fb97d3767682f5493442da9b41b6fa61c3..c8eed9febbaed7c84e9411dabfb1173488b6d468 100644
--- a/webrtc/api/rtcstatscollector_unittest.cc
+++ b/webrtc/api/rtcstatscollector_unittest.cc
@@ -331,12 +331,11 @@ class RTCStatsCollectorTest : public testing::Test {
return callback->report();
}
- void ExpectReportContainsCandidate(
+ const RTCIceCandidateStats* ExpectReportContainsCandidate(
const rtc::scoped_refptr<const RTCStatsReport>& report,
const cricket::Candidate& candidate,
bool is_local) {
- const RTCStats* stats =
- report->Get("RTCIceCandidate_" + candidate.id());
+ const RTCStats* stats = report->Get("RTCIceCandidate_" + candidate.id());
EXPECT_TRUE(stats);
const RTCIceCandidateStats* candidate_stats;
if (is_local)
@@ -353,6 +352,69 @@ class RTCStatsCollectorTest : public testing::Test {
static_cast<int32_t>(candidate.priority()));
// TODO(hbos): Define candidate_stats->url. crbug.com/632723
EXPECT_FALSE(candidate_stats->url.is_defined());
+ 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);
+ EXPECT_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 rtcstatscollector.cc. 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(
@@ -659,6 +721,43 @@ TEST_F(RTCStatsCollectorTest, CollectRTCIceCandidateStats) {
ExpectReportContainsCandidate(report, *b_remote.get(), false);
}
+TEST_F(RTCStatsCollectorTest, CollectRTCIceCandidatePairStats) {
+ std::unique_ptr<cricket::Candidate> local_candidate = CreateFakeCandidate(
+ "42.42.42.42", 42, "protocol", cricket::LOCAL_PORT_TYPE, 42);
+ std::unique_ptr<cricket::Candidate> remote_candidate = CreateFakeCandidate(
+ "42.42.42.42", 42, "protocol", cricket::LOCAL_PORT_TYPE, 42);
+
+ SessionStats session_stats;
+
+ cricket::ConnectionInfo connection_info;
+ connection_info.local_candidate = *local_candidate.get();
+ connection_info.remote_candidate = *remote_candidate.get();
+ connection_info.writable = true;
+ connection_info.sent_total_bytes = 42;
+ connection_info.recv_total_bytes = 1234;
+ connection_info.rtt = 1337;
+ connection_info.sent_ping_requests_total = 1010;
+ connection_info.recv_ping_responses = 4321;
+ connection_info.sent_ping_responses = 1000;
+
+ cricket::TransportChannelStats transport_channel_stats;
+ 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(
+ transport_channel_stats);
+
+ // Mock the session to return the desired candidates.
+ EXPECT_CALL(test_->session(), GetTransportStats(_)).WillRepeatedly(Invoke(
+ [this, &session_stats](SessionStats* stats) {
+ *stats = session_stats;
+ return true;
+ }));
+
+ rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
+ ExpectReportContainsCandidatePair(
+ report, session_stats.transport_stats["transport"]);
+}
+
TEST_F(RTCStatsCollectorTest, CollectRTCPeerConnectionStats) {
int64_t before = rtc::TimeUTCMicros();
rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
« no previous file with comments | « webrtc/api/rtcstatscollector.cc ('k') | webrtc/api/stats/rtcstats_objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698