Index: net/quic/core/quic_connection_test.cc |
diff --git a/net/quic/core/quic_connection_test.cc b/net/quic/core/quic_connection_test.cc |
index 63fd8eb78e7116da95c72faccf159e6cb471dd19..26d432cdef52acc2aa3eadba12b43d8a369a5092 100644 |
--- a/net/quic/core/quic_connection_test.cc |
+++ b/net/quic/core/quic_connection_test.cc |
@@ -64,11 +64,8 @@ const char data1[] = "foo"; |
const char data2[] = "bar"; |
const bool kFin = true; |
-const bool kEntropyFlag = true; |
const bool kHasStopWaiting = true; |
-const QuicPacketEntropyHash kTestEntropyHash = 76; |
- |
const int kDefaultRetransmissionTimeMs = 500; |
const IPEndPoint kPeerAddress = IPEndPoint(Loopback6(), /*port=*/12345); |
@@ -495,7 +492,6 @@ class TestConnection : public QuicConnection { |
QuicPathId path_id, |
QuicPacketNumber packet_number, |
QuicPacket* packet, |
- QuicPacketEntropyHash entropy_hash, |
HasRetransmittableData retransmittable, |
bool has_ack, |
bool has_pending_frames) { |
@@ -507,7 +503,7 @@ class TestConnection : public QuicConnection { |
delete packet; |
SerializedPacket serialized_packet( |
kDefaultPathId, packet_number, PACKET_6BYTE_PACKET_NUMBER, buffer, |
- encrypted_length, entropy_hash, has_ack, has_pending_frames); |
+ encrypted_length, has_ack, has_pending_frames); |
if (retransmittable == HAS_RETRANSMITTABLE_DATA) { |
serialized_packet.retransmittable_frames.push_back( |
QuicFrame(new QuicStreamFrame())); |
@@ -692,7 +688,6 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
Perspective::IS_SERVER), |
peer_creator_(connection_id_, |
&peer_framer_, |
- &random_generator_, |
&buffer_allocator_, |
/*delegate=*/nullptr), |
writer_(new TestPacketWriter(version(), &clock_)), |
@@ -716,8 +711,6 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
connection_.set_visitor(&visitor_); |
connection_.SetSendAlgorithm(kDefaultPathId, send_algorithm_); |
connection_.SetLossAlgorithm(kDefaultPathId, loss_algorithm_.get()); |
- framer_.set_received_entropy_calculator(&entropy_calculator_); |
- peer_framer_.set_received_entropy_calculator(&peer_entropy_calculator_); |
EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _)) |
.WillRepeatedly(Return(QuicTime::Delta::Zero())); |
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)) |
@@ -774,20 +767,19 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
void ProcessPacket(QuicPathId path_id, QuicPacketNumber number) { |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacket(path_id, number, !kEntropyFlag); |
+ ProcessDataPacket(path_id, number); |
if (connection_.GetSendAlarm()->IsSet()) { |
connection_.GetSendAlarm()->Fire(); |
} |
} |
- QuicPacketEntropyHash ProcessFramePacket(QuicFrame frame) { |
- return ProcessFramePacketWithAddresses(frame, kSelfAddress, kPeerAddress); |
+ void ProcessFramePacket(QuicFrame frame) { |
+ ProcessFramePacketWithAddresses(frame, kSelfAddress, kPeerAddress); |
} |
- QuicPacketEntropyHash ProcessFramePacketWithAddresses( |
- QuicFrame frame, |
- IPEndPoint self_address, |
- IPEndPoint peer_address) { |
+ void ProcessFramePacketWithAddresses(QuicFrame frame, |
+ IPEndPoint self_address, |
+ IPEndPoint peer_address) { |
QuicFrames frames; |
frames.push_back(QuicFrame(frame)); |
QuicPacketCreatorPeer::SetSendVersionInPacket( |
@@ -804,7 +796,6 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
if (connection_.GetSendAlarm()->IsSet()) { |
connection_.GetSendAlarm()->Fire(); |
} |
- return serialized_packet.entropy_hash; |
} |
// Bypassing the packet creator is unrealistic, but allows us to process |
@@ -832,10 +823,10 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
QuicReceivedPacket(encrypted_buffer, encrypted_length, clock_.Now())); |
} |
- QuicPacketEntropyHash ProcessFramePacketAtLevel(QuicPathId path_id, |
- QuicPacketNumber number, |
- QuicFrame frame, |
- EncryptionLevel level) { |
+ size_t ProcessFramePacketAtLevel(QuicPathId path_id, |
+ QuicPacketNumber number, |
+ QuicFrame frame, |
+ EncryptionLevel level) { |
QuicPacketHeader header; |
header.public_header.connection_id = connection_id_; |
header.public_header.packet_number_length = packet_number_length_; |
@@ -853,23 +844,19 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
connection_.ProcessUdpPacket( |
kSelfAddress, kPeerAddress, |
QuicReceivedPacket(buffer, encrypted_length, QuicTime::Zero(), false)); |
- return base::checked_cast<QuicPacketEntropyHash>(encrypted_length); |
+ return encrypted_length; |
} |
- size_t ProcessDataPacket(QuicPathId path_id, |
- QuicPacketNumber number, |
- bool entropy_flag) { |
- return ProcessDataPacketAtLevel(path_id, number, entropy_flag, false, |
- ENCRYPTION_NONE); |
+ size_t ProcessDataPacket(QuicPathId path_id, QuicPacketNumber number) { |
+ return ProcessDataPacketAtLevel(path_id, number, false, ENCRYPTION_NONE); |
} |
size_t ProcessDataPacketAtLevel(QuicPathId path_id, |
QuicPacketNumber number, |
- bool entropy_flag, |
bool has_stop_waiting, |
EncryptionLevel level) { |
std::unique_ptr<QuicPacket> packet( |
- ConstructDataPacket(path_id, number, entropy_flag, has_stop_waiting)); |
+ ConstructDataPacket(path_id, number, has_stop_waiting)); |
char buffer[kMaxPacketSize]; |
size_t encrypted_length = framer_.EncryptPayload( |
level, path_id, number, *packet, buffer, kMaxPacketSize); |
@@ -921,29 +908,28 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
ProcessFramePacket(QuicFrame(frame)); |
} |
- QuicPacketEntropyHash ProcessAckPacket(QuicAckFrame* frame) { |
- return ProcessFramePacket(QuicFrame(frame)); |
+ void ProcessAckPacket(QuicAckFrame* frame) { |
+ ProcessFramePacket(QuicFrame(frame)); |
} |
- QuicPacketEntropyHash ProcessStopWaitingPacket(QuicStopWaitingFrame* frame) { |
- return ProcessFramePacket(QuicFrame(frame)); |
+ void ProcessStopWaitingPacket(QuicStopWaitingFrame* frame) { |
+ ProcessFramePacket(QuicFrame(frame)); |
} |
- QuicPacketEntropyHash ProcessStopWaitingPacketAtLevel( |
- QuicPathId path_id, |
- QuicPacketNumber number, |
- QuicStopWaitingFrame* frame, |
- EncryptionLevel level) { |
+ size_t ProcessStopWaitingPacketAtLevel(QuicPathId path_id, |
+ QuicPacketNumber number, |
+ QuicStopWaitingFrame* frame, |
+ EncryptionLevel level) { |
return ProcessFramePacketAtLevel(path_id, number, QuicFrame(frame), |
ENCRYPTION_INITIAL); |
} |
- QuicPacketEntropyHash ProcessGoAwayPacket(QuicGoAwayFrame* frame) { |
- return ProcessFramePacket(QuicFrame(frame)); |
+ void ProcessGoAwayPacket(QuicGoAwayFrame* frame) { |
+ ProcessFramePacket(QuicFrame(frame)); |
} |
- QuicPacketEntropyHash ProcessPathClosePacket(QuicPathCloseFrame* frame) { |
- return ProcessFramePacket(QuicFrame(frame)); |
+ void ProcessPathClosePacket(QuicPathCloseFrame* frame) { |
+ ProcessFramePacket(QuicFrame(frame)); |
} |
bool IsMissing(QuicPacketNumber number) { |
@@ -958,14 +944,12 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
QuicPacket* ConstructDataPacket(QuicPathId path_id, |
QuicPacketNumber number, |
- bool entropy_flag, |
bool has_stop_waiting) { |
QuicPacketHeader header; |
header.public_header.connection_id = connection_id_; |
header.public_header.packet_number_length = packet_number_length_; |
header.public_header.connection_id_length = connection_id_length_; |
header.public_header.multipath_flag = path_id != kDefaultPathId; |
- header.entropy_flag = entropy_flag; |
header.path_id = path_id; |
header.packet_number = number; |
@@ -1001,16 +985,8 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
// Initialize a frame acknowledging all packets up to largest_observed. |
const QuicAckFrame InitAckFrame(QuicPacketNumber largest_observed) { |
QuicAckFrame frame(MakeAckFrame(largest_observed)); |
- if (GetParam().version <= QUIC_VERSION_33) { |
- if (largest_observed > 0) { |
- frame.entropy_hash = QuicConnectionPeer::GetSentEntropyHash( |
- &connection_, largest_observed); |
- } |
- } else { |
- frame.missing = false; |
- if (largest_observed > 0) { |
- frame.packets.Add(1, largest_observed + 1); |
- } |
+ if (largest_observed > 0) { |
+ frame.packets.Add(1, largest_observed + 1); |
} |
return frame; |
} |
@@ -1024,26 +1000,13 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
// Explicitly nack a packet. |
void NackPacket(QuicPacketNumber missing, QuicAckFrame* frame) { |
- if (frame->missing) { |
- frame->packets.Add(missing); |
- frame->entropy_hash ^= |
- QuicConnectionPeer::PacketEntropy(&connection_, missing); |
- } else { |
- frame->packets.Remove(missing); |
- } |
+ frame->packets.Remove(missing); |
} |
// Undo nacking a packet within the frame. |
void AckPacket(QuicPacketNumber arrived, QuicAckFrame* frame) { |
- if (frame->missing) { |
- EXPECT_TRUE(frame->packets.Contains(arrived)); |
- frame->packets.Remove(arrived); |
- frame->entropy_hash ^= |
- QuicConnectionPeer::PacketEntropy(&connection_, arrived); |
- } else { |
- EXPECT_FALSE(frame->packets.Contains(arrived)); |
- frame->packets.Add(arrived); |
- } |
+ EXPECT_FALSE(frame->packets.Contains(arrived)); |
+ frame->packets.Add(arrived); |
} |
void TriggerConnectionClose() { |
@@ -1052,7 +1015,7 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
ConnectionCloseSource::FROM_SELF)); |
// Call ProcessDataPacket rather than ProcessPacket, as we should not get a |
// packet call to the visitor. |
- ProcessDataPacket(kDefaultPathId, 6000, !kEntropyFlag); |
+ ProcessDataPacket(kDefaultPathId, 6000); |
EXPECT_FALSE(QuicConnectionPeer::GetConnectionClosePacket(&connection_) == |
nullptr); |
} |
@@ -1090,8 +1053,6 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
QuicConnectionId connection_id_; |
QuicFramer framer_; |
- MockEntropyCalculator entropy_calculator_; |
- MockEntropyCalculator peer_entropy_calculator_; |
MockSendAlgorithm* send_algorithm_; |
std::unique_ptr<MockLossAlgorithm> loss_algorithm_; |
@@ -1321,27 +1282,15 @@ TEST_P(QuicConnectionTest, PacketsInOrder) { |
ProcessPacket(kDefaultPathId, 1); |
EXPECT_EQ(1u, outgoing_ack()->largest_observed); |
- if (outgoing_ack()->missing) { |
- EXPECT_TRUE(outgoing_ack()->packets.Empty()); |
- } else { |
- EXPECT_EQ(1u, outgoing_ack()->packets.NumIntervals()); |
- } |
+ EXPECT_EQ(1u, outgoing_ack()->packets.NumIntervals()); |
ProcessPacket(kDefaultPathId, 2); |
EXPECT_EQ(2u, outgoing_ack()->largest_observed); |
- if (outgoing_ack()->missing) { |
- EXPECT_TRUE(outgoing_ack()->packets.Empty()); |
- } else { |
- EXPECT_EQ(1u, outgoing_ack()->packets.NumIntervals()); |
- } |
+ EXPECT_EQ(1u, outgoing_ack()->packets.NumIntervals()); |
ProcessPacket(kDefaultPathId, 3); |
EXPECT_EQ(3u, outgoing_ack()->largest_observed); |
- if (outgoing_ack()->missing) { |
- EXPECT_TRUE(outgoing_ack()->packets.Empty()); |
- } else { |
- EXPECT_EQ(1u, outgoing_ack()->packets.NumIntervals()); |
- } |
+ EXPECT_EQ(1u, outgoing_ack()->packets.NumIntervals()); |
} |
TEST_P(QuicConnectionTest, PacketsOutOfOrder) { |
@@ -1373,7 +1322,7 @@ TEST_P(QuicConnectionTest, DuplicatePacket) { |
// Send packet 3 again, but do not set the expectation that |
// the visitor OnStreamFrame() will be called. |
- ProcessDataPacket(kDefaultPathId, 3, !kEntropyFlag); |
+ ProcessDataPacket(kDefaultPathId, 3); |
EXPECT_EQ(3u, outgoing_ack()->largest_observed); |
EXPECT_TRUE(IsMissing(2)); |
EXPECT_TRUE(IsMissing(1)); |
@@ -1414,7 +1363,7 @@ TEST_P(QuicConnectionTest, RejectPacketTooFarOut) { |
ConnectionCloseSource::FROM_SELF)); |
// Call ProcessDataPacket rather than ProcessPacket, as we should not get a |
// packet call to the visitor. |
- ProcessDataPacket(kDefaultPathId, 6000, !kEntropyFlag); |
+ ProcessDataPacket(kDefaultPathId, 6000); |
EXPECT_FALSE(QuicConnectionPeer::GetConnectionClosePacket(&connection_) == |
nullptr); |
} |
@@ -1425,7 +1374,7 @@ TEST_P(QuicConnectionTest, RejectUnencryptedStreamData) { |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_UNENCRYPTED_STREAM_DATA, _, |
ConnectionCloseSource::FROM_SELF)); |
- EXPECT_QUIC_BUG(ProcessDataPacket(kDefaultPathId, 1, !kEntropyFlag), ""); |
+ EXPECT_QUIC_BUG(ProcessDataPacket(kDefaultPathId, 1), ""); |
EXPECT_FALSE(QuicConnectionPeer::GetConnectionClosePacket(&connection_) == |
nullptr); |
const std::vector<QuicConnectionCloseFrame>& connection_close_frames = |
@@ -1435,56 +1384,6 @@ TEST_P(QuicConnectionTest, RejectUnencryptedStreamData) { |
connection_close_frames[0].error_code); |
} |
-TEST_P(QuicConnectionTest, TruncatedAck) { |
- if (GetParam().version > QUIC_VERSION_33) { |
- return; |
- } |
- EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
- QuicPacketNumber num_packets = 256 * 2 + 1; |
- for (QuicPacketNumber i = 0; i < num_packets; ++i) { |
- SendStreamDataToPeer(3, "foo", i * 3, !kFin, nullptr); |
- } |
- |
- QuicAckFrame frame = InitAckFrame(num_packets); |
- // Create an ack with 256 nacks, none adjacent to one another. |
- for (QuicPacketNumber i = 1; i <= 256; ++i) { |
- NackPacket(i * 2, &frame); |
- } |
- EXPECT_CALL(*loss_algorithm_, DetectLosses(_, _, _, _, _)); |
- EXPECT_CALL(peer_entropy_calculator_, EntropyHash(511)) |
- .WillOnce(Return(static_cast<QuicPacketEntropyHash>(0))); |
- EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _, _)); |
- ProcessAckPacket(&frame); |
- |
- // A truncated ack will not have the true largest observed. |
- EXPECT_GT(num_packets, manager_->GetLargestObserved(frame.path_id)); |
- |
- AckPacket(192, &frame); |
- |
- // Removing one missing packet allows us to ack 192 and one more range, but |
- // 192 has already been declared lost, so it doesn't register as an ack. |
- EXPECT_CALL(*loss_algorithm_, DetectLosses(_, _, _, _, _)); |
- EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _, _)); |
- ProcessAckPacket(&frame); |
- EXPECT_EQ(num_packets, manager_->GetLargestObserved(frame.path_id)); |
-} |
- |
-TEST_P(QuicConnectionTest, AckReceiptCausesAckSendBadEntropy) { |
- EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
- |
- ProcessPacket(kDefaultPathId, 1); |
- // Delay sending, then queue up an ack. |
- QuicConnectionPeer::SendAck(&connection_); |
- |
- // Process an ack with a least unacked of the received ack. |
- // This causes an ack to be sent when TimeUntilSend returns 0. |
- EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _)) |
- .WillRepeatedly(testing::Return(QuicTime::Delta::Zero())); |
- // Skip a packet and then record an ack. |
- QuicAckFrame frame = InitAckFrame(0); |
- ProcessAckPacket(3, &frame); |
-} |
- |
TEST_P(QuicConnectionTest, OutOfOrderReceiptCausesAckSend) { |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
@@ -1640,13 +1539,6 @@ TEST_P(QuicConnectionTest, TooManySentPackets) { |
// Ack packet 1, which leaves more than the limit outstanding. |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _, _)); |
- if (GetParam().version <= QUIC_VERSION_33) { |
- EXPECT_CALL(visitor_, |
- OnConnectionClosed(QUIC_TOO_MANY_OUTSTANDING_SENT_PACKETS, _, |
- ConnectionCloseSource::FROM_SELF)); |
- // We're receive buffer limited, so the connection won't try to write more. |
- EXPECT_CALL(visitor_, OnCanWrite()).Times(0); |
- } |
// Nack the first packet and ack the rest, leaving a huge gap. |
QuicAckFrame frame1 = InitAckFrame(num_packets); |
@@ -1656,11 +1548,6 @@ TEST_P(QuicConnectionTest, TooManySentPackets) { |
TEST_P(QuicConnectionTest, TooManyReceivedPackets) { |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
- if (GetParam().version <= QUIC_VERSION_33) { |
- EXPECT_CALL(visitor_, |
- OnConnectionClosed(QUIC_TOO_MANY_OUTSTANDING_RECEIVED_PACKETS, |
- _, ConnectionCloseSource::FROM_SELF)); |
- } |
// Miss 99 of every 100 packets for 5500 packets. |
for (QuicPacketNumber i = 1; i < kMaxTrackedPackets + 500; i += 100) { |
ProcessPacket(kDefaultPathId, i); |
@@ -1858,7 +1745,7 @@ TEST_P(QuicConnectionTest, FramePackingAckResponse) { |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
// Process a data packet to queue up a pending ack. |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacket(kDefaultPathId, 1, kEntropyFlag); |
+ ProcessDataPacket(kDefaultPathId, 1); |
EXPECT_CALL(visitor_, OnCanWrite()) |
.WillOnce(DoAll(IgnoreResult(InvokeWithoutArgs( |
@@ -2683,7 +2570,7 @@ TEST_P(QuicConnectionTest, BufferNonDecryptablePackets) { |
// Process an encrypted packet which can not yet be decrypted which should |
// result in the packet being buffered. |
- ProcessDataPacketAtLevel(kDefaultPathId, 1, kEntropyFlag, !kHasStopWaiting, |
+ ProcessDataPacketAtLevel(kDefaultPathId, 1, !kHasStopWaiting, |
ENCRYPTION_INITIAL); |
// Transition to the new encryption state and process another encrypted packet |
@@ -2692,13 +2579,13 @@ TEST_P(QuicConnectionTest, BufferNonDecryptablePackets) { |
connection_.SetDefaultEncryptionLevel(ENCRYPTION_INITIAL); |
connection_.SetEncrypter(ENCRYPTION_INITIAL, new TaggingEncrypter(tag)); |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(2); |
- ProcessDataPacketAtLevel(kDefaultPathId, 2, kEntropyFlag, !kHasStopWaiting, |
+ ProcessDataPacketAtLevel(kDefaultPathId, 2, !kHasStopWaiting, |
ENCRYPTION_INITIAL); |
// Finally, process a third packet and note that we do not reprocess the |
// buffered packet. |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacketAtLevel(kDefaultPathId, 3, kEntropyFlag, !kHasStopWaiting, |
+ ProcessDataPacketAtLevel(kDefaultPathId, 3, !kHasStopWaiting, |
ENCRYPTION_INITIAL); |
} |
@@ -2717,7 +2604,7 @@ TEST_P(QuicConnectionTest, Buffer100NonDecryptablePackets) { |
// Process an encrypted packet which can not yet be decrypted which should |
// result in the packet being buffered. |
for (QuicPacketNumber i = 1; i <= 100; ++i) { |
- ProcessDataPacketAtLevel(kDefaultPathId, i, kEntropyFlag, !kHasStopWaiting, |
+ ProcessDataPacketAtLevel(kDefaultPathId, i, !kHasStopWaiting, |
ENCRYPTION_INITIAL); |
} |
@@ -2727,13 +2614,13 @@ TEST_P(QuicConnectionTest, Buffer100NonDecryptablePackets) { |
connection_.SetDefaultEncryptionLevel(ENCRYPTION_INITIAL); |
connection_.SetEncrypter(ENCRYPTION_INITIAL, new TaggingEncrypter(tag)); |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(101); |
- ProcessDataPacketAtLevel(kDefaultPathId, 101, kEntropyFlag, !kHasStopWaiting, |
+ ProcessDataPacketAtLevel(kDefaultPathId, 101, !kHasStopWaiting, |
ENCRYPTION_INITIAL); |
// Finally, process a third packet and note that we do not reprocess the |
// buffered packet. |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacketAtLevel(kDefaultPathId, 102, kEntropyFlag, !kHasStopWaiting, |
+ ProcessDataPacketAtLevel(kDefaultPathId, 102, !kHasStopWaiting, |
ENCRYPTION_INITIAL); |
} |
@@ -3642,12 +3529,10 @@ TEST_P(QuicConnectionTest, TimeoutAfter5ServerRTOs) { |
TEST_P(QuicConnectionTest, SendScheduler) { |
// Test that if we send a packet without delay, it is not queued. |
- QuicPacket* packet = |
- ConstructDataPacket(kDefaultPathId, 1, !kEntropyFlag, !kHasStopWaiting); |
+ QuicPacket* packet = ConstructDataPacket(kDefaultPathId, 1, !kHasStopWaiting); |
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)); |
connection_.SendPacket(ENCRYPTION_NONE, kDefaultPathId, 1, packet, |
- kTestEntropyHash, HAS_RETRANSMITTABLE_DATA, false, |
- false); |
+ HAS_RETRANSMITTABLE_DATA, false, false); |
EXPECT_EQ(0u, connection_.NumQueuedPackets()); |
} |
@@ -3655,22 +3540,18 @@ TEST_P(QuicConnectionTest, FailToSendFirstPacket) { |
// Test that the connection does not crash when it fails to send the first |
// packet at which point self_address_ might be uninitialized. |
EXPECT_CALL(visitor_, OnConnectionClosed(_, _, _)).Times(1); |
- QuicPacket* packet = |
- ConstructDataPacket(kDefaultPathId, 1, !kEntropyFlag, !kHasStopWaiting); |
+ QuicPacket* packet = ConstructDataPacket(kDefaultPathId, 1, !kHasStopWaiting); |
writer_->SetShouldWriteFail(); |
connection_.SendPacket(ENCRYPTION_NONE, kDefaultPathId, 1, packet, |
- kTestEntropyHash, HAS_RETRANSMITTABLE_DATA, false, |
- false); |
+ HAS_RETRANSMITTABLE_DATA, false, false); |
} |
TEST_P(QuicConnectionTest, SendSchedulerEAGAIN) { |
- QuicPacket* packet = |
- ConstructDataPacket(kDefaultPathId, 1, !kEntropyFlag, !kHasStopWaiting); |
+ QuicPacket* packet = ConstructDataPacket(kDefaultPathId, 1, !kHasStopWaiting); |
BlockOnNextWrite(); |
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, 1, _, _)).Times(0); |
connection_.SendPacket(ENCRYPTION_NONE, kDefaultPathId, 1, packet, |
- kTestEntropyHash, HAS_RETRANSMITTABLE_DATA, false, |
- false); |
+ HAS_RETRANSMITTABLE_DATA, false, false); |
EXPECT_EQ(1u, connection_.NumQueuedPackets()); |
} |
@@ -3756,7 +3637,7 @@ TEST_P(QuicConnectionTest, SendDelayedAck) { |
// The same as ProcessPacket(1) except that ENCRYPTION_INITIAL is used |
// instead of ENCRYPTION_NONE. |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacketAtLevel(kDefaultPathId, 1, !kEntropyFlag, !kHasStopWaiting, |
+ ProcessDataPacketAtLevel(kDefaultPathId, 1, !kHasStopWaiting, |
ENCRYPTION_INITIAL); |
// Check if delayed ack timer is running for the expected interval. |
@@ -3794,14 +3675,14 @@ TEST_P(QuicConnectionTest, SendDelayedAckDecimation) { |
QuicPacketNumber kFirstDecimatedPacket = 101; |
for (unsigned int i = 0; i < kFirstDecimatedPacket - 1; ++i) { |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacketAtLevel(kDefaultPathId, 1 + i, !kEntropyFlag, |
- !kHasStopWaiting, ENCRYPTION_INITIAL); |
+ ProcessDataPacketAtLevel(kDefaultPathId, 1 + i, !kHasStopWaiting, |
+ ENCRYPTION_INITIAL); |
} |
EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
// The same as ProcessPacket(1) except that ENCRYPTION_INITIAL is used |
// instead of ENCRYPTION_NONE. |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket, !kEntropyFlag, |
+ ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket, |
!kHasStopWaiting, ENCRYPTION_INITIAL); |
// Check if delayed ack timer is running for the expected interval. |
@@ -3813,8 +3694,7 @@ TEST_P(QuicConnectionTest, SendDelayedAckDecimation) { |
EXPECT_TRUE(connection_.GetAckAlarm()->IsSet()); |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket + 1 + i, |
- !kEntropyFlag, !kHasStopWaiting, |
- ENCRYPTION_INITIAL); |
+ !kHasStopWaiting, ENCRYPTION_INITIAL); |
} |
// Check that ack is sent and that delayed ack alarm is reset. |
EXPECT_EQ(2u, writer_->frame_count()); |
@@ -3847,14 +3727,14 @@ TEST_P(QuicConnectionTest, SendDelayedAckDecimationEighthRtt) { |
QuicPacketNumber kFirstDecimatedPacket = 101; |
for (unsigned int i = 0; i < kFirstDecimatedPacket - 1; ++i) { |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacketAtLevel(kDefaultPathId, 1 + i, !kEntropyFlag, |
- !kHasStopWaiting, ENCRYPTION_INITIAL); |
+ ProcessDataPacketAtLevel(kDefaultPathId, 1 + i, !kHasStopWaiting, |
+ ENCRYPTION_INITIAL); |
} |
EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
// The same as ProcessPacket(1) except that ENCRYPTION_INITIAL is used |
// instead of ENCRYPTION_NONE. |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket, !kEntropyFlag, |
+ ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket, |
!kHasStopWaiting, ENCRYPTION_INITIAL); |
// Check if delayed ack timer is running for the expected interval. |
@@ -3866,8 +3746,7 @@ TEST_P(QuicConnectionTest, SendDelayedAckDecimationEighthRtt) { |
EXPECT_TRUE(connection_.GetAckAlarm()->IsSet()); |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket + 1 + i, |
- !kEntropyFlag, !kHasStopWaiting, |
- ENCRYPTION_INITIAL); |
+ !kHasStopWaiting, ENCRYPTION_INITIAL); |
} |
// Check that ack is sent and that delayed ack alarm is reset. |
EXPECT_EQ(2u, writer_->frame_count()); |
@@ -3900,14 +3779,14 @@ TEST_P(QuicConnectionTest, SendDelayedAckDecimationWithReordering) { |
QuicPacketNumber kFirstDecimatedPacket = 101; |
for (unsigned int i = 0; i < kFirstDecimatedPacket - 1; ++i) { |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacketAtLevel(kDefaultPathId, 1 + i, !kEntropyFlag, |
- !kHasStopWaiting, ENCRYPTION_INITIAL); |
+ ProcessDataPacketAtLevel(kDefaultPathId, 1 + i, !kHasStopWaiting, |
+ ENCRYPTION_INITIAL); |
} |
EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
// The same as ProcessPacket(1) except that ENCRYPTION_INITIAL is used |
// instead of ENCRYPTION_NONE. |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket, !kEntropyFlag, |
+ ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket, |
!kHasStopWaiting, ENCRYPTION_INITIAL); |
// Check if delayed ack timer is running for the expected interval. |
@@ -3917,7 +3796,7 @@ TEST_P(QuicConnectionTest, SendDelayedAckDecimationWithReordering) { |
// Process packet 10 first and ensure the alarm is one eighth min_rtt. |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket + 9, |
- !kEntropyFlag, !kHasStopWaiting, ENCRYPTION_INITIAL); |
+ !kHasStopWaiting, ENCRYPTION_INITIAL); |
ack_time = clock_.ApproximateNow() + QuicTime::Delta::FromMilliseconds(5); |
EXPECT_TRUE(connection_.GetAckAlarm()->IsSet()); |
EXPECT_EQ(ack_time, connection_.GetAckAlarm()->deadline()); |
@@ -3927,8 +3806,7 @@ TEST_P(QuicConnectionTest, SendDelayedAckDecimationWithReordering) { |
EXPECT_TRUE(connection_.GetAckAlarm()->IsSet()); |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket + 1 + i, |
- !kEntropyFlag, !kHasStopWaiting, |
- ENCRYPTION_INITIAL); |
+ !kHasStopWaiting, ENCRYPTION_INITIAL); |
} |
// Check that ack is sent and that delayed ack alarm is reset. |
EXPECT_EQ(2u, writer_->frame_count()); |
@@ -3961,14 +3839,14 @@ TEST_P(QuicConnectionTest, SendDelayedAckDecimationWithLargeReordering) { |
QuicPacketNumber kFirstDecimatedPacket = 101; |
for (unsigned int i = 0; i < kFirstDecimatedPacket - 1; ++i) { |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacketAtLevel(kDefaultPathId, 1 + i, !kEntropyFlag, |
- !kHasStopWaiting, ENCRYPTION_INITIAL); |
+ ProcessDataPacketAtLevel(kDefaultPathId, 1 + i, !kHasStopWaiting, |
+ ENCRYPTION_INITIAL); |
} |
EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
// The same as ProcessPacket(1) except that ENCRYPTION_INITIAL is used |
// instead of ENCRYPTION_NONE. |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket, !kEntropyFlag, |
+ ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket, |
!kHasStopWaiting, ENCRYPTION_INITIAL); |
// Check if delayed ack timer is running for the expected interval. |
@@ -3978,7 +3856,7 @@ TEST_P(QuicConnectionTest, SendDelayedAckDecimationWithLargeReordering) { |
// Process packet 10 first and ensure the alarm is one eighth min_rtt. |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket + 19, |
- !kEntropyFlag, !kHasStopWaiting, ENCRYPTION_INITIAL); |
+ !kHasStopWaiting, ENCRYPTION_INITIAL); |
ack_time = clock_.ApproximateNow() + QuicTime::Delta::FromMilliseconds(5); |
EXPECT_TRUE(connection_.GetAckAlarm()->IsSet()); |
EXPECT_EQ(ack_time, connection_.GetAckAlarm()->deadline()); |
@@ -3988,8 +3866,7 @@ TEST_P(QuicConnectionTest, SendDelayedAckDecimationWithLargeReordering) { |
EXPECT_TRUE(connection_.GetAckAlarm()->IsSet()); |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket + 1 + i, |
- !kEntropyFlag, !kHasStopWaiting, |
- ENCRYPTION_INITIAL); |
+ !kHasStopWaiting, ENCRYPTION_INITIAL); |
} |
// Check that ack is sent and that delayed ack alarm is reset. |
EXPECT_EQ(2u, writer_->frame_count()); |
@@ -4002,7 +3879,7 @@ TEST_P(QuicConnectionTest, SendDelayedAckDecimationWithLargeReordering) { |
EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket + 10, |
- !kEntropyFlag, !kHasStopWaiting, ENCRYPTION_INITIAL); |
+ !kHasStopWaiting, ENCRYPTION_INITIAL); |
// Check that ack is sent and that delayed ack alarm is reset. |
EXPECT_EQ(2u, writer_->frame_count()); |
EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
@@ -4035,14 +3912,14 @@ TEST_P(QuicConnectionTest, SendDelayedAckDecimationWithReorderingEighthRtt) { |
QuicPacketNumber kFirstDecimatedPacket = 101; |
for (unsigned int i = 0; i < kFirstDecimatedPacket - 1; ++i) { |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacketAtLevel(kDefaultPathId, 1 + i, !kEntropyFlag, |
- !kHasStopWaiting, ENCRYPTION_INITIAL); |
+ ProcessDataPacketAtLevel(kDefaultPathId, 1 + i, !kHasStopWaiting, |
+ ENCRYPTION_INITIAL); |
} |
EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
// The same as ProcessPacket(1) except that ENCRYPTION_INITIAL is used |
// instead of ENCRYPTION_NONE. |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket, !kEntropyFlag, |
+ ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket, |
!kHasStopWaiting, ENCRYPTION_INITIAL); |
// Check if delayed ack timer is running for the expected interval. |
@@ -4052,7 +3929,7 @@ TEST_P(QuicConnectionTest, SendDelayedAckDecimationWithReorderingEighthRtt) { |
// Process packet 10 first and ensure the alarm is one eighth min_rtt. |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket + 9, |
- !kEntropyFlag, !kHasStopWaiting, ENCRYPTION_INITIAL); |
+ !kHasStopWaiting, ENCRYPTION_INITIAL); |
ack_time = clock_.ApproximateNow() + QuicTime::Delta::FromMilliseconds(5); |
EXPECT_TRUE(connection_.GetAckAlarm()->IsSet()); |
EXPECT_EQ(ack_time, connection_.GetAckAlarm()->deadline()); |
@@ -4062,8 +3939,7 @@ TEST_P(QuicConnectionTest, SendDelayedAckDecimationWithReorderingEighthRtt) { |
EXPECT_TRUE(connection_.GetAckAlarm()->IsSet()); |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket + 1 + i, |
- !kEntropyFlag, !kHasStopWaiting, |
- ENCRYPTION_INITIAL); |
+ !kHasStopWaiting, ENCRYPTION_INITIAL); |
} |
// Check that ack is sent and that delayed ack alarm is reset. |
EXPECT_EQ(2u, writer_->frame_count()); |
@@ -4098,14 +3974,14 @@ TEST_P(QuicConnectionTest, |
QuicPacketNumber kFirstDecimatedPacket = 101; |
for (unsigned int i = 0; i < kFirstDecimatedPacket - 1; ++i) { |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacketAtLevel(kDefaultPathId, 1 + i, !kEntropyFlag, |
- !kHasStopWaiting, ENCRYPTION_INITIAL); |
+ ProcessDataPacketAtLevel(kDefaultPathId, 1 + i, !kHasStopWaiting, |
+ ENCRYPTION_INITIAL); |
} |
EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
// The same as ProcessPacket(1) except that ENCRYPTION_INITIAL is used |
// instead of ENCRYPTION_NONE. |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
- ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket, !kEntropyFlag, |
+ ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket, |
!kHasStopWaiting, ENCRYPTION_INITIAL); |
// Check if delayed ack timer is running for the expected interval. |
@@ -4115,7 +3991,7 @@ TEST_P(QuicConnectionTest, |
// Process packet 10 first and ensure the alarm is one eighth min_rtt. |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket + 19, |
- !kEntropyFlag, !kHasStopWaiting, ENCRYPTION_INITIAL); |
+ !kHasStopWaiting, ENCRYPTION_INITIAL); |
ack_time = clock_.ApproximateNow() + QuicTime::Delta::FromMilliseconds(5); |
EXPECT_TRUE(connection_.GetAckAlarm()->IsSet()); |
EXPECT_EQ(ack_time, connection_.GetAckAlarm()->deadline()); |
@@ -4125,8 +4001,7 @@ TEST_P(QuicConnectionTest, |
EXPECT_TRUE(connection_.GetAckAlarm()->IsSet()); |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket + 1 + i, |
- !kEntropyFlag, !kHasStopWaiting, |
- ENCRYPTION_INITIAL); |
+ !kHasStopWaiting, ENCRYPTION_INITIAL); |
} |
// Check that ack is sent and that delayed ack alarm is reset. |
EXPECT_EQ(2u, writer_->frame_count()); |
@@ -4139,7 +4014,7 @@ TEST_P(QuicConnectionTest, |
EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
ProcessDataPacketAtLevel(kDefaultPathId, kFirstDecimatedPacket + 10, |
- !kEntropyFlag, !kHasStopWaiting, ENCRYPTION_INITIAL); |
+ !kHasStopWaiting, ENCRYPTION_INITIAL); |
// Check that ack is sent and that delayed ack alarm is reset. |
EXPECT_EQ(2u, writer_->frame_count()); |
EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
@@ -4276,7 +4151,7 @@ TEST_P(QuicConnectionTest, BundleAckForSecondCHLOTwoPacketReject) { |
EXPECT_CALL(visitor_, OnStreamFrame(_)) |
.WillOnce(IgnoreResult(InvokeWithoutArgs( |
&connection_, &TestConnection::SendCryptoStreamData))); |
- ProcessDataPacket(kDefaultPathId, 2, kEntropyFlag); |
+ ProcessDataPacket(kDefaultPathId, 2); |
} |
// Check that ack is sent and that delayed ack alarm is reset. |
EXPECT_EQ(3u, writer_->frame_count()); |
@@ -4355,12 +4230,10 @@ TEST_P(QuicConnectionTest, SendWhenDisconnected) { |
ConnectionCloseBehavior::SILENT_CLOSE); |
EXPECT_FALSE(connection_.connected()); |
EXPECT_FALSE(connection_.CanWriteStreamData()); |
- QuicPacket* packet = |
- ConstructDataPacket(kDefaultPathId, 1, !kEntropyFlag, !kHasStopWaiting); |
+ QuicPacket* packet = ConstructDataPacket(kDefaultPathId, 1, !kHasStopWaiting); |
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, 1, _, _)).Times(0); |
connection_.SendPacket(ENCRYPTION_NONE, kDefaultPathId, 1, packet, |
- kTestEntropyHash, HAS_RETRANSMITTABLE_DATA, false, |
- false); |
+ HAS_RETRANSMITTABLE_DATA, false, false); |
} |
TEST_P(QuicConnectionTest, PublicReset) { |
@@ -4432,100 +4305,7 @@ TEST_P(QuicConnectionTest, MissingPacketsBeforeLeastUnacked) { |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
QuicStopWaitingFrame frame = InitStopWaitingFrame(4); |
ProcessStopWaitingPacket(&frame); |
- if (outgoing_ack()->missing) { |
- EXPECT_TRUE(outgoing_ack()->packets.Empty()); |
- } else { |
- EXPECT_FALSE(outgoing_ack()->packets.Empty()); |
- } |
-} |
- |
-TEST_P(QuicConnectionTest, ReceivedEntropyHashCalculation) { |
- if (GetParam().version > QUIC_VERSION_33) { |
- return; |
- } |
- EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AtLeast(1)); |
- EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
- ProcessDataPacket(kDefaultPathId, 1, kEntropyFlag); |
- ProcessDataPacket(kDefaultPathId, 4, kEntropyFlag); |
- ProcessDataPacket(kDefaultPathId, 3, !kEntropyFlag); |
- ProcessDataPacket(kDefaultPathId, 7, kEntropyFlag); |
- EXPECT_EQ(146u, outgoing_ack()->entropy_hash); |
-} |
- |
-TEST_P(QuicConnectionTest, UpdateEntropyForReceivedPackets) { |
- if (GetParam().version > QUIC_VERSION_33) { |
- return; |
- } |
- EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AtLeast(1)); |
- EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
- ProcessDataPacket(kDefaultPathId, 1, kEntropyFlag); |
- ProcessDataPacket(kDefaultPathId, 5, kEntropyFlag); |
- ProcessDataPacket(kDefaultPathId, 4, !kEntropyFlag); |
- EXPECT_EQ(34u, outgoing_ack()->entropy_hash); |
- // Make 4th packet my least unacked, and update entropy for 2, 3 packets. |
- QuicPacketCreatorPeer::SetPacketNumber(&peer_creator_, 5); |
- QuicPacketEntropyHash six_packet_entropy_hash = 0; |
- QuicPacketEntropyHash random_entropy_hash = 129u; |
- QuicStopWaitingFrame frame = InitStopWaitingFrame(4); |
- frame.entropy_hash = random_entropy_hash; |
- if (ProcessStopWaitingPacket(&frame)) { |
- six_packet_entropy_hash = 1 << 6; |
- } |
- |
- EXPECT_EQ((random_entropy_hash + (1 << 5) + six_packet_entropy_hash), |
- outgoing_ack()->entropy_hash); |
-} |
- |
-TEST_P(QuicConnectionTest, UpdateEntropyHashUptoCurrentPacket) { |
- if (GetParam().version > QUIC_VERSION_33) { |
- return; |
- } |
- EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AtLeast(1)); |
- EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
- ProcessDataPacket(kDefaultPathId, 1, kEntropyFlag); |
- ProcessDataPacket(kDefaultPathId, 5, !kEntropyFlag); |
- ProcessDataPacket(kDefaultPathId, 22, kEntropyFlag); |
- EXPECT_EQ(66u, outgoing_ack()->entropy_hash); |
- QuicPacketCreatorPeer::SetPacketNumber(&peer_creator_, 22); |
- QuicPacketEntropyHash random_entropy_hash = 85u; |
- // Current packet is the least unacked packet. |
- QuicPacketEntropyHash ack_entropy_hash; |
- QuicStopWaitingFrame frame = InitStopWaitingFrame(23); |
- frame.entropy_hash = random_entropy_hash; |
- ack_entropy_hash = ProcessStopWaitingPacket(&frame); |
- EXPECT_EQ((random_entropy_hash + ack_entropy_hash), |
- outgoing_ack()->entropy_hash); |
- ProcessDataPacket(kDefaultPathId, 25, kEntropyFlag); |
- EXPECT_EQ((random_entropy_hash + ack_entropy_hash + (1 << (25 % 8))), |
- outgoing_ack()->entropy_hash); |
-} |
- |
-TEST_P(QuicConnectionTest, EntropyCalculationForTruncatedAck) { |
- if (GetParam().version > QUIC_VERSION_33) { |
- return; |
- } |
- EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AtLeast(1)); |
- EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
- QuicPacketEntropyHash entropy[51]; |
- entropy[0] = 0; |
- for (int i = 1; i < 51; ++i) { |
- bool should_send = i % 10 != 1; |
- bool entropy_flag = (i & (i - 1)) != 0; |
- if (!should_send) { |
- entropy[i] = entropy[i - 1]; |
- continue; |
- } |
- if (entropy_flag) { |
- entropy[i] = entropy[i - 1] ^ (1 << (i % 8)); |
- } else { |
- entropy[i] = entropy[i - 1]; |
- } |
- ProcessDataPacket(kDefaultPathId, i, entropy_flag); |
- } |
- for (int i = 1; i < 50; ++i) { |
- EXPECT_EQ(entropy[i], |
- QuicConnectionPeer::ReceivedEntropyHash(&connection_, i)); |
- } |
+ EXPECT_FALSE(outgoing_ack()->packets.Empty()); |
} |
TEST_P(QuicConnectionTest, ServerSendsVersionNegotiationPacket) { |