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

Side by Side Diff: net/quic/chromium/quic_stream_factory_test.cc

Issue 2862563003: Landing Recent QUIC changes until Sat Apr 29 00:22:04 2017 +0000 (Closed)
Patch Set: rebase and fix test bugs detected by swarm bot. Created 3 years, 7 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
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/quic/chromium/quic_stream_factory.h" 5 #include "net/quic/chromium/quic_stream_factory.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <ostream> 8 #include <ostream>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 24 matching lines...) Expand all
35 #include "net/quic/chromium/quic_test_packet_maker.h" 35 #include "net/quic/chromium/quic_test_packet_maker.h"
36 #include "net/quic/chromium/test_task_runner.h" 36 #include "net/quic/chromium/test_task_runner.h"
37 #include "net/quic/core/crypto/crypto_handshake.h" 37 #include "net/quic/core/crypto/crypto_handshake.h"
38 #include "net/quic/core/crypto/quic_crypto_client_config.h" 38 #include "net/quic/core/crypto/quic_crypto_client_config.h"
39 #include "net/quic/core/crypto/quic_decrypter.h" 39 #include "net/quic/core/crypto/quic_decrypter.h"
40 #include "net/quic/core/crypto/quic_encrypter.h" 40 #include "net/quic/core/crypto/quic_encrypter.h"
41 #include "net/quic/core/quic_client_promised_info.h" 41 #include "net/quic/core/quic_client_promised_info.h"
42 #include "net/quic/test_tools/mock_clock.h" 42 #include "net/quic/test_tools/mock_clock.h"
43 #include "net/quic/test_tools/mock_random.h" 43 #include "net/quic/test_tools/mock_random.h"
44 #include "net/quic/test_tools/quic_config_peer.h" 44 #include "net/quic/test_tools/quic_config_peer.h"
45 #include "net/quic/test_tools/quic_spdy_session_peer.h"
45 #include "net/quic/test_tools/quic_test_utils.h" 46 #include "net/quic/test_tools/quic_test_utils.h"
46 #include "net/socket/next_proto.h" 47 #include "net/socket/next_proto.h"
47 #include "net/socket/socket_test_util.h" 48 #include "net/socket/socket_test_util.h"
48 #include "net/spdy/chromium/spdy_session_test_util.h" 49 #include "net/spdy/chromium/spdy_session_test_util.h"
49 #include "net/spdy/core/spdy_test_utils.h" 50 #include "net/spdy/core/spdy_test_utils.h"
50 #include "net/ssl/channel_id_service.h" 51 #include "net/ssl/channel_id_service.h"
51 #include "net/ssl/default_channel_id_store.h" 52 #include "net/ssl/default_channel_id_store.h"
52 #include "net/test/cert_test_util.h" 53 #include "net/test/cert_test_util.h"
53 #include "net/test/gtest_util.h" 54 #include "net/test/gtest_util.h"
54 #include "net/test/test_data_directory.h" 55 #include "net/test/test_data_directory.h"
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 312 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
312 return socket_factory_.udp_client_socket_ports()[socket_count]; 313 return socket_factory_.udp_client_socket_ports()[socket_count];
313 } 314 }
314 315
315 std::unique_ptr<QuicEncryptedPacket> ConstructClientConnectionClosePacket( 316 std::unique_ptr<QuicEncryptedPacket> ConstructClientConnectionClosePacket(
316 QuicPacketNumber num) { 317 QuicPacketNumber num) {
317 return client_maker_.MakeConnectionClosePacket(num); 318 return client_maker_.MakeConnectionClosePacket(num);
318 } 319 }
319 320
320 std::unique_ptr<QuicEncryptedPacket> ConstructClientRstPacket() { 321 std::unique_ptr<QuicEncryptedPacket> ConstructClientRstPacket() {
321 QuicStreamId stream_id = kClientDataStreamId1; 322 QuicStreamId stream_id = GetNthClientInitiatedStreamId(0);
322 return client_maker_.MakeRstPacket(1, true, stream_id, 323 return client_maker_.MakeRstPacket(1, true, stream_id,
323 QUIC_RST_ACKNOWLEDGEMENT); 324 QUIC_RST_ACKNOWLEDGEMENT);
324 } 325 }
325 326
326 std::unique_ptr<QuicEncryptedPacket> ConstructClientRstPacket( 327 std::unique_ptr<QuicEncryptedPacket> ConstructClientRstPacket(
327 QuicPacketNumber packet_number) { 328 QuicPacketNumber packet_number) {
328 QuicStreamId stream_id = kClientDataStreamId1; 329 QuicStreamId stream_id = GetNthClientInitiatedStreamId(0);
329 return client_maker_.MakeRstPacket(packet_number, true, stream_id, 330 return client_maker_.MakeRstPacket(packet_number, true, stream_id,
330 QUIC_RST_ACKNOWLEDGEMENT); 331 QUIC_RST_ACKNOWLEDGEMENT);
331 } 332 }
332 333
333 static ProofVerifyDetailsChromium DefaultProofVerifyDetails() { 334 static ProofVerifyDetailsChromium DefaultProofVerifyDetails() {
334 // Load a certificate that is valid for *.example.org 335 // Load a certificate that is valid for *.example.org
335 scoped_refptr<X509Certificate> test_cert( 336 scoped_refptr<X509Certificate> test_cert(
336 ImportCertFromFile(GetTestCertsDirectory(), "wildcard.pem")); 337 ImportCertFromFile(GetTestCertsDirectory(), "wildcard.pem"));
337 EXPECT_TRUE(test_cert.get()); 338 EXPECT_TRUE(test_cert.get());
338 ProofVerifyDetailsChromium verify_details; 339 ProofVerifyDetailsChromium verify_details;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 socket_data1.AddSocketDataToFactory(&socket_factory_); 416 socket_data1.AddSocketDataToFactory(&socket_factory_);
416 417
417 // Set up second socket data provider that is used after 418 // Set up second socket data provider that is used after
418 // migration. 419 // migration.
419 MockQuicData socket_data2; 420 MockQuicData socket_data2;
420 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 421 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
421 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 422 socket_data2.AddWrite(ConstructInitialSettingsPacket());
422 socket_data2.AddWrite( 423 socket_data2.AddWrite(
423 client_maker_.MakePingPacket(2, /*include_version=*/true)); 424 client_maker_.MakePingPacket(2, /*include_version=*/true));
424 socket_data2.AddWrite(client_maker_.MakeRstPacket( 425 socket_data2.AddWrite(client_maker_.MakeRstPacket(
425 3, true, kClientDataStreamId1, QUIC_STREAM_CANCELLED)); 426 3, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
426 socket_data2.AddSocketDataToFactory(&socket_factory_); 427 socket_data2.AddSocketDataToFactory(&socket_factory_);
427 428
428 // Create request and QuicHttpStream. 429 // Create request and QuicHttpStream.
429 QuicStreamRequest request(factory_.get(), &http_server_properties_); 430 QuicStreamRequest request(factory_.get(), &http_server_properties_);
430 EXPECT_EQ(ERR_IO_PENDING, 431 EXPECT_EQ(ERR_IO_PENDING,
431 request.Request(host_port_pair_, privacy_mode_, 432 request.Request(host_port_pair_, privacy_mode_,
432 /*cert_verify_flags=*/0, url_, "GET", net_log_, 433 /*cert_verify_flags=*/0, url_, "GET", net_log_,
433 callback_.callback())); 434 callback_.callback()));
434 EXPECT_EQ(OK, callback_.WaitForResult()); 435 EXPECT_EQ(OK, callback_.WaitForResult());
435 436
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
670 EXPECT_EQ(signature2, cached2->signature()); 671 EXPECT_EQ(signature2, cached2->signature());
671 ASSERT_EQ(1U, cached->certs().size()); 672 ASSERT_EQ(1U, cached->certs().size());
672 EXPECT_EQ(test_cert2, cached2->certs()[0]); 673 EXPECT_EQ(test_cert2, cached2->certs()[0]);
673 } 674 }
674 675
675 void RunTestLoopUntilIdle() { 676 void RunTestLoopUntilIdle() {
676 while (!runner_->GetPostedTasks().empty()) 677 while (!runner_->GetPostedTasks().empty())
677 runner_->RunNextTask(); 678 runner_->RunNextTask();
678 } 679 }
679 680
681 QuicStreamId GetNthClientInitiatedStreamId(int n) {
682 return test::GetNthClientInitiatedStreamId(version_, n);
683 }
684
685 QuicStreamId GetNthServerInitiatedStreamId(int n) {
686 return test::GetNthServerInitiatedStreamId(version_, n);
687 }
688
680 // Helper methods for tests of connection migration on write error. 689 // Helper methods for tests of connection migration on write error.
681 void TestMigrationOnWriteErrorNonMigratableStream(IoMode write_error_mode); 690 void TestMigrationOnWriteErrorNonMigratableStream(IoMode write_error_mode);
682 void TestMigrationOnWriteErrorMigrationDisabled(IoMode write_error_mode); 691 void TestMigrationOnWriteErrorMigrationDisabled(IoMode write_error_mode);
683 void TestMigrationOnWriteError(IoMode write_error_mode); 692 void TestMigrationOnWriteError(IoMode write_error_mode);
684 void TestMigrationOnWriteErrorNoNewNetwork(IoMode write_error_mode); 693 void TestMigrationOnWriteErrorNoNewNetwork(IoMode write_error_mode);
685 void TestMigrationOnMultipleWriteErrors(IoMode first_write_error_mode, 694 void TestMigrationOnMultipleWriteErrors(IoMode first_write_error_mode,
686 IoMode second_write_error_mode); 695 IoMode second_write_error_mode);
687 void TestMigrationOnWriteErrorWithNotificationQueued(bool disconnected); 696 void TestMigrationOnWriteErrorWithNotificationQueued(bool disconnected);
688 void TestMigrationOnNotificationWithWriteErrorQueued(bool disconnected); 697 void TestMigrationOnNotificationWithWriteErrorQueued(bool disconnected);
689 void OnNetworkDisconnected(bool async_write_before); 698 void OnNetworkDisconnected(bool async_write_before);
(...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after
1370 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1379 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1371 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1380 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1372 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1381 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1373 } 1382 }
1374 1383
1375 TEST_P(QuicStreamFactoryTest, MaxOpenStream) { 1384 TEST_P(QuicStreamFactoryTest, MaxOpenStream) {
1376 Initialize(); 1385 Initialize();
1377 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1386 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1378 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1387 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1379 1388
1380 QuicStreamId stream_id = kClientDataStreamId1; 1389 QuicStreamId stream_id = GetNthClientInitiatedStreamId(0);
1381 MockQuicData socket_data; 1390 MockQuicData socket_data;
1382 socket_data.AddWrite(ConstructInitialSettingsPacket()); 1391 socket_data.AddWrite(ConstructInitialSettingsPacket());
1383 socket_data.AddWrite( 1392 socket_data.AddWrite(
1384 client_maker_.MakeRstPacket(2, true, stream_id, QUIC_STREAM_CANCELLED)); 1393 client_maker_.MakeRstPacket(2, true, stream_id, QUIC_STREAM_CANCELLED));
1385 socket_data.AddRead( 1394 socket_data.AddRead(
1386 server_maker_.MakeRstPacket(1, false, stream_id, QUIC_STREAM_CANCELLED)); 1395 server_maker_.MakeRstPacket(1, false, stream_id, QUIC_STREAM_CANCELLED));
1387 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1396 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1388 socket_data.AddSocketDataToFactory(&socket_factory_); 1397 socket_data.AddSocketDataToFactory(&socket_factory_);
1389 1398
1390 HttpRequestInfo request_info; 1399 HttpRequestInfo request_info;
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
1749 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1758 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1750 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1759 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1751 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1760 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1752 1761
1753 int packet_number = 1; 1762 int packet_number = 1;
1754 MockQuicData socket_data; 1763 MockQuicData socket_data;
1755 QuicStreamOffset header_stream_offset = 0; 1764 QuicStreamOffset header_stream_offset = 0;
1756 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1765 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1757 socket_data.AddWrite( 1766 socket_data.AddWrite(
1758 ConstructInitialSettingsPacket(packet_number++, &header_stream_offset)); 1767 ConstructInitialSettingsPacket(packet_number++, &header_stream_offset));
1759 socket_data.AddWrite(ConstructGetRequestPacket(packet_number++, 1768 socket_data.AddWrite(ConstructGetRequestPacket(
1760 kClientDataStreamId1, true, 1769 packet_number++, GetNthClientInitiatedStreamId(0), true, true,
1761 true, &header_stream_offset)); 1770 &header_stream_offset));
1762 if (async_write_before) { 1771 if (async_write_before) {
1763 socket_data.AddWrite(ASYNC, OK); 1772 socket_data.AddWrite(ASYNC, OK);
1764 packet_number++; 1773 packet_number++;
1765 } 1774 }
1766 socket_data.AddSocketDataToFactory(&socket_factory_); 1775 socket_data.AddSocketDataToFactory(&socket_factory_);
1767 1776
1768 // Create request and QuicHttpStream. 1777 // Create request and QuicHttpStream.
1769 QuicStreamRequest request(factory_.get(), &http_server_properties_); 1778 QuicStreamRequest request(factory_.get(), &http_server_properties_);
1770 EXPECT_EQ(ERR_IO_PENDING, 1779 EXPECT_EQ(ERR_IO_PENDING,
1771 request.Request(host_port_pair_, privacy_mode_, 1780 request.Request(host_port_pair_, privacy_mode_,
(...skipping 23 matching lines...) Expand all
1795 1804
1796 // Do an async write to leave writer blocked. 1805 // Do an async write to leave writer blocked.
1797 if (async_write_before) 1806 if (async_write_before)
1798 session->connection()->SendPing(); 1807 session->connection()->SendPing();
1799 1808
1800 // Set up second socket data provider that is used after migration. 1809 // Set up second socket data provider that is used after migration.
1801 // The response to the earlier request is read on this new socket. 1810 // The response to the earlier request is read on this new socket.
1802 MockQuicData socket_data1; 1811 MockQuicData socket_data1;
1803 socket_data1.AddWrite( 1812 socket_data1.AddWrite(
1804 client_maker_.MakePingPacket(packet_number++, /*include_version=*/true)); 1813 client_maker_.MakePingPacket(packet_number++, /*include_version=*/true));
1805 socket_data1.AddRead( 1814 socket_data1.AddRead(ConstructOkResponsePacket(
1806 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); 1815 1, GetNthClientInitiatedStreamId(0), false, false));
1807 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1816 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1808 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( 1817 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket(
1809 packet_number++, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1818 packet_number++, false, GetNthClientInitiatedStreamId(0),
1810 1, true)); 1819 QUIC_STREAM_CANCELLED, 1, 1, 1, true));
1811 socket_data1.AddSocketDataToFactory(&socket_factory_); 1820 socket_data1.AddSocketDataToFactory(&socket_factory_);
1812 1821
1813 // Trigger connection migration. This should cause a PING frame 1822 // Trigger connection migration. This should cause a PING frame
1814 // to be emitted. 1823 // to be emitted.
1815 scoped_mock_network_change_notifier_->mock_network_change_notifier() 1824 scoped_mock_network_change_notifier_->mock_network_change_notifier()
1816 ->NotifyNetworkMadeDefault(kNewNetworkForTests); 1825 ->NotifyNetworkMadeDefault(kNewNetworkForTests);
1817 1826
1818 // The session should now be marked as going away. Ensure that 1827 // The session should now be marked as going away. Ensure that
1819 // while it is still alive, it is no longer active. 1828 // while it is still alive, it is no longer active.
1820 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 1829 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1879 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1888 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1880 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1889 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1881 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1890 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1882 1891
1883 int packet_number = 1; 1892 int packet_number = 1;
1884 MockQuicData socket_data; 1893 MockQuicData socket_data;
1885 QuicStreamOffset header_stream_offset = 0; 1894 QuicStreamOffset header_stream_offset = 0;
1886 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1895 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1887 socket_data.AddWrite( 1896 socket_data.AddWrite(
1888 ConstructInitialSettingsPacket(packet_number++, &header_stream_offset)); 1897 ConstructInitialSettingsPacket(packet_number++, &header_stream_offset));
1889 socket_data.AddWrite(ConstructGetRequestPacket(packet_number++, 1898 socket_data.AddWrite(ConstructGetRequestPacket(
1890 kClientDataStreamId1, true, 1899 packet_number++, GetNthClientInitiatedStreamId(0), true, true,
1891 true, &header_stream_offset)); 1900 &header_stream_offset));
1892 if (async_write_before) { 1901 if (async_write_before) {
1893 socket_data.AddWrite(ASYNC, OK); 1902 socket_data.AddWrite(ASYNC, OK);
1894 packet_number++; 1903 packet_number++;
1895 } 1904 }
1896 socket_data.AddSocketDataToFactory(&socket_factory_); 1905 socket_data.AddSocketDataToFactory(&socket_factory_);
1897 1906
1898 // Create request and QuicHttpStream. 1907 // Create request and QuicHttpStream.
1899 QuicStreamRequest request(factory_.get(), &http_server_properties_); 1908 QuicStreamRequest request(factory_.get(), &http_server_properties_);
1900 EXPECT_EQ(ERR_IO_PENDING, 1909 EXPECT_EQ(ERR_IO_PENDING,
1901 request.Request(host_port_pair_, privacy_mode_, 1910 request.Request(host_port_pair_, privacy_mode_,
(...skipping 23 matching lines...) Expand all
1925 1934
1926 // Do an async write to leave writer blocked. 1935 // Do an async write to leave writer blocked.
1927 if (async_write_before) 1936 if (async_write_before)
1928 session->connection()->SendPing(); 1937 session->connection()->SendPing();
1929 1938
1930 // Set up second socket data provider that is used after migration. 1939 // Set up second socket data provider that is used after migration.
1931 // The response to the earlier request is read on this new socket. 1940 // The response to the earlier request is read on this new socket.
1932 MockQuicData socket_data1; 1941 MockQuicData socket_data1;
1933 socket_data1.AddWrite( 1942 socket_data1.AddWrite(
1934 client_maker_.MakePingPacket(packet_number++, /*include_version=*/true)); 1943 client_maker_.MakePingPacket(packet_number++, /*include_version=*/true));
1935 socket_data1.AddRead( 1944 socket_data1.AddRead(ConstructOkResponsePacket(
1936 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); 1945 1, GetNthClientInitiatedStreamId(0), false, false));
1937 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 1946 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
1938 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( 1947 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket(
1939 packet_number++, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1948 packet_number++, false, GetNthClientInitiatedStreamId(0),
1940 1, true)); 1949 QUIC_STREAM_CANCELLED, 1, 1, 1, true));
1941 socket_data1.AddSocketDataToFactory(&socket_factory_); 1950 socket_data1.AddSocketDataToFactory(&socket_factory_);
1942 1951
1943 // Trigger connection migration. This should cause a PING frame 1952 // Trigger connection migration. This should cause a PING frame
1944 // to be emitted. 1953 // to be emitted.
1945 scoped_mock_network_change_notifier_->mock_network_change_notifier() 1954 scoped_mock_network_change_notifier_->mock_network_change_notifier()
1946 ->NotifyNetworkDisconnected(kDefaultNetworkForTests); 1955 ->NotifyNetworkDisconnected(kDefaultNetworkForTests);
1947 1956
1948 // The session should now be marked as going away. Ensure that 1957 // The session should now be marked as going away. Ensure that
1949 // while it is still alive, it is no longer active. 1958 // while it is still alive, it is no longer active.
1950 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 1959 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
2053 TEST_P(QuicStreamFactoryTest, OnNetworkMadeDefaultNonMigratableStream) { 2062 TEST_P(QuicStreamFactoryTest, OnNetworkMadeDefaultNonMigratableStream) {
2054 InitializeConnectionMigrationTest( 2063 InitializeConnectionMigrationTest(
2055 {kDefaultNetworkForTests, kNewNetworkForTests}); 2064 {kDefaultNetworkForTests, kNewNetworkForTests});
2056 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2065 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
2057 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2066 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2058 2067
2059 MockQuicData socket_data; 2068 MockQuicData socket_data;
2060 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2069 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2061 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2070 socket_data.AddWrite(ConstructInitialSettingsPacket());
2062 socket_data.AddWrite(client_maker_.MakeRstPacket( 2071 socket_data.AddWrite(client_maker_.MakeRstPacket(
2063 2, true, kClientDataStreamId1, QUIC_STREAM_CANCELLED)); 2072 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
2064 socket_data.AddSocketDataToFactory(&socket_factory_); 2073 socket_data.AddSocketDataToFactory(&socket_factory_);
2065 2074
2066 // Create request and QuicHttpStream. 2075 // Create request and QuicHttpStream.
2067 QuicStreamRequest request(factory_.get(), &http_server_properties_); 2076 QuicStreamRequest request(factory_.get(), &http_server_properties_);
2068 EXPECT_EQ(ERR_IO_PENDING, 2077 EXPECT_EQ(ERR_IO_PENDING,
2069 request.Request(host_port_pair_, privacy_mode_, 2078 request.Request(host_port_pair_, privacy_mode_,
2070 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2079 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2071 callback_.callback())); 2080 callback_.callback()));
2072 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2081 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2073 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2082 std::unique_ptr<HttpStream> stream = request.CreateStream();
(...skipping 28 matching lines...) Expand all
2102 TEST_P(QuicStreamFactoryTest, OnNetworkMadeDefaultConnectionMigrationDisabled) { 2111 TEST_P(QuicStreamFactoryTest, OnNetworkMadeDefaultConnectionMigrationDisabled) {
2103 InitializeConnectionMigrationTest( 2112 InitializeConnectionMigrationTest(
2104 {kDefaultNetworkForTests, kNewNetworkForTests}); 2113 {kDefaultNetworkForTests, kNewNetworkForTests});
2105 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2114 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
2106 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2115 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2107 2116
2108 MockQuicData socket_data; 2117 MockQuicData socket_data;
2109 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2118 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2110 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2119 socket_data.AddWrite(ConstructInitialSettingsPacket());
2111 socket_data.AddWrite(client_maker_.MakeRstPacket( 2120 socket_data.AddWrite(client_maker_.MakeRstPacket(
2112 2, true, kClientDataStreamId1, QUIC_STREAM_CANCELLED)); 2121 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
2113 socket_data.AddSocketDataToFactory(&socket_factory_); 2122 socket_data.AddSocketDataToFactory(&socket_factory_);
2114 2123
2115 // Create request and QuicHttpStream. 2124 // Create request and QuicHttpStream.
2116 QuicStreamRequest request(factory_.get(), &http_server_properties_); 2125 QuicStreamRequest request(factory_.get(), &http_server_properties_);
2117 EXPECT_EQ(ERR_IO_PENDING, 2126 EXPECT_EQ(ERR_IO_PENDING,
2118 request.Request(host_port_pair_, privacy_mode_, 2127 request.Request(host_port_pair_, privacy_mode_,
2119 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2128 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2120 callback_.callback())); 2129 callback_.callback()));
2121 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2130 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2122 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2131 std::unique_ptr<HttpStream> stream = request.CreateStream();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2154 TEST_P(QuicStreamFactoryTest, OnNetworkDisconnectedNonMigratableStream) { 2163 TEST_P(QuicStreamFactoryTest, OnNetworkDisconnectedNonMigratableStream) {
2155 InitializeConnectionMigrationTest( 2164 InitializeConnectionMigrationTest(
2156 {kDefaultNetworkForTests, kNewNetworkForTests}); 2165 {kDefaultNetworkForTests, kNewNetworkForTests});
2157 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2166 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
2158 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2167 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2159 2168
2160 MockQuicData socket_data; 2169 MockQuicData socket_data;
2161 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2170 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2162 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2171 socket_data.AddWrite(ConstructInitialSettingsPacket());
2163 socket_data.AddWrite(client_maker_.MakeRstPacket( 2172 socket_data.AddWrite(client_maker_.MakeRstPacket(
2164 2, true, kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT)); 2173 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT));
2165 socket_data.AddSocketDataToFactory(&socket_factory_); 2174 socket_data.AddSocketDataToFactory(&socket_factory_);
2166 2175
2167 // Create request and QuicHttpStream. 2176 // Create request and QuicHttpStream.
2168 QuicStreamRequest request(factory_.get(), &http_server_properties_); 2177 QuicStreamRequest request(factory_.get(), &http_server_properties_);
2169 EXPECT_EQ(ERR_IO_PENDING, 2178 EXPECT_EQ(ERR_IO_PENDING,
2170 request.Request(host_port_pair_, privacy_mode_, 2179 request.Request(host_port_pair_, privacy_mode_,
2171 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2180 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2172 callback_.callback())); 2181 callback_.callback()));
2173 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2182 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2174 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2183 std::unique_ptr<HttpStream> stream = request.CreateStream();
(...skipping 27 matching lines...) Expand all
2202 OnNetworkDisconnectedConnectionMigrationDisabled) { 2211 OnNetworkDisconnectedConnectionMigrationDisabled) {
2203 InitializeConnectionMigrationTest( 2212 InitializeConnectionMigrationTest(
2204 {kDefaultNetworkForTests, kNewNetworkForTests}); 2213 {kDefaultNetworkForTests, kNewNetworkForTests});
2205 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2214 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
2206 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2215 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2207 2216
2208 MockQuicData socket_data; 2217 MockQuicData socket_data;
2209 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2218 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2210 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2219 socket_data.AddWrite(ConstructInitialSettingsPacket());
2211 socket_data.AddWrite(client_maker_.MakeRstPacket( 2220 socket_data.AddWrite(client_maker_.MakeRstPacket(
2212 2, true, kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT)); 2221 2, true, GetNthClientInitiatedStreamId(0), QUIC_RST_ACKNOWLEDGEMENT));
2213 socket_data.AddSocketDataToFactory(&socket_factory_); 2222 socket_data.AddSocketDataToFactory(&socket_factory_);
2214 2223
2215 // Create request and QuicHttpStream. 2224 // Create request and QuicHttpStream.
2216 QuicStreamRequest request(factory_.get(), &http_server_properties_); 2225 QuicStreamRequest request(factory_.get(), &http_server_properties_);
2217 EXPECT_EQ(ERR_IO_PENDING, 2226 EXPECT_EQ(ERR_IO_PENDING,
2218 request.Request(host_port_pair_, privacy_mode_, 2227 request.Request(host_port_pair_, privacy_mode_,
2219 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2228 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2220 callback_.callback())); 2229 callback_.callback()));
2221 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2230 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2222 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2231 std::unique_ptr<HttpStream> stream = request.CreateStream();
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
2329 InitializeConnectionMigrationTest({kDefaultNetworkForTests}); 2338 InitializeConnectionMigrationTest({kDefaultNetworkForTests});
2330 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2339 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
2331 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2340 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2332 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2341 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2333 2342
2334 MockQuicData socket_data; 2343 MockQuicData socket_data;
2335 QuicStreamOffset header_stream_offset = 0; 2344 QuicStreamOffset header_stream_offset = 0;
2336 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2345 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2337 socket_data.AddWrite( 2346 socket_data.AddWrite(
2338 ConstructInitialSettingsPacket(1, &header_stream_offset)); 2347 ConstructInitialSettingsPacket(1, &header_stream_offset));
2339 socket_data.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, 2348 socket_data.AddWrite(ConstructGetRequestPacket(
2340 true, &header_stream_offset)); 2349 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
2341 socket_data.AddSocketDataToFactory(&socket_factory_); 2350 socket_data.AddSocketDataToFactory(&socket_factory_);
2342 2351
2343 // Create request and QuicHttpStream. 2352 // Create request and QuicHttpStream.
2344 QuicStreamRequest request(factory_.get(), &http_server_properties_); 2353 QuicStreamRequest request(factory_.get(), &http_server_properties_);
2345 EXPECT_EQ(ERR_IO_PENDING, 2354 EXPECT_EQ(ERR_IO_PENDING,
2346 request.Request(host_port_pair_, privacy_mode_, 2355 request.Request(host_port_pair_, privacy_mode_,
2347 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2356 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2348 callback_.callback())); 2357 callback_.callback()));
2349 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2358 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2350 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2359 std::unique_ptr<HttpStream> stream = request.CreateStream();
(...skipping 26 matching lines...) Expand all
2377 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 2386 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
2378 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 2387 EXPECT_FALSE(HasActiveSession(host_port_pair_));
2379 EXPECT_EQ(1u, session->GetNumActiveStreams()); 2388 EXPECT_EQ(1u, session->GetNumActiveStreams());
2380 EXPECT_EQ(ERR_IO_PENDING, stream->ReadResponseHeaders(callback_.callback())); 2389 EXPECT_EQ(ERR_IO_PENDING, stream->ReadResponseHeaders(callback_.callback()));
2381 2390
2382 // Set up second socket data provider that is used after migration. 2391 // Set up second socket data provider that is used after migration.
2383 // The response to the earlier request is read on this new socket. 2392 // The response to the earlier request is read on this new socket.
2384 MockQuicData socket_data1; 2393 MockQuicData socket_data1;
2385 socket_data1.AddWrite( 2394 socket_data1.AddWrite(
2386 client_maker_.MakePingPacket(3, /*include_version=*/true)); 2395 client_maker_.MakePingPacket(3, /*include_version=*/true));
2387 socket_data1.AddRead( 2396 socket_data1.AddRead(ConstructOkResponsePacket(
2388 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); 2397 1, GetNthClientInitiatedStreamId(0), false, false));
2389 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2398 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2390 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( 2399 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket(
2391 4, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); 2400 4, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1,
2401 1, true));
2392 socket_data1.AddSocketDataToFactory(&socket_factory_); 2402 socket_data1.AddSocketDataToFactory(&socket_factory_);
2393 2403
2394 // Add a new network and notify the stream factory of a new connected network. 2404 // Add a new network and notify the stream factory of a new connected network.
2395 // This causes a PING packet to be sent over the new network. 2405 // This causes a PING packet to be sent over the new network.
2396 scoped_mock_network_change_notifier_->mock_network_change_notifier() 2406 scoped_mock_network_change_notifier_->mock_network_change_notifier()
2397 ->SetConnectedNetworksList({kNewNetworkForTests}); 2407 ->SetConnectedNetworksList({kNewNetworkForTests});
2398 scoped_mock_network_change_notifier_->mock_network_change_notifier() 2408 scoped_mock_network_change_notifier_->mock_network_change_notifier()
2399 ->NotifyNetworkConnected(kNewNetworkForTests); 2409 ->NotifyNetworkConnected(kNewNetworkForTests);
2400 2410
2401 // Ensure that the session is still alive. 2411 // Ensure that the session is still alive.
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
2545 {kDefaultNetworkForTests, kNewNetworkForTests}); 2555 {kDefaultNetworkForTests, kNewNetworkForTests});
2546 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2556 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
2547 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2557 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2548 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2558 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2549 2559
2550 MockQuicData socket_data; 2560 MockQuicData socket_data;
2551 QuicStreamOffset header_stream_offset = 0; 2561 QuicStreamOffset header_stream_offset = 0;
2552 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2562 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2553 socket_data.AddWrite( 2563 socket_data.AddWrite(
2554 ConstructInitialSettingsPacket(1, &header_stream_offset)); 2564 ConstructInitialSettingsPacket(1, &header_stream_offset));
2555 socket_data.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, 2565 socket_data.AddWrite(ConstructGetRequestPacket(
2556 true, &header_stream_offset)); 2566 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
2557 socket_data.AddSocketDataToFactory(&socket_factory_); 2567 socket_data.AddSocketDataToFactory(&socket_factory_);
2558 2568
2559 // Create request and QuicHttpStream. 2569 // Create request and QuicHttpStream.
2560 QuicStreamRequest request(factory_.get(), &http_server_properties_); 2570 QuicStreamRequest request(factory_.get(), &http_server_properties_);
2561 EXPECT_EQ(ERR_IO_PENDING, 2571 EXPECT_EQ(ERR_IO_PENDING,
2562 request.Request(host_port_pair_, privacy_mode_, 2572 request.Request(host_port_pair_, privacy_mode_,
2563 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2573 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2564 callback_.callback())); 2574 callback_.callback()));
2565 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2575 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2566 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2576 std::unique_ptr<HttpStream> stream = request.CreateStream();
(...skipping 13 matching lines...) Expand all
2580 2590
2581 // Send GET request on stream. 2591 // Send GET request on stream.
2582 HttpResponseInfo response; 2592 HttpResponseInfo response;
2583 HttpRequestHeaders request_headers; 2593 HttpRequestHeaders request_headers;
2584 EXPECT_EQ(OK, stream->SendRequest(request_headers, &response, 2594 EXPECT_EQ(OK, stream->SendRequest(request_headers, &response,
2585 callback_.callback())); 2595 callback_.callback()));
2586 2596
2587 MockQuicData socket_data1; 2597 MockQuicData socket_data1;
2588 socket_data1.AddWrite( 2598 socket_data1.AddWrite(
2589 client_maker_.MakePingPacket(3, /*include_version=*/true)); 2599 client_maker_.MakePingPacket(3, /*include_version=*/true));
2590 socket_data1.AddRead( 2600 socket_data1.AddRead(ConstructOkResponsePacket(
2591 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); 2601 1, GetNthClientInitiatedStreamId(0), false, false));
2592 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2602 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2593 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( 2603 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket(
2594 4, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); 2604 4, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1,
2605 1, true));
2595 socket_data1.AddSocketDataToFactory(&socket_factory_); 2606 socket_data1.AddSocketDataToFactory(&socket_factory_);
2596 2607
2597 // Trigger early connection migration. This should cause a PING frame 2608 // Trigger early connection migration. This should cause a PING frame
2598 // to be emitted. 2609 // to be emitted.
2599 session->OnPathDegrading(); 2610 session->OnPathDegrading();
2600 2611
2601 // Run the message loop so that data queued in the new socket is read by the 2612 // Run the message loop so that data queued in the new socket is read by the
2602 // packet reader. 2613 // packet reader.
2603 base::RunLoop().RunUntilIdle(); 2614 base::RunLoop().RunUntilIdle();
2604 2615
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
2669 {kDefaultNetworkForTests, kNewNetworkForTests}); 2680 {kDefaultNetworkForTests, kNewNetworkForTests});
2670 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2681 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
2671 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2682 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2672 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2683 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2673 2684
2674 MockQuicData socket_data; 2685 MockQuicData socket_data;
2675 QuicStreamOffset header_stream_offset = 0; 2686 QuicStreamOffset header_stream_offset = 0;
2676 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2687 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2677 socket_data.AddWrite( 2688 socket_data.AddWrite(
2678 ConstructInitialSettingsPacket(1, &header_stream_offset)); 2689 ConstructInitialSettingsPacket(1, &header_stream_offset));
2679 socket_data.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, 2690 socket_data.AddWrite(ConstructGetRequestPacket(
2680 true, &header_stream_offset)); 2691 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
2681 socket_data.AddSocketDataToFactory(&socket_factory_); 2692 socket_data.AddSocketDataToFactory(&socket_factory_);
2682 2693
2683 // Create request and QuicHttpStream. 2694 // Create request and QuicHttpStream.
2684 QuicStreamRequest request(factory_.get(), &http_server_properties_); 2695 QuicStreamRequest request(factory_.get(), &http_server_properties_);
2685 EXPECT_EQ(ERR_IO_PENDING, 2696 EXPECT_EQ(ERR_IO_PENDING,
2686 request.Request(host_port_pair_, privacy_mode_, 2697 request.Request(host_port_pair_, privacy_mode_,
2687 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2698 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2688 callback_.callback())); 2699 callback_.callback()));
2689 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2700 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2690 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2701 std::unique_ptr<HttpStream> stream = request.CreateStream();
(...skipping 15 matching lines...) Expand all
2706 HttpResponseInfo response; 2717 HttpResponseInfo response;
2707 HttpRequestHeaders request_headers; 2718 HttpRequestHeaders request_headers;
2708 EXPECT_EQ(OK, stream->SendRequest(request_headers, &response, 2719 EXPECT_EQ(OK, stream->SendRequest(request_headers, &response,
2709 callback_.callback())); 2720 callback_.callback()));
2710 2721
2711 // Set up second socket data provider that is used after migration. 2722 // Set up second socket data provider that is used after migration.
2712 // The response to the earlier request is read on this new socket. 2723 // The response to the earlier request is read on this new socket.
2713 MockQuicData socket_data1; 2724 MockQuicData socket_data1;
2714 socket_data1.AddWrite( 2725 socket_data1.AddWrite(
2715 client_maker_.MakePingPacket(3, /*include_version=*/true)); 2726 client_maker_.MakePingPacket(3, /*include_version=*/true));
2716 socket_data1.AddRead( 2727 socket_data1.AddRead(ConstructOkResponsePacket(
2717 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); 2728 1, GetNthClientInitiatedStreamId(0), false, false));
2718 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2729 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2719 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( 2730 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket(
2720 4, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); 2731 4, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1,
2732 1, true));
2721 socket_data1.AddSocketDataToFactory(&socket_factory_); 2733 socket_data1.AddSocketDataToFactory(&socket_factory_);
2722 2734
2723 // Trigger early connection migration. This should cause a PING frame 2735 // Trigger early connection migration. This should cause a PING frame
2724 // to be emitted. 2736 // to be emitted.
2725 session->OnPathDegrading(); 2737 session->OnPathDegrading();
2726 2738
2727 // Run the message loop so that data queued in the new socket is read by the 2739 // Run the message loop so that data queued in the new socket is read by the
2728 // packet reader. 2740 // packet reader.
2729 base::RunLoop().RunUntilIdle(); 2741 base::RunLoop().RunUntilIdle();
2730 2742
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
2788 2800
2789 TEST_P(QuicStreamFactoryTest, MigrateSessionEarlyNoNewNetwork) { 2801 TEST_P(QuicStreamFactoryTest, MigrateSessionEarlyNoNewNetwork) {
2790 InitializeConnectionMigrationTest({kDefaultNetworkForTests}); 2802 InitializeConnectionMigrationTest({kDefaultNetworkForTests});
2791 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2803 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
2792 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2804 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2793 2805
2794 MockQuicData socket_data; 2806 MockQuicData socket_data;
2795 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2807 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2796 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2808 socket_data.AddWrite(ConstructInitialSettingsPacket());
2797 socket_data.AddWrite(client_maker_.MakeRstPacket( 2809 socket_data.AddWrite(client_maker_.MakeRstPacket(
2798 2, true, kClientDataStreamId1, QUIC_STREAM_CANCELLED)); 2810 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
2799 socket_data.AddSocketDataToFactory(&socket_factory_); 2811 socket_data.AddSocketDataToFactory(&socket_factory_);
2800 2812
2801 // Create request and QuicHttpStream. 2813 // Create request and QuicHttpStream.
2802 QuicStreamRequest request(factory_.get(), &http_server_properties_); 2814 QuicStreamRequest request(factory_.get(), &http_server_properties_);
2803 EXPECT_EQ(ERR_IO_PENDING, 2815 EXPECT_EQ(ERR_IO_PENDING,
2804 request.Request(host_port_pair_, privacy_mode_, 2816 request.Request(host_port_pair_, privacy_mode_,
2805 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2817 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2806 callback_.callback())); 2818 callback_.callback()));
2807 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2819 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2808 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2820 std::unique_ptr<HttpStream> stream = request.CreateStream();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2840 TEST_P(QuicStreamFactoryTest, MigrateSessionEarlyNonMigratableStream) { 2852 TEST_P(QuicStreamFactoryTest, MigrateSessionEarlyNonMigratableStream) {
2841 InitializeConnectionMigrationTest( 2853 InitializeConnectionMigrationTest(
2842 {kDefaultNetworkForTests, kNewNetworkForTests}); 2854 {kDefaultNetworkForTests, kNewNetworkForTests});
2843 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2855 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
2844 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2856 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2845 2857
2846 MockQuicData socket_data; 2858 MockQuicData socket_data;
2847 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2859 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2848 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2860 socket_data.AddWrite(ConstructInitialSettingsPacket());
2849 socket_data.AddWrite(client_maker_.MakeRstPacket( 2861 socket_data.AddWrite(client_maker_.MakeRstPacket(
2850 2, true, kClientDataStreamId1, QUIC_STREAM_CANCELLED)); 2862 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
2851 socket_data.AddSocketDataToFactory(&socket_factory_); 2863 socket_data.AddSocketDataToFactory(&socket_factory_);
2852 2864
2853 // Create request and QuicHttpStream. 2865 // Create request and QuicHttpStream.
2854 QuicStreamRequest request(factory_.get(), &http_server_properties_); 2866 QuicStreamRequest request(factory_.get(), &http_server_properties_);
2855 EXPECT_EQ(ERR_IO_PENDING, 2867 EXPECT_EQ(ERR_IO_PENDING,
2856 request.Request(host_port_pair_, privacy_mode_, 2868 request.Request(host_port_pair_, privacy_mode_,
2857 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2869 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2858 callback_.callback())); 2870 callback_.callback()));
2859 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2871 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2860 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2872 std::unique_ptr<HttpStream> stream = request.CreateStream();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2892 TEST_P(QuicStreamFactoryTest, MigrateSessionEarlyConnectionMigrationDisabled) { 2904 TEST_P(QuicStreamFactoryTest, MigrateSessionEarlyConnectionMigrationDisabled) {
2893 InitializeConnectionMigrationTest( 2905 InitializeConnectionMigrationTest(
2894 {kDefaultNetworkForTests, kNewNetworkForTests}); 2906 {kDefaultNetworkForTests, kNewNetworkForTests});
2895 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2907 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
2896 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 2908 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
2897 2909
2898 MockQuicData socket_data; 2910 MockQuicData socket_data;
2899 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 2911 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2900 socket_data.AddWrite(ConstructInitialSettingsPacket()); 2912 socket_data.AddWrite(ConstructInitialSettingsPacket());
2901 socket_data.AddWrite(client_maker_.MakeRstPacket( 2913 socket_data.AddWrite(client_maker_.MakeRstPacket(
2902 2, true, kClientDataStreamId1, QUIC_STREAM_CANCELLED)); 2914 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
2903 socket_data.AddSocketDataToFactory(&socket_factory_); 2915 socket_data.AddSocketDataToFactory(&socket_factory_);
2904 2916
2905 // Create request and QuicHttpStream. 2917 // Create request and QuicHttpStream.
2906 QuicStreamRequest request(factory_.get(), &http_server_properties_); 2918 QuicStreamRequest request(factory_.get(), &http_server_properties_);
2907 EXPECT_EQ(ERR_IO_PENDING, 2919 EXPECT_EQ(ERR_IO_PENDING,
2908 request.Request(host_port_pair_, privacy_mode_, 2920 request.Request(host_port_pair_, privacy_mode_,
2909 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2921 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2910 callback_.callback())); 2922 callback_.callback()));
2911 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 2923 EXPECT_THAT(callback_.WaitForResult(), IsOk());
2912 std::unique_ptr<HttpStream> stream = request.CreateStream(); 2924 std::unique_ptr<HttpStream> stream = request.CreateStream();
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
2979 2991
2980 // Ensure that session is alive and active. 2992 // Ensure that session is alive and active.
2981 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 2993 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
2982 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 2994 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
2983 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 2995 EXPECT_TRUE(HasActiveSession(host_port_pair_));
2984 2996
2985 // Set up second socket data provider that is used after 2997 // Set up second socket data provider that is used after
2986 // migration. The request is rewritten to this new socket, and the 2998 // migration. The request is rewritten to this new socket, and the
2987 // response to the request is read on this new socket. 2999 // response to the request is read on this new socket.
2988 MockQuicData socket_data1; 3000 MockQuicData socket_data1;
2989 socket_data1.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, 3001 socket_data1.AddWrite(ConstructGetRequestPacket(
2990 true, &header_stream_offset)); 3002 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
2991 socket_data1.AddRead( 3003 socket_data1.AddRead(ConstructOkResponsePacket(
2992 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); 3004 1, GetNthClientInitiatedStreamId(0), false, false));
2993 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3005 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
2994 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( 3006 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket(
2995 3, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); 3007 3, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1,
3008 1, true));
2996 socket_data1.AddSocketDataToFactory(&socket_factory_); 3009 socket_data1.AddSocketDataToFactory(&socket_factory_);
2997 3010
2998 // Send GET request on stream. This should cause a write error, which triggers 3011 // Send GET request on stream. This should cause a write error, which triggers
2999 // a connection migration attempt. 3012 // a connection migration attempt.
3000 HttpResponseInfo response; 3013 HttpResponseInfo response;
3001 HttpRequestHeaders request_headers; 3014 HttpRequestHeaders request_headers;
3002 EXPECT_EQ(OK, stream->SendRequest(request_headers, &response, 3015 EXPECT_EQ(OK, stream->SendRequest(request_headers, &response,
3003 callback_.callback())); 3016 callback_.callback()));
3004 3017
3005 // Run the message loop so that the migration attempt is executed and 3018 // Run the message loop so that the migration attempt is executed and
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
3379 3392
3380 // Ensure that session is alive and active. 3393 // Ensure that session is alive and active.
3381 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 3394 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
3382 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 3395 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
3383 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 3396 EXPECT_TRUE(HasActiveSession(host_port_pair_));
3384 3397
3385 // Set up second socket data provider that is used after 3398 // Set up second socket data provider that is used after
3386 // migration. The request is rewritten to this new socket, and the 3399 // migration. The request is rewritten to this new socket, and the
3387 // response to the request is read on this new socket. 3400 // response to the request is read on this new socket.
3388 MockQuicData socket_data1; 3401 MockQuicData socket_data1;
3389 socket_data1.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, 3402 socket_data1.AddWrite(ConstructGetRequestPacket(
3390 true, &header_stream_offset)); 3403 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
3391 socket_data1.AddRead( 3404 socket_data1.AddRead(ConstructOkResponsePacket(
3392 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); 3405 1, GetNthClientInitiatedStreamId(0), false, false));
3393 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3406 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3394 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( 3407 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket(
3395 3, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); 3408 3, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1,
3409 1, true));
3396 socket_data1.AddSocketDataToFactory(&socket_factory_); 3410 socket_data1.AddSocketDataToFactory(&socket_factory_);
3397 3411
3398 // First queue a network change notification in the message loop. 3412 // First queue a network change notification in the message loop.
3399 if (disconnected) { 3413 if (disconnected) {
3400 scoped_mock_network_change_notifier_->mock_network_change_notifier() 3414 scoped_mock_network_change_notifier_->mock_network_change_notifier()
3401 ->QueueNetworkDisconnected(kDefaultNetworkForTests); 3415 ->QueueNetworkDisconnected(kDefaultNetworkForTests);
3402 } else { 3416 } else {
3403 scoped_mock_network_change_notifier_->mock_network_change_notifier() 3417 scoped_mock_network_change_notifier_->mock_network_change_notifier()
3404 ->QueueNetworkMadeDefault(kNewNetworkForTests); 3418 ->QueueNetworkMadeDefault(kNewNetworkForTests);
3405 } 3419 }
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
3476 3490
3477 // Ensure that session is alive and active. 3491 // Ensure that session is alive and active.
3478 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 3492 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
3479 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 3493 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
3480 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 3494 EXPECT_TRUE(HasActiveSession(host_port_pair_));
3481 3495
3482 // Set up second socket data provider that is used after 3496 // Set up second socket data provider that is used after
3483 // migration. The request is rewritten to this new socket, and the 3497 // migration. The request is rewritten to this new socket, and the
3484 // response to the request is read on this new socket. 3498 // response to the request is read on this new socket.
3485 MockQuicData socket_data1; 3499 MockQuicData socket_data1;
3486 socket_data1.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, 3500 socket_data1.AddWrite(ConstructGetRequestPacket(
3487 true, &header_stream_offset)); 3501 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
3488 socket_data1.AddRead( 3502 socket_data1.AddRead(ConstructOkResponsePacket(
3489 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); 3503 1, GetNthClientInitiatedStreamId(0), false, false));
3490 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3504 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3491 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( 3505 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket(
3492 3, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); 3506 3, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1,
3507 1, true));
3493 socket_data1.AddSocketDataToFactory(&socket_factory_); 3508 socket_data1.AddSocketDataToFactory(&socket_factory_);
3494 3509
3495 // Send GET request on stream. This should cause a write error, 3510 // Send GET request on stream. This should cause a write error,
3496 // which triggers a connection migration attempt. This will queue a 3511 // which triggers a connection migration attempt. This will queue a
3497 // migration attempt in the message loop. 3512 // migration attempt in the message loop.
3498 HttpResponseInfo response; 3513 HttpResponseInfo response;
3499 HttpRequestHeaders request_headers; 3514 HttpRequestHeaders request_headers;
3500 EXPECT_EQ(OK, stream->SendRequest(request_headers, &response, 3515 EXPECT_EQ(OK, stream->SendRequest(request_headers, &response,
3501 callback_.callback())); 3516 callback_.callback()));
3502 3517
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
3596 EXPECT_EQ(ERR_IO_PENDING, stream->ReadResponseHeaders(callback_.callback())); 3611 EXPECT_EQ(ERR_IO_PENDING, stream->ReadResponseHeaders(callback_.callback()));
3597 3612
3598 // On a DISCONNECTED notification, nothing happens. 3613 // On a DISCONNECTED notification, nothing happens.
3599 scoped_mock_network_change_notifier_->mock_network_change_notifier() 3614 scoped_mock_network_change_notifier_->mock_network_change_notifier()
3600 ->NotifyNetworkDisconnected(kDefaultNetworkForTests); 3615 ->NotifyNetworkDisconnected(kDefaultNetworkForTests);
3601 3616
3602 // Set up second socket data provider that is used after 3617 // Set up second socket data provider that is used after
3603 // migration. The request is rewritten to this new socket, and the 3618 // migration. The request is rewritten to this new socket, and the
3604 // response to the request is read on this new socket. 3619 // response to the request is read on this new socket.
3605 MockQuicData socket_data1; 3620 MockQuicData socket_data1;
3606 socket_data1.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, 3621 socket_data1.AddWrite(ConstructGetRequestPacket(
3607 true, &header_stream_offset)); 3622 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
3608 socket_data1.AddRead( 3623 socket_data1.AddRead(ConstructOkResponsePacket(
3609 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); 3624 1, GetNthClientInitiatedStreamId(0), false, false));
3610 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3625 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3611 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( 3626 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket(
3612 3, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); 3627 3, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1,
3628 1, true));
3613 socket_data1.AddSocketDataToFactory(&socket_factory_); 3629 socket_data1.AddSocketDataToFactory(&socket_factory_);
3614 3630
3615 scoped_mock_network_change_notifier_->mock_network_change_notifier() 3631 scoped_mock_network_change_notifier_->mock_network_change_notifier()
3616 ->SetConnectedNetworksList({kNewNetworkForTests}); 3632 ->SetConnectedNetworksList({kNewNetworkForTests});
3617 scoped_mock_network_change_notifier_->mock_network_change_notifier() 3633 scoped_mock_network_change_notifier_->mock_network_change_notifier()
3618 ->NotifyNetworkConnected(kNewNetworkForTests); 3634 ->NotifyNetworkConnected(kNewNetworkForTests);
3619 3635
3620 // The session should now be marked as going away. Ensure that 3636 // The session should now be marked as going away. Ensure that
3621 // while it is still alive, it is no longer active. 3637 // while it is still alive, it is no longer active.
3622 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 3638 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
3724 // as going away and the session will still be alive. 3740 // as going away and the session will still be alive.
3725 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 3741 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
3726 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 3742 EXPECT_TRUE(HasActiveSession(host_port_pair_));
3727 EXPECT_EQ(1u, session->GetNumActiveStreams()); 3743 EXPECT_EQ(1u, session->GetNumActiveStreams());
3728 EXPECT_EQ(ERR_IO_PENDING, stream->ReadResponseHeaders(callback_.callback())); 3744 EXPECT_EQ(ERR_IO_PENDING, stream->ReadResponseHeaders(callback_.callback()));
3729 3745
3730 // Set up second socket data provider that is used after 3746 // Set up second socket data provider that is used after
3731 // migration. The request is rewritten to this new socket, and the 3747 // migration. The request is rewritten to this new socket, and the
3732 // response to the request is read on this new socket. 3748 // response to the request is read on this new socket.
3733 MockQuicData socket_data1; 3749 MockQuicData socket_data1;
3734 socket_data1.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, 3750 socket_data1.AddWrite(ConstructGetRequestPacket(
3735 true, &header_stream_offset)); 3751 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
3736 socket_data1.AddRead( 3752 socket_data1.AddRead(ConstructOkResponsePacket(
3737 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); 3753 1, GetNthClientInitiatedStreamId(0), false, false));
3738 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3754 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3739 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket( 3755 socket_data1.AddWrite(client_maker_.MakeAckAndRstPacket(
3740 3, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); 3756 3, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1,
3757 1, true));
3741 socket_data1.AddSocketDataToFactory(&socket_factory_); 3758 socket_data1.AddSocketDataToFactory(&socket_factory_);
3742 3759
3743 scoped_mock_network_change_notifier_->mock_network_change_notifier() 3760 scoped_mock_network_change_notifier_->mock_network_change_notifier()
3744 ->SetConnectedNetworksList( 3761 ->SetConnectedNetworksList(
3745 {kDefaultNetworkForTests, kNewNetworkForTests}); 3762 {kDefaultNetworkForTests, kNewNetworkForTests});
3746 3763
3747 // A notification triggers and completes migration. 3764 // A notification triggers and completes migration.
3748 if (disconnected) { 3765 if (disconnected) {
3749 scoped_mock_network_change_notifier_->mock_network_change_notifier() 3766 scoped_mock_network_change_notifier_->mock_network_change_notifier()
3750 ->NotifyNetworkDisconnected(kDefaultNetworkForTests); 3767 ->NotifyNetworkDisconnected(kDefaultNetworkForTests);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
3829 {kDefaultNetworkForTests, kNewNetworkForTests}); 3846 {kDefaultNetworkForTests, kNewNetworkForTests});
3830 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 3847 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
3831 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 3848 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
3832 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 3849 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
3833 3850
3834 MockQuicData socket_data; 3851 MockQuicData socket_data;
3835 QuicStreamOffset header_stream_offset = 0; 3852 QuicStreamOffset header_stream_offset = 0;
3836 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3853 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3837 socket_data.AddWrite( 3854 socket_data.AddWrite(
3838 ConstructInitialSettingsPacket(1, &header_stream_offset)); 3855 ConstructInitialSettingsPacket(1, &header_stream_offset));
3839 socket_data.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, 3856 socket_data.AddWrite(ConstructGetRequestPacket(
3840 true, &header_stream_offset)); 3857 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
3841 socket_data.AddSocketDataToFactory(&socket_factory_); 3858 socket_data.AddSocketDataToFactory(&socket_factory_);
3842 3859
3843 // Create request and QuicHttpStream. 3860 // Create request and QuicHttpStream.
3844 QuicStreamRequest request(factory_.get(), &http_server_properties_); 3861 QuicStreamRequest request(factory_.get(), &http_server_properties_);
3845 EXPECT_EQ(ERR_IO_PENDING, 3862 EXPECT_EQ(ERR_IO_PENDING,
3846 request.Request(host_port_pair_, privacy_mode_, 3863 request.Request(host_port_pair_, privacy_mode_,
3847 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3864 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3848 callback_.callback())); 3865 callback_.callback()));
3849 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 3866 EXPECT_THAT(callback_.WaitForResult(), IsOk());
3850 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3867 std::unique_ptr<HttpStream> stream = request.CreateStream();
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
3892 3909
3893 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 3910 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
3894 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 3911 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
3895 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 3912 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
3896 3913
3897 MockQuicData socket_data1; 3914 MockQuicData socket_data1;
3898 QuicStreamOffset header_stream_offset = 0; 3915 QuicStreamOffset header_stream_offset = 0;
3899 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3916 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3900 socket_data1.AddWrite( 3917 socket_data1.AddWrite(
3901 ConstructInitialSettingsPacket(1, &header_stream_offset)); 3918 ConstructInitialSettingsPacket(1, &header_stream_offset));
3902 socket_data1.AddWrite(ConstructGetRequestPacket(2, kClientDataStreamId1, true, 3919 socket_data1.AddWrite(ConstructGetRequestPacket(
3903 true, &header_stream_offset)); 3920 2, GetNthClientInitiatedStreamId(0), true, true, &header_stream_offset));
3904 socket_data1.AddSocketDataToFactory(&socket_factory_); 3921 socket_data1.AddSocketDataToFactory(&socket_factory_);
3905 3922
3906 // Create request and QuicHttpStream. 3923 // Create request and QuicHttpStream.
3907 QuicStreamRequest request(factory_.get(), &http_server_properties_); 3924 QuicStreamRequest request(factory_.get(), &http_server_properties_);
3908 EXPECT_EQ(ERR_IO_PENDING, 3925 EXPECT_EQ(ERR_IO_PENDING,
3909 request.Request(host_port_pair_, privacy_mode_, 3926 request.Request(host_port_pair_, privacy_mode_,
3910 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3927 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3911 callback_.callback())); 3928 callback_.callback()));
3912 EXPECT_EQ(OK, callback_.WaitForResult()); 3929 EXPECT_EQ(OK, callback_.WaitForResult());
3913 std::unique_ptr<HttpStream> stream = request.CreateStream(); 3930 std::unique_ptr<HttpStream> stream = request.CreateStream();
(...skipping 21 matching lines...) Expand all
3935 session->GetDefaultSocket()->GetPeerAddress(&ip); 3952 session->GetDefaultSocket()->GetPeerAddress(&ip);
3936 DVLOG(1) << "Socket connected to: " << ip.address().ToString() << " " 3953 DVLOG(1) << "Socket connected to: " << ip.address().ToString() << " "
3937 << ip.port(); 3954 << ip.port();
3938 3955
3939 // Set up second socket data provider that is used after 3956 // Set up second socket data provider that is used after
3940 // migration. The request is rewritten to this new socket, and the 3957 // migration. The request is rewritten to this new socket, and the
3941 // response to the request is read on this new socket. 3958 // response to the request is read on this new socket.
3942 MockQuicData socket_data2; 3959 MockQuicData socket_data2;
3943 socket_data2.AddWrite( 3960 socket_data2.AddWrite(
3944 client_maker_.MakePingPacket(3, /*include_version=*/true)); 3961 client_maker_.MakePingPacket(3, /*include_version=*/true));
3945 socket_data2.AddRead( 3962 socket_data2.AddRead(ConstructOkResponsePacket(
3946 ConstructOkResponsePacket(1, kClientDataStreamId1, false, false)); 3963 1, GetNthClientInitiatedStreamId(0), false, false));
3947 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3964 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3948 socket_data2.AddWrite(client_maker_.MakeAckAndRstPacket( 3965 socket_data2.AddWrite(client_maker_.MakeAckAndRstPacket(
3949 4, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1, true)); 3966 4, false, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED, 1, 1,
3967 1, true));
3950 socket_data2.AddSocketDataToFactory(&socket_factory_); 3968 socket_data2.AddSocketDataToFactory(&socket_factory_);
3951 3969
3952 const uint8_t kTestIpAddress[] = {1, 2, 3, 4}; 3970 const uint8_t kTestIpAddress[] = {1, 2, 3, 4};
3953 const uint16_t kTestPort = 123; 3971 const uint16_t kTestPort = 123;
3954 factory_->MigrateSessionToNewPeerAddress( 3972 factory_->MigrateSessionToNewPeerAddress(
3955 session, IPEndPoint(IPAddress(kTestIpAddress), kTestPort), net_log_); 3973 session, IPEndPoint(IPAddress(kTestIpAddress), kTestPort), net_log_);
3956 3974
3957 session->GetDefaultSocket()->GetPeerAddress(&ip); 3975 session->GetDefaultSocket()->GetPeerAddress(&ip);
3958 DVLOG(1) << "Socket migrated to: " << ip.address().ToString() << " " 3976 DVLOG(1) << "Socket migrated to: " << ip.address().ToString() << " "
3959 << ip.port(); 3977 << ip.port();
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
4034 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4052 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4035 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4053 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4036 4054
4037 crypto_client_stream_factory_.SetConfig(config); 4055 crypto_client_stream_factory_.SetConfig(config);
4038 4056
4039 // Set up only socket data provider. 4057 // Set up only socket data provider.
4040 MockQuicData socket_data1; 4058 MockQuicData socket_data1;
4041 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4059 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4042 socket_data1.AddWrite(ConstructInitialSettingsPacket()); 4060 socket_data1.AddWrite(ConstructInitialSettingsPacket());
4043 socket_data1.AddWrite(client_maker_.MakeRstPacket( 4061 socket_data1.AddWrite(client_maker_.MakeRstPacket(
4044 2, true, kClientDataStreamId1, QUIC_STREAM_CANCELLED)); 4062 2, true, GetNthClientInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
4045 socket_data1.AddSocketDataToFactory(&socket_factory_); 4063 socket_data1.AddSocketDataToFactory(&socket_factory_);
4046 4064
4047 // Create request and QuicHttpStream. 4065 // Create request and QuicHttpStream.
4048 QuicStreamRequest request(factory_.get(), &http_server_properties_); 4066 QuicStreamRequest request(factory_.get(), &http_server_properties_);
4049 EXPECT_EQ(ERR_IO_PENDING, 4067 EXPECT_EQ(ERR_IO_PENDING,
4050 request.Request(host_port_pair_, privacy_mode_, 4068 request.Request(host_port_pair_, privacy_mode_,
4051 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4069 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4052 callback_.callback())); 4070 callback_.callback()));
4053 EXPECT_EQ(OK, callback_.WaitForResult()); 4071 EXPECT_EQ(OK, callback_.WaitForResult());
4054 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4072 std::unique_ptr<HttpStream> stream = request.CreateStream();
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after
4560 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4578 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4561 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4579 std::unique_ptr<HttpStream> stream = request.CreateStream();
4562 EXPECT_TRUE(stream.get()); 4580 EXPECT_TRUE(stream.get());
4563 4581
4564 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); 4582 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
4565 4583
4566 string url = "https://www.example.org/"; 4584 string url = "https://www.example.org/";
4567 4585
4568 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 4586 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
4569 4587
4570 QuicClientPromisedInfo promised(session, kServerDataStreamId1, kDefaultUrl); 4588 QuicClientPromisedInfo promised(session, GetNthServerInitiatedStreamId(0),
4589 kDefaultUrl);
4571 (*QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get()) 4590 (*QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get())
4572 ->promised_by_url())[kDefaultUrl] = &promised; 4591 ->promised_by_url())[kDefaultUrl] = &promised;
4573 4592
4574 QuicStreamRequest request2(factory_.get(), &http_server_properties_); 4593 QuicStreamRequest request2(factory_.get(), &http_server_properties_);
4575 EXPECT_EQ(OK, request2.Request(host_port_pair_, privacy_mode_, 4594 EXPECT_EQ(OK, request2.Request(host_port_pair_, privacy_mode_,
4576 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4595 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4577 callback_.callback())); 4596 callback_.callback()));
4578 4597
4579 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); 4598 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
4580 } 4599 }
4581 4600
4582 TEST_P(QuicStreamFactoryTest, ServerPushPrivacyModeMismatch) { 4601 TEST_P(QuicStreamFactoryTest, ServerPushPrivacyModeMismatch) {
4583 Initialize(); 4602 Initialize();
4584 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 4603 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
4585 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4604 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4586 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 4605 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
4587 4606
4588 MockQuicData socket_data1; 4607 MockQuicData socket_data1;
4589 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4608 socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4590 socket_data1.AddWrite(ConstructInitialSettingsPacket()); 4609 socket_data1.AddWrite(ConstructInitialSettingsPacket());
4591 socket_data1.AddWrite(client_maker_.MakeRstPacket( 4610 socket_data1.AddWrite(client_maker_.MakeRstPacket(
4592 2, true, kServerDataStreamId1, QUIC_STREAM_CANCELLED)); 4611 2, true, GetNthServerInitiatedStreamId(0), QUIC_STREAM_CANCELLED));
4593 socket_data1.AddSocketDataToFactory(&socket_factory_); 4612 socket_data1.AddSocketDataToFactory(&socket_factory_);
4594 4613
4595 MockQuicData socket_data2; 4614 MockQuicData socket_data2;
4596 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 4615 socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
4597 socket_data2.AddWrite(ConstructInitialSettingsPacket()); 4616 socket_data2.AddWrite(ConstructInitialSettingsPacket());
4598 socket_data2.AddSocketDataToFactory(&socket_factory_); 4617 socket_data2.AddSocketDataToFactory(&socket_factory_);
4599 4618
4600 QuicStreamRequest request(factory_.get(), &http_server_properties_); 4619 QuicStreamRequest request(factory_.get(), &http_server_properties_);
4601 EXPECT_EQ(ERR_IO_PENDING, 4620 EXPECT_EQ(ERR_IO_PENDING,
4602 request.Request(host_port_pair_, privacy_mode_, 4621 request.Request(host_port_pair_, privacy_mode_,
4603 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4622 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4604 callback_.callback())); 4623 callback_.callback()));
4605 4624
4606 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 4625 EXPECT_THAT(callback_.WaitForResult(), IsOk());
4607 std::unique_ptr<HttpStream> stream = request.CreateStream(); 4626 std::unique_ptr<HttpStream> stream = request.CreateStream();
4608 EXPECT_TRUE(stream.get()); 4627 EXPECT_TRUE(stream.get());
4609 4628
4610 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); 4629 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
4611 4630
4612 string url = "https://www.example.org/"; 4631 string url = "https://www.example.org/";
4613 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); 4632 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_);
4614 4633
4615 QuicClientPromisedInfo promised(session, kServerDataStreamId1, kDefaultUrl); 4634 QuicClientPromisedInfo promised(session, GetNthServerInitiatedStreamId(0),
4635 kDefaultUrl);
4616 4636
4617 QuicClientPushPromiseIndex* index = 4637 QuicClientPushPromiseIndex* index =
4618 QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get()); 4638 QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get());
4619 4639
4620 (*index->promised_by_url())[kDefaultUrl] = &promised; 4640 (*index->promised_by_url())[kDefaultUrl] = &promised;
4621 EXPECT_EQ(index->GetPromised(kDefaultUrl), &promised); 4641 EXPECT_EQ(index->GetPromised(kDefaultUrl), &promised);
4622 4642
4623 // Doing the request should not use the push stream, but rather 4643 // Doing the request should not use the push stream, but rather
4624 // cancel it because the privacy modes do not match. 4644 // cancel it because the privacy modes do not match.
4625 QuicStreamRequest request2(factory_.get(), &http_server_properties_); 4645 QuicStreamRequest request2(factory_.get(), &http_server_properties_);
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
5071 // Clear all cached states. 5091 // Clear all cached states.
5072 factory_->ClearCachedStatesInCryptoConfig( 5092 factory_->ClearCachedStatesInCryptoConfig(
5073 base::Callback<bool(const GURL&)>()); 5093 base::Callback<bool(const GURL&)>());
5074 EXPECT_TRUE(test_cases[0].state->certs().empty()); 5094 EXPECT_TRUE(test_cases[0].state->certs().empty());
5075 EXPECT_TRUE(test_cases[1].state->certs().empty()); 5095 EXPECT_TRUE(test_cases[1].state->certs().empty());
5076 EXPECT_TRUE(test_cases[2].state->certs().empty()); 5096 EXPECT_TRUE(test_cases[2].state->certs().empty());
5077 } 5097 }
5078 5098
5079 } // namespace test 5099 } // namespace test
5080 } // namespace net 5100 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/chromium/quic_network_transaction_unittest.cc ('k') | net/quic/core/congestion_control/bbr_sender.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698