Ensure FakeNetwork propages arrival_time

Bug: webrtc:14833
Change-Id: I584524cca81e17ac91d581daab6030705ad68dac
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/291104
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Auto-Submit: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39148}
This commit is contained in:
Per K 2023-01-19 15:11:07 +01:00 committed by WebRTC LUCI CQ
parent 9f9671fe7f
commit 4abca6699d
3 changed files with 30 additions and 0 deletions

View File

@ -670,6 +670,7 @@ if (rtc_include_tests) {
"../api:simulated_network_api",
"../api/units:data_rate",
"../api/units:time_delta",
"../api/units:timestamp",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../rtc_base:checks",
"../system_wrappers",

View File

@ -70,6 +70,9 @@ class NetworkPacket {
bool is_rtcp() const { return is_rtcp_; }
MediaType media_type() const { return media_type_; }
absl::optional<int64_t> packet_time_us() const { return packet_time_us_; }
RtpPacketReceived* packet_received() {
return packet_received_ ? &packet_received_.value() : nullptr;
}
absl::optional<RtpPacketReceived> packet_received() const {
return packet_received_;
}

View File

@ -13,6 +13,8 @@
#include <memory>
#include <utility>
#include "api/units/time_delta.h"
#include "api/units/timestamp.h"
#include "call/simulated_network.h"
#include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
#include "modules/rtp_rtcp/source/rtp_header_extensions.h"
@ -441,6 +443,30 @@ TEST_F(FakeNetworkPipeTest, SetReceiver) {
pipe->Process();
}
TEST_F(FakeNetworkPipeTest, DeliverRtpPacketSetsCorrectArrivalTime) {
BuiltInNetworkBehaviorConfig config;
config.queue_delay_ms = 100;
MockReceiver receiver;
auto simulated_network = std::make_unique<SimulatedNetwork>(config);
std::unique_ptr<FakeNetworkPipe> pipe(new FakeNetworkPipe(
&fake_clock_, std::move(simulated_network), &receiver));
Timestamp send_time = fake_clock_.CurrentTime();
RtpPacketReceived packet(nullptr, send_time);
packet.SetExtension<TransportSequenceNumber>(123);
pipe->DeliverRtpPacket(MediaType::VIDEO, std::move(packet),
[](const RtpPacketReceived&) { return false; });
// Advance the network delay to get the first packet.
fake_clock_.AdvanceTimeMilliseconds(config.queue_delay_ms);
EXPECT_CALL(receiver, DeliverRtpPacket(MediaType::VIDEO, _, _))
.WillOnce(WithArg<1>([&](RtpPacketReceived packet) {
EXPECT_EQ(packet.arrival_time(),
send_time + TimeDelta::Millis(config.queue_delay_ms));
}));
pipe->Process();
}
TEST_F(FakeNetworkPipeTest, DeliverRtpPacketPropagatesExtensions) {
BuiltInNetworkBehaviorConfig config;
config.queue_delay_ms = 100;