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

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

Issue 2547583002: Landing Recent QUIC changes until Fri Nov 18 23:21:04 2016 +0000 (Closed)
Patch Set: Remove explicit HTTP/2 enum usage Created 4 years 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
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 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "net/quic/core/quic_flags.h" 10 #include "net/quic/core/quic_flags.h"
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 RetransmitAndSendPacket(old_packet_number, new_packet_number, 170 RetransmitAndSendPacket(old_packet_number, new_packet_number,
171 TLP_RETRANSMISSION); 171 TLP_RETRANSMISSION);
172 } 172 }
173 173
174 void RetransmitAndSendPacket(QuicPacketNumber old_packet_number, 174 void RetransmitAndSendPacket(QuicPacketNumber old_packet_number,
175 QuicPacketNumber new_packet_number, 175 QuicPacketNumber new_packet_number,
176 TransmissionType transmission_type) { 176 TransmissionType transmission_type) {
177 QuicSentPacketManagerPeer::MarkForRetransmission( 177 QuicSentPacketManagerPeer::MarkForRetransmission(
178 &manager_, kDefaultPathId, old_packet_number, transmission_type); 178 &manager_, kDefaultPathId, old_packet_number, transmission_type);
179 EXPECT_TRUE(manager_.HasPendingRetransmissions()); 179 EXPECT_TRUE(manager_.HasPendingRetransmissions());
180 PendingRetransmission next_retransmission = 180 QuicPendingRetransmission next_retransmission =
181 manager_.NextPendingRetransmission(); 181 manager_.NextPendingRetransmission();
182 EXPECT_EQ(old_packet_number, next_retransmission.packet_number); 182 EXPECT_EQ(old_packet_number, next_retransmission.packet_number);
183 EXPECT_EQ(transmission_type, next_retransmission.transmission_type); 183 EXPECT_EQ(transmission_type, next_retransmission.transmission_type);
184 184
185 EXPECT_CALL(*send_algorithm_, 185 EXPECT_CALL(*send_algorithm_,
186 OnPacketSent(_, BytesInFlight(), new_packet_number, 186 OnPacketSent(_, BytesInFlight(), new_packet_number,
187 kDefaultLength, HAS_RETRANSMITTABLE_DATA)) 187 kDefaultLength, HAS_RETRANSMITTABLE_DATA))
188 .WillOnce(Return(true)); 188 .WillOnce(Return(true));
189 SerializedPacket packet(CreatePacket(new_packet_number, false)); 189 SerializedPacket packet(CreatePacket(new_packet_number, false));
190 manager_.OnPacketSent(&packet, packet.path_id, old_packet_number, 190 manager_.OnPacketSent(&packet, packet.path_id, old_packet_number,
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 } 246 }
247 247
248 // Based on QuicConnection's WritePendingRetransmissions. 248 // Based on QuicConnection's WritePendingRetransmissions.
249 void RetransmitNextPacket(QuicPacketNumber retransmission_packet_number) { 249 void RetransmitNextPacket(QuicPacketNumber retransmission_packet_number) {
250 EXPECT_TRUE(manager_.HasPendingRetransmissions()); 250 EXPECT_TRUE(manager_.HasPendingRetransmissions());
251 EXPECT_CALL(*send_algorithm_, 251 EXPECT_CALL(*send_algorithm_,
252 OnPacketSent(_, _, retransmission_packet_number, kDefaultLength, 252 OnPacketSent(_, _, retransmission_packet_number, kDefaultLength,
253 HAS_RETRANSMITTABLE_DATA)) 253 HAS_RETRANSMITTABLE_DATA))
254 .Times(1) 254 .Times(1)
255 .WillOnce(Return(true)); 255 .WillOnce(Return(true));
256 const PendingRetransmission pending = manager_.NextPendingRetransmission(); 256 const QuicPendingRetransmission pending =
257 manager_.NextPendingRetransmission();
257 SerializedPacket packet(CreatePacket(retransmission_packet_number, false)); 258 SerializedPacket packet(CreatePacket(retransmission_packet_number, false));
258 manager_.OnPacketSent(&packet, pending.path_id, pending.packet_number, 259 manager_.OnPacketSent(&packet, pending.path_id, pending.packet_number,
259 clock_.Now(), pending.transmission_type, 260 clock_.Now(), pending.transmission_type,
260 HAS_RETRANSMITTABLE_DATA); 261 HAS_RETRANSMITTABLE_DATA);
261 } 262 }
262 263
263 // Initialize a frame acknowledging all packets up to largest_observed. 264 // Initialize a frame acknowledging all packets up to largest_observed.
264 const QuicAckFrame InitAckFrame(QuicPacketNumber largest_observed) { 265 const QuicAckFrame InitAckFrame(QuicPacketNumber largest_observed) {
265 QuicAckFrame frame(MakeAckFrame(largest_observed)); 266 QuicAckFrame frame(MakeAckFrame(largest_observed));
266 if (largest_observed > 0) { 267 if (largest_observed > 0) {
(...skipping 1156 matching lines...) Expand 10 before | Expand all | Expand 10 after
1423 options.clear(); 1424 options.clear();
1424 options.push_back(kRENO); 1425 options.push_back(kRENO);
1425 options.push_back(kBYTE); 1426 options.push_back(kBYTE);
1426 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1427 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1427 EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); 1428 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1428 manager_.SetFromConfig(config); 1429 manager_.SetFromConfig(config);
1429 EXPECT_EQ(kRenoBytes, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_) 1430 EXPECT_EQ(kRenoBytes, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_)
1430 ->GetCongestionControlType()); 1431 ->GetCongestionControlType());
1431 } 1432 }
1432 1433
1434 TEST_F(QuicSentPacketManagerTest, NegotiateClientCongestionControlFromOptions) {
1435 FLAGS_quic_allow_new_bbr = true;
1436 FLAGS_quic_client_connection_options = true;
1437 QuicConfig config;
1438 QuicTagVector options;
1439
1440 // No change if the server receives client options.
1441 const SendAlgorithmInterface* mock_sender =
1442 QuicSentPacketManagerPeer::GetSendAlgorithm(manager_);
1443 options.push_back(kRENO);
1444 config.SetClientConnectionOptions(options);
1445 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1446 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1447 manager_.SetFromConfig(config);
1448 EXPECT_EQ(mock_sender, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_));
1449
1450 // Change the congestion control on the client with client options.
1451 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT);
1452 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1453 manager_.SetFromConfig(config);
1454 EXPECT_EQ(kReno, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_)
1455 ->GetCongestionControlType());
1456
1457 options.clear();
1458 options.push_back(kTBBR);
1459 config.SetClientConnectionOptions(options);
1460 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1461 manager_.SetFromConfig(config);
1462 EXPECT_EQ(kBBR, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_)
1463 ->GetCongestionControlType());
1464
1465 options.clear();
1466 options.push_back(kBYTE);
1467 config.SetClientConnectionOptions(options);
1468 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1469 manager_.SetFromConfig(config);
1470 if (FLAGS_quic_default_enable_cubic_bytes) {
1471 EXPECT_EQ(kCubic, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_)
1472 ->GetCongestionControlType());
1473 } else {
1474 EXPECT_EQ(kCubicBytes, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_)
1475 ->GetCongestionControlType());
1476 }
1477
1478 options.clear();
1479 options.push_back(kRENO);
1480 options.push_back(kBYTE);
1481 config.SetClientConnectionOptions(options);
1482 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1483 manager_.SetFromConfig(config);
1484 EXPECT_EQ(kRenoBytes, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_)
1485 ->GetCongestionControlType());
1486 }
1487
1433 TEST_F(QuicSentPacketManagerTest, NegotiateNumConnectionsFromOptions) { 1488 TEST_F(QuicSentPacketManagerTest, NegotiateNumConnectionsFromOptions) {
1434 QuicConfig config; 1489 QuicConfig config;
1435 QuicTagVector options; 1490 QuicTagVector options;
1436 1491
1437 options.push_back(k1CON); 1492 options.push_back(k1CON);
1438 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1493 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1439 EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); 1494 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1440 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(1)); 1495 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(1));
1441 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1496 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1442 manager_.SetFromConfig(config); 1497 manager_.SetFromConfig(config);
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
1707 ExpectAck(1); 1762 ExpectAck(1);
1708 EXPECT_CALL(*network_change_visitor_, 1763 EXPECT_CALL(*network_change_visitor_,
1709 OnPathMtuIncreased(kDefaultLength + 100)); 1764 OnPathMtuIncreased(kDefaultLength + 100));
1710 QuicAckFrame ack_frame = InitAckFrame(1); 1765 QuicAckFrame ack_frame = InitAckFrame(1);
1711 manager_.OnIncomingAck(ack_frame, clock_.Now()); 1766 manager_.OnIncomingAck(ack_frame, clock_.Now());
1712 } 1767 }
1713 1768
1714 } // namespace 1769 } // namespace
1715 } // namespace test 1770 } // namespace test
1716 } // namespace net 1771 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_sent_packet_manager_interface.h ('k') | net/quic/core/quic_server_session_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698