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

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

Issue 399153003: Land Recent QUIC Changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added NET_EXPORT_PRIVATE Created 6 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 | Annotate | Revision Log
« no previous file with comments | « net/quic/quic_packet_generator.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_generator.h" 5 #include "net/quic/quic_packet_generator.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "net/quic/crypto/crypto_protocol.h" 9 #include "net/quic/crypto/crypto_protocol.h"
10 #include "net/quic/crypto/null_encrypter.h" 10 #include "net/quic/crypto/null_encrypter.h"
(...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 EXPECT_EQ(3u, consumed.bytes_consumed); 556 EXPECT_EQ(3u, consumed.bytes_consumed);
557 EXPECT_TRUE(consumed.fin_consumed); 557 EXPECT_TRUE(consumed.fin_consumed);
558 EXPECT_FALSE(generator_.HasQueuedFrames()); 558 EXPECT_FALSE(generator_.HasQueuedFrames());
559 559
560 PacketContents contents; 560 PacketContents contents;
561 contents.num_stream_frames = 1; 561 contents.num_stream_frames = 1;
562 CheckPacketContains(contents, packet_); 562 CheckPacketContains(contents, packet_);
563 CheckPacketContains(contents, packet2_); 563 CheckPacketContains(contents, packet2_);
564 } 564 }
565 565
566 TEST_F(QuicPacketGeneratorTest, FecGroupSizeOnCongestionWindowChange) {
567 delegate_.SetCanWriteAnything();
568 creator_->set_max_packets_per_fec_group(50);
569 EXPECT_EQ(50u, creator_->max_packets_per_fec_group());
570 EXPECT_FALSE(creator_->IsFecGroupOpen());
571
572 // On reduced cwnd.
573 generator_.OnCongestionWindowChange(7 * kDefaultTCPMSS);
574 EXPECT_EQ(3u, creator_->max_packets_per_fec_group());
575
576 // On increased cwnd.
577 generator_.OnCongestionWindowChange(100 * kDefaultTCPMSS);
578 EXPECT_EQ(50u, creator_->max_packets_per_fec_group());
579
580 // On collapsed cwnd.
581 generator_.OnCongestionWindowChange(1 * kDefaultTCPMSS);
582 EXPECT_EQ(2u, creator_->max_packets_per_fec_group());
583 }
584
585 TEST_F(QuicPacketGeneratorTest, FecGroupSizeChangeWithOpenGroup) {
586 delegate_.SetCanWriteAnything();
587 // TODO(jri): This starting of batch mode should not be required when
588 // FEC sending is separated from batching operations.
589 generator_.StartBatchOperations();
590 creator_->set_max_packets_per_fec_group(50);
591 EXPECT_EQ(50u, creator_->max_packets_per_fec_group());
592 EXPECT_FALSE(creator_->IsFecGroupOpen());
593
594 // Send enough data to create 4 packets with MUST_FEC_PROTECT flag.
595 // 3 packets are sent, one is queued in the creator.
596 {
597 InSequence dummy;
598 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
599 DoAll(SaveArg<0>(&packet_), Return(true)));
600 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
601 DoAll(SaveArg<0>(&packet2_), Return(true)));
602 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
603 DoAll(SaveArg<0>(&packet3_), Return(true)));
604 }
605 size_t data_len = 3 * kDefaultMaxPacketSize + 1;
606 QuicConsumedData consumed = generator_.ConsumeData(
607 7, CreateData(data_len), 0, true, MUST_FEC_PROTECT, NULL);
608 EXPECT_EQ(data_len, consumed.bytes_consumed);
609 EXPECT_TRUE(creator_->IsFecGroupOpen());
610
611 // Change FEC groupsize.
612 generator_.OnCongestionWindowChange(2 * kDefaultTCPMSS);
613 EXPECT_EQ(2u, creator_->max_packets_per_fec_group());
614
615 // Send enough data to trigger one unprotected data packet,
616 // causing the FEC packet to also be sent.
617 {
618 InSequence dummy;
619 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
620 DoAll(SaveArg<0>(&packet4_), Return(true)));
621 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
622 DoAll(SaveArg<0>(&packet5_), Return(true)));
623 }
624 consumed = generator_.ConsumeData(7, CreateData(kDefaultMaxPacketSize), 0,
625 true, MAY_FEC_PROTECT, NULL);
626 EXPECT_EQ(kDefaultMaxPacketSize, consumed.bytes_consumed);
627 // Verify that one FEC packet was sent.
628 CheckPacketIsFec(packet5_, /*fec_group=*/1u);
629 EXPECT_FALSE(creator_->IsFecGroupOpen());
630 EXPECT_FALSE(creator_->IsFecProtected());
631 }
632
566 TEST_F(QuicPacketGeneratorTest, SwitchFecOnOff) { 633 TEST_F(QuicPacketGeneratorTest, SwitchFecOnOff) {
567 delegate_.SetCanWriteAnything(); 634 delegate_.SetCanWriteAnything();
568 // Enable FEC.
569 creator_->set_max_packets_per_fec_group(2); 635 creator_->set_max_packets_per_fec_group(2);
570 EXPECT_FALSE(creator_->IsFecProtected()); 636 EXPECT_FALSE(creator_->IsFecProtected());
571 637
572 // Send one unprotected data packet. 638 // Send one unprotected data packet.
573 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 639 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
574 DoAll(SaveArg<0>(&packet_), Return(true))); 640 DoAll(SaveArg<0>(&packet_), Return(true)));
575 QuicConsumedData consumed = 641 QuicConsumedData consumed =
576 generator_.ConsumeData(5, CreateData(1u), 0, true, MAY_FEC_PROTECT, 642 generator_.ConsumeData(5, CreateData(1u), 0, true, MAY_FEC_PROTECT,
577 NULL); 643 NULL);
578 EXPECT_EQ(1u, consumed.bytes_consumed); 644 EXPECT_EQ(1u, consumed.bytes_consumed);
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
897 963
898 // The second should have the remainder of the stream data. 964 // The second should have the remainder of the stream data.
899 PacketContents contents2; 965 PacketContents contents2;
900 contents2.num_goaway_frames = 1; 966 contents2.num_goaway_frames = 1;
901 contents2.num_stream_frames = 1; 967 contents2.num_stream_frames = 1;
902 CheckPacketContains(contents2, packet2_); 968 CheckPacketContains(contents2, packet2_);
903 } 969 }
904 970
905 } // namespace test 971 } // namespace test
906 } // namespace net 972 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_packet_generator.cc ('k') | net/quic/quic_protocol.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698