Index: media/cast/transport/rtp_sender/packet_storage/packet_storage_unittest.cc |
diff --git a/media/cast/transport/rtp_sender/packet_storage/packet_storage_unittest.cc b/media/cast/transport/rtp_sender/packet_storage/packet_storage_unittest.cc |
index a43ae6e0fda407a35d8796b8670115999e97811b..ae046f5f41dd8d1768f3a1a6604b0fbf8fa04675 100644 |
--- a/media/cast/transport/rtp_sender/packet_storage/packet_storage_unittest.cc |
+++ b/media/cast/transport/rtp_sender/packet_storage/packet_storage_unittest.cc |
@@ -16,45 +16,117 @@ |
namespace cast { |
namespace transport { |
-static int kStoredFrames = 10; |
+static const int kMaxDeltaStoredMs = 500; |
+static const base::TimeDelta kDeltaBetweenFrames = |
+ base::TimeDelta::FromMilliseconds(33); |
+ |
+static const int64 kStartMillisecond = INT64_C(12345678900000); |
class PacketStorageTest : public ::testing::Test { |
protected: |
- PacketStorageTest() : packet_storage_(kStoredFrames) { |
+ PacketStorageTest() : packet_storage_(&testing_clock_, kMaxDeltaStoredMs) { |
+ testing_clock_.Advance( |
+ base::TimeDelta::FromMilliseconds(kStartMillisecond)); |
} |
+ base::SimpleTestTickClock testing_clock_; |
PacketStorage packet_storage_; |
DISALLOW_COPY_AND_ASSIGN(PacketStorageTest); |
}; |
+TEST_F(PacketStorageTest, TimeOut) { |
+ Packet test_123(100, 123); // 100 insertions of the value 123. |
+ SendPacketVector packets; |
+ for (uint32 frame_id = 0; frame_id < 30; ++frame_id) { |
+ base::TimeTicks frame_tick = testing_clock_.NowTicks(); |
+ for (uint16 packet_id = 0; packet_id < 10; ++packet_id) { |
+ packet_storage_.StorePacket(frame_id, |
+ packet_id, |
+ PacedPacketSender::MakePacketKey(frame_tick, |
+ 1, // ssrc |
+ packet_id), |
+ new base::RefCountedData<Packet>(test_123)); |
+ } |
+ testing_clock_.Advance(kDeltaBetweenFrames); |
+ } |
+ |
+ // All packets belonging to the first 14 frames is expected to be expired. |
+ for (uint32 frame_id = 0; frame_id < 14; ++frame_id) { |
+ for (uint16 packet_id = 0; packet_id < 10; ++packet_id) { |
+ Packet packet; |
+ EXPECT_FALSE(packet_storage_.GetPacket(frame_id, packet_id, &packets)); |
+ } |
+ } |
+ // All packets belonging to the next 15 frames is expected to be valid. |
+ for (uint32 frame_id = 14; frame_id < 30; ++frame_id) { |
+ for (uint16 packet_id = 0; packet_id < 10; ++packet_id) { |
+ EXPECT_TRUE(packet_storage_.GetPacket(frame_id, packet_id, &packets)); |
+ EXPECT_TRUE(packets.front().second->data == test_123); |
+ } |
+ } |
+} |
+ |
+TEST_F(PacketStorageTest, MaxNumberOfPackets) { |
+ Packet test_123(100, 123); // 100 insertions of the value 123. |
+ SendPacketVector packets; |
+ |
+ uint32 frame_id = 0; |
+ base::TimeTicks frame_tick = testing_clock_.NowTicks(); |
+ for (uint16 packet_id = 0; packet_id <= PacketStorage::kMaxStoredPackets; |
+ ++packet_id) { |
+ packet_storage_.StorePacket(frame_id, |
+ packet_id, |
+ PacedPacketSender::MakePacketKey(frame_tick, |
+ 1, // ssrc |
+ packet_id), |
+ new base::RefCountedData<Packet>(test_123)); |
+ } |
+ uint16 packet_id = 0; |
+ EXPECT_FALSE(packet_storage_.GetPacket(frame_id, packet_id, &packets)); |
+ |
+ ++packet_id; |
+ for (; packet_id <= PacketStorage::kMaxStoredPackets; ++packet_id) { |
+ EXPECT_TRUE(packet_storage_.GetPacket(frame_id, packet_id, &packets)); |
+ EXPECT_TRUE(packets.back().second->data == test_123); |
+ } |
+} |
+ |
TEST_F(PacketStorageTest, PacketContent) { |
- base::TimeTicks frame_tick; |
- for (uint32 frame_id = 0; frame_id < 200; ++frame_id) { |
- for (uint16 packet_id = 0; packet_id < 5; ++packet_id) { |
- Packet test_packet(frame_id + 1, packet_id); |
- packet_storage_.StorePacket( |
- frame_id, |
- packet_id, |
- PacedPacketSender::MakePacketKey(frame_tick, |
- 1, // ssrc |
- packet_id), |
- new base::RefCountedData<Packet>(test_packet)); |
+ Packet test_123(100, 123); // 100 insertions of the value 123. |
+ Packet test_234(200, 234); // 200 insertions of the value 234. |
+ SendPacketVector packets; |
+ |
+ for (uint32 frame_id = 0; frame_id < 10; ++frame_id) { |
+ base::TimeTicks frame_tick = testing_clock_.NowTicks(); |
+ for (uint16 packet_id = 0; packet_id < 10; ++packet_id) { |
+ // Every other packet. |
+ if (packet_id % 2 == 0) { |
+ packet_storage_.StorePacket(frame_id, |
+ packet_id, |
+ PacedPacketSender::MakePacketKey(frame_tick, |
+ 1, // ssrc |
+ packet_id), |
+ new base::RefCountedData<Packet>(test_123)); |
+ } else { |
+ packet_storage_.StorePacket(frame_id, |
+ packet_id, |
+ PacedPacketSender::MakePacketKey(frame_tick, |
+ 1, // ssrc |
+ packet_id), |
+ new base::RefCountedData<Packet>(test_234)); |
+ } |
} |
- |
- for (uint32 f = 0; f <= frame_id; f++) { |
- for (uint16 packet_id = 0; packet_id < 5; ++packet_id) { |
- SendPacketVector packets; |
- if (packet_storage_.GetPacket32(f, packet_id, &packets)) { |
- EXPECT_GT(f + kStoredFrames, frame_id); |
- EXPECT_EQ(f + 1, packets.back().second->data.size()); |
- EXPECT_EQ(packet_id, packets.back().second->data[0]); |
- EXPECT_TRUE(packet_storage_.GetPacket(f & 0xff, packet_id, &packets)); |
- EXPECT_TRUE(packets.back().second->data == |
- packets.front().second->data); |
- } else { |
- EXPECT_LE(f + kStoredFrames, frame_id); |
- } |
+ testing_clock_.Advance(kDeltaBetweenFrames); |
+ } |
+ for (uint32 frame_id = 0; frame_id < 10; ++frame_id) { |
+ for (uint16 packet_id = 0; packet_id < 10; ++packet_id) { |
+ EXPECT_TRUE(packet_storage_.GetPacket(frame_id, packet_id, &packets)); |
+ // Every other packet. |
+ if (packet_id % 2 == 0) { |
+ EXPECT_TRUE(packets.back().second->data == test_123); |
+ } else { |
+ EXPECT_TRUE(packets.back().second->data == test_234); |
} |
} |
} |