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

Unified Diff: webrtc/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc

Issue 1739273002: [Draft] RtpPacket sketched. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase to use landed version of rtp::Packet Created 4 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/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc
index a406d8bc9b436be90f870ced401e15ecfcc2d6fa..5e5689bd106af8ef2c33a2f1c06ac8e24212cfb5 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc
@@ -14,6 +14,7 @@
#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h"
#include "webrtc/modules/rtp_rtcp/source/rtp_packet_history.h"
+#include "webrtc/modules/rtp_rtcp/source/rtp_packet_to_send.h"
#include "webrtc/system_wrappers/include/clock.h"
#include "webrtc/typedefs.h"
@@ -21,271 +22,179 @@ namespace webrtc {
class RtpPacketHistoryTest : public ::testing::Test {
protected:
- RtpPacketHistoryTest()
- : fake_clock_(123456),
- hist_(new RTPPacketHistory(&fake_clock_)) {
- }
- ~RtpPacketHistoryTest() {
- delete hist_;
- }
+ static const int8_t kPayload = 127;
+ static const uint32_t kSsrc = 12345678;
+ static const uint16_t kSeqNum = 88;
+ static const uint32_t kTimestamp = 127;
+ static const size_t kMaxPacketLength = 1500;
+
+ RtpPacketHistoryTest() : fake_clock_(123456), hist_(&fake_clock_) {}
SimulatedClock fake_clock_;
- RTPPacketHistory* hist_;
- enum {kPayload = 127};
- enum {kSsrc = 12345678};
- enum {kSeqNum = 88};
- enum {kTimestamp = 127};
- enum {kMaxPacketLength = 1500};
- uint8_t packet_[kMaxPacketLength];
- uint8_t packet_out_[kMaxPacketLength];
-
- void CreateRtpPacket(uint16_t seq_num, uint32_t ssrc, uint8_t payload,
- uint32_t timestamp, uint8_t* array, size_t* cur_pos) {
- array[(*cur_pos)++] = 0x80;
- array[(*cur_pos)++] = payload;
- array[(*cur_pos)++] = seq_num >> 8;
- array[(*cur_pos)++] = seq_num;
- array[(*cur_pos)++] = timestamp >> 24;
- array[(*cur_pos)++] = timestamp >> 16;
- array[(*cur_pos)++] = timestamp >> 8;
- array[(*cur_pos)++] = timestamp;
- array[(*cur_pos)++] = ssrc >> 24;
- array[(*cur_pos)++] = ssrc >> 16;
- array[(*cur_pos)++] = ssrc >> 8;
- array[(*cur_pos)++] = ssrc;
+ RTPPacketHistory hist_;
+
+ static std::unique_ptr<RtpPacketToSend> CreateRtpPacket(uint16_t seq_num,
+ uint32_t ssrc,
+ uint8_t payload,
+ uint32_t timestamp) {
+ std::unique_ptr<RtpPacketToSend> ret(
+ new RtpPacketToSend(nullptr, kMaxPacketLength));
+ ret->SetPayloadType(payload);
+ ret->SetSequenceNumber(seq_num);
+ ret->SetTimestamp(timestamp);
+ ret->SetSsrc(ssrc);
+ return ret;
}
};
-TEST_F(RtpPacketHistoryTest, SetStoreStatus) {
- EXPECT_FALSE(hist_->StorePackets());
- hist_->SetStorePacketsStatus(true, 10);
- EXPECT_TRUE(hist_->StorePackets());
- hist_->SetStorePacketsStatus(false, 0);
- EXPECT_FALSE(hist_->StorePackets());
-}
-
TEST_F(RtpPacketHistoryTest, NoStoreStatus) {
- EXPECT_FALSE(hist_->StorePackets());
size_t len = 0;
- int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
- CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp, packet_, &len);
- EXPECT_EQ(0, hist_->PutRTPPacket(packet_, len, capture_time_ms,
- kAllowRetransmission));
+ auto packet = CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp);
+ hist_.PutRtpPacket(&packet, kAllowRetransmission);
// Packet should not be stored.
len = kMaxPacketLength;
- int64_t time;
- EXPECT_FALSE(hist_->GetPacketAndSetSendTime(kSeqNum, 0, false, packet_, &len,
- &time));
-}
-
-TEST_F(RtpPacketHistoryTest, PutRtpPacket_TooLargePacketLength) {
- hist_->SetStorePacketsStatus(true, 10);
- int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
- EXPECT_EQ(-1, hist_->PutRTPPacket(packet_, kMaxPacketLength + 1,
- capture_time_ms, kAllowRetransmission));
+ EXPECT_FALSE(hist_.GetPacket(kSeqNum, 0, false));
+ // Because packet wasn't stored, it should not be deleted.
+ EXPECT_TRUE(packet);
}
TEST_F(RtpPacketHistoryTest, GetRtpPacket_NotStored) {
- hist_->SetStorePacketsStatus(true, 10);
- size_t len = kMaxPacketLength;
- int64_t time;
- EXPECT_FALSE(hist_->GetPacketAndSetSendTime(0, 0, false, packet_, &len,
- &time));
+ hist_.SetStoreSize(10);
+ EXPECT_FALSE(hist_.GetPacket(0, 0, false));
}
TEST_F(RtpPacketHistoryTest, PutRtpPacket) {
- hist_->SetStorePacketsStatus(true, 10);
- size_t len = 0;
- CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp, packet_, &len);
+ hist_.SetStoreSize(10);
+ auto packet = CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp);
- EXPECT_FALSE(hist_->HasRTPPacket(kSeqNum));
- int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
- EXPECT_EQ(0, hist_->PutRTPPacket(packet_, len, capture_time_ms,
- kAllowRetransmission));
- EXPECT_TRUE(hist_->HasRTPPacket(kSeqNum));
+ EXPECT_FALSE(hist_.HasRTPPacket(kSeqNum));
+ hist_.PutRtpPacket(&packet, kAllowRetransmission);
+ EXPECT_TRUE(hist_.HasRTPPacket(kSeqNum));
}
TEST_F(RtpPacketHistoryTest, GetRtpPacket) {
- hist_->SetStorePacketsStatus(true, 10);
- size_t len = 0;
- int64_t capture_time_ms = 1;
- CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp, packet_, &len);
- EXPECT_EQ(0, hist_->PutRTPPacket(packet_, len, capture_time_ms,
- kAllowRetransmission));
-
- size_t len_out = kMaxPacketLength;
- int64_t time;
- EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum, 0, false, packet_out_,
- &len_out, &time));
- EXPECT_EQ(len, len_out);
- EXPECT_EQ(capture_time_ms, time);
- for (size_t i = 0; i < len; i++) {
- EXPECT_EQ(packet_[i], packet_out_[i]);
- }
+ hist_.SetStoreSize(10);
+ auto packet = CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp);
+ auto stored = hist_.PutRtpPacket(&packet, kAllowRetransmission);
+
+ EXPECT_EQ(stored, hist_.GetPacket(kSeqNum, 0, false));
}
TEST_F(RtpPacketHistoryTest, NoCaptureTime) {
- hist_->SetStorePacketsStatus(true, 10);
- size_t len = 0;
+ hist_.SetStoreSize(10);
+ auto packet = CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp);
fake_clock_.AdvanceTimeMilliseconds(1);
- int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
- CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp, packet_, &len);
- EXPECT_EQ(0, hist_->PutRTPPacket(packet_, len, -1, kAllowRetransmission));
-
- size_t len_out = kMaxPacketLength;
- int64_t time;
- EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum, 0, false, packet_out_,
- &len_out, &time));
- EXPECT_EQ(len, len_out);
- EXPECT_EQ(capture_time_ms, time);
- for (size_t i = 0; i < len; i++) {
- EXPECT_EQ(packet_[i], packet_out_[i]);
- }
+ auto stored = hist_.PutRtpPacket(&packet, kAllowRetransmission);
+ EXPECT_EQ(fake_clock_.TimeInMilliseconds(), stored->capture_time_ms());
}
TEST_F(RtpPacketHistoryTest, DontRetransmit) {
- hist_->SetStorePacketsStatus(true, 10);
- size_t len = 0;
- int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
- CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp, packet_, &len);
- EXPECT_EQ(
- 0, hist_->PutRTPPacket(packet_, len, capture_time_ms, kDontRetransmit));
-
- size_t len_out = kMaxPacketLength;
- int64_t time;
- EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum, 0, false, packet_out_,
- &len_out, &time));
- EXPECT_EQ(len, len_out);
- EXPECT_EQ(capture_time_ms, time);
+ hist_.SetStoreSize(10);
+
+ auto packet = CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp);
+ hist_.PutRtpPacket(&packet, kDontRetransmit);
+
+ EXPECT_TRUE(hist_.GetPacket(kSeqNum, 0, false));
}
TEST_F(RtpPacketHistoryTest, MinResendTime) {
static const int64_t kMinRetransmitIntervalMs = 100;
- hist_->SetStorePacketsStatus(true, 10);
- size_t len = 0;
- int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
- CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp, packet_, &len);
- EXPECT_EQ(0, hist_->PutRTPPacket(packet_, len, capture_time_ms,
- kAllowRetransmission));
+ hist_.SetStoreSize(10);
+ auto packet = CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp);
+ packet->set_capture_time_ms(fake_clock_.TimeInMilliseconds());
+ hist_.PutRtpPacket(&packet, kAllowRetransmission);
// First transmission: TimeToSendPacket() call from pacer.
- int64_t time;
- len = kMaxPacketLength;
- EXPECT_TRUE(
- hist_->GetPacketAndSetSendTime(kSeqNum, 0, false, packet_, &len, &time));
+ RtpPacketToSend* hist_packet = hist_.GetPacket(kSeqNum, 0, false);
+ EXPECT_TRUE(hist_packet);
+ hist_packet->set_send_time_ms(fake_clock_.TimeInMilliseconds());
fake_clock_.AdvanceTimeMilliseconds(kMinRetransmitIntervalMs);
// Time has elapsed.
- len = kMaxPacketLength;
- EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum, kMinRetransmitIntervalMs,
- true, packet_, &len, &time));
- EXPECT_GT(len, 0u);
- EXPECT_EQ(capture_time_ms, time);
+ hist_packet = hist_.GetPacket(kSeqNum, kMinRetransmitIntervalMs, true);
+ EXPECT_TRUE(hist_packet);
+ hist_packet->set_send_time_ms(fake_clock_.TimeInMilliseconds());
fake_clock_.AdvanceTimeMilliseconds(kMinRetransmitIntervalMs - 1);
// Time has not elapsed. Packet should be found, but no bytes copied.
- len = kMaxPacketLength;
- EXPECT_FALSE(hist_->GetPacketAndSetSendTime(kSeqNum, kMinRetransmitIntervalMs,
- true, packet_, &len, &time));
+ EXPECT_FALSE(hist_.GetPacket(kSeqNum, kMinRetransmitIntervalMs, true));
}
TEST_F(RtpPacketHistoryTest, EarlyFirstResend) {
static const int64_t kMinRetransmitIntervalMs = 100;
- hist_->SetStorePacketsStatus(true, 10);
- size_t len = 0;
- int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
- CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp, packet_, &len);
- EXPECT_EQ(0, hist_->PutRTPPacket(packet_, len, capture_time_ms,
- kAllowRetransmission));
+ hist_.SetStoreSize(10);
+ auto packet = CreateRtpPacket(kSeqNum, kSsrc, kPayload, kTimestamp);
+ packet->set_capture_time_ms(fake_clock_.TimeInMilliseconds());
+ hist_.PutRtpPacket(&packet, kAllowRetransmission);
// First transmission: TimeToSendPacket() call from pacer.
- int64_t time;
- len = kMaxPacketLength;
- EXPECT_TRUE(
- hist_->GetPacketAndSetSendTime(kSeqNum, 0, false, packet_, &len, &time));
+ RtpPacketToSend* hist_packet = hist_.GetPacket(kSeqNum, 0, false);
+ EXPECT_TRUE(hist_packet);
+ hist_packet->set_send_time_ms(fake_clock_.TimeInMilliseconds());
fake_clock_.AdvanceTimeMilliseconds(kMinRetransmitIntervalMs - 1);
// Time has not elapsed, but this is the first retransmission request so
// allow anyway.
- len = kMaxPacketLength;
- EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum, kMinRetransmitIntervalMs,
- true, packet_, &len, &time));
- EXPECT_GT(len, 0u);
- EXPECT_EQ(capture_time_ms, time);
+ hist_packet = hist_.GetPacket(kSeqNum, kMinRetransmitIntervalMs, true);
+ EXPECT_TRUE(hist_packet);
+ hist_packet->set_send_time_ms(fake_clock_.TimeInMilliseconds());
fake_clock_.AdvanceTimeMilliseconds(kMinRetransmitIntervalMs - 1);
// Time has not elapsed. Packet should be found, but no bytes copied.
- len = kMaxPacketLength;
- EXPECT_FALSE(hist_->GetPacketAndSetSendTime(kSeqNum, kMinRetransmitIntervalMs,
- true, packet_, &len, &time));
+ EXPECT_FALSE(hist_.GetPacket(kSeqNum, kMinRetransmitIntervalMs, true));
}
TEST_F(RtpPacketHistoryTest, DynamicExpansion) {
- hist_->SetStorePacketsStatus(true, 10);
- size_t len;
+ hist_.SetStoreSize(10);
int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
- int64_t time;
// Add 4 packets, and then send them.
for (int i = 0; i < 4; ++i) {
- len = 0;
- CreateRtpPacket(kSeqNum + i, kSsrc, kPayload, kTimestamp, packet_, &len);
- EXPECT_EQ(0, hist_->PutRTPPacket(packet_, len, capture_time_ms,
- kAllowRetransmission));
+ auto packet = CreateRtpPacket(kSeqNum + i, kSsrc, kPayload, kTimestamp);
+ packet->set_capture_time_ms(capture_time_ms);
+ hist_.PutRtpPacket(&packet, kAllowRetransmission);
}
for (int i = 0; i < 4; ++i) {
- len = kMaxPacketLength;
- EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum + i, 100, false, packet_,
- &len, &time));
+ EXPECT_TRUE(hist_.GetPacket(kSeqNum + i, 100, false));
}
capture_time_ms += 33;
// Add 16 packets, and then send them. History should expand to make this
// work.
for (int i = 4; i < 20; ++i) {
- len = 0;
- CreateRtpPacket(kSeqNum + i, kSsrc, kPayload, kTimestamp, packet_, &len);
- EXPECT_EQ(0, hist_->PutRTPPacket(packet_, len, capture_time_ms,
- kAllowRetransmission));
+ auto packet = CreateRtpPacket(kSeqNum + i, kSsrc, kPayload, kTimestamp);
+ packet->set_capture_time_ms(capture_time_ms);
+ hist_.PutRtpPacket(&packet, kAllowRetransmission);
}
for (int i = 4; i < 20; ++i) {
- len = kMaxPacketLength;
- EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum + i, 100, false, packet_,
- &len, &time));
+ EXPECT_TRUE(hist_.GetPacket(kSeqNum + i, 100, false));
}
fake_clock_.AdvanceTimeMilliseconds(100);
// Retransmit last 16 packets.
for (int i = 4; i < 20; ++i) {
- len = kMaxPacketLength;
- EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum + i, 100, false, packet_,
- &len, &time));
+ EXPECT_TRUE(hist_.GetPacket(kSeqNum + i, 100, false));
}
}
TEST_F(RtpPacketHistoryTest, FullExpansion) {
static const int kSendSidePacketHistorySize = 600;
- hist_->SetStorePacketsStatus(true, kSendSidePacketHistorySize);
- size_t len;
+ hist_.SetStoreSize(kSendSidePacketHistorySize);
int64_t capture_time_ms = fake_clock_.TimeInMilliseconds();
- int64_t time;
for (size_t i = 0; i < kMaxHistoryCapacity + 1; ++i) {
- len = 0;
- CreateRtpPacket(kSeqNum + i, kSsrc, kPayload, kTimestamp, packet_, &len);
- EXPECT_EQ(0, hist_->PutRTPPacket(packet_, len, capture_time_ms,
- kAllowRetransmission));
+ auto packet = CreateRtpPacket(kSeqNum + i, kSsrc, kPayload, kTimestamp);
+ packet->set_capture_time_ms(capture_time_ms);
+ hist_.PutRtpPacket(&packet, kAllowRetransmission);
}
fake_clock_.AdvanceTimeMilliseconds(100);
// Retransmit all packets currently in buffer.
for (size_t i = 1; i < kMaxHistoryCapacity + 1; ++i) {
- len = kMaxPacketLength;
- EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum + i, 100, false, packet_,
- &len, &time));
+ EXPECT_TRUE(hist_.GetPacket(kSeqNum + i, 100, false));
}
}
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_packet_history.cc ('k') | webrtc/modules/rtp_rtcp/source/rtp_packet_to_send.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698