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

Side by Side Diff: net/quic/core/quic_sent_packet_manager_test.cc

Issue 2322233004: Landing Recent QUIC changes until Sun Sep 4 03:41:00 (Closed)
Patch Set: Remove simulation files from the build. Created 4 years, 3 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/core/quic_sent_packet_manager.cc ('k') | net/quic/core/quic_server_session_base.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/core/quic_sent_packet_manager.h" 5 #include "net/quic/core/quic_sent_packet_manager.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "net/quic/core/quic_flags.h" 10 #include "net/quic/core/quic_flags.h"
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 ExpectAck(4); 557 ExpectAck(4);
558 EXPECT_CALL(*loss_algorithm, DetectLosses(_, _, _, _, _)); 558 EXPECT_CALL(*loss_algorithm, DetectLosses(_, _, _, _, _));
559 manager_.OnIncomingAck(ack_frame, clock_.Now()); 559 manager_.OnIncomingAck(ack_frame, clock_.Now());
560 RetransmitAndSendPacket(3, 5, LOSS_RETRANSMISSION); 560 RetransmitAndSendPacket(3, 5, LOSS_RETRANSMISSION);
561 } 561 }
562 562
563 // Ack 3, which causes SpuriousRetransmitDetected to be called. 563 // Ack 3, which causes SpuriousRetransmitDetected to be called.
564 { 564 {
565 QuicAckFrame ack_frame = InitAckFrame(4); 565 QuicAckFrame ack_frame = InitAckFrame(4);
566 NackPackets(2, 3, &ack_frame); 566 NackPackets(2, 3, &ack_frame);
567 EXPECT_CALL(*loss_algorithm, DetectLosses(_, _, _, _, _));
568 EXPECT_CALL(*loss_algorithm, SpuriousRetransmitDetected(_, _, _, 5));
569 manager_.OnIncomingAck(ack_frame, clock_.Now());
570 } 567 }
571 } 568 }
572 569
573 TEST_P(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) {
574 FLAGS_quic_loss_recovery_use_largest_acked = false;
575 if (!GetParam().missing) {
576 return;
577 }
578 SendDataPacket(1);
579 RetransmitAndSendPacket(1, 2);
580 RetransmitAndSendPacket(2, 3);
581 RetransmitAndSendPacket(3, 4);
582 SendDataPacket(5);
583 SendDataPacket(6);
584 SendDataPacket(7);
585 SendDataPacket(8);
586 SendDataPacket(9);
587
588 // Ack previous transmission
589 {
590 QuicAckFrame ack_frame = InitAckFrame(2);
591 NackPackets(1, 2, &ack_frame);
592 ExpectAck(2);
593 manager_.OnIncomingAck(ack_frame, clock_.Now());
594 EXPECT_TRUE(QuicSentPacketManagerPeer::IsUnacked(&manager_, 4));
595 }
596
597 // Truncated ack with 4 NACKs
598 {
599 QuicAckFrame ack_frame = InitAckFrame(6);
600 NackPackets(3, 7, &ack_frame);
601 ack_frame.is_truncated = true;
602 ExpectAckAndLoss(true, 1, 3);
603 manager_.OnIncomingAck(ack_frame, clock_.Now());
604 }
605
606 // High water mark will be raised.
607 QuicPacketNumber unacked[] = {4, 5, 6, 7, 8, 9};
608 VerifyUnackedPackets(unacked, arraysize(unacked));
609 QuicPacketNumber retransmittable[] = {5, 6, 7, 8, 9};
610 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
611 }
612
613 TEST_P(QuicSentPacketManagerTest, GetLeastUnacked) { 570 TEST_P(QuicSentPacketManagerTest, GetLeastUnacked) {
614 EXPECT_EQ(1u, manager_.GetLeastUnacked(kDefaultPathId)); 571 EXPECT_EQ(1u, manager_.GetLeastUnacked(kDefaultPathId));
615 } 572 }
616 573
617 TEST_P(QuicSentPacketManagerTest, GetLeastUnackedUnacked) { 574 TEST_P(QuicSentPacketManagerTest, GetLeastUnackedUnacked) {
618 SendDataPacket(1); 575 SendDataPacket(1);
619 EXPECT_EQ(1u, manager_.GetLeastUnacked(kDefaultPathId)); 576 EXPECT_EQ(1u, manager_.GetLeastUnacked(kDefaultPathId));
620 } 577 }
621 578
622 TEST_P(QuicSentPacketManagerTest, AckAckAndUpdateRtt) { 579 TEST_P(QuicSentPacketManagerTest, AckAckAndUpdateRtt) {
(...skipping 916 matching lines...) Expand 10 before | Expand all | Expand 10 after
1539 options.push_back(kNRTO); 1496 options.push_back(kNRTO);
1540 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); 1497 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT);
1541 client_config.SetConnectionOptionsToSend(options); 1498 client_config.SetConnectionOptionsToSend(options);
1542 EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); 1499 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1543 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1500 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1544 manager_.SetFromConfig(client_config); 1501 manager_.SetFromConfig(client_config);
1545 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); 1502 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_));
1546 } 1503 }
1547 1504
1548 TEST_P(QuicSentPacketManagerTest, NegotiateUndoFromOptionsAtServer) { 1505 TEST_P(QuicSentPacketManagerTest, NegotiateUndoFromOptionsAtServer) {
1549 FLAGS_quic_loss_recovery_use_largest_acked = true;
1550 EXPECT_FALSE(QuicSentPacketManagerPeer::GetUndoRetransmits(&manager_)); 1506 EXPECT_FALSE(QuicSentPacketManagerPeer::GetUndoRetransmits(&manager_));
1551 QuicConfig config; 1507 QuicConfig config;
1552 QuicTagVector options; 1508 QuicTagVector options;
1553 1509
1554 options.push_back(kUNDO); 1510 options.push_back(kUNDO);
1555 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1511 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1556 EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); 1512 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1557 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1513 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1558 manager_.SetFromConfig(config); 1514 manager_.SetFromConfig(config);
1559 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUndoRetransmits(&manager_)); 1515 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUndoRetransmits(&manager_));
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1591 // Ack 1 and ensure the retransmissions are cancelled and put back in flight. 1547 // Ack 1 and ensure the retransmissions are cancelled and put back in flight.
1592 EXPECT_CALL(*loss_algorithm, DetectLosses(_, _, _, _, _)); 1548 EXPECT_CALL(*loss_algorithm, DetectLosses(_, _, _, _, _));
1593 ack_frame = InitAckFrame(5); 1549 ack_frame = InitAckFrame(5);
1594 NackPackets(2, kNumSentPackets, &ack_frame); 1550 NackPackets(2, kNumSentPackets, &ack_frame);
1595 manager_.OnIncomingAck(ack_frame, clock_.Now()); 1551 manager_.OnIncomingAck(ack_frame, clock_.Now());
1596 EXPECT_FALSE(manager_.HasPendingRetransmissions()); 1552 EXPECT_FALSE(manager_.HasPendingRetransmissions());
1597 EXPECT_EQ(3u * kDefaultLength, BytesInFlight()); 1553 EXPECT_EQ(3u * kDefaultLength, BytesInFlight());
1598 } 1554 }
1599 1555
1600 TEST_P(QuicSentPacketManagerTest, NegotiateUndoFromOptionsAtClient) { 1556 TEST_P(QuicSentPacketManagerTest, NegotiateUndoFromOptionsAtClient) {
1601 FLAGS_quic_loss_recovery_use_largest_acked = true;
1602 EXPECT_FALSE(QuicSentPacketManagerPeer::GetUndoRetransmits(&manager_)); 1557 EXPECT_FALSE(QuicSentPacketManagerPeer::GetUndoRetransmits(&manager_));
1603 QuicConfig client_config; 1558 QuicConfig client_config;
1604 QuicTagVector options; 1559 QuicTagVector options;
1605 1560
1606 options.push_back(kUNDO); 1561 options.push_back(kUNDO);
1607 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); 1562 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT);
1608 client_config.SetConnectionOptionsToSend(options); 1563 client_config.SetConnectionOptionsToSend(options);
1609 EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); 1564 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1610 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1565 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1611 manager_.SetFromConfig(client_config); 1566 manager_.SetFromConfig(client_config);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1645 int64_t default_init_rtt = rtt_stats->initial_rtt_us(); 1600 int64_t default_init_rtt = rtt_stats->initial_rtt_us();
1646 rtt_stats->set_initial_rtt_us(default_init_rtt * 2); 1601 rtt_stats->set_initial_rtt_us(default_init_rtt * 2);
1647 EXPECT_EQ(2 * default_init_rtt, rtt_stats->initial_rtt_us()); 1602 EXPECT_EQ(2 * default_init_rtt, rtt_stats->initial_rtt_us());
1648 1603
1649 QuicSentPacketManagerPeer::SetConsecutiveRtoCount(&manager_, 1); 1604 QuicSentPacketManagerPeer::SetConsecutiveRtoCount(&manager_, 1);
1650 EXPECT_EQ(1u, manager_.GetConsecutiveRtoCount()); 1605 EXPECT_EQ(1u, manager_.GetConsecutiveRtoCount());
1651 QuicSentPacketManagerPeer::SetConsecutiveTlpCount(&manager_, 2); 1606 QuicSentPacketManagerPeer::SetConsecutiveTlpCount(&manager_, 2);
1652 EXPECT_EQ(2u, manager_.GetConsecutiveTlpCount()); 1607 EXPECT_EQ(2u, manager_.GetConsecutiveTlpCount());
1653 1608
1654 EXPECT_CALL(*send_algorithm_, OnConnectionMigration()); 1609 EXPECT_CALL(*send_algorithm_, OnConnectionMigration());
1655 manager_.OnConnectionMigration(kDefaultPathId, UNSPECIFIED_CHANGE); 1610 manager_.OnConnectionMigration(kDefaultPathId, IPV4_TO_IPV4_CHANGE);
1656 1611
1657 EXPECT_EQ(default_init_rtt, rtt_stats->initial_rtt_us()); 1612 EXPECT_EQ(default_init_rtt, rtt_stats->initial_rtt_us());
1658 EXPECT_EQ(0u, manager_.GetConsecutiveRtoCount()); 1613 EXPECT_EQ(0u, manager_.GetConsecutiveRtoCount());
1659 EXPECT_EQ(0u, manager_.GetConsecutiveTlpCount()); 1614 EXPECT_EQ(0u, manager_.GetConsecutiveTlpCount());
1660 } 1615 }
1661 1616
1662 TEST_P(QuicSentPacketManagerTest, ConnectionMigrationIPSubnetChange) { 1617 TEST_P(QuicSentPacketManagerTest, ConnectionMigrationIPSubnetChange) {
1663 RttStats* rtt_stats = const_cast<RttStats*>(manager_.GetRttStats()); 1618 RttStats* rtt_stats = const_cast<RttStats*>(manager_.GetRttStats());
1664 int64_t default_init_rtt = rtt_stats->initial_rtt_us(); 1619 int64_t default_init_rtt = rtt_stats->initial_rtt_us();
1665 rtt_stats->set_initial_rtt_us(default_init_rtt * 2); 1620 rtt_stats->set_initial_rtt_us(default_init_rtt * 2);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1708 ExpectAck(1); 1663 ExpectAck(1);
1709 EXPECT_CALL(*network_change_visitor_, 1664 EXPECT_CALL(*network_change_visitor_,
1710 OnPathMtuIncreased(kDefaultLength + 100)); 1665 OnPathMtuIncreased(kDefaultLength + 100));
1711 QuicAckFrame ack_frame = InitAckFrame(1); 1666 QuicAckFrame ack_frame = InitAckFrame(1);
1712 manager_.OnIncomingAck(ack_frame, clock_.Now()); 1667 manager_.OnIncomingAck(ack_frame, clock_.Now());
1713 } 1668 }
1714 1669
1715 } // namespace 1670 } // namespace
1716 } // namespace test 1671 } // namespace test
1717 } // namespace net 1672 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_sent_packet_manager.cc ('k') | net/quic/core/quic_server_session_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698