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_creator.h" | 5 #include "net/quic/quic_packet_creator.h" |
6 | 6 |
7 #include <cstdint> | 7 #include <cstdint> |
8 #include <memory> | 8 #include <memory> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 EXPECT_EQ(stream_id, frame.stream_frame->stream_id); | 172 EXPECT_EQ(stream_id, frame.stream_frame->stream_id); |
173 EXPECT_EQ(data, StringPiece(frame.stream_frame->data_buffer, | 173 EXPECT_EQ(data, StringPiece(frame.stream_frame->data_buffer, |
174 frame.stream_frame->data_length)); | 174 frame.stream_frame->data_length)); |
175 EXPECT_EQ(offset, frame.stream_frame->offset); | 175 EXPECT_EQ(offset, frame.stream_frame->offset); |
176 EXPECT_EQ(fin, frame.stream_frame->fin); | 176 EXPECT_EQ(fin, frame.stream_frame->fin); |
177 } | 177 } |
178 | 178 |
179 // Returns the number of bytes consumed by the header of packet, including | 179 // Returns the number of bytes consumed by the header of packet, including |
180 // the version. | 180 // the version. |
181 size_t GetPacketHeaderOverhead(QuicVersion version) { | 181 size_t GetPacketHeaderOverhead(QuicVersion version) { |
182 return GetPacketHeaderSize( | 182 if (FLAGS_quic_simple_packet_number_length) { |
183 version, creator_.connection_id_length(), kIncludeVersion, | 183 return GetPacketHeaderSize( |
184 !kIncludePathId, !kIncludeDiversificationNonce, | 184 version, creator_.connection_id_length(), kIncludeVersion, |
185 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 185 !kIncludePathId, !kIncludeDiversificationNonce, |
| 186 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 187 } else { |
| 188 return GetPacketHeaderSize( |
| 189 version, creator_.connection_id_length(), kIncludeVersion, |
| 190 !kIncludePathId, !kIncludeDiversificationNonce, |
| 191 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
| 192 } |
186 } | 193 } |
187 | 194 |
188 // Returns the number of bytes of overhead that will be added to a packet | 195 // Returns the number of bytes of overhead that will be added to a packet |
189 // of maximum length. | 196 // of maximum length. |
190 size_t GetEncryptionOverhead() { | 197 size_t GetEncryptionOverhead() { |
191 return creator_.max_packet_length() - | 198 return creator_.max_packet_length() - |
192 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length()); | 199 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length()); |
193 } | 200 } |
194 | 201 |
195 // Returns the number of bytes consumed by the non-data fields of a stream | 202 // Returns the number of bytes consumed by the non-data fields of a stream |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 EXPECT_CALL(framer_visitor_, OnAckFrame(_)); | 273 EXPECT_CALL(framer_visitor_, OnAckFrame(_)); |
267 EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); | 274 EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); |
268 EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); | 275 EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); |
269 EXPECT_CALL(framer_visitor_, OnPacketComplete()); | 276 EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
270 } | 277 } |
271 ProcessPacket(serialized); | 278 ProcessPacket(serialized); |
272 } | 279 } |
273 } | 280 } |
274 | 281 |
275 TEST_P(QuicPacketCreatorTest, SerializeChangingSequenceNumberLength) { | 282 TEST_P(QuicPacketCreatorTest, SerializeChangingSequenceNumberLength) { |
| 283 FLAGS_quic_simple_packet_number_length = false; |
276 frames_.push_back(QuicFrame(new QuicAckFrame(MakeAckFrame(0u)))); | 284 frames_.push_back(QuicFrame(new QuicAckFrame(MakeAckFrame(0u)))); |
277 creator_.AddSavedFrame(frames_[0]); | 285 creator_.AddSavedFrame(frames_[0]); |
278 QuicPacketCreatorPeer::SetNextPacketNumberLength(&creator_, | 286 QuicPacketCreatorPeer::SetNextPacketNumberLength(&creator_, |
279 PACKET_4BYTE_PACKET_NUMBER); | 287 PACKET_4BYTE_PACKET_NUMBER); |
280 | 288 |
281 EXPECT_CALL(delegate_, OnSerializedPacket(_)) | 289 EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
282 .WillRepeatedly( | 290 .WillRepeatedly( |
283 Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); | 291 Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
284 creator_.Flush(); | 292 creator_.Flush(); |
285 // The packet number length will not change mid-packet. | 293 // The packet number length will not change mid-packet. |
(...skipping 28 matching lines...) Expand all Loading... |
314 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); | 322 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); |
315 EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); | 323 EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); |
316 EXPECT_CALL(framer_visitor_, OnAckFrame(_)); | 324 EXPECT_CALL(framer_visitor_, OnAckFrame(_)); |
317 EXPECT_CALL(framer_visitor_, OnPacketComplete()); | 325 EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
318 } | 326 } |
319 ProcessPacket(serialized_packet_); | 327 ProcessPacket(serialized_packet_); |
320 DeleteSerializedPacket(); | 328 DeleteSerializedPacket(); |
321 } | 329 } |
322 | 330 |
323 TEST_P(QuicPacketCreatorTest, ChangeSequenceNumberLengthMidPacket) { | 331 TEST_P(QuicPacketCreatorTest, ChangeSequenceNumberLengthMidPacket) { |
| 332 FLAGS_quic_simple_packet_number_length = false; |
324 // Changing the packet number length with queued frames in the creator | 333 // Changing the packet number length with queued frames in the creator |
325 // should hold the change until after any currently queued frames are | 334 // should hold the change until after any currently queued frames are |
326 // serialized. | 335 // serialized. |
327 | 336 |
328 // Packet 1. | 337 // Packet 1. |
329 // Queue a frame in the creator. | 338 // Queue a frame in the creator. |
330 EXPECT_FALSE(creator_.HasPendingFrames()); | 339 EXPECT_FALSE(creator_.HasPendingFrames()); |
331 QuicFrame ack_frame = QuicFrame(new QuicAckFrame(MakeAckFrame(0u))); | 340 QuicFrame ack_frame = QuicFrame(new QuicAckFrame(MakeAckFrame(0u))); |
332 creator_.AddSavedFrame(ack_frame); | 341 creator_.AddSavedFrame(ack_frame); |
333 | 342 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
395 EXPECT_CALL(framer_visitor_, OnPacketComplete()); | 404 EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
396 } | 405 } |
397 ProcessPacket(serialized_packet_); | 406 ProcessPacket(serialized_packet_); |
398 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, | 407 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, |
399 header.public_header.packet_number_length); | 408 header.public_header.packet_number_length); |
400 | 409 |
401 DeleteSerializedPacket(); | 410 DeleteSerializedPacket(); |
402 delete ack_frame.ack_frame; | 411 delete ack_frame.ack_frame; |
403 } | 412 } |
404 | 413 |
| 414 TEST_P(QuicPacketCreatorTest, ChangeSequenceNumberLengthMidPacketDoesNothing) { |
| 415 FLAGS_quic_simple_packet_number_length = true; |
| 416 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
| 417 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 418 // Changing the packet number length with queued frames in the creator |
| 419 // should do nothing. |
| 420 EXPECT_FALSE(creator_.HasPendingFrames()); |
| 421 QuicFrame ack_frame = QuicFrame(new QuicAckFrame(MakeAckFrame(0u))); |
| 422 creator_.AddSavedFrame(ack_frame); |
| 423 |
| 424 // Now change packet number length and expect a QUIC_BUG and no change in |
| 425 // packet number length. |
| 426 EXPECT_DFATAL(creator_.UpdatePacketNumberLength(0, 256), |
| 427 "Called UpdatePacketNumberLength with 1 queued_frames."); |
| 428 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
| 429 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 430 delete ack_frame.ack_frame; |
| 431 } |
| 432 |
405 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSequenceNumberLength) { | 433 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSequenceNumberLength) { |
406 // If the original packet number length, the current packet number | 434 // If the original packet number length, the current packet number |
407 // length, and the configured send packet number length are different, the | 435 // length, and the configured send packet number length are different, the |
408 // retransmit must sent with the original length and the others do not change. | 436 // retransmit must sent with the original length and the others do not change. |
409 QuicPacketCreatorPeer::SetNextPacketNumberLength(&creator_, | 437 if (!FLAGS_quic_simple_packet_number_length) { |
410 PACKET_4BYTE_PACKET_NUMBER); | 438 QuicPacketCreatorPeer::SetNextPacketNumberLength( |
| 439 &creator_, PACKET_4BYTE_PACKET_NUMBER); |
| 440 } |
411 QuicPacketCreatorPeer::SetPacketNumberLength(&creator_, | 441 QuicPacketCreatorPeer::SetPacketNumberLength(&creator_, |
412 PACKET_2BYTE_PACKET_NUMBER); | 442 PACKET_2BYTE_PACKET_NUMBER); |
413 QuicStreamFrame* stream_frame = | 443 QuicStreamFrame* stream_frame = |
414 new QuicStreamFrame(kCryptoStreamId, /*fin=*/false, 0u, StringPiece()); | 444 new QuicStreamFrame(kCryptoStreamId, /*fin=*/false, 0u, StringPiece()); |
415 QuicFrames frames; | 445 QuicFrames frames; |
416 frames.push_back(QuicFrame(stream_frame)); | 446 frames.push_back(QuicFrame(stream_frame)); |
417 char buffer[kMaxPacketSize]; | 447 char buffer[kMaxPacketSize]; |
418 PendingRetransmission retransmission(CreateRetransmission( | 448 PendingRetransmission retransmission(CreateRetransmission( |
419 frames, true /* has_crypto_handshake */, -1 /* needs full padding */, | 449 frames, true /* has_crypto_handshake */, -1 /* needs full padding */, |
420 ENCRYPTION_NONE, PACKET_1BYTE_PACKET_NUMBER)); | 450 ENCRYPTION_NONE, PACKET_1BYTE_PACKET_NUMBER)); |
421 EXPECT_CALL(delegate_, OnSerializedPacket(_)) | 451 EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
422 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); | 452 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
423 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); | 453 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); |
424 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, | 454 if (FLAGS_quic_simple_packet_number_length) { |
425 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 455 // The packet number length is updated after every packet is sent, |
426 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, | 456 // so there is no need to restore the old length after sending. |
427 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); | 457 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
| 458 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 459 } else { |
| 460 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, |
| 461 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
| 462 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, |
| 463 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 464 } |
428 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 465 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
429 serialized_packet_.packet_number_length); | 466 serialized_packet_.packet_number_length); |
430 | 467 |
431 { | 468 { |
432 InSequence s; | 469 InSequence s; |
433 EXPECT_CALL(framer_visitor_, OnPacket()); | 470 EXPECT_CALL(framer_visitor_, OnPacket()); |
434 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); | 471 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); |
435 EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); | 472 EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); |
436 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); | 473 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); |
437 EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); | 474 EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); |
438 EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); | 475 EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); |
439 EXPECT_CALL(framer_visitor_, OnPaddingFrame(_)); | 476 EXPECT_CALL(framer_visitor_, OnPaddingFrame(_)); |
440 EXPECT_CALL(framer_visitor_, OnPacketComplete()); | 477 EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
441 } | 478 } |
442 ProcessPacket(serialized_packet_); | 479 ProcessPacket(serialized_packet_); |
443 delete stream_frame; | 480 delete stream_frame; |
444 } | 481 } |
445 | 482 |
446 TEST_P(QuicPacketCreatorTest, ReserializeCryptoFrameWithForwardSecurity) { | 483 TEST_P(QuicPacketCreatorTest, ReserializeCryptoFrameWithForwardSecurity) { |
447 QuicStreamFrame* stream_frame = | 484 QuicStreamFrame* stream_frame = |
448 new QuicStreamFrame(kCryptoStreamId, /*fin=*/false, 0u, StringPiece()); | 485 new QuicStreamFrame(kCryptoStreamId, /*fin=*/false, 0u, StringPiece()); |
449 QuicFrames frames; | 486 QuicFrames frames; |
450 frames.push_back(QuicFrame(stream_frame)); | 487 frames.push_back(QuicFrame(stream_frame)); |
451 creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE); | 488 creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE); |
452 char buffer[kMaxPacketSize]; | 489 char buffer[kMaxPacketSize]; |
453 PendingRetransmission retransmission(CreateRetransmission( | 490 PendingRetransmission retransmission(CreateRetransmission( |
454 frames, true /* has_crypto_handshake */, -1 /* needs full padding */, | 491 frames, true /* has_crypto_handshake */, -1 /* needs full padding */, |
455 ENCRYPTION_NONE, | 492 ENCRYPTION_NONE, |
456 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_))); | 493 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_))); |
457 EXPECT_CALL(delegate_, OnSerializedPacket(_)) | 494 EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
458 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); | 495 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
459 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); | 496 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); |
460 EXPECT_EQ(ENCRYPTION_NONE, serialized_packet_.encryption_level); | 497 EXPECT_EQ(ENCRYPTION_NONE, serialized_packet_.encryption_level); |
461 delete stream_frame; | 498 delete stream_frame; |
462 } | 499 } |
463 | 500 |
464 TEST_P(QuicPacketCreatorTest, ReserializeFrameWithForwardSecurity) { | 501 TEST_P(QuicPacketCreatorTest, ReserializeFrameWithForwardSecurity) { |
465 QuicStreamFrame* stream_frame = | 502 QuicStreamFrame* stream_frame = |
466 new QuicStreamFrame(0u, /*fin=*/false, 0u, StringPiece()); | 503 new QuicStreamFrame(0u, /*fin=*/false, 0u, StringPiece()); |
467 QuicFrames frames; | 504 QuicFrames frames; |
468 frames.push_back(QuicFrame(stream_frame)); | 505 frames.push_back(QuicFrame(stream_frame)); |
469 creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE); | 506 creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE); |
470 char buffer[kMaxPacketSize]; | 507 char buffer[kMaxPacketSize]; |
471 PendingRetransmission retransmission(CreateRetransmission( | 508 PendingRetransmission retransmission(CreateRetransmission( |
472 frames, false /* has_crypto_handshake */, 0 /* no padding */, | 509 frames, false /* has_crypto_handshake */, 0 /* no padding */, |
473 ENCRYPTION_NONE, | 510 ENCRYPTION_NONE, |
474 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_))); | 511 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_))); |
475 EXPECT_CALL(delegate_, OnSerializedPacket(_)) | 512 EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
476 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); | 513 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
477 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); | 514 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); |
478 EXPECT_EQ(ENCRYPTION_FORWARD_SECURE, serialized_packet_.encryption_level); | 515 EXPECT_EQ(ENCRYPTION_FORWARD_SECURE, serialized_packet_.encryption_level); |
479 delete stream_frame; | 516 delete stream_frame; |
480 } | 517 } |
481 | 518 |
482 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithFullPadding) { | 519 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithFullPadding) { |
483 QuicFrame frame; | 520 QuicFrame frame; |
484 QuicIOVector io_vector(MakeIOVector("fake handshake message data")); | 521 QuicIOVector io_vector(MakeIOVector("fake handshake message data")); |
485 QuicPacketCreatorPeer::CreateStreamFrame(&creator_, kCryptoStreamId, | 522 QuicPacketCreatorPeer::CreateStreamFrame(&creator_, kCryptoStreamId, |
486 io_vector, 0u, 0u, false, &frame); | 523 io_vector, 0u, 0u, false, &frame); |
487 QuicFrames frames; | 524 QuicFrames frames; |
488 frames.push_back(frame); | 525 frames.push_back(frame); |
489 char buffer[kMaxPacketSize]; | 526 char buffer[kMaxPacketSize]; |
490 PendingRetransmission retransmission(CreateRetransmission( | 527 PendingRetransmission retransmission(CreateRetransmission( |
491 frames, true /* has_crypto_handshake */, -1 /* needs full padding */, | 528 frames, true /* has_crypto_handshake */, -1 /* needs full padding */, |
492 ENCRYPTION_NONE, | 529 ENCRYPTION_NONE, |
493 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_))); | 530 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_))); |
494 EXPECT_CALL(delegate_, OnSerializedPacket(_)) | 531 EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
495 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); | 532 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
496 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); | 533 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); |
497 EXPECT_EQ(kDefaultMaxPacketSize, serialized_packet_.encrypted_length); | 534 EXPECT_EQ(kDefaultMaxPacketSize, serialized_packet_.encrypted_length); |
498 delete frame.stream_frame; | 535 delete frame.stream_frame; |
499 } | 536 } |
500 | 537 |
501 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSpecifiedPadding) { | 538 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSpecifiedPadding) { |
502 QuicFrame frame; | 539 QuicFrame frame; |
503 QuicIOVector io_vector(MakeIOVector("fake message data")); | 540 QuicIOVector io_vector(MakeIOVector("fake message data")); |
504 QuicPacketCreatorPeer::CreateStreamFrame(&creator_, kCryptoStreamId, | 541 QuicPacketCreatorPeer::CreateStreamFrame(&creator_, kCryptoStreamId, |
505 io_vector, 0u, 0u, false, &frame); | 542 io_vector, 0u, 0u, false, &frame); |
506 | 543 |
507 const int kNumPaddingBytes1 = 4; | 544 const int kNumPaddingBytes1 = 4; |
508 int packet_size = 0; | 545 int packet_size = 0; |
509 { | 546 { |
510 QuicFrames frames; | 547 QuicFrames frames; |
511 frames.push_back(frame); | 548 frames.push_back(frame); |
512 char buffer[kMaxPacketSize]; | 549 char buffer[kMaxPacketSize]; |
513 PendingRetransmission retransmission(CreateRetransmission( | 550 PendingRetransmission retransmission(CreateRetransmission( |
514 frames, false /* has_crypto_handshake */, | 551 frames, false /* has_crypto_handshake */, |
515 kNumPaddingBytes1 /* padding bytes */, ENCRYPTION_NONE, | 552 kNumPaddingBytes1 /* padding bytes */, ENCRYPTION_NONE, |
516 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_))); | 553 FLAGS_quic_simple_packet_number_length |
| 554 ? QuicPacketCreatorPeer::GetPacketNumberLength(&creator_) |
| 555 : QuicPacketCreatorPeer::NextPacketNumberLength(&creator_))); |
517 EXPECT_CALL(delegate_, OnSerializedPacket(_)) | 556 EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
518 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); | 557 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
519 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); | 558 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); |
520 packet_size = serialized_packet_.encrypted_length; | 559 packet_size = serialized_packet_.encrypted_length; |
521 } | 560 } |
522 | 561 |
523 const int kNumPaddingBytes2 = 44; | 562 const int kNumPaddingBytes2 = 44; |
524 QuicFrames frames; | 563 QuicFrames frames; |
525 frames.push_back(frame); | 564 frames.push_back(frame); |
526 char buffer[kMaxPacketSize]; | 565 char buffer[kMaxPacketSize]; |
527 PendingRetransmission retransmission(CreateRetransmission( | 566 PendingRetransmission retransmission(CreateRetransmission( |
528 frames, false /* has_crypto_handshake */, | 567 frames, false /* has_crypto_handshake */, |
529 kNumPaddingBytes2 /* padding bytes */, ENCRYPTION_NONE, | 568 kNumPaddingBytes2 /* padding bytes */, ENCRYPTION_NONE, |
530 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_))); | 569 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_))); |
531 EXPECT_CALL(delegate_, OnSerializedPacket(_)) | 570 EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
532 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); | 571 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
533 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); | 572 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); |
534 | 573 |
535 EXPECT_EQ(packet_size + kNumPaddingBytes2 - kNumPaddingBytes1, | 574 EXPECT_EQ(packet_size + kNumPaddingBytes2 - kNumPaddingBytes1, |
536 serialized_packet_.encrypted_length); | 575 serialized_packet_.encrypted_length); |
537 delete frame.stream_frame; | 576 delete frame.stream_frame; |
538 } | 577 } |
539 | 578 |
540 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithFullPacketAndPadding) { | 579 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithFullPacketAndPadding) { |
541 const size_t overhead = GetPacketHeaderOverhead(client_framer_.version()) + | 580 const size_t overhead = GetPacketHeaderOverhead(client_framer_.version()) + |
542 GetEncryptionOverhead() + GetStreamFrameOverhead(); | 581 GetEncryptionOverhead() + GetStreamFrameOverhead(); |
543 size_t capacity = kDefaultMaxPacketSize - overhead; | 582 size_t capacity = kDefaultMaxPacketSize - overhead; |
544 for (int delta = -5; delta <= 0; ++delta) { | 583 for (int delta = -5; delta <= 0; ++delta) { |
545 string data(capacity + delta, 'A'); | 584 string data(capacity + delta, 'A'); |
546 size_t bytes_free = 0 - delta; | 585 size_t bytes_free = 0 - delta; |
547 | 586 |
548 QuicFrame frame; | 587 QuicFrame frame; |
549 QuicIOVector io_vector(MakeIOVector(data)); | 588 QuicIOVector io_vector(MakeIOVector(data)); |
550 UniqueStreamBuffer stream_buffer; | 589 UniqueStreamBuffer stream_buffer; |
551 QuicPacketCreatorPeer::CreateStreamFrame( | 590 QuicPacketCreatorPeer::CreateStreamFrame( |
552 &creator_, kCryptoStreamId, io_vector, 0, kOffset, false, &frame); | 591 &creator_, kCryptoStreamId, io_vector, 0, kOffset, false, &frame); |
553 QuicFrames frames; | 592 QuicFrames frames; |
554 frames.push_back(frame); | 593 frames.push_back(frame); |
555 char buffer[kMaxPacketSize]; | 594 char buffer[kMaxPacketSize]; |
556 PendingRetransmission retransmission(CreateRetransmission( | 595 PendingRetransmission retransmission(CreateRetransmission( |
557 frames, true /* has_crypto_handshake */, -1 /* needs full padding */, | 596 frames, true /* has_crypto_handshake */, -1 /* needs full padding */, |
558 ENCRYPTION_NONE, | 597 ENCRYPTION_NONE, |
559 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_))); | 598 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_))); |
560 EXPECT_CALL(delegate_, OnSerializedPacket(_)) | 599 EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
561 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); | 600 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
562 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); | 601 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); |
563 | 602 |
564 // If there is not enough space in the packet to fit a padding frame | 603 // If there is not enough space in the packet to fit a padding frame |
565 // (1 byte) and to expand the stream frame (another 2 bytes) the packet | 604 // (1 byte) and to expand the stream frame (another 2 bytes) the packet |
566 // will not be padded. | 605 // will not be padded. |
567 if (bytes_free < 3) { | 606 if (bytes_free < 3) { |
568 EXPECT_EQ(kDefaultMaxPacketSize - bytes_free, | 607 EXPECT_EQ(kDefaultMaxPacketSize - bytes_free, |
569 serialized_packet_.encrypted_length); | 608 serialized_packet_.encrypted_length); |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
765 { | 804 { |
766 InSequence s; | 805 InSequence s; |
767 EXPECT_CALL(framer_visitor_, OnPacket()); | 806 EXPECT_CALL(framer_visitor_, OnPacket()); |
768 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); | 807 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); |
769 EXPECT_CALL(framer_visitor_, OnVersionNegotiationPacket(_)); | 808 EXPECT_CALL(framer_visitor_, OnVersionNegotiationPacket(_)); |
770 } | 809 } |
771 QuicFramerPeer::SetPerspective(&client_framer_, Perspective::IS_CLIENT); | 810 QuicFramerPeer::SetPerspective(&client_framer_, Perspective::IS_CLIENT); |
772 client_framer_.ProcessPacket(*encrypted); | 811 client_framer_.ProcessPacket(*encrypted); |
773 } | 812 } |
774 | 813 |
775 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthLeastAwaiting) { | 814 TEST_P(QuicPacketCreatorTest, UpdatePacketNumberLengthLeastAwaiting_Old) { |
| 815 FLAGS_quic_simple_packet_number_length = false; |
776 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 816 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
777 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 817 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
778 | 818 |
779 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64); | 819 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64); |
780 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); | 820 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); |
781 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 821 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
782 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 822 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
783 | 823 |
784 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256); | 824 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256); |
785 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); | 825 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); |
786 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, | 826 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, |
787 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 827 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
788 | 828 |
789 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256 * 256); | 829 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256 * 256); |
790 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); | 830 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); |
791 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, | 831 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, |
792 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 832 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
793 | 833 |
794 QuicPacketCreatorPeer::SetPacketNumber(&creator_, | 834 QuicPacketCreatorPeer::SetPacketNumber(&creator_, |
795 UINT64_C(64) * 256 * 256 * 256 * 256); | 835 UINT64_C(64) * 256 * 256 * 256 * 256); |
796 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); | 836 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); |
797 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER, | 837 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER, |
798 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 838 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
799 } | 839 } |
800 | 840 |
801 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthBandwidth) { | 841 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthBandwidth_old) { |
| 842 FLAGS_quic_simple_packet_number_length = false; |
802 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 843 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
803 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 844 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
804 | 845 |
805 creator_.UpdatePacketNumberLength(1, 10000 / kDefaultMaxPacketSize); | 846 creator_.UpdatePacketNumberLength(1, 10000 / kDefaultMaxPacketSize); |
806 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 847 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
807 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 848 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
808 | 849 |
809 creator_.UpdatePacketNumberLength(1, 10000 * 256 / kDefaultMaxPacketSize); | 850 creator_.UpdatePacketNumberLength(1, 10000 * 256 / kDefaultMaxPacketSize); |
810 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, | 851 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, |
811 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 852 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
812 | 853 |
813 creator_.UpdatePacketNumberLength(1, | 854 creator_.UpdatePacketNumberLength(1, |
814 10000 * 256 * 256 / kDefaultMaxPacketSize); | 855 10000 * 256 * 256 / kDefaultMaxPacketSize); |
815 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, | 856 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, |
816 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 857 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
817 | 858 |
818 creator_.UpdatePacketNumberLength( | 859 creator_.UpdatePacketNumberLength( |
819 1, UINT64_C(1000) * 256 * 256 * 256 * 256 / kDefaultMaxPacketSize); | 860 1, UINT64_C(1000) * 256 * 256 * 256 * 256 / kDefaultMaxPacketSize); |
820 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER, | 861 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER, |
821 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 862 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
822 } | 863 } |
823 | 864 |
| 865 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthLeastAwaiting) { |
| 866 FLAGS_quic_simple_packet_number_length = true; |
| 867 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
| 868 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 869 |
| 870 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64); |
| 871 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); |
| 872 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
| 873 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 874 |
| 875 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256); |
| 876 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); |
| 877 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, |
| 878 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 879 |
| 880 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256 * 256); |
| 881 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); |
| 882 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, |
| 883 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 884 |
| 885 QuicPacketCreatorPeer::SetPacketNumber(&creator_, |
| 886 UINT64_C(64) * 256 * 256 * 256 * 256); |
| 887 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); |
| 888 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER, |
| 889 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 890 } |
| 891 |
| 892 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthCwnd) { |
| 893 FLAGS_quic_simple_packet_number_length = true; |
| 894 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
| 895 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 896 |
| 897 creator_.UpdatePacketNumberLength(1, 10000 / kDefaultMaxPacketSize); |
| 898 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
| 899 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 900 |
| 901 creator_.UpdatePacketNumberLength(1, 10000 * 256 / kDefaultMaxPacketSize); |
| 902 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, |
| 903 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 904 |
| 905 creator_.UpdatePacketNumberLength(1, |
| 906 10000 * 256 * 256 / kDefaultMaxPacketSize); |
| 907 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, |
| 908 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 909 |
| 910 creator_.UpdatePacketNumberLength( |
| 911 1, UINT64_C(1000) * 256 * 256 * 256 * 256 / kDefaultMaxPacketSize); |
| 912 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER, |
| 913 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 914 } |
| 915 |
824 TEST_P(QuicPacketCreatorTest, SerializeFrame) { | 916 TEST_P(QuicPacketCreatorTest, SerializeFrame) { |
825 if (!GetParam().version_serialization) { | 917 if (!GetParam().version_serialization) { |
826 creator_.StopSendingVersion(); | 918 creator_.StopSendingVersion(); |
827 } | 919 } |
828 frames_.push_back( | 920 frames_.push_back( |
829 QuicFrame(new QuicStreamFrame(0u, false, 0u, StringPiece()))); | 921 QuicFrame(new QuicStreamFrame(0u, false, 0u, StringPiece()))); |
830 SerializedPacket serialized = SerializeAllFrames(frames_); | 922 SerializedPacket serialized = SerializeAllFrames(frames_); |
831 delete frames_[0].stream_frame; | 923 delete frames_[0].stream_frame; |
832 | 924 |
833 QuicPacketHeader header; | 925 QuicPacketHeader header; |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1068 } | 1160 } |
1069 | 1161 |
1070 delete frames_[0].stream_frame; | 1162 delete frames_[0].stream_frame; |
1071 } | 1163 } |
1072 | 1164 |
1073 TEST_P(QuicPacketCreatorTest, SetCurrentPath) { | 1165 TEST_P(QuicPacketCreatorTest, SetCurrentPath) { |
1074 // Current path is the default path. | 1166 // Current path is the default path. |
1075 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); | 1167 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); |
1076 EXPECT_EQ(0u, creator_.packet_number()); | 1168 EXPECT_EQ(0u, creator_.packet_number()); |
1077 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 1169 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
1078 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 1170 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
1079 // Add a stream frame to the creator. | 1171 // Add a stream frame to the creator. |
1080 QuicFrame frame; | 1172 QuicFrame frame; |
1081 QuicIOVector io_vector(MakeIOVector("test")); | 1173 QuicIOVector io_vector(MakeIOVector("test")); |
1082 ASSERT_TRUE( | 1174 ASSERT_TRUE( |
1083 creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame)); | 1175 creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame)); |
1084 ASSERT_TRUE(frame.stream_frame); | 1176 ASSERT_TRUE(frame.stream_frame); |
1085 size_t consumed = frame.stream_frame->data_length; | 1177 size_t consumed = frame.stream_frame->data_length; |
1086 EXPECT_EQ(4u, consumed); | 1178 EXPECT_EQ(4u, consumed); |
1087 EXPECT_TRUE(creator_.HasPendingFrames()); | 1179 EXPECT_TRUE(creator_.HasPendingFrames()); |
1088 EXPECT_EQ(0u, creator_.packet_number()); | 1180 EXPECT_EQ(0u, creator_.packet_number()); |
1089 | 1181 |
1090 // Change current path. | 1182 // Change current path. |
1091 QuicPathId kPathId1 = 1; | 1183 QuicPathId kPathId1 = 1; |
1092 EXPECT_DFATAL(creator_.SetCurrentPath(kPathId1, 1, 0), | 1184 EXPECT_DFATAL(creator_.SetCurrentPath(kPathId1, 1, 0), |
1093 "Unable to change paths when a packet is under construction"); | 1185 "Unable to change paths when a packet is under construction"); |
1094 EXPECT_CALL(delegate_, OnSerializedPacket(_)) | 1186 EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
1095 .Times(1) | 1187 .Times(1) |
1096 .WillRepeatedly( | 1188 .WillRepeatedly( |
1097 Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket)); | 1189 Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket)); |
1098 creator_.Flush(); | 1190 creator_.Flush(); |
1099 EXPECT_FALSE(creator_.HasPendingFrames()); | 1191 EXPECT_FALSE(creator_.HasPendingFrames()); |
1100 creator_.SetCurrentPath(kPathId1, 1, 0); | 1192 creator_.SetCurrentPath(kPathId1, 1, 0); |
1101 EXPECT_EQ(kPathId1, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); | 1193 EXPECT_EQ(kPathId1, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); |
1102 EXPECT_FALSE(creator_.HasPendingFrames()); | 1194 EXPECT_FALSE(creator_.HasPendingFrames()); |
1103 EXPECT_EQ(0u, creator_.packet_number()); | 1195 EXPECT_EQ(0u, creator_.packet_number()); |
1104 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 1196 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
1105 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 1197 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
1106 | 1198 |
1107 // Change current path back. | 1199 // Change current path back. |
1108 creator_.SetCurrentPath(kDefaultPathId, 2, 1); | 1200 creator_.SetCurrentPath(kDefaultPathId, 2, 1); |
1109 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); | 1201 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); |
1110 EXPECT_EQ(1u, creator_.packet_number()); | 1202 EXPECT_EQ(1u, creator_.packet_number()); |
1111 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 1203 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
1112 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 1204 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
1113 // Add a stream frame to the creator. | 1205 // Add a stream frame to the creator. |
1114 ASSERT_TRUE( | 1206 ASSERT_TRUE( |
1115 creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame)); | 1207 creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame)); |
1116 ASSERT_TRUE(frame.stream_frame); | 1208 ASSERT_TRUE(frame.stream_frame); |
1117 consumed = frame.stream_frame->data_length; | 1209 consumed = frame.stream_frame->data_length; |
1118 EXPECT_EQ(4u, consumed); | 1210 EXPECT_EQ(4u, consumed); |
1119 EXPECT_TRUE(creator_.HasPendingFrames()); | 1211 EXPECT_TRUE(creator_.HasPendingFrames()); |
1120 | 1212 |
1121 // Does not change current path. | 1213 // Does not change current path. |
1122 creator_.SetCurrentPath(kDefaultPathId, 2, 0); | 1214 creator_.SetCurrentPath(kDefaultPathId, 2, 0); |
1123 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); | 1215 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); |
1124 EXPECT_TRUE(creator_.HasPendingFrames()); | 1216 EXPECT_TRUE(creator_.HasPendingFrames()); |
1125 EXPECT_EQ(1u, creator_.packet_number()); | 1217 EXPECT_EQ(1u, creator_.packet_number()); |
1126 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 1218 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
1127 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 1219 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
1128 } | 1220 } |
1129 | 1221 |
1130 TEST_P(QuicPacketCreatorTest, | 1222 TEST_P(QuicPacketCreatorTest, |
1131 SetCurrentPathAndUpdatePacketSequenceNumberLength) { | 1223 SetCurrentPathAndUpdatePacketSequenceNumberLength) { |
| 1224 FLAGS_quic_simple_packet_number_length = false; |
1132 // Current path is the default path. | 1225 // Current path is the default path. |
1133 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); | 1226 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); |
1134 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 1227 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
| 1228 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 1229 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
1135 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 1230 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
1136 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256 - 2); | 1231 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256 - 2); |
1137 // Add a stream frame to the creator and send the packet. | 1232 // Add a stream frame to the creator and send the packet. |
1138 QuicFrame frame; | 1233 QuicFrame frame; |
1139 QuicIOVector io_vector(MakeIOVector("test")); | 1234 QuicIOVector io_vector(MakeIOVector("test")); |
1140 ASSERT_TRUE( | 1235 ASSERT_TRUE( |
1141 creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame)); | 1236 creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame)); |
1142 EXPECT_CALL(delegate_, OnSerializedPacket(_)) | 1237 EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
1143 .Times(1) | 1238 .Times(1) |
1144 .WillRepeatedly( | 1239 .WillRepeatedly( |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1187 EXPECT_EQ(kDefaultPathId, serialized_packet_.path_id); | 1282 EXPECT_EQ(kDefaultPathId, serialized_packet_.path_id); |
1188 DeleteSerializedPacket(); | 1283 DeleteSerializedPacket(); |
1189 | 1284 |
1190 // Change to path 1. | 1285 // Change to path 1. |
1191 QuicPathId kPathId1 = 1; | 1286 QuicPathId kPathId1 = 1; |
1192 creator_.SetCurrentPath(kPathId1, 1, 0); | 1287 creator_.SetCurrentPath(kPathId1, 1, 0); |
1193 EXPECT_EQ(kPathId1, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); | 1288 EXPECT_EQ(kPathId1, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); |
1194 EXPECT_FALSE(creator_.HasPendingFrames()); | 1289 EXPECT_FALSE(creator_.HasPendingFrames()); |
1195 EXPECT_EQ(0u, creator_.packet_number()); | 1290 EXPECT_EQ(0u, creator_.packet_number()); |
1196 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 1291 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
1197 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 1292 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
1198 | 1293 |
1199 // Add a stream frame to the creator and flush the packet. | 1294 // Add a stream frame to the creator and flush the packet. |
1200 ASSERT_TRUE( | 1295 ASSERT_TRUE( |
1201 creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame)); | 1296 creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame)); |
1202 ASSERT_TRUE(frame.stream_frame); | 1297 ASSERT_TRUE(frame.stream_frame); |
1203 consumed = frame.stream_frame->data_length; | 1298 consumed = frame.stream_frame->data_length; |
1204 EXPECT_EQ(4u, consumed); | 1299 EXPECT_EQ(4u, consumed); |
1205 EXPECT_TRUE(creator_.HasPendingFrames()); | 1300 EXPECT_TRUE(creator_.HasPendingFrames()); |
1206 creator_.Flush(); | 1301 creator_.Flush(); |
1207 // Verify serialized data packet's path id. | 1302 // Verify serialized data packet's path id. |
1208 EXPECT_EQ(kPathId1, serialized_packet_.path_id); | 1303 EXPECT_EQ(kPathId1, serialized_packet_.path_id); |
1209 DeleteSerializedPacket(); | 1304 DeleteSerializedPacket(); |
1210 } | 1305 } |
1211 | 1306 |
1212 TEST_P(QuicPacketCreatorTest, AddUnencryptedStreamDataClosesConnection) { | 1307 TEST_P(QuicPacketCreatorTest, AddUnencryptedStreamDataClosesConnection) { |
1213 FLAGS_quic_never_write_unencrypted_data = true; | 1308 FLAGS_quic_never_write_unencrypted_data = true; |
1214 EXPECT_CALL(delegate_, OnUnrecoverableError(_, _, _)); | 1309 EXPECT_CALL(delegate_, OnUnrecoverableError(_, _, _)); |
1215 QuicStreamFrame stream_frame(kHeadersStreamId, /*fin=*/false, 0u, | 1310 QuicStreamFrame stream_frame(kHeadersStreamId, /*fin=*/false, 0u, |
1216 StringPiece()); | 1311 StringPiece()); |
1217 EXPECT_DFATAL(creator_.AddSavedFrame(QuicFrame(&stream_frame)), | 1312 EXPECT_DFATAL(creator_.AddSavedFrame(QuicFrame(&stream_frame)), |
1218 "Cannot send stream data without encryption."); | 1313 "Cannot send stream data without encryption."); |
1219 } | 1314 } |
1220 | 1315 |
1221 TEST_P(QuicPacketCreatorTest, ChloTooLarge) { | 1316 TEST_P(QuicPacketCreatorTest, ChloTooLarge) { |
1222 ValueRestore<bool> old_flag(&FLAGS_quic_disallow_multi_packet_chlo, true); | |
1223 CryptoHandshakeMessage message; | 1317 CryptoHandshakeMessage message; |
1224 message.set_tag(kCHLO); | 1318 message.set_tag(kCHLO); |
1225 message.set_minimum_size(kMaxPacketSize); | 1319 message.set_minimum_size(kMaxPacketSize); |
1226 CryptoFramer framer; | 1320 CryptoFramer framer; |
1227 std::unique_ptr<QuicData> message_data; | 1321 std::unique_ptr<QuicData> message_data; |
1228 message_data.reset(framer.ConstructHandshakeMessage(message)); | 1322 message_data.reset(framer.ConstructHandshakeMessage(message)); |
1229 | 1323 |
1230 struct iovec iov; | 1324 struct iovec iov; |
1231 QuicIOVector data_iovec(::net::MakeIOVector( | 1325 QuicIOVector data_iovec(::net::MakeIOVector( |
1232 StringPiece(message_data->data(), message_data->length()), &iov)); | 1326 StringPiece(message_data->data(), message_data->length()), &iov)); |
1233 QuicFrame frame; | 1327 QuicFrame frame; |
1234 EXPECT_CALL(delegate_, | 1328 EXPECT_CALL(delegate_, |
1235 OnUnrecoverableError(QUIC_CRYPTO_CHLO_TOO_LARGE, _, _)); | 1329 OnUnrecoverableError(QUIC_CRYPTO_CHLO_TOO_LARGE, _, _)); |
1236 EXPECT_DFATAL( | 1330 EXPECT_DFATAL( |
1237 creator_.ConsumeData(1u, data_iovec, 0u, 0u, false, false, &frame), | 1331 creator_.ConsumeData(1u, data_iovec, 0u, 0u, false, false, &frame), |
1238 "Client hello won't fit in a single packet."); | 1332 "Client hello won't fit in a single packet."); |
1239 } | 1333 } |
1240 | 1334 |
1241 } // namespace | 1335 } // namespace |
1242 } // namespace test | 1336 } // namespace test |
1243 } // namespace net | 1337 } // namespace net |
OLD | NEW |