Add support for loopback route on emulated endpoints
Bug: b/172995851 Change-Id: I70b5ec6cd84784dcc452e8f96a02f4be849fa0f7 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/192920 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Artem Titov <titovartem@webrtc.org> Cr-Commit-Position: refs/heads/master@{#32596}
This commit is contained in:
@ -469,7 +469,11 @@ void EmulatedEndpointImpl::SendPacket(const rtc::SocketAddress& from,
|
||||
packet.arrival_time, clock_->CurrentTime(), packet.to.ipaddr(),
|
||||
DataSize::Bytes(packet.ip_packet_size()), stats_gathering_mode_);
|
||||
|
||||
router_.OnPacketReceived(std::move(packet));
|
||||
if (packet.to.ipaddr() == peer_local_addr_) {
|
||||
OnPacketReceived(std::move(packet));
|
||||
} else {
|
||||
router_.OnPacketReceived(std::move(packet));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -554,5 +554,19 @@ TEST_F(NetworkEmulationManagerThreeNodesRoutingTest,
|
||||
SendPacketsAndValidateDelivery();
|
||||
}
|
||||
|
||||
TEST(NetworkEmulationManagerTest, EndpointLoopback) {
|
||||
NetworkEmulationManagerImpl network_manager(TimeMode::kSimulated);
|
||||
auto endpoint = network_manager.CreateEndpoint(EmulatedEndpointConfig());
|
||||
|
||||
MockReceiver receiver;
|
||||
EXPECT_CALL(receiver, OnPacketReceived(::testing::_)).Times(1);
|
||||
ASSERT_EQ(endpoint->BindReceiver(80, &receiver), 80);
|
||||
|
||||
endpoint->SendPacket(rtc::SocketAddress(endpoint->GetPeerLocalAddress(), 80),
|
||||
rtc::SocketAddress(endpoint->GetPeerLocalAddress(), 80),
|
||||
"Hello");
|
||||
network_manager.time_controller()->AdvanceTime(TimeDelta::Seconds(1));
|
||||
}
|
||||
|
||||
} // namespace test
|
||||
} // namespace webrtc
|
||||
|
||||
Reference in New Issue
Block a user