Index: net/quic/quic_connection_test.cc |
diff --git a/net/quic/quic_connection_test.cc b/net/quic/quic_connection_test.cc |
index 5befba789063c8ffd551fe2a6115df1dea2f16ed..c137db9c3c177afcccbbd218f9be83e401ba95e4 100644 |
--- a/net/quic/quic_connection_test.cc |
+++ b/net/quic/quic_connection_test.cc |
@@ -733,6 +733,13 @@ class QuicConnectionTest : public ::testing::TestWithParam<QuicVersion> { |
return encrypted->length(); |
} |
+ void ProcessPingPacket(QuicPacketSequenceNumber number) { |
+ scoped_ptr<QuicPacket> packet(ConstructPingPacket(number)); |
+ scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPacket( |
+ ENCRYPTION_NONE, number, *packet)); |
+ connection_.ProcessUdpPacket(IPEndPoint(), IPEndPoint(), *encrypted); |
+ } |
+ |
void ProcessClosePacket(QuicPacketSequenceNumber number, |
QuicFecGroupNumber fec_group) { |
scoped_ptr<QuicPacket> packet(ConstructClosePacket(number, fec_group)); |
@@ -872,6 +879,27 @@ class QuicConnectionTest : public ::testing::TestWithParam<QuicVersion> { |
return packet; |
} |
+ QuicPacket* ConstructPingPacket(QuicPacketSequenceNumber number) { |
+ header_.public_header.connection_id = connection_id_; |
+ header_.packet_sequence_number = number; |
+ header_.public_header.reset_flag = false; |
+ header_.public_header.version_flag = false; |
+ header_.entropy_flag = false; |
+ header_.fec_flag = false; |
+ header_.is_in_fec_group = NOT_IN_FEC_GROUP; |
+ header_.fec_group = 0; |
+ |
+ QuicPingFrame ping; |
+ |
+ QuicFrames frames; |
+ QuicFrame frame(&ping); |
+ frames.push_back(frame); |
+ QuicPacket* packet = |
+ BuildUnsizedDataPacket(&framer_, header_, frames).packet; |
+ EXPECT_TRUE(packet != NULL); |
+ return packet; |
+ } |
+ |
QuicPacket* ConstructClosePacket(QuicPacketSequenceNumber number, |
QuicFecGroupNumber fec_group) { |
header_.public_header.connection_id = connection_id_; |
@@ -2967,6 +2995,16 @@ TEST_P(QuicConnectionTest, SendDelayedAckOnSecondPacket) { |
EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
} |
+TEST_P(QuicConnectionTest, SendDelayedAckForPing) { |
+ if (version() < QUIC_VERSION_18) { |
+ return; |
+ } |
+ EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
+ EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
+ ProcessPingPacket(1); |
+ EXPECT_TRUE(connection_.GetAckAlarm()->IsSet()); |
+} |
+ |
TEST_P(QuicConnectionTest, NoAckOnOldNacks) { |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
// Drop one packet, triggering a sequence of acks. |