Index: net/tools/quic/quic_dispatcher_test.cc |
diff --git a/net/tools/quic/quic_dispatcher_test.cc b/net/tools/quic/quic_dispatcher_test.cc |
index 23ca8797bae3c0983d7d0a0fe62175ddb767c62d..ec2949d509736e5bdbcc94488cd269996869b1db 100644 |
--- a/net/tools/quic/quic_dispatcher_test.cc |
+++ b/net/tools/quic/quic_dispatcher_test.cc |
@@ -48,6 +48,7 @@ using testing::CreateFunctor; |
using testing::DoAll; |
using testing::InSequence; |
using testing::Invoke; |
+using testing::Return; |
using testing::WithoutArgs; |
using testing::_; |
@@ -132,7 +133,8 @@ class TestDispatcher : public QuicDispatcher { |
QuicServerSessionBase*(QuicConnectionId connection_id, |
const IPEndPoint& client_address)); |
- MOCK_METHOD1(OnNewConnectionAdded, void(QuicConnectionId connection_id)); |
+ MOCK_METHOD1(ShouldCreateOrBufferPacketForConnection, |
+ bool(QuicConnectionId connection_id)); |
using QuicDispatcher::current_server_address; |
using QuicDispatcher::current_client_address; |
@@ -187,6 +189,8 @@ class QuicDispatcherTest : public ::testing::Test { |
// Set the counter to some value to start with. |
QuicDispatcherPeer::set_new_sessions_allowed_per_event_loop( |
dispatcher_.get(), kMaxNumSessionsToCreate); |
+ ON_CALL(*dispatcher_, ShouldCreateOrBufferPacketForConnection(_)) |
+ .WillByDefault(Return(true)); |
} |
~QuicDispatcherTest() override {} |
@@ -1135,8 +1139,9 @@ TEST_P(BufferedPacketStoreTest, ProcessNonChloPacketsUptoLimitAndProcessChlo) { |
server_address_ = IPEndPoint(Any4(), 5); |
QuicConnectionId conn_id = 1; |
// A bunch of non-CHLO should be buffered upon arrival, and the first one |
- // should trigger OnNewConnectionAdded(). |
- EXPECT_CALL(*dispatcher_, OnNewConnectionAdded(conn_id)).Times(1); |
+ // should trigger ShouldCreateOrBufferPacketForConnection(). |
+ EXPECT_CALL(*dispatcher_, ShouldCreateOrBufferPacketForConnection(conn_id)) |
+ .Times(1); |
for (size_t i = 1; i <= kDefaultMaxUndecryptablePackets + 1; ++i) { |
ProcessPacket(client_address, conn_id, true, false, |
"data packet " + IntToString(i + 1), |
@@ -1180,10 +1185,17 @@ TEST_P(BufferedPacketStoreTest, |
for (size_t i = 1; i <= kNumConnections; ++i) { |
IPEndPoint client_address(Loopback4(), i); |
QuicConnectionId conn_id = i; |
- if (i <= kNumConnections - 1) { |
- // As they are on different connection, they should trigger |
- // OnNewConnectionAdded(). The last packet should be dropped. |
- EXPECT_CALL(*dispatcher_, OnNewConnectionAdded(conn_id)); |
+ if (FLAGS_quic_create_session_after_insertion) { |
+ EXPECT_CALL(*dispatcher_, |
+ ShouldCreateOrBufferPacketForConnection(conn_id)); |
+ } else { |
+ if (i <= kNumConnections - 1) { |
+ // As they are on different connection, they should trigger |
+ // ShouldCreateOrBufferPacketForConnection(). The last packet should be |
+ // dropped. |
+ EXPECT_CALL(*dispatcher_, |
+ ShouldCreateOrBufferPacketForConnection(conn_id)); |
+ } |
} |
ProcessPacket(client_address, conn_id, true, false, |
"data packet on connection " + IntToString(i), |
@@ -1204,15 +1216,21 @@ TEST_P(BufferedPacketStoreTest, |
for (size_t i = 1; i <= kNumConnections; ++i) { |
IPEndPoint client_address(Loopback4(), i); |
QuicConnectionId conn_id = i; |
+ if (FLAGS_quic_create_session_after_insertion && |
+ conn_id == kNumConnections) { |
+ EXPECT_CALL(*dispatcher_, |
+ ShouldCreateOrBufferPacketForConnection(conn_id)); |
+ } |
EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, client_address)) |
.WillOnce(testing::Return(CreateSession( |
dispatcher_.get(), config_, conn_id, client_address, &mock_helper_, |
&mock_alarm_factory_, &crypto_config_, |
QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); |
- if (conn_id == kNumConnections) { |
- // The last CHLO should trigger OnNewConnectionAdded() since it's the |
- // first packet arrives on that connection. |
- EXPECT_CALL(*dispatcher_, OnNewConnectionAdded(conn_id)); |
+ if (!FLAGS_quic_create_session_after_insertion && |
+ conn_id == kNumConnections) { |
+ // The last CHLO should trigger ShouldCreateOrBufferPacketForConnection() |
+ // since it's the first packet arrives on that connection. |
+ EXPECT_CALL(*dispatcher_, ShouldCreateOrBufferPacketForConnection(conn_id)); |
} |
// First |kNumConnections| - 1 connections should have buffered |
// a packet in store. The rest should have been dropped. |
@@ -1234,7 +1252,7 @@ TEST_P(BufferedPacketStoreTest, |
TEST_P(BufferedPacketStoreTest, DeliverEmptyPackets) { |
QuicConnectionId conn_id = 1; |
IPEndPoint client_address(Loopback4(), 1); |
- EXPECT_CALL(*dispatcher_, OnNewConnectionAdded(conn_id)); |
+ EXPECT_CALL(*dispatcher_, ShouldCreateOrBufferPacketForConnection(conn_id)); |
EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, client_address)) |
.WillOnce(testing::Return(CreateSession( |
dispatcher_.get(), config_, conn_id, client_address, &mock_helper_, |
@@ -1315,10 +1333,15 @@ TEST_P(BufferedPacketStoreTest, ProcessCHLOsUptoLimitAndBufferTheRest) { |
const size_t kNumCHLOs = |
kMaxNumSessionsToCreate + kDefaultMaxConnectionsInStore + 1; |
for (size_t conn_id = 1; conn_id <= kNumCHLOs; ++conn_id) { |
- if (conn_id < kNumCHLOs) { |
+ if (FLAGS_quic_create_session_after_insertion) { |
+ EXPECT_CALL(*dispatcher_, |
+ ShouldCreateOrBufferPacketForConnection(conn_id)); |
+ } |
+ if (!FLAGS_quic_create_session_after_insertion && conn_id < kNumCHLOs) { |
// Except the last connection, all connections for previous CHLOs should |
// be regarded as newly added. |
- EXPECT_CALL(*dispatcher_, OnNewConnectionAdded(conn_id)); |
+ EXPECT_CALL(*dispatcher_, |
+ ShouldCreateOrBufferPacketForConnection(conn_id)); |
} |
if (conn_id <= kMaxNumSessionsToCreate) { |
EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, client_addr_)) |