Index: net/quic/congestion_control/cubic_test.cc |
diff --git a/net/quic/congestion_control/cubic_test.cc b/net/quic/congestion_control/cubic_test.cc |
index c01bb0506438416cbfd59f67911c37c568477b63..8e0d8e9e777d77b376bbf49e9cd7295adbb46393 100644 |
--- a/net/quic/congestion_control/cubic_test.cc |
+++ b/net/quic/congestion_control/cubic_test.cc |
@@ -4,7 +4,6 @@ |
#include "base/basictypes.h" |
#include "base/logging.h" |
-#include "base/memory/scoped_ptr.h" |
#include "net/quic/congestion_control/cubic.h" |
#include "net/quic/test_tools/mock_clock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -12,57 +11,19 @@ |
namespace net { |
namespace test { |
-class CubicPeer : public Cubic { |
- public: |
- explicit CubicPeer(QuicClock* clock) |
- : Cubic(clock) { |
- } |
- using Cubic::CubeRoot; |
-}; |
- |
class CubicTest : public ::testing::Test { |
protected: |
CubicTest() |
: one_ms_(QuicTime::Delta::FromMilliseconds(1)), |
- hundred_ms_(QuicTime::Delta::FromMilliseconds(100)) { |
- } |
- virtual void SetUp() { |
- cubic_.reset(new CubicPeer(&clock_)); |
+ hundred_ms_(QuicTime::Delta::FromMilliseconds(100)), |
+ cubic_(&clock_) { |
} |
const QuicTime::Delta one_ms_; |
const QuicTime::Delta hundred_ms_; |
MockClock clock_; |
- scoped_ptr<CubicPeer> cubic_; |
+ Cubic cubic_; |
}; |
-TEST_F(CubicTest, CubeRootLow) { |
- for (uint32 i = 1; i < 256; ++i) { |
- uint64 cube = i * i * i; |
- uint8 cube_root = cubic_->CubeRoot(cube); |
- EXPECT_EQ(i, cube_root); |
- } |
-} |
- |
-TEST_F(CubicTest, CubeRootHigh) { |
- // Test the range we will opperate in, 1300 to 130 000. |
- // We expect some loss in accuracy, accepting +-0.2%. |
- for (uint64 i = 1300; i < 20000; i += 100) { |
- uint64 cube = i * i * i; |
- uint32 cube_root = cubic_->CubeRoot(cube); |
- uint32 margin = cube_root >> 9; // Calculate 0.2% roughly by |
- // dividing by 512. |
- EXPECT_LE(i - margin, cube_root); |
- EXPECT_GE(i + margin, cube_root); |
- } |
- for (uint64 i = 20000; i < 130000; i *= 2) { |
- uint64 cube = i * i * i; |
- uint32 cube_root = cubic_->CubeRoot(cube); |
- uint32 margin = cube_root >> 9; |
- EXPECT_LE(i - margin, cube_root); |
- EXPECT_GE(i + margin, cube_root); |
- } |
-} |
- |
TEST_F(CubicTest, AboveOrgin) { |
// Convex growth. |
const QuicTime::Delta rtt_min = hundred_ms_; |
@@ -71,17 +32,17 @@ TEST_F(CubicTest, AboveOrgin) { |
// Initialize the state. |
clock_.AdvanceTime(one_ms_); |
EXPECT_EQ(expected_cwnd, |
- cubic_->CongestionWindowAfterAck(current_cwnd, rtt_min)); |
+ cubic_.CongestionWindowAfterAck(current_cwnd, rtt_min)); |
current_cwnd = expected_cwnd; |
// Normal TCP phase. |
for (int i = 0; i < 48; ++i) { |
for (uint32 n = 1; n < current_cwnd; ++n) { |
// Call once per ACK. |
EXPECT_EQ(current_cwnd, |
- cubic_->CongestionWindowAfterAck(current_cwnd, rtt_min)); |
+ cubic_.CongestionWindowAfterAck(current_cwnd, rtt_min)); |
} |
clock_.AdvanceTime(hundred_ms_); |
- current_cwnd = cubic_->CongestionWindowAfterAck(current_cwnd, rtt_min); |
+ current_cwnd = cubic_.CongestionWindowAfterAck(current_cwnd, rtt_min); |
EXPECT_EQ(expected_cwnd, current_cwnd); |
expected_cwnd++; |
} |
@@ -90,10 +51,10 @@ TEST_F(CubicTest, AboveOrgin) { |
for (uint32 n = 1; n < current_cwnd; ++n) { |
// Call once per ACK. |
EXPECT_EQ(current_cwnd, |
- cubic_->CongestionWindowAfterAck(current_cwnd, rtt_min)); |
+ cubic_.CongestionWindowAfterAck(current_cwnd, rtt_min)); |
} |
clock_.AdvanceTime(hundred_ms_); |
- current_cwnd = cubic_->CongestionWindowAfterAck(current_cwnd, rtt_min); |
+ current_cwnd = cubic_.CongestionWindowAfterAck(current_cwnd, rtt_min); |
} |
float elapsed_time_s = 10.0f + 0.1f; // We need to add the RTT here. |
expected_cwnd = 11 + (elapsed_time_s * elapsed_time_s * elapsed_time_s * 410) |
@@ -108,13 +69,13 @@ TEST_F(CubicTest, LossEvents) { |
// Initialize the state. |
clock_.AdvanceTime(one_ms_); |
EXPECT_EQ(expected_cwnd, |
- cubic_->CongestionWindowAfterAck(current_cwnd, rtt_min)); |
+ cubic_.CongestionWindowAfterAck(current_cwnd, rtt_min)); |
expected_cwnd = current_cwnd * 939 / 1024; |
EXPECT_EQ(expected_cwnd, |
- cubic_->CongestionWindowAfterPacketLoss(current_cwnd)); |
+ cubic_.CongestionWindowAfterPacketLoss(current_cwnd)); |
expected_cwnd = current_cwnd * 939 / 1024; |
EXPECT_EQ(expected_cwnd, |
- cubic_->CongestionWindowAfterPacketLoss(current_cwnd)); |
+ cubic_.CongestionWindowAfterPacketLoss(current_cwnd)); |
} |
TEST_F(CubicTest, BelowOrgin) { |
@@ -125,26 +86,26 @@ TEST_F(CubicTest, BelowOrgin) { |
// Initialize the state. |
clock_.AdvanceTime(one_ms_); |
EXPECT_EQ(expected_cwnd, |
- cubic_->CongestionWindowAfterAck(current_cwnd, rtt_min)); |
+ cubic_.CongestionWindowAfterAck(current_cwnd, rtt_min)); |
expected_cwnd = current_cwnd * 939 / 1024; |
EXPECT_EQ(expected_cwnd, |
- cubic_->CongestionWindowAfterPacketLoss(current_cwnd)); |
+ cubic_.CongestionWindowAfterPacketLoss(current_cwnd)); |
current_cwnd = expected_cwnd; |
// First update after epoch. |
- current_cwnd = cubic_->CongestionWindowAfterAck(current_cwnd, rtt_min); |
+ current_cwnd = cubic_.CongestionWindowAfterAck(current_cwnd, rtt_min); |
// Cubic phase. |
for (int i = 0; i < 54; ++i) { |
for (uint32 n = 1; n < current_cwnd; ++n) { |
// Call once per ACK. |
EXPECT_EQ(current_cwnd, |
- cubic_->CongestionWindowAfterAck(current_cwnd, rtt_min)); |
+ cubic_.CongestionWindowAfterAck(current_cwnd, rtt_min)); |
} |
clock_.AdvanceTime(hundred_ms_); |
- current_cwnd = cubic_->CongestionWindowAfterAck(current_cwnd, rtt_min); |
+ current_cwnd = cubic_.CongestionWindowAfterAck(current_cwnd, rtt_min); |
} |
expected_cwnd = 440; |
EXPECT_EQ(expected_cwnd, current_cwnd); |
} |
-} // namespace testing |
+} // namespace test |
} // namespace net |