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

Unified Diff: net/tools/quic/quic_time_wait_list_manager_test.cc

Issue 862133002: Update from https://crrev.com/312398 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: net/tools/quic/quic_time_wait_list_manager_test.cc
diff --git a/net/tools/quic/quic_time_wait_list_manager_test.cc b/net/tools/quic/quic_time_wait_list_manager_test.cc
index 17c26d83074d1252e952004cebefcbfd078b0cfd..0bb9f82de5c69bc8f05579e15ee230773867be1a 100644
--- a/net/tools/quic/quic_time_wait_list_manager_test.cc
+++ b/net/tools/quic/quic_time_wait_list_manager_test.cc
@@ -11,6 +11,7 @@
#include "net/quic/crypto/quic_decrypter.h"
#include "net/quic/crypto/quic_encrypter.h"
#include "net/quic/quic_data_reader.h"
+#include "net/quic/quic_flags.h"
#include "net/quic/quic_framer.h"
#include "net/quic/quic_packet_writer.h"
#include "net/quic/quic_protocol.h"
@@ -25,6 +26,7 @@ using net::test::BuildUnsizedDataPacket;
using net::test::NoOpFramerVisitor;
using net::test::QuicVersionMax;
using net::test::QuicVersionMin;
+using net::test::ValueRestore;
using testing::Args;
using testing::Assign;
using testing::DoAll;
@@ -218,6 +220,7 @@ TEST_F(QuicTimeWaitListManagerTest, CheckConnectionIdInTimeWait) {
EXPECT_FALSE(IsConnectionIdInTimeWait(connection_id_));
EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_));
AddConnectionId(connection_id_);
+ EXPECT_EQ(1u, time_wait_list_manager_.num_connections());
EXPECT_TRUE(IsConnectionIdInTimeWait(connection_id_));
}
@@ -255,6 +258,7 @@ TEST_F(QuicTimeWaitListManagerTest, SendPublicReset) {
TEST_F(QuicTimeWaitListManagerTest, SendPublicResetWithExponentialBackOff) {
EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_));
AddConnectionId(connection_id_);
+ EXPECT_EQ(1u, time_wait_list_manager_.num_connections());
for (int sequence_number = 1; sequence_number < 101; ++sequence_number) {
if ((sequence_number & (sequence_number - 1)) == 0) {
EXPECT_CALL(writer_, WritePacket(_, _, _, _))
@@ -273,29 +277,29 @@ TEST_F(QuicTimeWaitListManagerTest, SendPublicResetWithExponentialBackOff) {
}
TEST_F(QuicTimeWaitListManagerTest, CleanUpOldConnectionIds) {
- const int kConnectionIdCount = 100;
- const int kOldConnectionIdCount = 31;
+ const size_t kConnectionIdCount = 100;
+ const size_t kOldConnectionIdCount = 31;
// Add connection_ids such that their expiry time is kTimeWaitPeriod_.
epoll_server_.set_now_in_usec(0);
- for (int connection_id = 1;
- connection_id <= kOldConnectionIdCount;
+ for (size_t connection_id = 1; connection_id <= kOldConnectionIdCount;
++connection_id) {
EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id));
AddConnectionId(connection_id);
}
+ EXPECT_EQ(kOldConnectionIdCount, time_wait_list_manager_.num_connections());
// Add remaining connection_ids such that their add time is
// 2 * kTimeWaitPeriod.
const QuicTime::Delta time_wait_period =
QuicTimeWaitListManagerPeer::time_wait_period(&time_wait_list_manager_);
epoll_server_.set_now_in_usec(time_wait_period.ToMicroseconds());
- for (int connection_id = kOldConnectionIdCount + 1;
- connection_id <= kConnectionIdCount;
- ++connection_id) {
+ for (size_t connection_id = kOldConnectionIdCount + 1;
+ connection_id <= kConnectionIdCount; ++connection_id) {
EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id));
AddConnectionId(connection_id);
}
+ EXPECT_EQ(kConnectionIdCount, time_wait_list_manager_.num_connections());
QuicTime::Delta offset = QuicTime::Delta::FromMicroseconds(39);
// Now set the current time as time_wait_period + offset usecs.
@@ -306,21 +310,22 @@ TEST_F(QuicTimeWaitListManagerTest, CleanUpOldConnectionIds) {
time_wait_period.Subtract(offset).ToMicroseconds();
EXPECT_CALL(epoll_server_, RegisterAlarm(next_alarm_time, _));
- for (int connection_id = 1; connection_id <= kConnectionIdCount;
+ for (size_t connection_id = 1; connection_id <= kConnectionIdCount;
++connection_id) {
if (connection_id <= kOldConnectionIdCount) {
EXPECT_CALL(visitor_, OnConnectionRemovedFromTimeWaitList(connection_id));
}
}
time_wait_list_manager_.CleanUpOldConnectionIds();
- for (int connection_id = 1;
- connection_id <= kConnectionIdCount;
+ for (size_t connection_id = 1; connection_id <= kConnectionIdCount;
++connection_id) {
EXPECT_EQ(connection_id > kOldConnectionIdCount,
IsConnectionIdInTimeWait(connection_id))
<< "kOldConnectionIdCount: " << kOldConnectionIdCount
<< " connection_id: " << connection_id;
}
+ EXPECT_EQ(kConnectionIdCount - kOldConnectionIdCount,
+ time_wait_list_manager_.num_connections());
}
TEST_F(QuicTimeWaitListManagerTest, SendQueuedPackets) {
@@ -366,6 +371,7 @@ TEST_F(QuicTimeWaitListManagerTest, SendQueuedPackets) {
.Times(0);
EXPECT_CALL(visitor_, OnWriteBlocked(&time_wait_list_manager_));
ProcessPacket(other_connection_id, other_sequence_number);
+ EXPECT_EQ(2u, time_wait_list_manager_.num_connections());
// Now expect all the write blocked public reset packets to be sent again.
writer_is_blocked_ = false;
@@ -421,6 +427,7 @@ TEST_F(QuicTimeWaitListManagerTest, AddConnectionIdTwice) {
new QuicEncryptedPacket(
new char[kConnectionCloseLength], kConnectionCloseLength, true));
EXPECT_TRUE(IsConnectionIdInTimeWait(connection_id_));
+ EXPECT_EQ(1u, time_wait_list_manager_.num_connections());
EXPECT_CALL(writer_, WritePacket(_,
kConnectionCloseLength,
@@ -445,6 +452,7 @@ TEST_F(QuicTimeWaitListManagerTest, AddConnectionIdTwice) {
EXPECT_CALL(visitor_, OnConnectionRemovedFromTimeWaitList(connection_id_));
time_wait_list_manager_.CleanUpOldConnectionIds();
EXPECT_FALSE(IsConnectionIdInTimeWait(connection_id_));
+ EXPECT_EQ(0u, time_wait_list_manager_.num_connections());
}
TEST_F(QuicTimeWaitListManagerTest, ConnectionIdsOrderedByTime) {
@@ -464,6 +472,7 @@ TEST_F(QuicTimeWaitListManagerTest, ConnectionIdsOrderedByTime) {
epoll_server_.set_now_in_usec(10);
EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(kConnectionId2));
AddConnectionId(kConnectionId2);
+ EXPECT_EQ(2u, time_wait_list_manager_.num_connections());
const QuicTime::Delta time_wait_period =
QuicTimeWaitListManagerPeer::time_wait_period(&time_wait_list_manager_);
@@ -475,7 +484,46 @@ TEST_F(QuicTimeWaitListManagerTest, ConnectionIdsOrderedByTime) {
time_wait_list_manager_.CleanUpOldConnectionIds();
EXPECT_FALSE(IsConnectionIdInTimeWait(kConnectionId1));
EXPECT_TRUE(IsConnectionIdInTimeWait(kConnectionId2));
+ EXPECT_EQ(1u, time_wait_list_manager_.num_connections());
}
+
+TEST_F(QuicTimeWaitListManagerTest, MaxConnectionsTest) {
+ ValueRestore<bool> old_flag(&FLAGS_quic_limit_time_wait_list_size, true);
+ // Basically, shut off time-based eviction.
+ FLAGS_quic_time_wait_list_seconds = 10000000000;
+ FLAGS_quic_time_wait_list_max_connections = 5;
+
+ QuicConnectionId current_connection_id = 0;
+ // Add exactly the maximum number of connections
+ for (int64 i = 0; i < FLAGS_quic_time_wait_list_max_connections; ++i) {
+ ++current_connection_id;
+ EXPECT_FALSE(IsConnectionIdInTimeWait(current_connection_id));
+ EXPECT_CALL(visitor_,
+ OnConnectionAddedToTimeWaitList(current_connection_id));
+ AddConnectionId(current_connection_id);
+ EXPECT_EQ(current_connection_id, time_wait_list_manager_.num_connections());
+ EXPECT_TRUE(IsConnectionIdInTimeWait(current_connection_id));
+ }
+
+ // Now keep adding. Since we're already at the max, every new connection-id
+ // will evict the oldest one.
+ for (int64 i = 0; i < FLAGS_quic_time_wait_list_max_connections; ++i) {
+ ++current_connection_id;
+ const QuicConnectionId id_to_evict =
+ current_connection_id - FLAGS_quic_time_wait_list_max_connections;
+ EXPECT_TRUE(IsConnectionIdInTimeWait(id_to_evict));
+ EXPECT_FALSE(IsConnectionIdInTimeWait(current_connection_id));
+ EXPECT_CALL(visitor_, OnConnectionRemovedFromTimeWaitList(id_to_evict));
+ EXPECT_CALL(visitor_,
+ OnConnectionAddedToTimeWaitList(current_connection_id));
+ AddConnectionId(current_connection_id);
+ EXPECT_EQ(static_cast<size_t>(FLAGS_quic_time_wait_list_max_connections),
+ time_wait_list_manager_.num_connections());
+ EXPECT_FALSE(IsConnectionIdInTimeWait(id_to_evict));
+ EXPECT_TRUE(IsConnectionIdInTimeWait(current_connection_id));
+ }
+}
+
} // namespace
} // namespace test
} // namespace tools

Powered by Google App Engine
This is Rietveld 408576698