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

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

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