Add list of local_addresses for network stats object
local_addresses is a list of IPs that were used to send data, which was
used during stats calculation.
Bug: webrtc:11756
Change-Id: Ie6307eaa69c73ebe9f69e44503752151be9e9ef6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/179841
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Reviewed-by: Andrey Logvin <landrey@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31774}
diff --git a/api/test/network_emulation/network_emulation_interfaces.h b/api/test/network_emulation/network_emulation_interfaces.h
index d27319e..260ab0e 100644
--- a/api/test/network_emulation/network_emulation_interfaces.h
+++ b/api/test/network_emulation/network_emulation_interfaces.h
@@ -11,6 +11,7 @@
#define API_TEST_NETWORK_EMULATION_NETWORK_EMULATION_INTERFACES_H_
#include <map>
+#include <vector>
#include "absl/types/optional.h"
#include "api/units/data_rate.h"
@@ -93,6 +94,10 @@
Timestamp first_packet_sent_time = Timestamp::PlusInfinity();
Timestamp last_packet_sent_time = Timestamp::MinusInfinity();
+ // List of IP addresses that were used to send data considered in this stats
+ // object.
+ std::vector<rtc::IPAddress> local_addresses;
+
std::map<rtc::IPAddress, EmulatedNetworkIncomingStats>
incoming_stats_per_source;
diff --git a/test/network/network_emulation.cc b/test/network/network_emulation.cc
index 37e307e..f3e2931 100644
--- a/test/network/network_emulation.cc
+++ b/test/network/network_emulation.cc
@@ -196,6 +196,7 @@
network_->AddIP(ip);
enabled_state_checker_.Detach();
+ stats_.local_addresses.push_back(peer_local_addr_);
}
EmulatedEndpointImpl::~EmulatedEndpointImpl() = default;
@@ -389,6 +390,9 @@
if (stats.last_packet_sent_time < endpoint_stats.last_packet_sent_time) {
stats.last_packet_sent_time = endpoint_stats.last_packet_sent_time;
}
+ for (const rtc::IPAddress& addr : endpoint_stats.local_addresses) {
+ stats.local_addresses.push_back(addr);
+ }
for (auto& entry : endpoint_stats.incoming_stats_per_source) {
const EmulatedNetworkIncomingStats& source = entry.second;
EmulatedNetworkIncomingStats& in_stats =
diff --git a/test/network/network_emulation_unittest.cc b/test/network/network_emulation_unittest.cc
index fa10b1e..ff85390 100644
--- a/test/network/network_emulation_unittest.cc
+++ b/test/network/network_emulation_unittest.cc
@@ -29,6 +29,8 @@
namespace test {
namespace {
+using ::testing::ElementsAreArray;
+
constexpr TimeDelta kNetworkPacketWaitTimeout = TimeDelta::Millis(100);
constexpr TimeDelta kStatsWaitTimeout = TimeDelta::Seconds(1);
constexpr int kOverheadIpv4Udp = 20 + 8;
@@ -248,6 +250,8 @@
nt1->GetStats([&](EmulatedNetworkStats st) {
EXPECT_EQ(st.packets_sent, 2000l);
EXPECT_EQ(st.bytes_sent.bytes(), single_packet_size * 2000l);
+ EXPECT_THAT(st.local_addresses,
+ ElementsAreArray({alice_endpoint->GetPeerLocalAddress()}));
EXPECT_EQ(st.PacketsReceived(), 2000l);
EXPECT_EQ(st.BytesReceived().bytes(), single_packet_size * 2000l);
EXPECT_EQ(st.PacketsDropped(), 0l);
@@ -270,6 +274,8 @@
nt2->GetStats([&](EmulatedNetworkStats st) {
EXPECT_EQ(st.packets_sent, 2000l);
EXPECT_EQ(st.bytes_sent.bytes(), single_packet_size * 2000l);
+ EXPECT_THAT(st.local_addresses,
+ ElementsAreArray({bob_endpoint->GetPeerLocalAddress()}));
EXPECT_EQ(st.PacketsReceived(), 2000l);
EXPECT_EQ(st.BytesReceived().bytes(), single_packet_size * 2000l);
EXPECT_EQ(st.PacketsDropped(), 0l);