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

Side by Side Diff: net/quic/congestion_control/quic_congestion_manager_test.cc

Issue 14816006: Land Recent QUIC changes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added missing NET_PRIVATE_EXPORT to QuicWallTime Created 7 years, 7 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
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "base/logging.h" 5 #include "base/logging.h"
6 #include "base/memory/scoped_ptr.h" 6 #include "base/memory/scoped_ptr.h"
7 #include "net/quic/congestion_control/quic_congestion_manager.h" 7 #include "net/quic/congestion_control/quic_congestion_manager.h"
8 #include "net/quic/quic_protocol.h" 8 #include "net/quic/quic_protocol.h"
9 #include "net/quic/test_tools/mock_clock.h" 9 #include "net/quic/test_tools/mock_clock.h"
10 #include "net/quic/test_tools/quic_test_utils.h" 10 #include "net/quic/test_tools/quic_test_utils.h"
(...skipping 21 matching lines...) Expand all
32 32
33 private: 33 private:
34 DISALLOW_COPY_AND_ASSIGN(QuicCongestionManagerPeer); 34 DISALLOW_COPY_AND_ASSIGN(QuicCongestionManagerPeer);
35 }; 35 };
36 36
37 class QuicCongestionManagerTest : public ::testing::Test { 37 class QuicCongestionManagerTest : public ::testing::Test {
38 protected: 38 protected:
39 void SetUpCongestionType(CongestionFeedbackType congestion_type) { 39 void SetUpCongestionType(CongestionFeedbackType congestion_type) {
40 manager_.reset(new QuicCongestionManagerPeer(&clock_, congestion_type)); 40 manager_.reset(new QuicCongestionManagerPeer(&clock_, congestion_type));
41 } 41 }
42
43 static const HasRetransmittableData kIgnored = HAS_RETRANSMITTABLE_DATA;
44
42 MockClock clock_; 45 MockClock clock_;
43 scoped_ptr<QuicCongestionManagerPeer> manager_; 46 scoped_ptr<QuicCongestionManagerPeer> manager_;
44 }; 47 };
45 48
46 TEST_F(QuicCongestionManagerTest, Bandwidth) { 49 TEST_F(QuicCongestionManagerTest, Bandwidth) {
47 SetUpCongestionType(kFixRate); 50 SetUpCongestionType(kFixRate);
48 QuicAckFrame ack; 51 QuicAckFrame ack;
49 manager_->OnIncomingAckFrame(ack, clock_.Now()); 52 manager_->OnIncomingAckFrame(ack, clock_.Now());
50 53
51 QuicCongestionFeedbackFrame feedback; 54 QuicCongestionFeedbackFrame feedback;
52 feedback.type = kFixRate; 55 feedback.type = kFixRate;
53 feedback.fix_rate.bitrate = QuicBandwidth::FromKBytesPerSecond(100); 56 feedback.fix_rate.bitrate = QuicBandwidth::FromKBytesPerSecond(100);
54 manager_->OnIncomingQuicCongestionFeedbackFrame(feedback, clock_.Now()); 57 manager_->OnIncomingQuicCongestionFeedbackFrame(feedback, clock_.Now());
55 58
56 for (int i = 1; i <= 100; ++i) { 59 for (int i = 1; i <= 100; ++i) {
57 QuicTime::Delta advance_time = manager_->TimeUntilSend( 60 QuicTime::Delta advance_time = manager_->TimeUntilSend(
58 clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); 61 clock_.Now(), NOT_RETRANSMISSION, kIgnored);
59 clock_.AdvanceTime(advance_time); 62 clock_.AdvanceTime(advance_time);
60 EXPECT_TRUE(manager_->TimeUntilSend( 63 EXPECT_TRUE(manager_->TimeUntilSend(
61 clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); 64 clock_.Now(), NOT_RETRANSMISSION, kIgnored).IsZero());
62 manager_->SentPacket(i, clock_.Now(), 1000, NOT_RETRANSMISSION); 65 manager_->SentPacket(i, clock_.Now(), 1000, NOT_RETRANSMISSION);
63 // Ack the packet we sent. 66 // Ack the packet we sent.
64 ack.received_info.largest_observed = i; 67 ack.received_info.largest_observed = i;
65 manager_->OnIncomingAckFrame(ack, clock_.Now()); 68 manager_->OnIncomingAckFrame(ack, clock_.Now());
66 } 69 }
67 EXPECT_EQ(100, manager_->BandwidthEstimate().ToKBytesPerSecond()); 70 EXPECT_EQ(100, manager_->BandwidthEstimate().ToKBytesPerSecond());
68 EXPECT_NEAR(100, 71 EXPECT_NEAR(100,
69 manager_->SentBandwidth(clock_.Now()).ToKBytesPerSecond(), 4); 72 manager_->SentBandwidth(clock_.Now()).ToKBytesPerSecond(), 4);
70 } 73 }
71 74
72 TEST_F(QuicCongestionManagerTest, BandwidthWith1SecondGap) { 75 TEST_F(QuicCongestionManagerTest, BandwidthWith1SecondGap) {
73 SetUpCongestionType(kFixRate); 76 SetUpCongestionType(kFixRate);
74 QuicAckFrame ack; 77 QuicAckFrame ack;
75 manager_->OnIncomingAckFrame(ack, clock_.Now()); 78 manager_->OnIncomingAckFrame(ack, clock_.Now());
76 79
77 QuicCongestionFeedbackFrame feedback; 80 QuicCongestionFeedbackFrame feedback;
78 feedback.type = kFixRate; 81 feedback.type = kFixRate;
79 feedback.fix_rate.bitrate = QuicBandwidth::FromKBytesPerSecond(100); 82 feedback.fix_rate.bitrate = QuicBandwidth::FromKBytesPerSecond(100);
80 manager_->OnIncomingQuicCongestionFeedbackFrame(feedback, clock_.Now()); 83 manager_->OnIncomingQuicCongestionFeedbackFrame(feedback, clock_.Now());
81 84
82 for (QuicPacketSequenceNumber sequence_number = 1; sequence_number <= 100; 85 for (QuicPacketSequenceNumber sequence_number = 1; sequence_number <= 100;
83 ++sequence_number) { 86 ++sequence_number) {
84 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(10)); 87 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(10));
85 EXPECT_TRUE(manager_->TimeUntilSend( 88 EXPECT_TRUE(manager_->TimeUntilSend(
86 clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); 89 clock_.Now(), NOT_RETRANSMISSION, kIgnored).IsZero());
87 manager_->SentPacket( 90 manager_->SentPacket(
88 sequence_number, clock_.Now(), 1000, NOT_RETRANSMISSION); 91 sequence_number, clock_.Now(), 1000, NOT_RETRANSMISSION);
89 // Ack the packet we sent. 92 // Ack the packet we sent.
90 ack.received_info.largest_observed = sequence_number; 93 ack.received_info.largest_observed = sequence_number;
91 manager_->OnIncomingAckFrame(ack, clock_.Now()); 94 manager_->OnIncomingAckFrame(ack, clock_.Now());
92 } 95 }
93 EXPECT_EQ(100000, manager_->BandwidthEstimate().ToBytesPerSecond()); 96 EXPECT_EQ(100000, manager_->BandwidthEstimate().ToBytesPerSecond());
94 EXPECT_NEAR(100000, 97 EXPECT_NEAR(100000,
95 manager_->SentBandwidth(clock_.Now()).ToBytesPerSecond(), 2000); 98 manager_->SentBandwidth(clock_.Now()).ToBytesPerSecond(), 2000);
96 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(500)); 99 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(500));
97 EXPECT_NEAR(50000, 100 EXPECT_NEAR(50000,
98 manager_->SentBandwidth(clock_.Now()).ToBytesPerSecond(), 1000); 101 manager_->SentBandwidth(clock_.Now()).ToBytesPerSecond(), 1000);
99 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(501)); 102 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(501));
100 EXPECT_NEAR(100000, manager_->BandwidthEstimate().ToBytesPerSecond(), 2000); 103 EXPECT_NEAR(100000, manager_->BandwidthEstimate().ToBytesPerSecond(), 2000);
101 EXPECT_TRUE(manager_->SentBandwidth(clock_.Now()).IsZero()); 104 EXPECT_TRUE(manager_->SentBandwidth(clock_.Now()).IsZero());
102 for (int i = 1; i <= 150; ++i) { 105 for (int i = 1; i <= 150; ++i) {
103 EXPECT_TRUE(manager_->TimeUntilSend( 106 EXPECT_TRUE(manager_->TimeUntilSend(
104 clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); 107 clock_.Now(), NOT_RETRANSMISSION, kIgnored).IsZero());
105 manager_->SentPacket(i + 100, clock_.Now(), 1000, NOT_RETRANSMISSION); 108 manager_->SentPacket(i + 100, clock_.Now(), 1000, NOT_RETRANSMISSION);
106 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(10)); 109 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(10));
107 // Ack the packet we sent. 110 // Ack the packet we sent.
108 ack.received_info.largest_observed = i + 100; 111 ack.received_info.largest_observed = i + 100;
109 manager_->OnIncomingAckFrame(ack, clock_.Now()); 112 manager_->OnIncomingAckFrame(ack, clock_.Now());
110 } 113 }
111 EXPECT_EQ(100, manager_->BandwidthEstimate().ToKBytesPerSecond()); 114 EXPECT_EQ(100, manager_->BandwidthEstimate().ToKBytesPerSecond());
112 EXPECT_NEAR(100, 115 EXPECT_NEAR(100,
113 manager_->SentBandwidth(clock_.Now()).ToKBytesPerSecond(), 2); 116 manager_->SentBandwidth(clock_.Now()).ToKBytesPerSecond(), 2);
114 } 117 }
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 211
209 QuicAckFrame ack; 212 QuicAckFrame ack;
210 ack.received_info.largest_observed = sequence_number; 213 ack.received_info.largest_observed = sequence_number;
211 ack.received_info.delta_time_largest_observed = QuicTime::Delta::Zero(); 214 ack.received_info.delta_time_largest_observed = QuicTime::Delta::Zero();
212 manager_->OnIncomingAckFrame(ack, clock_.Now()); 215 manager_->OnIncomingAckFrame(ack, clock_.Now());
213 EXPECT_EQ(manager_->rtt(), expected_rtt); 216 EXPECT_EQ(manager_->rtt(), expected_rtt);
214 } 217 }
215 218
216 } // namespace test 219 } // namespace test
217 } // namespace net 220 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/congestion_control/fix_rate_test.cc ('k') | net/quic/congestion_control/tcp_cubic_sender.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698