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

Side by Side Diff: net/tools/quic/quic_dispatcher_test.cc

Issue 2391103003: Landing Recent QUIC changes until 3:24 PM, Oct 01, 2016 UTC-4 (Closed)
Patch Set: Add new error code to quic_error_mapping.cc Created 4 years, 2 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
« no previous file with comments | « net/tools/quic/quic_dispatcher.cc ('k') | net/tools/quic/quic_in_memory_cache.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "net/tools/quic/quic_dispatcher.h" 5 #include "net/tools/quic/quic_dispatcher.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <ostream> 8 #include <ostream>
9 #include <string> 9 #include <string>
10 10
(...skipping 1356 matching lines...) Expand 10 before | Expand all | Expand 10 after
1367 while (store->HasChlosBuffered()) { 1367 while (store->HasChlosBuffered()) {
1368 dispatcher_->ProcessBufferedChlos(kMaxNumSessionsToCreate); 1368 dispatcher_->ProcessBufferedChlos(kMaxNumSessionsToCreate);
1369 } 1369 }
1370 1370
1371 EXPECT_EQ(static_cast<size_t>(kMaxNumSessionsToCreate) + 1371 EXPECT_EQ(static_cast<size_t>(kMaxNumSessionsToCreate) +
1372 kDefaultMaxConnectionsInStore, 1372 kDefaultMaxConnectionsInStore,
1373 session1_->connection_id()); 1373 session1_->connection_id());
1374 } 1374 }
1375 1375
1376 // Duplicated CHLO shouldn't be buffered. 1376 // Duplicated CHLO shouldn't be buffered.
1377 TEST_P(BufferedPacketStoreTest, DropDuplicatedCHLO) { 1377 TEST_P(BufferedPacketStoreTest, BufferDuplicatedCHLO) {
1378 FLAGS_quic_limit_num_new_sessions_per_epoll_loop = true; 1378 FLAGS_quic_limit_num_new_sessions_per_epoll_loop = true;
1379 for (QuicConnectionId conn_id = 1; conn_id <= kMaxNumSessionsToCreate + 1; 1379 for (QuicConnectionId conn_id = 1; conn_id <= kMaxNumSessionsToCreate + 1;
1380 ++conn_id) { 1380 ++conn_id) {
1381 // Last CHLO will be buffered. Others will create connection right away. 1381 // Last CHLO will be buffered. Others will create connection right away.
1382 if (conn_id <= kMaxNumSessionsToCreate) { 1382 if (conn_id <= kMaxNumSessionsToCreate) {
1383 EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, client_addr_)) 1383 EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, client_addr_))
1384 .WillOnce(testing::Return(CreateSession( 1384 .WillOnce(testing::Return(CreateSession(
1385 dispatcher_.get(), config_, conn_id, client_addr_, &mock_helper_, 1385 dispatcher_.get(), config_, conn_id, client_addr_, &mock_helper_,
1386 &mock_alarm_factory_, &crypto_config_, 1386 &mock_alarm_factory_, &crypto_config_,
1387 QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); 1387 QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)));
1388 EXPECT_CALL( 1388 EXPECT_CALL(
1389 *reinterpret_cast<MockQuicConnection*>(session1_->connection()), 1389 *reinterpret_cast<MockQuicConnection*>(session1_->connection()),
1390 ProcessUdpPacket(_, _, _)) 1390 ProcessUdpPacket(_, _, _))
1391 .WillOnce(testing::WithArg<2>( 1391 .WillOnce(testing::WithArg<2>(
1392 Invoke(CreateFunctor(&QuicDispatcherTest::ValidatePacket, 1392 Invoke(CreateFunctor(&QuicDispatcherTest::ValidatePacket,
1393 base::Unretained(this), conn_id)))); 1393 base::Unretained(this), conn_id))));
1394 } 1394 }
1395 ProcessPacket(client_addr_, conn_id, true, false, SerializeFullCHLO()); 1395 ProcessPacket(client_addr_, conn_id, true, false, SerializeFullCHLO());
1396 } 1396 }
1397 // Retransmit CHLO on last connection should be dropped. 1397 // Retransmit CHLO on last connection should be dropped.
1398 QuicConnectionId last_connection = kMaxNumSessionsToCreate + 1; 1398 QuicConnectionId last_connection = kMaxNumSessionsToCreate + 1;
1399 ProcessPacket(client_addr_, last_connection, true, false, 1399 ProcessPacket(client_addr_, last_connection, true, false,
1400 SerializeFullCHLO()); 1400 SerializeFullCHLO());
1401 1401
1402 size_t packets_buffered = 2;
1403 if (!FLAGS_quic_buffer_packets_after_chlo) {
1404 // The packet sent above is dropped when flag is off.
1405 packets_buffered = 1;
1406 }
1407
1402 // Reset counter and process buffered CHLO. 1408 // Reset counter and process buffered CHLO.
1403 EXPECT_CALL(*dispatcher_, CreateQuicSession(last_connection, client_addr_)) 1409 EXPECT_CALL(*dispatcher_, CreateQuicSession(last_connection, client_addr_))
1404 .WillOnce(testing::Return(CreateSession( 1410 .WillOnce(testing::Return(CreateSession(
1405 dispatcher_.get(), config_, last_connection, client_addr_, 1411 dispatcher_.get(), config_, last_connection, client_addr_,
1406 &mock_helper_, &mock_alarm_factory_, &crypto_config_, 1412 &mock_helper_, &mock_alarm_factory_, &crypto_config_,
1407 QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); 1413 QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)));
1408 // Only one packet(CHLO) should be process. 1414 // Only one packet(CHLO) should be process.
1409 EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), 1415 EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()),
1410 ProcessUdpPacket(_, _, _)) 1416 ProcessUdpPacket(_, _, _))
1411 .WillOnce(testing::WithArg<2>( 1417 .Times(packets_buffered)
1418 .WillRepeatedly(testing::WithArg<2>(
1412 Invoke(CreateFunctor(&QuicDispatcherTest::ValidatePacket, 1419 Invoke(CreateFunctor(&QuicDispatcherTest::ValidatePacket,
1413 base::Unretained(this), last_connection)))); 1420 base::Unretained(this), last_connection))));
1414 dispatcher_->ProcessBufferedChlos(kMaxNumSessionsToCreate); 1421 dispatcher_->ProcessBufferedChlos(kMaxNumSessionsToCreate);
1415 } 1422 }
1416 1423
1417 TEST_P(BufferedPacketStoreTest, BufferNonChloPacketsUptoLimitWithChloBuffered) { 1424 TEST_P(BufferedPacketStoreTest, BufferNonChloPacketsUptoLimitWithChloBuffered) {
1418 FLAGS_quic_limit_num_new_sessions_per_epoll_loop = true; 1425 FLAGS_quic_limit_num_new_sessions_per_epoll_loop = true;
1419 QuicConnectionId last_connection_id = kMaxNumSessionsToCreate + 1; 1426 QuicConnectionId last_connection_id = kMaxNumSessionsToCreate + 1;
1420 for (QuicConnectionId conn_id = 1; conn_id <= last_connection_id; ++conn_id) { 1427 for (QuicConnectionId conn_id = 1; conn_id <= last_connection_id; ++conn_id) {
1421 // Last CHLO will be buffered. Others will create connection right away. 1428 // Last CHLO will be buffered. Others will create connection right away.
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
1496 1503
1497 // CHLO on connection 1 should still be buffered. 1504 // CHLO on connection 1 should still be buffered.
1498 ProcessPacket(client_addr_, /*connection_id=*/1, true, false, 1505 ProcessPacket(client_addr_, /*connection_id=*/1, true, false,
1499 SerializeFullCHLO()); 1506 SerializeFullCHLO());
1500 EXPECT_TRUE(store->HasChloForConnection(/*connection_id=*/1)); 1507 EXPECT_TRUE(store->HasChloForConnection(/*connection_id=*/1));
1501 } 1508 }
1502 1509
1503 } // namespace 1510 } // namespace
1504 } // namespace test 1511 } // namespace test
1505 } // namespace net 1512 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/quic/quic_dispatcher.cc ('k') | net/tools/quic/quic_in_memory_cache.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698