| Index: net/quic/core/quic_frames_test.cc
|
| diff --git a/net/quic/core/quic_frames_test.cc b/net/quic/core/quic_frames_test.cc
|
| index c4636c1e20fb9229580e2dbf4b75561e25b49b31..53ed26fa8cdcc830bfa88eff45869a8291615cb3 100644
|
| --- a/net/quic/core/quic_frames_test.cc
|
| +++ b/net/quic/core/quic_frames_test.cc
|
| @@ -13,7 +13,7 @@ namespace {
|
|
|
| using testing::_;
|
|
|
| -TEST(QuicProtocolTest, AckFrameToString) {
|
| +TEST(QuicFramesTest, AckFrameToString) {
|
| QuicAckFrame frame;
|
| frame.largest_observed = 2;
|
| frame.ack_delay_time = QuicTime::Delta::FromMicroseconds(3);
|
| @@ -29,7 +29,7 @@ TEST(QuicProtocolTest, AckFrameToString) {
|
| stream.str());
|
| }
|
|
|
| -TEST(QuicProtocolTest, PaddingFrameToString) {
|
| +TEST(QuicFramesTest, PaddingFrameToString) {
|
| QuicPaddingFrame frame;
|
| frame.num_padding_bytes = 1;
|
| std::ostringstream stream;
|
| @@ -37,7 +37,7 @@ TEST(QuicProtocolTest, PaddingFrameToString) {
|
| EXPECT_EQ("{ num_padding_bytes: 1 }\n", stream.str());
|
| }
|
|
|
| -TEST(QuicProtocolTest, RstStreamFrameToString) {
|
| +TEST(QuicFramesTest, RstStreamFrameToString) {
|
| QuicRstStreamFrame frame;
|
| frame.stream_id = 1;
|
| frame.error_code = QUIC_STREAM_CANCELLED;
|
| @@ -46,7 +46,7 @@ TEST(QuicProtocolTest, RstStreamFrameToString) {
|
| EXPECT_EQ("{ stream_id: 1, error_code: 6 }\n", stream.str());
|
| }
|
|
|
| -TEST(QuicProtocolTest, ConnectionCloseFrameToString) {
|
| +TEST(QuicFramesTest, ConnectionCloseFrameToString) {
|
| QuicConnectionCloseFrame frame;
|
| frame.error_code = QUIC_NETWORK_IDLE_TIMEOUT;
|
| frame.error_details = "No recent network activity.";
|
| @@ -57,7 +57,7 @@ TEST(QuicProtocolTest, ConnectionCloseFrameToString) {
|
| stream.str());
|
| }
|
|
|
| -TEST(QuicProtocolTest, GoAwayFrameToString) {
|
| +TEST(QuicFramesTest, GoAwayFrameToString) {
|
| QuicGoAwayFrame frame;
|
| frame.error_code = QUIC_NETWORK_IDLE_TIMEOUT;
|
| frame.last_good_stream_id = 2;
|
| @@ -69,7 +69,7 @@ TEST(QuicProtocolTest, GoAwayFrameToString) {
|
| stream.str());
|
| }
|
|
|
| -TEST(QuicProtocolTest, WindowUpdateFrameToString) {
|
| +TEST(QuicFramesTest, WindowUpdateFrameToString) {
|
| QuicWindowUpdateFrame frame;
|
| std::ostringstream stream;
|
| frame.stream_id = 1;
|
| @@ -78,7 +78,7 @@ TEST(QuicProtocolTest, WindowUpdateFrameToString) {
|
| EXPECT_EQ("{ stream_id: 1, byte_offset: 2 }\n", stream.str());
|
| }
|
|
|
| -TEST(QuicProtocolTest, BlockedFrameToString) {
|
| +TEST(QuicFramesTest, BlockedFrameToString) {
|
| QuicBlockedFrame frame;
|
| frame.stream_id = 1;
|
| std::ostringstream stream;
|
| @@ -86,7 +86,7 @@ TEST(QuicProtocolTest, BlockedFrameToString) {
|
| EXPECT_EQ("{ stream_id: 1 }\n", stream.str());
|
| }
|
|
|
| -TEST(QuicProtocolTest, StreamFrameToString) {
|
| +TEST(QuicFramesTest, StreamFrameToString) {
|
| QuicStreamFrame frame;
|
| frame.stream_id = 1;
|
| frame.fin = false;
|
| @@ -97,7 +97,7 @@ TEST(QuicProtocolTest, StreamFrameToString) {
|
| EXPECT_EQ("{ stream_id: 1, fin: 0, offset: 2, length: 3 }\n", stream.str());
|
| }
|
|
|
| -TEST(QuicProtocolTest, StopWaitingFrameToString) {
|
| +TEST(QuicFramesTest, StopWaitingFrameToString) {
|
| QuicStopWaitingFrame frame;
|
| frame.least_unacked = 2;
|
| std::ostringstream stream;
|
| @@ -105,7 +105,7 @@ TEST(QuicProtocolTest, StopWaitingFrameToString) {
|
| EXPECT_EQ("{ least_unacked: 2 }\n", stream.str());
|
| }
|
|
|
| -TEST(QuicProtocolTest, PathCloseFrameToString) {
|
| +TEST(QuicFramesTest, PathCloseFrameToString) {
|
| QuicPathCloseFrame frame;
|
| frame.path_id = 1;
|
| std::ostringstream stream;
|
| @@ -113,6 +113,162 @@ TEST(QuicProtocolTest, PathCloseFrameToString) {
|
| EXPECT_EQ("{ path_id: 1 }\n", stream.str());
|
| }
|
|
|
| +TEST(QuicFramesTest, IsAwaitingPacket) {
|
| + QuicAckFrame ack_frame1;
|
| + ack_frame1.largest_observed = 10u;
|
| + ack_frame1.packets.Add(1, 11);
|
| + EXPECT_TRUE(IsAwaitingPacket(ack_frame1, 11u, 0u));
|
| + EXPECT_FALSE(IsAwaitingPacket(ack_frame1, 1u, 0u));
|
| +
|
| + ack_frame1.packets.Remove(10);
|
| + EXPECT_TRUE(IsAwaitingPacket(ack_frame1, 10u, 0u));
|
| +
|
| + QuicAckFrame ack_frame2;
|
| + ack_frame2.largest_observed = 100u;
|
| + ack_frame2.packets.Add(21, 100);
|
| + EXPECT_FALSE(IsAwaitingPacket(ack_frame2, 11u, 20u));
|
| + EXPECT_FALSE(IsAwaitingPacket(ack_frame2, 80u, 20u));
|
| + EXPECT_TRUE(IsAwaitingPacket(ack_frame2, 101u, 20u));
|
| +
|
| + ack_frame2.packets.Remove(50);
|
| + EXPECT_TRUE(IsAwaitingPacket(ack_frame2, 50u, 20u));
|
| +}
|
| +
|
| +// Tests that a queue contains the expected data after calls to Add().
|
| +TEST(PacketNumberQueueTest, AddRange) {
|
| + PacketNumberQueue queue;
|
| + queue.Add(1, 51);
|
| + queue.Add(53);
|
| +
|
| + EXPECT_FALSE(queue.Contains(0));
|
| + for (int i = 1; i < 51; ++i) {
|
| + EXPECT_TRUE(queue.Contains(i));
|
| + }
|
| + EXPECT_FALSE(queue.Contains(51));
|
| + EXPECT_FALSE(queue.Contains(52));
|
| + EXPECT_TRUE(queue.Contains(53));
|
| + EXPECT_FALSE(queue.Contains(54));
|
| + EXPECT_EQ(51u, queue.NumPacketsSlow());
|
| + EXPECT_EQ(1u, queue.Min());
|
| + EXPECT_EQ(53u, queue.Max());
|
| +
|
| + queue.Add(70);
|
| + EXPECT_EQ(70u, queue.Max());
|
| +}
|
| +
|
| +// Tests that a queue contains the expected data after calls to Remove().
|
| +TEST(PacketNumberQueueTest, Removal) {
|
| + PacketNumberQueue queue;
|
| + queue.Add(0, 100);
|
| +
|
| + EXPECT_TRUE(queue.RemoveUpTo(51));
|
| + EXPECT_FALSE(queue.RemoveUpTo(51));
|
| + queue.Remove(53);
|
| +
|
| + EXPECT_FALSE(queue.Contains(0));
|
| + for (int i = 1; i < 51; ++i) {
|
| + EXPECT_FALSE(queue.Contains(i));
|
| + }
|
| + EXPECT_TRUE(queue.Contains(51));
|
| + EXPECT_TRUE(queue.Contains(52));
|
| + EXPECT_FALSE(queue.Contains(53));
|
| + EXPECT_TRUE(queue.Contains(54));
|
| + EXPECT_EQ(48u, queue.NumPacketsSlow());
|
| + EXPECT_EQ(51u, queue.Min());
|
| + EXPECT_EQ(99u, queue.Max());
|
| +
|
| + queue.Remove(51);
|
| + EXPECT_EQ(52u, queue.Min());
|
| + queue.Remove(99);
|
| + EXPECT_EQ(98u, queue.Max());
|
| +}
|
| +
|
| +// Tests that a queue is empty when all of its elements are removed.
|
| +TEST(PacketNumberQueueTest, Empty) {
|
| + PacketNumberQueue queue;
|
| + EXPECT_TRUE(queue.Empty());
|
| + EXPECT_EQ(0u, queue.NumPacketsSlow());
|
| +
|
| + queue.Add(1, 100);
|
| + EXPECT_TRUE(queue.RemoveUpTo(100));
|
| + EXPECT_TRUE(queue.Empty());
|
| + EXPECT_EQ(0u, queue.NumPacketsSlow());
|
| +}
|
| +
|
| +// Tests that logging the state of a PacketNumberQueue does not crash.
|
| +TEST(PacketNumberQueueTest, LogDoesNotCrash) {
|
| + std::ostringstream oss;
|
| + PacketNumberQueue queue;
|
| + oss << queue;
|
| +
|
| + queue.Add(1);
|
| + queue.Add(50, 100);
|
| + oss << queue;
|
| +}
|
| +
|
| +// Tests that the iterators returned from a packet queue iterate over the queue.
|
| +TEST(PacketNumberQueueTest, Iterators) {
|
| + PacketNumberQueue queue;
|
| + queue.Add(1, 100);
|
| +
|
| + const std::vector<Interval<QuicPacketNumber>> actual_intervals(queue.begin(),
|
| + queue.end());
|
| +
|
| + std::vector<Interval<QuicPacketNumber>> expected_intervals;
|
| + expected_intervals.push_back(Interval<QuicPacketNumber>(1, 100));
|
| +
|
| + EXPECT_EQ(expected_intervals, actual_intervals);
|
| +}
|
| +
|
| +TEST(PacketNumberQueueTest, LowerBoundEquals) {
|
| + PacketNumberQueue queue;
|
| + queue.Add(1, 100);
|
| +
|
| + PacketNumberQueue::const_iterator it = queue.lower_bound(10);
|
| + ASSERT_NE(queue.end(), it);
|
| + EXPECT_TRUE(it->Contains(10u));
|
| +
|
| + it = queue.lower_bound(101);
|
| + EXPECT_TRUE(queue.end() == it);
|
| +}
|
| +
|
| +TEST(PacketNumberQueueTest, LowerBoundGreater) {
|
| + PacketNumberQueue queue;
|
| + queue.Add(15, 25);
|
| + queue.Add(50, 100);
|
| +
|
| + PacketNumberQueue::const_iterator it = queue.lower_bound(10);
|
| + ASSERT_NE(queue.end(), it);
|
| + EXPECT_EQ(15u, it->min());
|
| + EXPECT_EQ(25u, it->max());
|
| +}
|
| +
|
| +TEST(PacketNumberQueueTest, IntervalLengthAndRemoveInterval) {
|
| + PacketNumberQueue queue;
|
| + queue.Add(1, 10);
|
| + queue.Add(20, 30);
|
| + queue.Add(40, 50);
|
| + EXPECT_EQ(3u, queue.NumIntervals());
|
| + EXPECT_EQ(10u, queue.LastIntervalLength());
|
| + queue.Remove(9, 21);
|
| + EXPECT_EQ(3u, queue.NumIntervals());
|
| + EXPECT_FALSE(queue.Contains(9));
|
| + EXPECT_FALSE(queue.Contains(20));
|
| +}
|
| +
|
| +TEST(PacketNumberQueueTest, Complement) {
|
| + PacketNumberQueue queue;
|
| + queue.Add(1, 10);
|
| + queue.Add(12, 20);
|
| + queue.Add(22, 30);
|
| + queue.Complement();
|
| + EXPECT_EQ(2u, queue.NumIntervals());
|
| + EXPECT_TRUE(queue.Contains(10));
|
| + EXPECT_TRUE(queue.Contains(11));
|
| + EXPECT_TRUE(queue.Contains(20));
|
| + EXPECT_TRUE(queue.Contains(21));
|
| +}
|
| +
|
| } // namespace
|
| } // namespace test
|
| } // namespace net
|
|
|