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

Unified Diff: webrtc/test/fake_network_pipe_unittest.cc

Issue 2794243002: Making FakeNetworkPipe demux audio and video packets. (Closed)
Patch Set: new solution Created 3 years, 8 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
Index: webrtc/test/fake_network_pipe_unittest.cc
diff --git a/webrtc/test/fake_network_pipe_unittest.cc b/webrtc/test/fake_network_pipe_unittest.cc
index c19b0014bb9f6cac21ce2a9d2bb1aa11bebb69e2..99d33dbe18b7ffc4a1fc9f98860fd3027d1fc0af 100644
--- a/webrtc/test/fake_network_pipe_unittest.cc
+++ b/webrtc/test/fake_network_pipe_unittest.cc
@@ -11,6 +11,7 @@
#include <memory>
#include "webrtc/call/call.h"
+#include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h"
#include "webrtc/system_wrappers/include/clock.h"
#include "webrtc/test/fake_network_pipe.h"
#include "webrtc/test/gmock.h"
@@ -23,6 +24,17 @@ using ::testing::Invoke;
namespace webrtc {
+namespace {
+
+constexpr uint8_t kDefaultVideoPayloadType = 102;
+
+constexpr size_t kMiniHeaderSize = 2;
+
+const std::map<uint8_t, MediaType> default_payload_type_map = {
+ {kDefaultVideoPayloadType, MediaType::VIDEO}};
+
+} // namespace
+
class TestReceiver : public PacketReceiver {
public:
TestReceiver() {}
@@ -47,8 +59,9 @@ class ReorderTestReceiver : public TestReceiver {
const uint8_t* packet,
size_t length,
const PacketTime& packet_time) override {
+ RTC_DCHECK_GE(length, kMiniHeaderSize + sizeof(int));
int seq_num;
- memcpy(&seq_num, packet, sizeof(int));
+ memcpy(&seq_num, &packet[kMiniHeaderSize], sizeof(int));
delivered_sequence_numbers_.push_back(seq_num);
return PacketReceiver::DELIVERY_OK;
}
@@ -69,13 +82,19 @@ class FakeNetworkPipeTest : public ::testing::Test {
virtual void TearDown() {
}
- void SendPackets(FakeNetworkPipe* pipe, int number_packets, int packet_size) {
- RTC_DCHECK_GE(packet_size, sizeof(int));
+ void SendPackets(FakeNetworkPipe* pipe,
+ int number_packets,
+ int packet_size,
+ uint8_t payload_type) {
+ RTC_DCHECK_GE(packet_size, kMiniHeaderSize + sizeof(int));
+ RTC_DCHECK_LE(payload_type, 0x7f);
+ // packet[0 .. 1] is reserved for header.
std::unique_ptr<uint8_t[]> packet(new uint8_t[packet_size]);
+ RTC_DCHECK(!RtpHeaderParser::IsRtcp(packet.get(), packet_size));
+ packet[1] = payload_type;
for (int i = 0; i < number_packets; ++i) {
- // Set a sequence number for the packets by
- // using the first bytes in the packet.
- memcpy(packet.get(), &i, sizeof(int));
+ // Insert a sequence number for the packets.
+ memcpy(&packet[kMiniHeaderSize], &i, sizeof(int));
pipe->SendPacket(packet.get(), packet_size);
}
}
@@ -96,14 +115,14 @@ TEST_F(FakeNetworkPipeTest, CapacityTest) {
config.queue_length_packets = 20;
config.link_capacity_kbps = 80;
std::unique_ptr<FakeNetworkPipe> pipe(
- new FakeNetworkPipe(&fake_clock_, config, MediaType::VIDEO));
+ new FakeNetworkPipe(&fake_clock_, config, default_payload_type_map));
pipe->SetReceiver(receiver_.get());
// Add 10 packets of 1000 bytes, = 80 kb, and verify it takes one second to
// get through the pipe.
const int kNumPackets = 10;
const int kPacketSize = 1000;
- SendPackets(pipe.get(), kNumPackets , kPacketSize);
+ SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultVideoPayloadType);
// Time to get one packet through the link.
const int kPacketTimeMs = PacketTimeMs(config.link_capacity_kbps,
@@ -135,13 +154,14 @@ TEST_F(FakeNetworkPipeTest, ExtraDelayTest) {
config.queue_length_packets = 20;
config.queue_delay_ms = 100;
config.link_capacity_kbps = 80;
- std::unique_ptr<FakeNetworkPipe> pipe(
- new FakeNetworkPipe(&fake_clock_, config, MediaType::AUDIO));
+ constexpr uint8_t kDefaultAudioPayloadType = 120;
+ std::unique_ptr<FakeNetworkPipe> pipe(new FakeNetworkPipe(
+ &fake_clock_, config, {{kDefaultAudioPayloadType, MediaType::AUDIO}}));
pipe->SetReceiver(receiver_.get());
const int kNumPackets = 2;
const int kPacketSize = 1000;
- SendPackets(pipe.get(), kNumPackets , kPacketSize);
+ SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultAudioPayloadType);
// Time to get one packet through the link.
const int kPacketTimeMs = PacketTimeMs(config.link_capacity_kbps,
@@ -170,7 +190,7 @@ TEST_F(FakeNetworkPipeTest, QueueLengthTest) {
config.queue_length_packets = 2;
config.link_capacity_kbps = 80;
std::unique_ptr<FakeNetworkPipe> pipe(
- new FakeNetworkPipe(&fake_clock_, config, MediaType::VIDEO));
+ new FakeNetworkPipe(&fake_clock_, config, default_payload_type_map));
pipe->SetReceiver(receiver_.get());
const int kPacketSize = 1000;
@@ -178,7 +198,7 @@ TEST_F(FakeNetworkPipeTest, QueueLengthTest) {
kPacketSize);
// Send three packets and verify only 2 are delivered.
- SendPackets(pipe.get(), 3, kPacketSize);
+ SendPackets(pipe.get(), 3, kPacketSize, kDefaultVideoPayloadType);
// Increase time enough to deliver all three packets, verify only two are
// delivered.
@@ -194,7 +214,7 @@ TEST_F(FakeNetworkPipeTest, StatisticsTest) {
config.queue_delay_ms = 20;
config.link_capacity_kbps = 80;
std::unique_ptr<FakeNetworkPipe> pipe(
- new FakeNetworkPipe(&fake_clock_, config, MediaType::VIDEO));
+ new FakeNetworkPipe(&fake_clock_, config, default_payload_type_map));
pipe->SetReceiver(receiver_.get());
const int kPacketSize = 1000;
@@ -202,7 +222,7 @@ TEST_F(FakeNetworkPipeTest, StatisticsTest) {
kPacketSize);
// Send three packets and verify only 2 are delivered.
- SendPackets(pipe.get(), 3, kPacketSize);
+ SendPackets(pipe.get(), 3, kPacketSize, kDefaultVideoPayloadType);
fake_clock_.AdvanceTimeMilliseconds(3 * kPacketTimeMs +
config.queue_delay_ms);
@@ -224,14 +244,14 @@ TEST_F(FakeNetworkPipeTest, ChangingCapacityWithEmptyPipeTest) {
config.queue_length_packets = 20;
config.link_capacity_kbps = 80;
std::unique_ptr<FakeNetworkPipe> pipe(
- new FakeNetworkPipe(&fake_clock_, config, MediaType::VIDEO));
+ new FakeNetworkPipe(&fake_clock_, config, default_payload_type_map));
pipe->SetReceiver(receiver_.get());
// Add 10 packets of 1000 bytes, = 80 kb, and verify it takes one second to
// get through the pipe.
const int kNumPackets = 10;
const int kPacketSize = 1000;
- SendPackets(pipe.get(), kNumPackets, kPacketSize);
+ SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultVideoPayloadType);
// Time to get one packet through the link.
int packet_time_ms = PacketTimeMs(config.link_capacity_kbps, kPacketSize);
@@ -253,7 +273,7 @@ TEST_F(FakeNetworkPipeTest, ChangingCapacityWithEmptyPipeTest) {
// Add another 10 packets of 1000 bytes, = 80 kb, and verify it takes two
// seconds to get them through the pipe.
- SendPackets(pipe.get(), kNumPackets, kPacketSize);
+ SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultVideoPayloadType);
// Time to get one packet through the link.
packet_time_ms = PacketTimeMs(config.link_capacity_kbps, kPacketSize);
@@ -282,14 +302,15 @@ TEST_F(FakeNetworkPipeTest, ChangingCapacityWithPacketsInPipeTest) {
FakeNetworkPipe::Config config;
config.queue_length_packets = 20;
config.link_capacity_kbps = 80;
- std::unique_ptr<FakeNetworkPipe> pipe(
- new FakeNetworkPipe(&fake_clock_, config, MediaType::AUDIO));
+ constexpr uint8_t kDefaultAudioPayloadType = 120;
+ std::unique_ptr<FakeNetworkPipe> pipe(new FakeNetworkPipe(
+ &fake_clock_, config, {{kDefaultAudioPayloadType, MediaType::AUDIO}}));
pipe->SetReceiver(receiver_.get());
// Add 10 packets of 1000 bytes, = 80 kb.
const int kNumPackets = 10;
const int kPacketSize = 1000;
- SendPackets(pipe.get(), kNumPackets, kPacketSize);
+ SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultAudioPayloadType);
// Time to get one packet through the link at the initial speed.
int packet_time_1_ms = PacketTimeMs(config.link_capacity_kbps, kPacketSize);
@@ -300,7 +321,7 @@ TEST_F(FakeNetworkPipeTest, ChangingCapacityWithPacketsInPipeTest) {
// Add another 10 packets of 1000 bytes, = 80 kb, and verify it takes two
// seconds to get them through the pipe.
- SendPackets(pipe.get(), kNumPackets, kPacketSize);
+ SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultAudioPayloadType);
// Time to get one packet through the link at the new capacity.
int packet_time_2_ms = PacketTimeMs(config.link_capacity_kbps, kPacketSize);
@@ -337,15 +358,15 @@ TEST_F(FakeNetworkPipeTest, DisallowReorderingThenAllowReordering) {
config.link_capacity_kbps = 800;
config.queue_delay_ms = 100;
config.delay_standard_deviation_ms = 10;
- std::unique_ptr<FakeNetworkPipe> pipe(
- new FakeNetworkPipe(&fake_clock_, config, MediaType::VIDEO));
+ std::unique_ptr<FakeNetworkPipe> pipe(new FakeNetworkPipe(
+ &fake_clock_, config, {{kDefaultVideoPayloadType, MediaType::VIDEO}}));
ReorderTestReceiver* receiver = new ReorderTestReceiver();
receiver_.reset(receiver);
pipe->SetReceiver(receiver_.get());
const uint32_t kNumPackets = 100;
const int kPacketSize = 10;
- SendPackets(pipe.get(), kNumPackets, kPacketSize);
+ SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultVideoPayloadType);
fake_clock_.AdvanceTimeMilliseconds(1000);
pipe->Process();
@@ -359,7 +380,7 @@ TEST_F(FakeNetworkPipeTest, DisallowReorderingThenAllowReordering) {
config.allow_reordering = true;
pipe->SetConfig(config);
- SendPackets(pipe.get(), kNumPackets, kPacketSize);
+ SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultVideoPayloadType);
fake_clock_.AdvanceTimeMilliseconds(1000);
receiver->delivered_sequence_numbers_.clear();
pipe->Process();
@@ -389,13 +410,13 @@ TEST_F(FakeNetworkPipeTest, BurstLoss) {
config.queue_length_packets = kNumPackets;
config.loss_percent = kLossPercent;
config.avg_burst_loss_length = kAvgBurstLength;
- std::unique_ptr<FakeNetworkPipe> pipe(
- new FakeNetworkPipe(&fake_clock_, config, MediaType::VIDEO));
+ std::unique_ptr<FakeNetworkPipe> pipe(new FakeNetworkPipe(
+ &fake_clock_, config, {{kDefaultVideoPayloadType, MediaType::VIDEO}}));
ReorderTestReceiver* receiver = new ReorderTestReceiver();
receiver_.reset(receiver);
pipe->SetReceiver(receiver_.get());
- SendPackets(pipe.get(), kNumPackets, kPacketSize);
+ SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultVideoPayloadType);
fake_clock_.AdvanceTimeMilliseconds(1000);
pipe->Process();

Powered by Google App Engine
This is Rietveld 408576698