| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/quic/quic_packet_generator.h" | 5 #include "net/quic/quic_packet_generator.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "net/quic/crypto/crypto_protocol.h" | 10 #include "net/quic/crypto/crypto_protocol.h" |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 generator_(42, &framer_, &random_, &buffer_allocator_, &delegate_), | 117 generator_(42, &framer_, &random_, &buffer_allocator_, &delegate_), |
| 118 creator_(QuicPacketGeneratorPeer::GetPacketCreator(&generator_)) { | 118 creator_(QuicPacketGeneratorPeer::GetPacketCreator(&generator_)) { |
| 119 generator_.set_fec_send_policy(GetParam()); | 119 generator_.set_fec_send_policy(GetParam()); |
| 120 // TODO(ianswett): Fix this test so it uses a non-null encrypter. | 120 // TODO(ianswett): Fix this test so it uses a non-null encrypter. |
| 121 FLAGS_quic_never_write_unencrypted_data = false; | 121 FLAGS_quic_never_write_unencrypted_data = false; |
| 122 FLAGS_quic_no_unencrypted_fec = false; | 122 FLAGS_quic_no_unencrypted_fec = false; |
| 123 } | 123 } |
| 124 | 124 |
| 125 ~QuicPacketGeneratorTest() override { | 125 ~QuicPacketGeneratorTest() override { |
| 126 for (SerializedPacket& packet : packets_) { | 126 for (SerializedPacket& packet : packets_) { |
| 127 delete[] packet.encrypted_buffer; |
| 127 QuicUtils::ClearSerializedPacket(&packet); | 128 QuicUtils::ClearSerializedPacket(&packet); |
| 128 } | 129 } |
| 129 } | 130 } |
| 130 | 131 |
| 131 void SavePacket(SerializedPacket* packet) { | 132 void SavePacket(SerializedPacket* packet) { |
| 133 packet->encrypted_buffer = QuicUtils::CopyBuffer(*packet); |
| 132 packets_.push_back(*packet); | 134 packets_.push_back(*packet); |
| 133 ASSERT_FALSE(packet->packet->owns_buffer()); | 135 packet->encrypted_buffer = nullptr; |
| 134 scoped_ptr<QuicEncryptedPacket> encrypted_deleter(packets_.back().packet); | |
| 135 packets_.back().packet = packets_.back().packet->Clone(); | |
| 136 packet->retransmittable_frames.clear(); | 136 packet->retransmittable_frames.clear(); |
| 137 } | 137 } |
| 138 | 138 |
| 139 protected: | 139 protected: |
| 140 QuicRstStreamFrame* CreateRstStreamFrame() { | 140 QuicRstStreamFrame* CreateRstStreamFrame() { |
| 141 return new QuicRstStreamFrame(1, QUIC_STREAM_NO_ERROR, 0); | 141 return new QuicRstStreamFrame(1, QUIC_STREAM_NO_ERROR, 0); |
| 142 } | 142 } |
| 143 | 143 |
| 144 QuicGoAwayFrame* CreateGoAwayFrame() { | 144 QuicGoAwayFrame* CreateGoAwayFrame() { |
| 145 return new QuicGoAwayFrame(QUIC_NO_ERROR, 1, string()); | 145 return new QuicGoAwayFrame(QUIC_NO_ERROR, 1, string()); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 158 contents.num_mtu_discovery_frames + num_retransmittable_frames; | 158 contents.num_mtu_discovery_frames + num_retransmittable_frames; |
| 159 | 159 |
| 160 if (num_retransmittable_frames == 0) { | 160 if (num_retransmittable_frames == 0) { |
| 161 ASSERT_TRUE(packet.retransmittable_frames.empty()); | 161 ASSERT_TRUE(packet.retransmittable_frames.empty()); |
| 162 } else { | 162 } else { |
| 163 ASSERT_FALSE(packet.retransmittable_frames.empty()); | 163 ASSERT_FALSE(packet.retransmittable_frames.empty()); |
| 164 EXPECT_EQ(num_retransmittable_frames, | 164 EXPECT_EQ(num_retransmittable_frames, |
| 165 packet.retransmittable_frames.size()); | 165 packet.retransmittable_frames.size()); |
| 166 } | 166 } |
| 167 | 167 |
| 168 ASSERT_TRUE(packet.packet != nullptr); | 168 ASSERT_TRUE(packet.encrypted_buffer != nullptr); |
| 169 ASSERT_TRUE(simple_framer_.ProcessPacket(*packet.packet)); | 169 ASSERT_TRUE(simple_framer_.ProcessPacket( |
| 170 QuicEncryptedPacket(packet.encrypted_buffer, packet.encrypted_length))); |
| 170 EXPECT_EQ(num_frames, simple_framer_.num_frames()); | 171 EXPECT_EQ(num_frames, simple_framer_.num_frames()); |
| 171 EXPECT_EQ(contents.num_ack_frames, simple_framer_.ack_frames().size()); | 172 EXPECT_EQ(contents.num_ack_frames, simple_framer_.ack_frames().size()); |
| 172 EXPECT_EQ(contents.num_connection_close_frames, | 173 EXPECT_EQ(contents.num_connection_close_frames, |
| 173 simple_framer_.connection_close_frames().size()); | 174 simple_framer_.connection_close_frames().size()); |
| 174 EXPECT_EQ(contents.num_goaway_frames, | 175 EXPECT_EQ(contents.num_goaway_frames, |
| 175 simple_framer_.goaway_frames().size()); | 176 simple_framer_.goaway_frames().size()); |
| 176 EXPECT_EQ(contents.num_rst_stream_frames, | 177 EXPECT_EQ(contents.num_rst_stream_frames, |
| 177 simple_framer_.rst_stream_frames().size()); | 178 simple_framer_.rst_stream_frames().size()); |
| 178 EXPECT_EQ(contents.num_stream_frames, | 179 EXPECT_EQ(contents.num_stream_frames, |
| 179 simple_framer_.stream_frames().size()); | 180 simple_framer_.stream_frames().size()); |
| 180 EXPECT_EQ(contents.num_stop_waiting_frames, | 181 EXPECT_EQ(contents.num_stop_waiting_frames, |
| 181 simple_framer_.stop_waiting_frames().size()); | 182 simple_framer_.stop_waiting_frames().size()); |
| 182 EXPECT_EQ(contents.fec_group, simple_framer_.header().fec_group); | 183 EXPECT_EQ(contents.fec_group, simple_framer_.header().fec_group); |
| 183 | 184 |
| 184 // From the receiver's perspective, MTU discovery frames are ping frames. | 185 // From the receiver's perspective, MTU discovery frames are ping frames. |
| 185 EXPECT_EQ(contents.num_ping_frames + contents.num_mtu_discovery_frames, | 186 EXPECT_EQ(contents.num_ping_frames + contents.num_mtu_discovery_frames, |
| 186 simple_framer_.ping_frames().size()); | 187 simple_framer_.ping_frames().size()); |
| 187 } | 188 } |
| 188 | 189 |
| 189 void CheckPacketHasSingleStreamFrame(size_t packet_index) { | 190 void CheckPacketHasSingleStreamFrame(size_t packet_index) { |
| 190 ASSERT_GT(packets_.size(), packet_index); | 191 ASSERT_GT(packets_.size(), packet_index); |
| 191 const SerializedPacket& packet = packets_[packet_index]; | 192 const SerializedPacket& packet = packets_[packet_index]; |
| 192 ASSERT_FALSE(packet.retransmittable_frames.empty()); | 193 ASSERT_FALSE(packet.retransmittable_frames.empty()); |
| 193 EXPECT_EQ(1u, packet.retransmittable_frames.size()); | 194 EXPECT_EQ(1u, packet.retransmittable_frames.size()); |
| 194 ASSERT_TRUE(packet.packet != nullptr); | 195 ASSERT_TRUE(packet.encrypted_buffer != nullptr); |
| 195 ASSERT_TRUE(simple_framer_.ProcessPacket(*packet.packet)); | 196 ASSERT_TRUE(simple_framer_.ProcessPacket( |
| 197 QuicEncryptedPacket(packet.encrypted_buffer, packet.encrypted_length))); |
| 196 EXPECT_EQ(1u, simple_framer_.num_frames()); | 198 EXPECT_EQ(1u, simple_framer_.num_frames()); |
| 197 EXPECT_EQ(1u, simple_framer_.stream_frames().size()); | 199 EXPECT_EQ(1u, simple_framer_.stream_frames().size()); |
| 198 } | 200 } |
| 199 | 201 |
| 200 void CheckAllPacketsHaveSingleStreamFrame() { | 202 void CheckAllPacketsHaveSingleStreamFrame() { |
| 201 for (size_t i = 0; i < packets_.size(); i++) { | 203 for (size_t i = 0; i < packets_.size(); i++) { |
| 202 CheckPacketHasSingleStreamFrame(i); | 204 CheckPacketHasSingleStreamFrame(i); |
| 203 } | 205 } |
| 204 } | 206 } |
| 205 | 207 |
| 206 void CheckPacketIsFec(size_t packet_index, QuicPacketNumber fec_group) { | 208 void CheckPacketIsFec(size_t packet_index, QuicPacketNumber fec_group) { |
| 207 ASSERT_GT(packets_.size(), packet_index); | 209 ASSERT_GT(packets_.size(), packet_index); |
| 208 const SerializedPacket& packet = packets_[packet_index]; | 210 const SerializedPacket& packet = packets_[packet_index]; |
| 209 ASSERT_TRUE(packet.retransmittable_frames.empty()); | 211 ASSERT_TRUE(packet.retransmittable_frames.empty()); |
| 210 ASSERT_TRUE(packet.packet != nullptr); | 212 ASSERT_TRUE(packet.encrypted_buffer != nullptr); |
| 211 ASSERT_TRUE(simple_framer_.ProcessPacket(*packet.packet)); | 213 ASSERT_TRUE(simple_framer_.ProcessPacket( |
| 214 QuicEncryptedPacket(packet.encrypted_buffer, packet.encrypted_length))); |
| 212 EXPECT_TRUE(simple_framer_.header().fec_flag); | 215 EXPECT_TRUE(simple_framer_.header().fec_flag); |
| 213 } | 216 } |
| 214 | 217 |
| 215 QuicIOVector CreateData(size_t len) { | 218 QuicIOVector CreateData(size_t len) { |
| 216 data_array_.reset(new char[len]); | 219 data_array_.reset(new char[len]); |
| 217 memset(data_array_.get(), '?', len); | 220 memset(data_array_.get(), '?', len); |
| 218 iov_.iov_base = data_array_.get(); | 221 iov_.iov_base = data_array_.get(); |
| 219 iov_.iov_len = len; | 222 iov_.iov_len = len; |
| 220 return QuicIOVector(&iov_, 1, len); | 223 return QuicIOVector(&iov_, 1, len); |
| 221 } | 224 } |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 408 kCryptoStreamId, MakeIOVector("foo"), 0, false, MAY_FEC_PROTECT, nullptr); | 411 kCryptoStreamId, MakeIOVector("foo"), 0, false, MAY_FEC_PROTECT, nullptr); |
| 409 EXPECT_EQ(3u, consumed.bytes_consumed); | 412 EXPECT_EQ(3u, consumed.bytes_consumed); |
| 410 EXPECT_FALSE(generator_.HasQueuedFrames()); | 413 EXPECT_FALSE(generator_.HasQueuedFrames()); |
| 411 | 414 |
| 412 PacketContents contents; | 415 PacketContents contents; |
| 413 contents.num_stream_frames = 1; | 416 contents.num_stream_frames = 1; |
| 414 CheckPacketContains(contents, 0); | 417 CheckPacketContains(contents, 0); |
| 415 | 418 |
| 416 ASSERT_EQ(1u, packets_.size()); | 419 ASSERT_EQ(1u, packets_.size()); |
| 417 ASSERT_EQ(kDefaultMaxPacketSize, generator_.GetMaxPacketLength()); | 420 ASSERT_EQ(kDefaultMaxPacketSize, generator_.GetMaxPacketLength()); |
| 418 EXPECT_EQ(kDefaultMaxPacketSize, packets_[0].packet->length()); | 421 EXPECT_EQ(kDefaultMaxPacketSize, packets_[0].encrypted_length); |
| 419 } | 422 } |
| 420 | 423 |
| 421 TEST_P(QuicPacketGeneratorTest, ConsumeData_EmptyData) { | 424 TEST_P(QuicPacketGeneratorTest, ConsumeData_EmptyData) { |
| 422 EXPECT_DFATAL(generator_.ConsumeData(kHeadersStreamId, MakeIOVector(""), 0, | 425 EXPECT_DFATAL(generator_.ConsumeData(kHeadersStreamId, MakeIOVector(""), 0, |
| 423 false, MAY_FEC_PROTECT, nullptr), | 426 false, MAY_FEC_PROTECT, nullptr), |
| 424 "Attempt to consume empty data without FIN."); | 427 "Attempt to consume empty data without FIN."); |
| 425 } | 428 } |
| 426 | 429 |
| 427 TEST_P(QuicPacketGeneratorTest, | 430 TEST_P(QuicPacketGeneratorTest, |
| 428 ConsumeDataMultipleTimes_WritableAndShouldNotFlush) { | 431 ConsumeDataMultipleTimes_WritableAndShouldNotFlush) { |
| (...skipping 979 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1408 /*fin=*/true, MAY_FEC_PROTECT, nullptr); | 1411 /*fin=*/true, MAY_FEC_PROTECT, nullptr); |
| 1409 EXPECT_EQ(data_len, consumed.bytes_consumed); | 1412 EXPECT_EQ(data_len, consumed.bytes_consumed); |
| 1410 EXPECT_TRUE(consumed.fin_consumed); | 1413 EXPECT_TRUE(consumed.fin_consumed); |
| 1411 EXPECT_FALSE(generator_.HasQueuedFrames()); | 1414 EXPECT_FALSE(generator_.HasQueuedFrames()); |
| 1412 | 1415 |
| 1413 // We expect three packets, and first two of them have to be of packet_len | 1416 // We expect three packets, and first two of them have to be of packet_len |
| 1414 // size. We check multiple packets (instead of just one) because we want to | 1417 // size. We check multiple packets (instead of just one) because we want to |
| 1415 // ensure that |max_packet_length_| does not get changed incorrectly by the | 1418 // ensure that |max_packet_length_| does not get changed incorrectly by the |
| 1416 // generator after first packet is serialized. | 1419 // generator after first packet is serialized. |
| 1417 ASSERT_EQ(3u, packets_.size()); | 1420 ASSERT_EQ(3u, packets_.size()); |
| 1418 EXPECT_EQ(packet_len, packets_[0].packet->length()); | 1421 EXPECT_EQ(packet_len, packets_[0].encrypted_length); |
| 1419 EXPECT_EQ(packet_len, packets_[1].packet->length()); | 1422 EXPECT_EQ(packet_len, packets_[1].encrypted_length); |
| 1420 CheckAllPacketsHaveSingleStreamFrame(); | 1423 CheckAllPacketsHaveSingleStreamFrame(); |
| 1421 } | 1424 } |
| 1422 | 1425 |
| 1423 // Test whether SetMaxPacketLength() works in the situation when we first write | 1426 // Test whether SetMaxPacketLength() works in the situation when we first write |
| 1424 // data, then change packet size, then write data again. | 1427 // data, then change packet size, then write data again. |
| 1425 TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_Middle) { | 1428 TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_Middle) { |
| 1426 delegate_.SetCanWriteAnything(); | 1429 delegate_.SetCanWriteAnything(); |
| 1427 | 1430 |
| 1428 // We send enough data to overflow default packet length, but not the altered | 1431 // We send enough data to overflow default packet length, but not the altered |
| 1429 // one. | 1432 // one. |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1456 consumed = generator_.ConsumeData(kHeadersStreamId, CreateData(data_len), | 1459 consumed = generator_.ConsumeData(kHeadersStreamId, CreateData(data_len), |
| 1457 2 + data_len, | 1460 2 + data_len, |
| 1458 /*fin=*/true, MAY_FEC_PROTECT, nullptr); | 1461 /*fin=*/true, MAY_FEC_PROTECT, nullptr); |
| 1459 EXPECT_EQ(data_len, consumed.bytes_consumed); | 1462 EXPECT_EQ(data_len, consumed.bytes_consumed); |
| 1460 EXPECT_TRUE(consumed.fin_consumed); | 1463 EXPECT_TRUE(consumed.fin_consumed); |
| 1461 EXPECT_FALSE(generator_.HasQueuedFrames()); | 1464 EXPECT_FALSE(generator_.HasQueuedFrames()); |
| 1462 | 1465 |
| 1463 // We expect first data chunk to get fragmented, but the second one to fit | 1466 // We expect first data chunk to get fragmented, but the second one to fit |
| 1464 // into a single packet. | 1467 // into a single packet. |
| 1465 ASSERT_EQ(3u, packets_.size()); | 1468 ASSERT_EQ(3u, packets_.size()); |
| 1466 EXPECT_EQ(kDefaultMaxPacketSize, packets_[0].packet->length()); | 1469 EXPECT_EQ(kDefaultMaxPacketSize, packets_[0].encrypted_length); |
| 1467 EXPECT_LE(kDefaultMaxPacketSize, packets_[2].packet->length()); | 1470 EXPECT_LE(kDefaultMaxPacketSize, packets_[2].encrypted_length); |
| 1468 CheckAllPacketsHaveSingleStreamFrame(); | 1471 CheckAllPacketsHaveSingleStreamFrame(); |
| 1469 } | 1472 } |
| 1470 | 1473 |
| 1471 // Test whether SetMaxPacketLength() works correctly when we change the packet | 1474 // Test whether SetMaxPacketLength() works correctly when we change the packet |
| 1472 // size in the middle of the batched packet. | 1475 // size in the middle of the batched packet. |
| 1473 TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_Midpacket) { | 1476 TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_Midpacket) { |
| 1474 delegate_.SetCanWriteAnything(); | 1477 delegate_.SetCanWriteAnything(); |
| 1475 generator_.StartBatchOperations(); | 1478 generator_.StartBatchOperations(); |
| 1476 | 1479 |
| 1477 size_t first_write_len = kDefaultMaxPacketSize / 2; | 1480 size_t first_write_len = kDefaultMaxPacketSize / 2; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1508 generator_.ConsumeData(kHeadersStreamId, CreateData(second_write_len), | 1511 generator_.ConsumeData(kHeadersStreamId, CreateData(second_write_len), |
| 1509 /*offset=*/2 + first_write_len, | 1512 /*offset=*/2 + first_write_len, |
| 1510 /*fin=*/true, MAY_FEC_PROTECT, nullptr); | 1513 /*fin=*/true, MAY_FEC_PROTECT, nullptr); |
| 1511 EXPECT_EQ(second_write_len, consumed.bytes_consumed); | 1514 EXPECT_EQ(second_write_len, consumed.bytes_consumed); |
| 1512 EXPECT_TRUE(consumed.fin_consumed); | 1515 EXPECT_TRUE(consumed.fin_consumed); |
| 1513 EXPECT_TRUE(generator_.HasQueuedFrames()); | 1516 EXPECT_TRUE(generator_.HasQueuedFrames()); |
| 1514 | 1517 |
| 1515 // We expect the first packet to contain two frames, and to not reflect the | 1518 // We expect the first packet to contain two frames, and to not reflect the |
| 1516 // packet size change. | 1519 // packet size change. |
| 1517 ASSERT_EQ(1u, packets_.size()); | 1520 ASSERT_EQ(1u, packets_.size()); |
| 1518 EXPECT_EQ(kDefaultMaxPacketSize, packets_[0].packet->length()); | 1521 EXPECT_EQ(kDefaultMaxPacketSize, packets_[0].encrypted_length); |
| 1519 | 1522 |
| 1520 PacketContents contents; | 1523 PacketContents contents; |
| 1521 contents.num_stream_frames = 2; | 1524 contents.num_stream_frames = 2; |
| 1522 CheckPacketContains(contents, 0); | 1525 CheckPacketContains(contents, 0); |
| 1523 } | 1526 } |
| 1524 | 1527 |
| 1525 // Test whether SetMaxPacketLength() works correctly when we force the change of | 1528 // Test whether SetMaxPacketLength() works correctly when we force the change of |
| 1526 // the packet size in the middle of the batched packet. | 1529 // the packet size in the middle of the batched packet. |
| 1527 TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_MidpacketFlush) { | 1530 TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_MidpacketFlush) { |
| 1528 delegate_.SetCanWriteAnything(); | 1531 delegate_.SetCanWriteAnything(); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1568 generator_.ConsumeData(kHeadersStreamId, CreateData(second_write_len), | 1571 generator_.ConsumeData(kHeadersStreamId, CreateData(second_write_len), |
| 1569 /*offset=*/2 + first_write_len, | 1572 /*offset=*/2 + first_write_len, |
| 1570 /*fin=*/true, MAY_FEC_PROTECT, nullptr); | 1573 /*fin=*/true, MAY_FEC_PROTECT, nullptr); |
| 1571 EXPECT_EQ(second_write_len, consumed.bytes_consumed); | 1574 EXPECT_EQ(second_write_len, consumed.bytes_consumed); |
| 1572 EXPECT_TRUE(consumed.fin_consumed); | 1575 EXPECT_TRUE(consumed.fin_consumed); |
| 1573 EXPECT_TRUE(generator_.HasQueuedFrames()); | 1576 EXPECT_TRUE(generator_.HasQueuedFrames()); |
| 1574 | 1577 |
| 1575 // We expect the first packet to be underfilled, and the second packet be up | 1578 // We expect the first packet to be underfilled, and the second packet be up |
| 1576 // to the new max packet size. | 1579 // to the new max packet size. |
| 1577 ASSERT_EQ(2u, packets_.size()); | 1580 ASSERT_EQ(2u, packets_.size()); |
| 1578 EXPECT_GT(kDefaultMaxPacketSize, packets_[0].packet->length()); | 1581 EXPECT_GT(kDefaultMaxPacketSize, packets_[0].encrypted_length); |
| 1579 EXPECT_EQ(packet_len, packets_[1].packet->length()); | 1582 EXPECT_EQ(packet_len, packets_[1].encrypted_length); |
| 1580 | 1583 |
| 1581 CheckAllPacketsHaveSingleStreamFrame(); | 1584 CheckAllPacketsHaveSingleStreamFrame(); |
| 1582 } | 1585 } |
| 1583 | 1586 |
| 1584 // Test sending an MTU probe, without any surrounding data. | 1587 // Test sending an MTU probe, without any surrounding data. |
| 1585 TEST_P(QuicPacketGeneratorTest, GenerateMtuDiscoveryPacket_Simple) { | 1588 TEST_P(QuicPacketGeneratorTest, GenerateMtuDiscoveryPacket_Simple) { |
| 1586 delegate_.SetCanWriteAnything(); | 1589 delegate_.SetCanWriteAnything(); |
| 1587 | 1590 |
| 1588 const size_t target_mtu = kDefaultMaxPacketSize + 100; | 1591 const size_t target_mtu = kDefaultMaxPacketSize + 100; |
| 1589 static_assert(target_mtu < kMaxPacketSize, | 1592 static_assert(target_mtu < kMaxPacketSize, |
| 1590 "The MTU probe used by the test exceeds maximum packet size"); | 1593 "The MTU probe used by the test exceeds maximum packet size"); |
| 1591 | 1594 |
| 1592 EXPECT_CALL(delegate_, OnSerializedPacket(_)) | 1595 EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
| 1593 .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket)); | 1596 .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket)); |
| 1594 | 1597 |
| 1595 generator_.GenerateMtuDiscoveryPacket(target_mtu, nullptr); | 1598 generator_.GenerateMtuDiscoveryPacket(target_mtu, nullptr); |
| 1596 | 1599 |
| 1597 EXPECT_FALSE(generator_.HasQueuedFrames()); | 1600 EXPECT_FALSE(generator_.HasQueuedFrames()); |
| 1598 ASSERT_EQ(1u, packets_.size()); | 1601 ASSERT_EQ(1u, packets_.size()); |
| 1599 EXPECT_EQ(target_mtu, packets_[0].packet->length()); | 1602 EXPECT_EQ(target_mtu, packets_[0].encrypted_length); |
| 1600 | 1603 |
| 1601 PacketContents contents; | 1604 PacketContents contents; |
| 1602 contents.num_mtu_discovery_frames = 1; | 1605 contents.num_mtu_discovery_frames = 1; |
| 1603 CheckPacketContains(contents, 0); | 1606 CheckPacketContains(contents, 0); |
| 1604 } | 1607 } |
| 1605 | 1608 |
| 1606 // Test sending an MTU probe. Surround it with data, to ensure that it resets | 1609 // Test sending an MTU probe. Surround it with data, to ensure that it resets |
| 1607 // the MTU to the value before the probe was sent. | 1610 // the MTU to the value before the probe was sent. |
| 1608 TEST_P(QuicPacketGeneratorTest, GenerateMtuDiscoveryPacket_SurroundedByData) { | 1611 TEST_P(QuicPacketGeneratorTest, GenerateMtuDiscoveryPacket_SurroundedByData) { |
| 1609 delegate_.SetCanWriteAnything(); | 1612 delegate_.SetCanWriteAnything(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1636 | 1639 |
| 1637 // Send data after the MTU probe. | 1640 // Send data after the MTU probe. |
| 1638 consumed = generator_.ConsumeData(kHeadersStreamId, CreateData(data_len), | 1641 consumed = generator_.ConsumeData(kHeadersStreamId, CreateData(data_len), |
| 1639 /*offset=*/2 + data_len, | 1642 /*offset=*/2 + data_len, |
| 1640 /*fin=*/true, MAY_FEC_PROTECT, nullptr); | 1643 /*fin=*/true, MAY_FEC_PROTECT, nullptr); |
| 1641 EXPECT_EQ(data_len, consumed.bytes_consumed); | 1644 EXPECT_EQ(data_len, consumed.bytes_consumed); |
| 1642 EXPECT_TRUE(consumed.fin_consumed); | 1645 EXPECT_TRUE(consumed.fin_consumed); |
| 1643 EXPECT_FALSE(generator_.HasQueuedFrames()); | 1646 EXPECT_FALSE(generator_.HasQueuedFrames()); |
| 1644 | 1647 |
| 1645 ASSERT_EQ(5u, packets_.size()); | 1648 ASSERT_EQ(5u, packets_.size()); |
| 1646 EXPECT_EQ(kDefaultMaxPacketSize, packets_[0].packet->length()); | 1649 EXPECT_EQ(kDefaultMaxPacketSize, packets_[0].encrypted_length); |
| 1647 EXPECT_EQ(target_mtu, packets_[2].packet->length()); | 1650 EXPECT_EQ(target_mtu, packets_[2].encrypted_length); |
| 1648 EXPECT_EQ(kDefaultMaxPacketSize, packets_[3].packet->length()); | 1651 EXPECT_EQ(kDefaultMaxPacketSize, packets_[3].encrypted_length); |
| 1649 | 1652 |
| 1650 PacketContents probe_contents; | 1653 PacketContents probe_contents; |
| 1651 probe_contents.num_mtu_discovery_frames = 1; | 1654 probe_contents.num_mtu_discovery_frames = 1; |
| 1652 | 1655 |
| 1653 CheckPacketHasSingleStreamFrame(0); | 1656 CheckPacketHasSingleStreamFrame(0); |
| 1654 CheckPacketHasSingleStreamFrame(1); | 1657 CheckPacketHasSingleStreamFrame(1); |
| 1655 CheckPacketContains(probe_contents, 2); | 1658 CheckPacketContains(probe_contents, 2); |
| 1656 CheckPacketHasSingleStreamFrame(3); | 1659 CheckPacketHasSingleStreamFrame(3); |
| 1657 CheckPacketHasSingleStreamFrame(4); | 1660 CheckPacketHasSingleStreamFrame(4); |
| 1658 } | 1661 } |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1708 EXPECT_CALL(delegate_, OnSerializedPacket(_)) | 1711 EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
| 1709 .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket)); | 1712 .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket)); |
| 1710 generator_.FlushAllQueuedFrames(); | 1713 generator_.FlushAllQueuedFrames(); |
| 1711 EXPECT_FALSE(generator_.HasQueuedFrames()); | 1714 EXPECT_FALSE(generator_.HasQueuedFrames()); |
| 1712 generator_.SetCurrentPath(kTestPathId1, 1, 0); | 1715 generator_.SetCurrentPath(kTestPathId1, 1, 0); |
| 1713 EXPECT_EQ(kTestPathId1, QuicPacketCreatorPeer::GetCurrentPath(creator_)); | 1716 EXPECT_EQ(kTestPathId1, QuicPacketCreatorPeer::GetCurrentPath(creator_)); |
| 1714 } | 1717 } |
| 1715 | 1718 |
| 1716 } // namespace test | 1719 } // namespace test |
| 1717 } // namespace net | 1720 } // namespace net |
| OLD | NEW |