Index: net/quic/quic_connection_test.cc |
diff --git a/net/quic/quic_connection_test.cc b/net/quic/quic_connection_test.cc |
index 603680fc1c4d83165c5bbd38927f8e17c47e6024..327d057c1acb72d35dbf6b406dc03d3dc77a323c 100644 |
--- a/net/quic/quic_connection_test.cc |
+++ b/net/quic/quic_connection_test.cc |
@@ -577,7 +577,7 @@ class QuicConnectionTest : public ::testing::TestWithParam<QuicVersion> { |
QuicConnectionTest() |
: connection_id_(42), |
framer_(SupportedVersions(version()), QuicTime::Zero(), false), |
- creator_(connection_id_, &framer_, &random_generator_, false), |
+ peer_creator_(connection_id_, &framer_, &random_generator_, false), |
send_algorithm_(new StrictMock<MockSendAlgorithm>), |
loss_algorithm_(new MockLossAlgorithm()), |
helper_(new TestConnectionHelper(&clock_, &random_generator_)), |
@@ -652,9 +652,10 @@ class QuicConnectionTest : public ::testing::TestWithParam<QuicVersion> { |
QuicPacketEntropyHash ProcessFramePacket(QuicFrame frame) { |
QuicFrames frames; |
frames.push_back(QuicFrame(frame)); |
- QuicPacketCreatorPeer::SetSendVersionInPacket(&creator_, |
+ QuicPacketCreatorPeer::SetSendVersionInPacket(&peer_creator_, |
connection_.is_server()); |
- SerializedPacket serialized_packet = creator_.SerializeAllFrames(frames); |
+ SerializedPacket serialized_packet = |
+ peer_creator_.SerializeAllFrames(frames); |
scoped_ptr<QuicPacket> packet(serialized_packet.packet); |
scoped_ptr<QuicEncryptedPacket> encrypted( |
framer_.EncryptPacket(ENCRYPTION_NONE, |
@@ -915,7 +916,7 @@ class QuicConnectionTest : public ::testing::TestWithParam<QuicVersion> { |
QuicConnectionId connection_id_; |
QuicFramer framer_; |
- QuicPacketCreator creator_; |
+ QuicPacketCreator peer_creator_; |
MockEntropyCalculator entropy_calculator_; |
MockSendAlgorithm* send_algorithm_; |
@@ -1016,7 +1017,7 @@ TEST_P(QuicConnectionTest, PacketsOutOfOrderWithAdditionsAndLeastAwaiting) { |
// packet the peer will not retransmit. It indicates this by sending 'least |
// awaiting' is 4. The connection should then realize 1 will not be |
// retransmitted, and will remove it from the missing list. |
- creator_.set_sequence_number(5); |
+ peer_creator_.set_sequence_number(5); |
QuicAckFrame frame = InitAckFrame(1, 4); |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(_, _, _, _)); |
ProcessAckPacket(&frame); |
@@ -1109,7 +1110,7 @@ TEST_P(QuicConnectionTest, AckReceiptCausesAckSendBadEntropy) { |
TimeUntilSend(_, _, _)).WillRepeatedly( |
testing::Return(QuicTime::Delta::Zero())); |
// Skip a packet and then record an ack. |
- creator_.set_sequence_number(2); |
+ peer_creator_.set_sequence_number(2); |
QuicAckFrame frame = InitAckFrame(0, 3); |
ProcessAckPacket(&frame); |
} |
@@ -1205,7 +1206,7 @@ TEST_P(QuicConnectionTest, LeastUnackedLower) { |
SendStreamDataToPeer(1, "eep", 6, !kFin, NULL); |
// Start out saying the least unacked is 2. |
- creator_.set_sequence_number(5); |
+ peer_creator_.set_sequence_number(5); |
if (version() > QUIC_VERSION_15) { |
QuicStopWaitingFrame frame = InitStopWaitingFrame(2); |
ProcessStopWaitingPacket(&frame); |
@@ -1216,7 +1217,7 @@ TEST_P(QuicConnectionTest, LeastUnackedLower) { |
// Change it to 1, but lower the sequence number to fake out-of-order packets. |
// This should be fine. |
- creator_.set_sequence_number(1); |
+ peer_creator_.set_sequence_number(1); |
// The scheduler will not process out of order acks, but all packet processing |
// causes the connection to try to write. |
EXPECT_CALL(visitor_, OnCanWrite()); |
@@ -1231,7 +1232,7 @@ TEST_P(QuicConnectionTest, LeastUnackedLower) { |
// Now claim it's one, but set the ordering so it was sent "after" the first |
// one. This should cause a connection error. |
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)); |
- creator_.set_sequence_number(7); |
+ peer_creator_.set_sequence_number(7); |
if (version() > QUIC_VERSION_15) { |
EXPECT_CALL(visitor_, |
OnConnectionClosed(QUIC_INVALID_STOP_WAITING_DATA, false)); |
@@ -1277,17 +1278,19 @@ TEST_P(QuicConnectionTest, AckAll) { |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
ProcessPacket(1); |
- creator_.set_sequence_number(1); |
+ peer_creator_.set_sequence_number(1); |
QuicAckFrame frame1 = InitAckFrame(0, 1); |
ProcessAckPacket(&frame1); |
} |
TEST_P(QuicConnectionTest, SendingDifferentSequenceNumberLengthsBandwidth) { |
QuicPacketSequenceNumber last_packet; |
+ QuicPacketCreator* creator = |
+ QuicConnectionPeer::GetPacketCreator(&connection_); |
SendStreamDataToPeer(1, "foo", 0, !kFin, &last_packet); |
EXPECT_EQ(1u, last_packet); |
EXPECT_EQ(PACKET_1BYTE_SEQUENCE_NUMBER, |
- connection_.options()->send_sequence_number_length); |
+ creator->next_sequence_number_length()); |
EXPECT_EQ(PACKET_1BYTE_SEQUENCE_NUMBER, |
writer_->header().public_header.sequence_number_length); |
@@ -1297,7 +1300,7 @@ TEST_P(QuicConnectionTest, SendingDifferentSequenceNumberLengthsBandwidth) { |
SendStreamDataToPeer(1, "bar", 3, !kFin, &last_packet); |
EXPECT_EQ(2u, last_packet); |
EXPECT_EQ(PACKET_2BYTE_SEQUENCE_NUMBER, |
- connection_.options()->send_sequence_number_length); |
+ creator->next_sequence_number_length()); |
// The 1 packet lag is due to the sequence number length being recalculated in |
// QuicConnection after a packet is sent. |
EXPECT_EQ(PACKET_1BYTE_SEQUENCE_NUMBER, |
@@ -1309,7 +1312,7 @@ TEST_P(QuicConnectionTest, SendingDifferentSequenceNumberLengthsBandwidth) { |
SendStreamDataToPeer(1, "foo", 6, !kFin, &last_packet); |
EXPECT_EQ(3u, last_packet); |
EXPECT_EQ(PACKET_4BYTE_SEQUENCE_NUMBER, |
- connection_.options()->send_sequence_number_length); |
+ creator->next_sequence_number_length()); |
EXPECT_EQ(PACKET_2BYTE_SEQUENCE_NUMBER, |
writer_->header().public_header.sequence_number_length); |
@@ -1319,7 +1322,7 @@ TEST_P(QuicConnectionTest, SendingDifferentSequenceNumberLengthsBandwidth) { |
SendStreamDataToPeer(1, "bar", 9, !kFin, &last_packet); |
EXPECT_EQ(4u, last_packet); |
EXPECT_EQ(PACKET_4BYTE_SEQUENCE_NUMBER, |
- connection_.options()->send_sequence_number_length); |
+ creator->next_sequence_number_length()); |
EXPECT_EQ(PACKET_4BYTE_SEQUENCE_NUMBER, |
writer_->header().public_header.sequence_number_length); |
@@ -1329,52 +1332,51 @@ TEST_P(QuicConnectionTest, SendingDifferentSequenceNumberLengthsBandwidth) { |
SendStreamDataToPeer(1, "foo", 12, !kFin, &last_packet); |
EXPECT_EQ(5u, last_packet); |
EXPECT_EQ(PACKET_6BYTE_SEQUENCE_NUMBER, |
- connection_.options()->send_sequence_number_length); |
+ creator->next_sequence_number_length()); |
EXPECT_EQ(PACKET_4BYTE_SEQUENCE_NUMBER, |
writer_->header().public_header.sequence_number_length); |
} |
TEST_P(QuicConnectionTest, SendingDifferentSequenceNumberLengthsUnackedDelta) { |
QuicPacketSequenceNumber last_packet; |
+ QuicPacketCreator* creator = |
+ QuicConnectionPeer::GetPacketCreator(&connection_); |
SendStreamDataToPeer(1, "foo", 0, !kFin, &last_packet); |
EXPECT_EQ(1u, last_packet); |
EXPECT_EQ(PACKET_1BYTE_SEQUENCE_NUMBER, |
- connection_.options()->send_sequence_number_length); |
+ creator->next_sequence_number_length()); |
EXPECT_EQ(PACKET_1BYTE_SEQUENCE_NUMBER, |
writer_->header().public_header.sequence_number_length); |
- QuicConnectionPeer::GetPacketCreator(&connection_)->set_sequence_number(100); |
+ creator->set_sequence_number(100); |
SendStreamDataToPeer(1, "bar", 3, !kFin, &last_packet); |
EXPECT_EQ(PACKET_2BYTE_SEQUENCE_NUMBER, |
- connection_.options()->send_sequence_number_length); |
+ creator->next_sequence_number_length()); |
EXPECT_EQ(PACKET_1BYTE_SEQUENCE_NUMBER, |
writer_->header().public_header.sequence_number_length); |
- QuicConnectionPeer::GetPacketCreator(&connection_)->set_sequence_number( |
- 100 * 256); |
+ creator->set_sequence_number(100 * 256); |
SendStreamDataToPeer(1, "foo", 6, !kFin, &last_packet); |
EXPECT_EQ(PACKET_4BYTE_SEQUENCE_NUMBER, |
- connection_.options()->send_sequence_number_length); |
+ creator->next_sequence_number_length()); |
EXPECT_EQ(PACKET_2BYTE_SEQUENCE_NUMBER, |
writer_->header().public_header.sequence_number_length); |
- QuicConnectionPeer::GetPacketCreator(&connection_)->set_sequence_number( |
- 100 * 256 * 256); |
+ creator->set_sequence_number(100 * 256 * 256); |
SendStreamDataToPeer(1, "bar", 9, !kFin, &last_packet); |
EXPECT_EQ(PACKET_4BYTE_SEQUENCE_NUMBER, |
- connection_.options()->send_sequence_number_length); |
+ creator->next_sequence_number_length()); |
EXPECT_EQ(PACKET_4BYTE_SEQUENCE_NUMBER, |
writer_->header().public_header.sequence_number_length); |
- QuicConnectionPeer::GetPacketCreator(&connection_)->set_sequence_number( |
- 100 * 256 * 256 * 256); |
+ creator->set_sequence_number(100 * 256 * 256 * 256); |
SendStreamDataToPeer(1, "foo", 12, !kFin, &last_packet); |
EXPECT_EQ(PACKET_6BYTE_SEQUENCE_NUMBER, |
- connection_.options()->send_sequence_number_length); |
+ creator->next_sequence_number_length()); |
EXPECT_EQ(PACKET_4BYTE_SEQUENCE_NUMBER, |
writer_->header().public_header.sequence_number_length); |
} |
@@ -1432,18 +1434,21 @@ TEST_P(QuicConnectionTest, BasicSending) { |
TEST_P(QuicConnectionTest, FECSending) { |
// All packets carry version info till version is negotiated. |
+ QuicPacketCreator* creator = |
+ QuicConnectionPeer::GetPacketCreator(&connection_); |
size_t payload_length; |
// GetPacketLengthForOneStream() assumes a stream offset of 0 in determining |
// packet length. The size of the offset field in a stream frame is 0 for |
- // offset 0, and 2 for non-zero offsets up through 16K. Increase |
+ // offset 0, and 2 for non-zero offsets up through 64K. Increase |
// max_packet_length by 2 so that subsequent packets containing subsequent |
// stream frames with non-zero offets will fit within the packet length. |
- connection_.options()->max_packet_length = 2 + GetPacketLengthForOneStream( |
+ size_t length = 2 + GetPacketLengthForOneStream( |
connection_.version(), kIncludeVersion, PACKET_1BYTE_SEQUENCE_NUMBER, |
IN_FEC_GROUP, &payload_length); |
+ creator->set_max_packet_length(length); |
+ |
// And send FEC every two packets. |
- EXPECT_TRUE(QuicPacketCreatorPeer::SwitchFecProtectionOn( |
- QuicConnectionPeer::GetPacketCreator(&connection_), 2)); |
+ EXPECT_TRUE(QuicPacketCreatorPeer::SwitchFecProtectionOn(creator, 2)); |
// Send 4 data packets and 2 FEC packets. |
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(6); |
@@ -1451,25 +1456,28 @@ TEST_P(QuicConnectionTest, FECSending) { |
const string payload(payload_length * 4 + 2, 'a'); |
connection_.SendStreamDataWithString(1, payload, 0, !kFin, NULL); |
// Expect the FEC group to be closed after SendStreamDataWithString. |
- EXPECT_FALSE(creator_.ShouldSendFec(true)); |
+ EXPECT_FALSE(creator->ShouldSendFec(true)); |
+ EXPECT_TRUE(creator->IsFecProtected()); |
} |
TEST_P(QuicConnectionTest, FECQueueing) { |
// All packets carry version info till version is negotiated. |
size_t payload_length; |
- connection_.options()->max_packet_length = |
- GetPacketLengthForOneStream( |
- connection_.version(), kIncludeVersion, PACKET_1BYTE_SEQUENCE_NUMBER, |
- IN_FEC_GROUP, &payload_length); |
+ QuicPacketCreator* creator = |
+ QuicConnectionPeer::GetPacketCreator(&connection_); |
+ size_t length = GetPacketLengthForOneStream( |
+ connection_.version(), kIncludeVersion, PACKET_1BYTE_SEQUENCE_NUMBER, |
+ IN_FEC_GROUP, &payload_length); |
+ creator->set_max_packet_length(length); |
// And send FEC every two packets. |
- EXPECT_TRUE(QuicPacketCreatorPeer::SwitchFecProtectionOn( |
- QuicConnectionPeer::GetPacketCreator(&connection_), 2)); |
+ EXPECT_TRUE(QuicPacketCreatorPeer::SwitchFecProtectionOn(creator, 2)); |
EXPECT_EQ(0u, connection_.NumQueuedPackets()); |
BlockOnNextWrite(); |
const string payload(payload_length, 'a'); |
connection_.SendStreamDataWithString(1, payload, 0, !kFin, NULL); |
- EXPECT_FALSE(creator_.ShouldSendFec(true)); |
+ EXPECT_FALSE(creator->ShouldSendFec(true)); |
+ EXPECT_TRUE(creator->IsFecProtected()); |
// Expect the first data packet and the fec packet to be queued. |
EXPECT_EQ(2u, connection_.NumQueuedPackets()); |
} |
@@ -1690,7 +1698,7 @@ TEST_P(QuicConnectionTest, FramePackingAckResponse) { |
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(1); |
// Process an ack to cause the visitor's OnCanWrite to be invoked. |
- creator_.set_sequence_number(2); |
+ peer_creator_.set_sequence_number(2); |
QuicAckFrame ack_one = InitAckFrame(0, 0); |
ProcessAckPacket(&ack_one); |
@@ -2548,7 +2556,7 @@ TEST_P(QuicConnectionTest, CloseFecGroup) { |
ASSERT_EQ(1u, connection_.NumFecGroups()); |
// Now send non-fec protected ack packet and close the group. |
- creator_.set_sequence_number(4); |
+ peer_creator_.set_sequence_number(4); |
if (version() > QUIC_VERSION_15) { |
QuicStopWaitingFrame frame = InitStopWaitingFrame(5); |
ProcessStopWaitingPacket(&frame); |
@@ -2870,10 +2878,11 @@ TEST_P(QuicConnectionTest, SendSchedulerDelayThenOnCanWrite) { |
TEST_P(QuicConnectionTest, TestQueueLimitsOnSendStreamData) { |
// All packets carry version info till version is negotiated. |
size_t payload_length; |
- connection_.options()->max_packet_length = |
- GetPacketLengthForOneStream( |
- connection_.version(), kIncludeVersion, PACKET_1BYTE_SEQUENCE_NUMBER, |
- NOT_IN_FEC_GROUP, &payload_length); |
+ size_t length = GetPacketLengthForOneStream( |
+ connection_.version(), kIncludeVersion, PACKET_1BYTE_SEQUENCE_NUMBER, |
+ NOT_IN_FEC_GROUP, &payload_length); |
+ QuicConnectionPeer::GetPacketCreator(&connection_)->set_max_packet_length( |
+ length); |
// Queue the first packet. |
EXPECT_CALL(*send_algorithm_, |
@@ -2894,9 +2903,11 @@ TEST_P(QuicConnectionTest, LoopThroughSendingPackets) { |
// offset 0, and 2 for non-zero offsets up through 16K. Increase |
// max_packet_length by 2 so that subsequent packets containing subsequent |
// stream frames with non-zero offets will fit within the packet length. |
- connection_.options()->max_packet_length = 2 + GetPacketLengthForOneStream( |
+ size_t length = 2 + GetPacketLengthForOneStream( |
connection_.version(), kIncludeVersion, PACKET_1BYTE_SEQUENCE_NUMBER, |
NOT_IN_FEC_GROUP, &payload_length); |
+ QuicConnectionPeer::GetPacketCreator(&connection_)->set_max_packet_length( |
+ length); |
// Queue the first packet. |
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(7); |
@@ -3160,7 +3171,7 @@ TEST_P(QuicConnectionTest, InvalidPacket) { |
TEST_P(QuicConnectionTest, MissingPacketsBeforeLeastUnacked) { |
// Set the sequence number of the ack packet to be least unacked (4). |
- creator_.set_sequence_number(3); |
+ peer_creator_.set_sequence_number(3); |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
if (version() > QUIC_VERSION_15) { |
QuicStopWaitingFrame frame = InitStopWaitingFrame(4); |
@@ -3204,7 +3215,7 @@ TEST_P(QuicConnectionTest, UpdateEntropyForReceivedPackets) { |
ProcessDataPacket(4, 1, !kEntropyFlag); |
EXPECT_EQ(34u, outgoing_ack()->received_info.entropy_hash); |
// Make 4th packet my least unacked, and update entropy for 2, 3 packets. |
- creator_.set_sequence_number(5); |
+ peer_creator_.set_sequence_number(5); |
QuicPacketEntropyHash six_packet_entropy_hash = 0; |
QuicPacketEntropyHash kRandomEntropyHash = 129u; |
if (version() > QUIC_VERSION_15) { |
@@ -3232,7 +3243,7 @@ TEST_P(QuicConnectionTest, UpdateEntropyHashUptoCurrentPacket) { |
ProcessDataPacket(5, 1, !kEntropyFlag); |
ProcessDataPacket(22, 1, kEntropyFlag); |
EXPECT_EQ(66u, outgoing_ack()->received_info.entropy_hash); |
- creator_.set_sequence_number(22); |
+ peer_creator_.set_sequence_number(22); |
QuicPacketEntropyHash kRandomEntropyHash = 85u; |
// Current packet is the least unacked packet. |
QuicPacketEntropyHash ack_entropy_hash; |
@@ -3278,7 +3289,7 @@ TEST_P(QuicConnectionTest, EntropyCalculationForTruncatedAck) { |
} |
TEST_P(QuicConnectionTest, CheckSentEntropyHash) { |
- creator_.set_sequence_number(1); |
+ peer_creator_.set_sequence_number(1); |
SequenceNumberSet missing_packets; |
QuicPacketEntropyHash entropy_hash = 0; |
QuicPacketSequenceNumber max_sequence_number = 51; |