Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(699)

Side by Side Diff: net/quic/quic_packet_creator_test.cc

Issue 2104633002: Landing recent QUIC changes until 6/24/2016 14:00 UTC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/quic_packet_creator.cc ('k') | net/quic/quic_protocol.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « net/quic/quic_packet_creator.cc ('k') | net/quic/quic_protocol.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698