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

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

Issue 12334063: Land recent QUIC changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more EXPECT_FALSE Created 7 years, 10 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) 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 "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/paced_sender.h" 7 #include "net/quic/congestion_control/paced_sender.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 "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 12
13 namespace net { 13 namespace net {
14 namespace test { 14 namespace test {
15 15
16 const int kHundredKBytesPerS = 100; 16 const int kHundredKBytesPerS = 100;
17 17
18 class PacedSenderTest : public ::testing::Test { 18 class PacedSenderTest : public ::testing::Test {
19 protected: 19 protected:
20 PacedSenderTest() 20 PacedSenderTest()
21 : zero_time_(QuicTime::Delta::Zero()), 21 : zero_time_(QuicTime::Delta::Zero()),
22 paced_sender_(new PacedSender(&clock_, 22 paced_sender_(new PacedSender(
23 QuicBandwidth::FromKBytesPerSecond(kHundredKBytesPerS))) { 23 QuicBandwidth::FromKBytesPerSecond(kHundredKBytesPerS))) {
24 } 24 }
25 25
26 const QuicTime::Delta zero_time_; 26 const QuicTime::Delta zero_time_;
27 MockClock clock_; 27 MockClock clock_;
28 scoped_ptr<PacedSender> paced_sender_; 28 scoped_ptr<PacedSender> paced_sender_;
29 }; 29 };
30 30
31 TEST_F(PacedSenderTest, Basic) { 31 TEST_F(PacedSenderTest, Basic) {
32 paced_sender_->UpdateBandwidthEstimate( 32 paced_sender_->UpdateBandwidthEstimate(clock_.Now(),
33 QuicBandwidth::FromKBytesPerSecond(kHundredKBytesPerS * 10)); 33 QuicBandwidth::FromKBytesPerSecond(kHundredKBytesPerS * 10));
34 EXPECT_TRUE(paced_sender_->TimeUntilSend(zero_time_).IsZero()); 34 EXPECT_TRUE(paced_sender_->TimeUntilSend(clock_.Now(), zero_time_).IsZero());
35 EXPECT_EQ(kMaxPacketSize * 2, 35 paced_sender_->SentPacket(clock_.Now(), kMaxPacketSize);
36 paced_sender_->AvailableWindow(kMaxPacketSize * 4)); 36 EXPECT_TRUE(paced_sender_->TimeUntilSend(clock_.Now(), zero_time_).IsZero());
37 paced_sender_->SentPacket(kMaxPacketSize); 37 paced_sender_->SentPacket(clock_.Now(), kMaxPacketSize);
38 EXPECT_TRUE(paced_sender_->TimeUntilSend(zero_time_).IsZero());
39 paced_sender_->SentPacket(kMaxPacketSize);
40 EXPECT_EQ(static_cast<int64>(kMaxPacketSize * 2), 38 EXPECT_EQ(static_cast<int64>(kMaxPacketSize * 2),
41 paced_sender_->TimeUntilSend(zero_time_).ToMicroseconds()); 39 paced_sender_->TimeUntilSend(
42 EXPECT_EQ(0u, paced_sender_->AvailableWindow(kMaxPacketSize * 4)); 40 clock_.Now(), zero_time_).ToMicroseconds());
43 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(24)); 41 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(24));
44 EXPECT_TRUE(paced_sender_->TimeUntilSend(zero_time_).IsZero()); 42 EXPECT_TRUE(paced_sender_->TimeUntilSend(clock_.Now(), zero_time_).IsZero());
45 EXPECT_EQ(kMaxPacketSize * 2u,
46 paced_sender_->AvailableWindow(kMaxPacketSize * 4));
47 } 43 }
48 44
49 TEST_F(PacedSenderTest, LowRate) { 45 TEST_F(PacedSenderTest, LowRate) {
50 paced_sender_->UpdateBandwidthEstimate( 46 paced_sender_->UpdateBandwidthEstimate(clock_.Now(),
51 QuicBandwidth::FromKBytesPerSecond(kHundredKBytesPerS)); 47 QuicBandwidth::FromKBytesPerSecond(kHundredKBytesPerS));
52 EXPECT_TRUE(paced_sender_->TimeUntilSend(zero_time_).IsZero()); 48 EXPECT_TRUE(paced_sender_->TimeUntilSend(clock_.Now(), zero_time_).IsZero());
53 size_t window = paced_sender_->AvailableWindow(kMaxPacketSize * 4); 49 paced_sender_->SentPacket(clock_.Now(), kMaxPacketSize);
54 EXPECT_EQ(kMaxPacketSize * 2, window); 50 EXPECT_TRUE(paced_sender_->TimeUntilSend(clock_.Now(), zero_time_).IsZero());
55 paced_sender_->SentPacket(kMaxPacketSize); 51 paced_sender_->SentPacket(clock_.Now(), kMaxPacketSize);
56 EXPECT_TRUE(paced_sender_->TimeUntilSend(zero_time_).IsZero());
57 paced_sender_->SentPacket(kMaxPacketSize);
58 EXPECT_EQ(static_cast<int64>(kMaxPacketSize * 20), 52 EXPECT_EQ(static_cast<int64>(kMaxPacketSize * 20),
59 paced_sender_->TimeUntilSend(zero_time_).ToMicroseconds()); 53 paced_sender_->TimeUntilSend(
60 EXPECT_EQ(0u, paced_sender_->AvailableWindow(kMaxPacketSize * 4)); 54 clock_.Now(), zero_time_).ToMicroseconds());
61 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(24)); 55 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(24));
62 EXPECT_TRUE(paced_sender_->TimeUntilSend(zero_time_).IsZero()); 56 EXPECT_TRUE(paced_sender_->TimeUntilSend(clock_.Now(), zero_time_).IsZero());
63 EXPECT_EQ(kMaxPacketSize * 2,
64 paced_sender_->AvailableWindow(kMaxPacketSize * 4));
65 } 57 }
66 58
67 TEST_F(PacedSenderTest, HighRate) { 59 TEST_F(PacedSenderTest, HighRate) {
68 QuicBandwidth bandwidth_estimate = QuicBandwidth::FromKBytesPerSecond( 60 QuicBandwidth bandwidth_estimate = QuicBandwidth::FromKBytesPerSecond(
69 kHundredKBytesPerS * 100); 61 kHundredKBytesPerS * 100);
70 paced_sender_->UpdateBandwidthEstimate(bandwidth_estimate); 62 paced_sender_->UpdateBandwidthEstimate(clock_.Now(), bandwidth_estimate);
71 EXPECT_TRUE(paced_sender_->TimeUntilSend(zero_time_).IsZero()); 63 EXPECT_TRUE(paced_sender_->TimeUntilSend(clock_.Now(), zero_time_).IsZero());
72 EXPECT_EQ(static_cast<uint64>(bandwidth_estimate.ToBytesPerSecond() / 500u),
73 paced_sender_->AvailableWindow(kMaxPacketSize * 100));
74 for (int i = 0; i < 16; ++i) { 64 for (int i = 0; i < 16; ++i) {
75 paced_sender_->SentPacket(kMaxPacketSize); 65 paced_sender_->SentPacket(clock_.Now(), kMaxPacketSize);
76 EXPECT_TRUE(paced_sender_->TimeUntilSend(zero_time_).IsZero()); 66 EXPECT_TRUE(paced_sender_->TimeUntilSend(
67 clock_.Now(), zero_time_).IsZero());
77 } 68 }
78 paced_sender_->SentPacket(kMaxPacketSize); 69 paced_sender_->SentPacket(clock_.Now(), kMaxPacketSize);
79 EXPECT_EQ(0u, paced_sender_->AvailableWindow(kMaxPacketSize * 100)); 70 EXPECT_EQ(2040, paced_sender_->TimeUntilSend(
80 EXPECT_EQ(2040, paced_sender_->TimeUntilSend(zero_time_).ToMicroseconds()); 71 clock_.Now(), zero_time_).ToMicroseconds());
81 clock_.AdvanceTime(QuicTime::Delta::FromMicroseconds(20400)); 72 clock_.AdvanceTime(QuicTime::Delta::FromMicroseconds(20400));
82 EXPECT_TRUE(paced_sender_->TimeUntilSend(zero_time_).IsZero()); 73 EXPECT_TRUE(paced_sender_->TimeUntilSend(clock_.Now(), zero_time_).IsZero());
83 EXPECT_EQ(static_cast<uint64>(bandwidth_estimate.ToBytesPerSecond() / 500u),
84 paced_sender_->AvailableWindow(kMaxPacketSize * 100));
85 } 74 }
86 75
87 } // namespace test 76 } // namespace test
88 } // namespace net 77 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/congestion_control/paced_sender.cc ('k') | net/quic/congestion_control/quic_congestion_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698