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

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

Issue 2825083003: Landing Recent QUIC changes until Mon Apr 17 2017 (Closed)
Patch Set: Format Created 3 years, 8 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/spdy/spdy_framer_test.cc ('k') | net/tools/quic/platform/impl/quic_socket_utils.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 <stddef.h> 5 #include <stddef.h>
6 #include <sys/epoll.h> 6 #include <sys/epoll.h>
7 7
8 #include <cstdint> 8 #include <cstdint>
9 #include <list> 9 #include <list>
10 #include <memory> 10 #include <memory>
11 #include <ostream> 11 #include <ostream>
12 #include <string> 12 #include <string>
13 #include <utility> 13 #include <utility>
14 #include <vector> 14 #include <vector>
15 15
16 #include "base/memory/singleton.h" 16 #include "base/memory/singleton.h"
17 #include "base/synchronization/waitable_event.h" 17 #include "base/synchronization/waitable_event.h"
18 #include "base/threading/platform_thread.h" 18 #include "base/threading/platform_thread.h"
19 #include "base/time/time.h" 19 #include "base/time/time.h"
20 #include "net/base/ip_address.h" 20 #include "net/base/ip_address.h"
21 #include "net/base/ip_endpoint.h" 21 #include "net/base/ip_endpoint.h"
22 #include "net/quic/core/crypto/aes_128_gcm_12_encrypter.h" 22 #include "net/quic/core/crypto/aes_128_gcm_12_encrypter.h"
23 #include "net/quic/core/crypto/null_encrypter.h" 23 #include "net/quic/core/crypto/null_encrypter.h"
24 #include "net/quic/core/quic_client_session_base.h" 24 #include "net/quic/core/quic_client_session_base.h"
25 #include "net/quic/core/quic_flags.h"
26 #include "net/quic/core/quic_framer.h" 25 #include "net/quic/core/quic_framer.h"
27 #include "net/quic/core/quic_packet_creator.h" 26 #include "net/quic/core/quic_packet_creator.h"
28 #include "net/quic/core/quic_packets.h" 27 #include "net/quic/core/quic_packets.h"
29 #include "net/quic/core/quic_server_id.h" 28 #include "net/quic/core/quic_server_id.h"
30 #include "net/quic/core/quic_session.h" 29 #include "net/quic/core/quic_session.h"
31 #include "net/quic/core/quic_utils.h" 30 #include "net/quic/core/quic_utils.h"
31 #include "net/quic/platform/api/quic_flags.h"
32 #include "net/quic/platform/api/quic_logging.h" 32 #include "net/quic/platform/api/quic_logging.h"
33 #include "net/quic/platform/api/quic_ptr_util.h" 33 #include "net/quic/platform/api/quic_ptr_util.h"
34 #include "net/quic/platform/api/quic_socket_address.h" 34 #include "net/quic/platform/api/quic_socket_address.h"
35 #include "net/quic/platform/api/quic_str_cat.h" 35 #include "net/quic/platform/api/quic_str_cat.h"
36 #include "net/quic/platform/api/quic_string_piece.h" 36 #include "net/quic/platform/api/quic_string_piece.h"
37 #include "net/quic/platform/api/quic_text_utils.h" 37 #include "net/quic/platform/api/quic_text_utils.h"
38 #include "net/quic/test_tools/crypto_test_utils.h" 38 #include "net/quic/test_tools/crypto_test_utils.h"
39 #include "net/quic/test_tools/quic_config_peer.h" 39 #include "net/quic/test_tools/quic_config_peer.h"
40 #include "net/quic/test_tools/quic_connection_peer.h" 40 #include "net/quic/test_tools/quic_connection_peer.h"
41 #include "net/quic/test_tools/quic_flow_controller_peer.h" 41 #include "net/quic/test_tools/quic_flow_controller_peer.h"
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 // layout (for example to change HTTP/2 headers to SPDY/3). So 146 // layout (for example to change HTTP/2 headers to SPDY/3). So
147 // these tests need to ensure that clients are never attempting 147 // these tests need to ensure that clients are never attempting
148 // to do 0-RTT across incompatible versions. Chromium only supports 148 // to do 0-RTT across incompatible versions. Chromium only supports
149 // a single version at a time anyway. :) 149 // a single version at a time anyway. :)
150 QuicVersionVector all_supported_versions = AllSupportedVersions(); 150 QuicVersionVector all_supported_versions = AllSupportedVersions();
151 // Even though this currently has one element, it may well get another 151 // Even though this currently has one element, it may well get another
152 // with future versions of QUIC, so don't remove it. 152 // with future versions of QUIC, so don't remove it.
153 QuicVersionVector version_buckets[1]; 153 QuicVersionVector version_buckets[1];
154 154
155 for (const QuicVersion version : all_supported_versions) { 155 for (const QuicVersion version : all_supported_versions) {
156 // Versions: 34+ 156 // Versions: 35+
157 // QUIC_VERSION_34 deprecates entropy and uses new ack and stop waiting 157 // QUIC_VERSION_35 allows endpoints to independently set stream limit.
158 // wire formats.
159 version_buckets[0].push_back(version); 158 version_buckets[0].push_back(version);
160 } 159 }
161 160
162 // This must be kept in sync with the number of nested for-loops below as it 161 // This must be kept in sync with the number of nested for-loops below as it
163 // is used to prune the number of tests that are run. 162 // is used to prune the number of tests that are run.
164 const int kMaxEnabledOptions = 7; 163 const int kMaxEnabledOptions = 7;
165 int max_enabled_options = 0; 164 int max_enabled_options = 0;
166 std::vector<TestParams> params; 165 std::vector<TestParams> params;
167 for (bool server_uses_stateless_rejects_if_peer_supported : {true, false}) { 166 for (bool server_uses_stateless_rejects_if_peer_supported : {true, false}) {
168 for (bool client_supports_stateless_rejects : {true, false}) { 167 for (bool client_supports_stateless_rejects : {true, false}) {
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 626
628 // Run all end to end tests with all supported versions. 627 // Run all end to end tests with all supported versions.
629 INSTANTIATE_TEST_CASE_P(EndToEndTests, 628 INSTANTIATE_TEST_CASE_P(EndToEndTests,
630 EndToEndTest, 629 EndToEndTest,
631 ::testing::ValuesIn(GetTestParams())); 630 ::testing::ValuesIn(GetTestParams()));
632 631
633 TEST_P(EndToEndTest, HandshakeSuccessful) { 632 TEST_P(EndToEndTest, HandshakeSuccessful) {
634 ASSERT_TRUE(Initialize()); 633 ASSERT_TRUE(Initialize());
635 EXPECT_TRUE(client_->client()->WaitForCryptoHandshakeConfirmed()); 634 EXPECT_TRUE(client_->client()->WaitForCryptoHandshakeConfirmed());
636 QuicCryptoStream* crypto_stream = 635 QuicCryptoStream* crypto_stream =
637 QuicSessionPeer::GetCryptoStream(client_->client()->session()); 636 QuicSessionPeer::GetMutableCryptoStream(client_->client()->session());
638 QuicStreamSequencer* sequencer = QuicStreamPeer::sequencer(crypto_stream); 637 QuicStreamSequencer* sequencer = QuicStreamPeer::sequencer(crypto_stream);
639 EXPECT_NE(FLAGS_quic_reloadable_flag_quic_release_crypto_stream_buffer, 638 EXPECT_NE(FLAGS_quic_reloadable_flag_quic_release_crypto_stream_buffer,
640 QuicStreamSequencerPeer::IsUnderlyingBufferAllocated(sequencer)); 639 QuicStreamSequencerPeer::IsUnderlyingBufferAllocated(sequencer));
641 server_thread_->Pause(); 640 server_thread_->Pause();
642 QuicDispatcher* dispatcher = 641 QuicDispatcher* dispatcher =
643 QuicServerPeer::GetDispatcher(server_thread_->server()); 642 QuicServerPeer::GetDispatcher(server_thread_->server());
644 QuicSession* server_session = dispatcher->session_map().begin()->second.get(); 643 QuicSession* server_session = dispatcher->session_map().begin()->second.get();
645 crypto_stream = QuicSessionPeer::GetCryptoStream(server_session); 644 crypto_stream = QuicSessionPeer::GetMutableCryptoStream(server_session);
646 sequencer = QuicStreamPeer::sequencer(crypto_stream); 645 sequencer = QuicStreamPeer::sequencer(crypto_stream);
647 EXPECT_NE(FLAGS_quic_reloadable_flag_quic_release_crypto_stream_buffer, 646 EXPECT_NE(FLAGS_quic_reloadable_flag_quic_release_crypto_stream_buffer,
648 QuicStreamSequencerPeer::IsUnderlyingBufferAllocated(sequencer)); 647 QuicStreamSequencerPeer::IsUnderlyingBufferAllocated(sequencer));
649 } 648 }
650 649
651 TEST_P(EndToEndTest, SimpleRequestResponsev6) { 650 TEST_P(EndToEndTest, SimpleRequestResponsev6) {
652 ASSERT_TRUE(Initialize()); 651 ASSERT_TRUE(Initialize());
653 652
654 EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo")); 653 EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo"));
655 EXPECT_EQ("200", client_->response_headers()->find(":status")->second); 654 EXPECT_EQ("200", client_->response_headers()->find(":status")->second);
(...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after
1272 client_config_.SetIdleNetworkTimeout(QuicTime::Delta::FromMicroseconds(500), 1271 client_config_.SetIdleNetworkTimeout(QuicTime::Delta::FromMicroseconds(500),
1273 QuicTime::Delta::FromMicroseconds(500)); 1272 QuicTime::Delta::FromMicroseconds(500));
1274 // Note: we do NOT ASSERT_TRUE: we may time out during initial handshake: 1273 // Note: we do NOT ASSERT_TRUE: we may time out during initial handshake:
1275 // that's enough to validate timeout in this case. 1274 // that's enough to validate timeout in this case.
1276 Initialize(); 1275 Initialize();
1277 while (client_->client()->connected()) { 1276 while (client_->client()->connected()) {
1278 client_->client()->WaitForEvents(); 1277 client_->client()->WaitForEvents();
1279 } 1278 }
1280 } 1279 }
1281 1280
1282 TEST_P(EndToEndTest, NegotiateMaxOpenStreams) {
1283 // Negotiate 1 max open stream.
1284 client_config_.SetMaxStreamsPerConnection(1, 1);
1285 ASSERT_TRUE(Initialize());
1286 EXPECT_TRUE(client_->client()->WaitForCryptoHandshakeConfirmed());
1287
1288 if (negotiated_version_ > QUIC_VERSION_34) {
1289 // Newer versions use max incoming dynamic streams.
1290 return;
1291 }
1292
1293 // Make the client misbehave after negotiation.
1294 const int kServerMaxStreams = kMaxStreamsMinimumIncrement + 1;
1295 QuicSessionPeer::SetMaxOpenOutgoingStreams(client_->client()->session(),
1296 kServerMaxStreams + 1);
1297
1298 SpdyHeaderBlock headers;
1299 headers[":method"] = "POST";
1300 headers[":path"] = "/foo";
1301 headers[":scheme"] = "https";
1302 headers[":authority"] = server_hostname_;
1303 headers["content-length"] = "3";
1304
1305 // The server supports a small number of additional streams beyond the
1306 // negotiated limit. Open enough streams to go beyond that limit.
1307 for (int i = 0; i < kServerMaxStreams + 1; ++i) {
1308 client_->SendMessage(headers, "", /*fin=*/false);
1309 }
1310 client_->WaitForResponse();
1311
1312 EXPECT_TRUE(client_->connected());
1313 EXPECT_EQ(QUIC_REFUSED_STREAM, client_->stream_error());
1314 EXPECT_EQ(QUIC_NO_ERROR, client_->connection_error());
1315 }
1316
1317 TEST_P(EndToEndTest, MaxIncomingDynamicStreamsLimitRespected) { 1281 TEST_P(EndToEndTest, MaxIncomingDynamicStreamsLimitRespected) {
1318 // Set a limit on maximum number of incoming dynamic streams. 1282 // Set a limit on maximum number of incoming dynamic streams.
1319 // Make sure the limit is respected. 1283 // Make sure the limit is respected.
1320 const uint32_t kServerMaxIncomingDynamicStreams = 1; 1284 const uint32_t kServerMaxIncomingDynamicStreams = 1;
1321 server_config_.SetMaxIncomingDynamicStreamsToSend( 1285 server_config_.SetMaxIncomingDynamicStreamsToSend(
1322 kServerMaxIncomingDynamicStreams); 1286 kServerMaxIncomingDynamicStreams);
1323 ASSERT_TRUE(Initialize()); 1287 ASSERT_TRUE(Initialize());
1324 EXPECT_TRUE(client_->client()->WaitForCryptoHandshakeConfirmed()); 1288 EXPECT_TRUE(client_->client()->WaitForCryptoHandshakeConfirmed());
1325 1289
1326 if (negotiated_version_ <= QUIC_VERSION_34) {
1327 // Earlier versions negotiated max open streams.
1328 return;
1329 }
1330
1331 // Make the client misbehave after negotiation. 1290 // Make the client misbehave after negotiation.
1332 const int kServerMaxStreams = 1291 const int kServerMaxStreams =
1333 kMaxStreamsMinimumIncrement + kServerMaxIncomingDynamicStreams; 1292 kMaxStreamsMinimumIncrement + kServerMaxIncomingDynamicStreams;
1334 QuicSessionPeer::SetMaxOpenOutgoingStreams(client_->client()->session(), 1293 QuicSessionPeer::SetMaxOpenOutgoingStreams(client_->client()->session(),
1335 kServerMaxStreams + 1); 1294 kServerMaxStreams + 1);
1336 1295
1337 SpdyHeaderBlock headers; 1296 SpdyHeaderBlock headers;
1338 headers[":method"] = "POST"; 1297 headers[":method"] = "POST";
1339 headers[":path"] = "/foo"; 1298 headers[":path"] = "/foo";
1340 headers[":scheme"] = "https"; 1299 headers[":scheme"] = "https";
(...skipping 16 matching lines...) Expand all
1357 // Each endpoint can set max incoming dynamic streams independently. 1316 // Each endpoint can set max incoming dynamic streams independently.
1358 const uint32_t kClientMaxIncomingDynamicStreams = 2; 1317 const uint32_t kClientMaxIncomingDynamicStreams = 2;
1359 const uint32_t kServerMaxIncomingDynamicStreams = 1; 1318 const uint32_t kServerMaxIncomingDynamicStreams = 1;
1360 client_config_.SetMaxIncomingDynamicStreamsToSend( 1319 client_config_.SetMaxIncomingDynamicStreamsToSend(
1361 kClientMaxIncomingDynamicStreams); 1320 kClientMaxIncomingDynamicStreams);
1362 server_config_.SetMaxIncomingDynamicStreamsToSend( 1321 server_config_.SetMaxIncomingDynamicStreamsToSend(
1363 kServerMaxIncomingDynamicStreams); 1322 kServerMaxIncomingDynamicStreams);
1364 ASSERT_TRUE(Initialize()); 1323 ASSERT_TRUE(Initialize());
1365 EXPECT_TRUE(client_->client()->WaitForCryptoHandshakeConfirmed()); 1324 EXPECT_TRUE(client_->client()->WaitForCryptoHandshakeConfirmed());
1366 1325
1367 if (negotiated_version_ <= QUIC_VERSION_34) {
1368 // Earlier versions negotiated max open streams.
1369 return;
1370 }
1371
1372 // The client has received the server's limit and vice versa. 1326 // The client has received the server's limit and vice versa.
1373 EXPECT_EQ(kServerMaxIncomingDynamicStreams, 1327 EXPECT_EQ(kServerMaxIncomingDynamicStreams,
1374 client_->client()->session()->max_open_outgoing_streams()); 1328 client_->client()->session()->max_open_outgoing_streams());
1375 server_thread_->Pause(); 1329 server_thread_->Pause();
1376 QuicDispatcher* dispatcher = 1330 QuicDispatcher* dispatcher =
1377 QuicServerPeer::GetDispatcher(server_thread_->server()); 1331 QuicServerPeer::GetDispatcher(server_thread_->server());
1378 QuicSession* server_session = dispatcher->session_map().begin()->second.get(); 1332 QuicSession* server_session = dispatcher->session_map().begin()->second.get();
1379 EXPECT_EQ(kClientMaxIncomingDynamicStreams, 1333 EXPECT_EQ(kClientMaxIncomingDynamicStreams,
1380 server_session->max_open_outgoing_streams()); 1334 server_session->max_open_outgoing_streams());
1381 server_thread_->Resume(); 1335 server_thread_->Resume();
(...skipping 20 matching lines...) Expand all
1402 } 1356 }
1403 1357
1404 server_thread_->Pause(); 1358 server_thread_->Pause();
1405 EXPECT_EQ(expected_congestion_control_type, 1359 EXPECT_EQ(expected_congestion_control_type,
1406 QuicSentPacketManagerPeer::GetSendAlgorithm( 1360 QuicSentPacketManagerPeer::GetSendAlgorithm(
1407 *GetSentPacketManagerFromFirstServerSession()) 1361 *GetSentPacketManagerFromFirstServerSession())
1408 ->GetCongestionControlType()); 1362 ->GetCongestionControlType());
1409 server_thread_->Resume(); 1363 server_thread_->Resume();
1410 } 1364 }
1411 1365
1412 TEST_P(EndToEndTest, LimitMaxOpenStreams) {
1413 // Server limits the number of max streams to 2.
1414 server_config_.SetMaxStreamsPerConnection(2, 2);
1415 // Client tries to negotiate for 10.
1416 client_config_.SetMaxStreamsPerConnection(10, 5);
1417
1418 ASSERT_TRUE(Initialize());
1419 EXPECT_TRUE(client_->client()->WaitForCryptoHandshakeConfirmed());
1420 if (negotiated_version_ > QUIC_VERSION_34) {
1421 // No negotiated max streams beyond version 34.
1422 return;
1423 }
1424 QuicConfig* client_negotiated_config = client_->client()->session()->config();
1425 EXPECT_EQ(2u, client_negotiated_config->MaxStreamsPerConnection());
1426 }
1427
1428 TEST_P(EndToEndTest, ClientSuggestsRTT) { 1366 TEST_P(EndToEndTest, ClientSuggestsRTT) {
1429 // Client suggests initial RTT, verify it is used. 1367 // Client suggests initial RTT, verify it is used.
1430 const uint32_t kInitialRTT = 20000; 1368 const uint32_t kInitialRTT = 20000;
1431 client_config_.SetInitialRoundTripTimeUsToSend(kInitialRTT); 1369 client_config_.SetInitialRoundTripTimeUsToSend(kInitialRTT);
1432 1370
1433 ASSERT_TRUE(Initialize()); 1371 ASSERT_TRUE(Initialize());
1434 EXPECT_TRUE(client_->client()->WaitForCryptoHandshakeConfirmed()); 1372 EXPECT_TRUE(client_->client()->WaitForCryptoHandshakeConfirmed());
1435 server_thread_->WaitForCryptoHandshakeConfirmed(); 1373 server_thread_->WaitForCryptoHandshakeConfirmed();
1436 1374
1437 // Pause the server so we can access the server's internals without races. 1375 // Pause the server so we can access the server's internals without races.
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
1757 session->config()->ReceivedInitialStreamFlowControlWindowBytes()); 1695 session->config()->ReceivedInitialStreamFlowControlWindowBytes());
1758 EXPECT_EQ(kClientSessionIFCW, 1696 EXPECT_EQ(kClientSessionIFCW,
1759 session->config()->ReceivedInitialSessionFlowControlWindowBytes()); 1697 session->config()->ReceivedInitialSessionFlowControlWindowBytes());
1760 EXPECT_EQ(kClientSessionIFCW, QuicFlowControllerPeer::SendWindowOffset( 1698 EXPECT_EQ(kClientSessionIFCW, QuicFlowControllerPeer::SendWindowOffset(
1761 session->flow_controller())); 1699 session->flow_controller()));
1762 server_thread_->Resume(); 1700 server_thread_->Resume();
1763 } 1701 }
1764 1702
1765 // Test negotiation of IFWA connection option. 1703 // Test negotiation of IFWA connection option.
1766 TEST_P(EndToEndTest, NegotiatedServerInitialFlowControlWindow) { 1704 TEST_P(EndToEndTest, NegotiatedServerInitialFlowControlWindow) {
1767 FLAGS_quic_reloadable_flag_quic_large_ifw_options = true;
1768
1769 const uint32_t kClientStreamIFCW = 123456; 1705 const uint32_t kClientStreamIFCW = 123456;
1770 const uint32_t kClientSessionIFCW = 234567; 1706 const uint32_t kClientSessionIFCW = 234567;
1771 set_client_initial_stream_flow_control_receive_window(kClientStreamIFCW); 1707 set_client_initial_stream_flow_control_receive_window(kClientStreamIFCW);
1772 set_client_initial_session_flow_control_receive_window(kClientSessionIFCW); 1708 set_client_initial_session_flow_control_receive_window(kClientSessionIFCW);
1773 1709
1774 uint32_t kServerStreamIFCW = 32 * 1024; 1710 uint32_t kServerStreamIFCW = 32 * 1024;
1775 uint32_t kServerSessionIFCW = 48 * 1024; 1711 uint32_t kServerSessionIFCW = 48 * 1024;
1776 set_server_initial_stream_flow_control_receive_window(kServerStreamIFCW); 1712 set_server_initial_stream_flow_control_receive_window(kServerStreamIFCW);
1777 set_server_initial_session_flow_control_receive_window(kServerSessionIFCW); 1713 set_server_initial_session_flow_control_receive_window(kServerSessionIFCW);
1778 1714
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1821 1757
1822 ASSERT_TRUE(Initialize()); 1758 ASSERT_TRUE(Initialize());
1823 1759
1824 // Wait for crypto handshake to finish. This should have contributed to the 1760 // Wait for crypto handshake to finish. This should have contributed to the
1825 // crypto stream flow control window, but not affected the session flow 1761 // crypto stream flow control window, but not affected the session flow
1826 // control window. 1762 // control window.
1827 EXPECT_TRUE(client_->client()->WaitForCryptoHandshakeConfirmed()); 1763 EXPECT_TRUE(client_->client()->WaitForCryptoHandshakeConfirmed());
1828 server_thread_->WaitForCryptoHandshakeConfirmed(); 1764 server_thread_->WaitForCryptoHandshakeConfirmed();
1829 1765
1830 QuicCryptoStream* crypto_stream = 1766 QuicCryptoStream* crypto_stream =
1831 QuicSessionPeer::GetCryptoStream(client_->client()->session()); 1767 QuicSessionPeer::GetMutableCryptoStream(client_->client()->session());
1832 EXPECT_LT( 1768 EXPECT_LT(
1833 QuicFlowControllerPeer::SendWindowSize(crypto_stream->flow_controller()), 1769 QuicFlowControllerPeer::SendWindowSize(crypto_stream->flow_controller()),
1834 kStreamIFCW); 1770 kStreamIFCW);
1835 EXPECT_EQ(kSessionIFCW, QuicFlowControllerPeer::SendWindowSize( 1771 EXPECT_EQ(kSessionIFCW, QuicFlowControllerPeer::SendWindowSize(
1836 client_->client()->session()->flow_controller())); 1772 client_->client()->session()->flow_controller()));
1837 1773
1838 // Send a request with no body, and verify that the connection level window 1774 // Send a request with no body, and verify that the connection level window
1839 // has not been affected. 1775 // has not been affected.
1840 EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo")); 1776 EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo"));
1841 1777
(...skipping 30 matching lines...) Expand all
1872 1808
1873 server_thread_->Pause(); 1809 server_thread_->Pause();
1874 QuicSpdySession* const client_session = client_->client()->session(); 1810 QuicSpdySession* const client_session = client_->client()->session();
1875 QuicDispatcher* dispatcher = 1811 QuicDispatcher* dispatcher =
1876 QuicServerPeer::GetDispatcher(server_thread_->server()); 1812 QuicServerPeer::GetDispatcher(server_thread_->server());
1877 auto* server_session = static_cast<QuicSpdySession*>( 1813 auto* server_session = static_cast<QuicSpdySession*>(
1878 dispatcher->session_map().begin()->second.get()); 1814 dispatcher->session_map().begin()->second.get());
1879 ExpectFlowControlsSynced(client_session->flow_controller(), 1815 ExpectFlowControlsSynced(client_session->flow_controller(),
1880 server_session->flow_controller()); 1816 server_session->flow_controller());
1881 ExpectFlowControlsSynced( 1817 ExpectFlowControlsSynced(
1882 QuicSessionPeer::GetCryptoStream(client_session)->flow_controller(), 1818 QuicSessionPeer::GetMutableCryptoStream(client_session)
1883 QuicSessionPeer::GetCryptoStream(server_session)->flow_controller()); 1819 ->flow_controller(),
1820 QuicSessionPeer::GetMutableCryptoStream(server_session)
1821 ->flow_controller());
1884 SpdyFramer spdy_framer(SpdyFramer::ENABLE_COMPRESSION); 1822 SpdyFramer spdy_framer(SpdyFramer::ENABLE_COMPRESSION);
1885 SpdySettingsIR settings_frame; 1823 SpdySettingsIR settings_frame;
1886 settings_frame.AddSetting(SETTINGS_MAX_HEADER_LIST_SIZE, 1824 settings_frame.AddSetting(SETTINGS_MAX_HEADER_LIST_SIZE,
1887 kDefaultMaxUncompressedHeaderSize); 1825 kDefaultMaxUncompressedHeaderSize);
1888 SpdySerializedFrame frame(spdy_framer.SerializeFrame(settings_frame)); 1826 SpdySerializedFrame frame(spdy_framer.SerializeFrame(settings_frame));
1889 QuicFlowController* client_header_stream_flow_controller = 1827 QuicFlowController* client_header_stream_flow_controller =
1890 QuicSpdySessionPeer::GetHeadersStream(client_session)->flow_controller(); 1828 QuicSpdySessionPeer::GetHeadersStream(client_session)->flow_controller();
1891 QuicFlowController* server_header_stream_flow_controller = 1829 QuicFlowController* server_header_stream_flow_controller =
1892 QuicSpdySessionPeer::GetHeadersStream(server_session)->flow_controller(); 1830 QuicSpdySessionPeer::GetHeadersStream(server_session)->flow_controller();
1893 if (FLAGS_quic_reloadable_flag_quic_send_max_header_list_size) { 1831 if (FLAGS_quic_reloadable_flag_quic_send_max_header_list_size) {
(...skipping 1238 matching lines...) Expand 10 before | Expand all | Expand 10 after
3132 client_->WaitForResponse(); 3070 client_->WaitForResponse();
3133 EXPECT_EQ(kBarResponseBody, client_->response_body()); 3071 EXPECT_EQ(kBarResponseBody, client_->response_body());
3134 QuicConnectionStats client_stats = 3072 QuicConnectionStats client_stats =
3135 client_->client()->session()->connection()->GetStats(); 3073 client_->client()->session()->connection()->GetStats();
3136 EXPECT_EQ(0u, client_stats.packets_lost); 3074 EXPECT_EQ(0u, client_stats.packets_lost);
3137 EXPECT_EQ(1, client_->client()->GetNumSentClientHellos()); 3075 EXPECT_EQ(1, client_->client()->GetNumSentClientHellos());
3138 } 3076 }
3139 } // namespace 3077 } // namespace
3140 } // namespace test 3078 } // namespace test
3141 } // namespace net 3079 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_framer_test.cc ('k') | net/tools/quic/platform/impl/quic_socket_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698