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

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

Issue 1807033002: Don't copy the QuicAckFrame into the QuicPacketGenerator. Protected by quic_dont_copy_acks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@116794514
Patch Set: Created 4 years, 9 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_received_packet_manager.cc ('k') | net/quic/test_tools/quic_connection_peer.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/quic_received_packet_manager.h" 5 #include "net/quic/quic_received_packet_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "net/quic/quic_connection_stats.h" 10 #include "net/quic/quic_connection_stats.h"
11 #include "net/quic/quic_flags.h"
11 #include "net/quic/test_tools/quic_received_packet_manager_peer.h" 12 #include "net/quic/test_tools/quic_received_packet_manager_peer.h"
12 #include "testing/gmock/include/gmock/gmock.h" 13 #include "testing/gmock/include/gmock/gmock.h"
13 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
14 15
15 using std::pair; 16 using std::pair;
16 using std::vector; 17 using std::vector;
17 18
18 namespace net { 19 namespace net {
19 namespace test { 20 namespace test {
20 21
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 received_manager_.RecordPacketReceived(0u, header, QuicTime::Zero()); 294 received_manager_.RecordPacketReceived(0u, header, QuicTime::Zero());
294 EXPECT_TRUE(received_manager_.IsAwaitingPacket(3u)); 295 EXPECT_TRUE(received_manager_.IsAwaitingPacket(3u));
295 EXPECT_TRUE(received_manager_.IsAwaitingPacket(6u)); 296 EXPECT_TRUE(received_manager_.IsAwaitingPacket(6u));
296 EXPECT_TRUE(QuicReceivedPacketManagerPeer::DontWaitForPacketsBefore( 297 EXPECT_TRUE(QuicReceivedPacketManagerPeer::DontWaitForPacketsBefore(
297 &received_manager_, 4)); 298 &received_manager_, 4));
298 EXPECT_FALSE(received_manager_.IsAwaitingPacket(3u)); 299 EXPECT_FALSE(received_manager_.IsAwaitingPacket(3u));
299 EXPECT_TRUE(received_manager_.IsAwaitingPacket(6u)); 300 EXPECT_TRUE(received_manager_.IsAwaitingPacket(6u));
300 } 301 }
301 302
302 TEST_F(QuicReceivedPacketManagerTest, UpdateReceivedPacketInfo) { 303 TEST_F(QuicReceivedPacketManagerTest, UpdateReceivedPacketInfo) {
304 FLAGS_quic_dont_copy_acks = false;
303 QuicPacketHeader header; 305 QuicPacketHeader header;
304 header.packet_number = 2u; 306 header.packet_number = 2u;
305 QuicTime two_ms = QuicTime::Zero().Add(QuicTime::Delta::FromMilliseconds(2)); 307 QuicTime two_ms = QuicTime::Zero().Add(QuicTime::Delta::FromMilliseconds(2));
306 EXPECT_FALSE(received_manager_.ack_frame_updated()); 308 EXPECT_FALSE(received_manager_.ack_frame_updated());
307 received_manager_.RecordPacketReceived(0u, header, two_ms); 309 received_manager_.RecordPacketReceived(0u, header, two_ms);
308 EXPECT_TRUE(received_manager_.ack_frame_updated()); 310 EXPECT_TRUE(received_manager_.ack_frame_updated());
309 311
310 QuicAckFrame ack; 312 QuicAckFrame ack;
311 received_manager_.UpdateReceivedPacketInfo(&ack, QuicTime::Zero()); 313 received_manager_.UpdateReceivedPacketInfo(&ack, QuicTime::Zero());
312 EXPECT_FALSE(received_manager_.ack_frame_updated()); 314 EXPECT_FALSE(received_manager_.ack_frame_updated());
(...skipping 17 matching lines...) Expand all
330 header.packet_number = 1000u; 332 header.packet_number = 1000u;
331 received_manager_.RecordPacketReceived(0u, header, two_ms); 333 received_manager_.RecordPacketReceived(0u, header, two_ms);
332 EXPECT_TRUE(received_manager_.ack_frame_updated()); 334 EXPECT_TRUE(received_manager_.ack_frame_updated());
333 received_manager_.UpdateReceivedPacketInfo(&ack, two_ms); 335 received_manager_.UpdateReceivedPacketInfo(&ack, two_ms);
334 EXPECT_FALSE(received_manager_.ack_frame_updated()); 336 EXPECT_FALSE(received_manager_.ack_frame_updated());
335 // UpdateReceivedPacketInfo should discard any times which can't be 337 // UpdateReceivedPacketInfo should discard any times which can't be
336 // expressed on the wire. 338 // expressed on the wire.
337 EXPECT_EQ(2ul, ack.received_packet_times.size()); 339 EXPECT_EQ(2ul, ack.received_packet_times.size());
338 } 340 }
339 341
342 TEST_F(QuicReceivedPacketManagerTest, GetUpdatedAckFrame) {
343 FLAGS_quic_dont_copy_acks = true;
344 QuicPacketHeader header;
345 header.packet_number = 2u;
346 QuicTime two_ms = QuicTime::Zero().Add(QuicTime::Delta::FromMilliseconds(2));
347 EXPECT_FALSE(received_manager_.ack_frame_updated());
348 received_manager_.RecordPacketReceived(0u, header, two_ms);
349 EXPECT_TRUE(received_manager_.ack_frame_updated());
350
351 QuicFrame ack = received_manager_.GetUpdatedAckFrame(QuicTime::Zero());
352 EXPECT_FALSE(received_manager_.ack_frame_updated());
353 // When UpdateReceivedPacketInfo with a time earlier than the time of the
354 // largest observed packet, make sure that the delta is 0, not negative.
355 EXPECT_EQ(QuicTime::Delta::Zero(), ack.ack_frame->ack_delay_time);
356 EXPECT_EQ(1u, ack.ack_frame->received_packet_times.size());
357
358 QuicTime four_ms = QuicTime::Zero().Add(QuicTime::Delta::FromMilliseconds(4));
359 ack = received_manager_.GetUpdatedAckFrame(four_ms);
360 EXPECT_FALSE(received_manager_.ack_frame_updated());
361 // When UpdateReceivedPacketInfo after not having received a new packet,
362 // the delta should still be accurate.
363 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(2),
364 ack.ack_frame->ack_delay_time);
365 // And received packet times won't have change.
366 EXPECT_EQ(1u, ack.ack_frame->received_packet_times.size());
367
368 header.packet_number = 999u;
369 received_manager_.RecordPacketReceived(0u, header, two_ms);
370 header.packet_number = 4u;
371 received_manager_.RecordPacketReceived(0u, header, two_ms);
372 header.packet_number = 1000u;
373 received_manager_.RecordPacketReceived(0u, header, two_ms);
374 EXPECT_TRUE(received_manager_.ack_frame_updated());
375 ack = received_manager_.GetUpdatedAckFrame(two_ms);
376 EXPECT_FALSE(received_manager_.ack_frame_updated());
377 // UpdateReceivedPacketInfo should discard any times which can't be
378 // expressed on the wire.
379 EXPECT_EQ(2u, ack.ack_frame->received_packet_times.size());
380 }
381
340 TEST_F(QuicReceivedPacketManagerTest, UpdateReceivedConnectionStats) { 382 TEST_F(QuicReceivedPacketManagerTest, UpdateReceivedConnectionStats) {
341 EXPECT_FALSE(received_manager_.ack_frame_updated()); 383 EXPECT_FALSE(received_manager_.ack_frame_updated());
342 RecordPacketReceipt(1, 0); 384 RecordPacketReceipt(1, 0);
343 EXPECT_TRUE(received_manager_.ack_frame_updated()); 385 EXPECT_TRUE(received_manager_.ack_frame_updated());
344 RecordPacketReceipt(6, 0); 386 RecordPacketReceipt(6, 0);
345 RecordPacketReceipt( 387 RecordPacketReceipt(
346 2, 0, QuicTime::Zero().Add(QuicTime::Delta::FromMilliseconds(1))); 388 2, 0, QuicTime::Zero().Add(QuicTime::Delta::FromMilliseconds(1)));
347 389
348 EXPECT_EQ(4u, stats_.max_sequence_reordering); 390 EXPECT_EQ(4u, stats_.max_sequence_reordering);
349 EXPECT_EQ(1000, stats_.max_time_reordering_us); 391 EXPECT_EQ(1000, stats_.max_time_reordering_us);
350 EXPECT_EQ(1u, stats_.packets_reordered); 392 EXPECT_EQ(1u, stats_.packets_reordered);
351 } 393 }
352 394
353 } // namespace 395 } // namespace
354 } // namespace test 396 } // namespace test
355 } // namespace net 397 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_received_packet_manager.cc ('k') | net/quic/test_tools/quic_connection_peer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698