| OLD | NEW |
| 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/quic_stream_factory.h" | 5 #include "net/quic/quic_stream_factory.h" |
| 6 | 6 |
| 7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
| 8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
| 9 #include "base/thread_task_runner_handle.h" | 9 #include "base/thread_task_runner_handle.h" |
| 10 #include "net/base/test_data_directory.h" | 10 #include "net/base/test_data_directory.h" |
| (...skipping 2619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2630 run_loop2.RunUntilIdle(); | 2630 run_loop2.RunUntilIdle(); |
| 2631 EXPECT_EQ(2, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake( | 2631 EXPECT_EQ(2, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake( |
| 2632 factory_.get())); | 2632 factory_.get())); |
| 2633 EXPECT_TRUE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), | 2633 EXPECT_TRUE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), |
| 2634 host_port_pair_.port())); | 2634 host_port_pair_.port())); |
| 2635 EXPECT_EQ( | 2635 EXPECT_EQ( |
| 2636 QuicChromiumClientSession::QUIC_DISABLED_PUBLIC_RESET_POST_HANDSHAKE, | 2636 QuicChromiumClientSession::QUIC_DISABLED_PUBLIC_RESET_POST_HANDSHAKE, |
| 2637 factory_->QuicDisabledReason(host_port_pair_.port())); | 2637 factory_->QuicDisabledReason(host_port_pair_.port())); |
| 2638 | 2638 |
| 2639 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); | 2639 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); |
| 2640 EXPECT_TRUE(stream.get()); | 2640 EXPECT_FALSE(stream.get()); // Session is already closed. |
| 2641 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); | 2641 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); |
| 2642 EXPECT_TRUE(stream2.get()); | 2642 EXPECT_FALSE(stream2.get()); // Session is already closed. |
| 2643 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 2643 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 2644 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 2644 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 2645 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 2645 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
| 2646 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 2646 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
| 2647 } | 2647 } |
| 2648 | 2648 |
| 2649 TEST_P(QuicStreamFactoryTest, TimeoutsWithOpenStreamsTwoOfTwo) { | 2649 TEST_P(QuicStreamFactoryTest, TimeoutsWithOpenStreamsTwoOfTwo) { |
| 2650 disable_disk_cache_ = true; | 2650 disable_disk_cache_ = true; |
| 2651 threshold_timeouts_with_open_streams_ = 2; | 2651 threshold_timeouts_with_open_streams_ = 2; |
| 2652 Initialize(); | 2652 Initialize(); |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2833 run_loop3.RunUntilIdle(); | 2833 run_loop3.RunUntilIdle(); |
| 2834 EXPECT_EQ(2, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake( | 2834 EXPECT_EQ(2, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake( |
| 2835 factory_.get())); | 2835 factory_.get())); |
| 2836 EXPECT_TRUE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), | 2836 EXPECT_TRUE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), |
| 2837 host_port_pair_.port())); | 2837 host_port_pair_.port())); |
| 2838 EXPECT_EQ( | 2838 EXPECT_EQ( |
| 2839 QuicChromiumClientSession::QUIC_DISABLED_PUBLIC_RESET_POST_HANDSHAKE, | 2839 QuicChromiumClientSession::QUIC_DISABLED_PUBLIC_RESET_POST_HANDSHAKE, |
| 2840 factory_->QuicDisabledReason(host_port_pair_.port())); | 2840 factory_->QuicDisabledReason(host_port_pair_.port())); |
| 2841 | 2841 |
| 2842 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); | 2842 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); |
| 2843 EXPECT_TRUE(stream.get()); | 2843 EXPECT_FALSE(stream.get()); // Session is already closed. |
| 2844 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); | 2844 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); |
| 2845 EXPECT_TRUE(stream2.get()); | 2845 EXPECT_FALSE(stream2.get()); // Session is already closed. |
| 2846 scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream(); | 2846 scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream(); |
| 2847 EXPECT_TRUE(stream3.get()); | 2847 EXPECT_FALSE(stream3.get()); // Session is already closed. |
| 2848 | 2848 |
| 2849 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 2849 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 2850 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 2850 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 2851 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 2851 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
| 2852 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 2852 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
| 2853 EXPECT_TRUE(socket_data3.AllReadDataConsumed()); | 2853 EXPECT_TRUE(socket_data3.AllReadDataConsumed()); |
| 2854 EXPECT_TRUE(socket_data3.AllWriteDataConsumed()); | 2854 EXPECT_TRUE(socket_data3.AllWriteDataConsumed()); |
| 2855 } | 2855 } |
| 2856 | 2856 |
| 2857 TEST_P(QuicStreamFactoryTest, TimeoutsWithOpenStreamsTwoOfThree) { | 2857 TEST_P(QuicStreamFactoryTest, TimeoutsWithOpenStreamsTwoOfThree) { |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2963 base::RunLoop run_loop3; | 2963 base::RunLoop run_loop3; |
| 2964 run_loop3.RunUntilIdle(); | 2964 run_loop3.RunUntilIdle(); |
| 2965 EXPECT_EQ( | 2965 EXPECT_EQ( |
| 2966 2, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get())); | 2966 2, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get())); |
| 2967 EXPECT_TRUE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), | 2967 EXPECT_TRUE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), |
| 2968 host_port_pair_.port())); | 2968 host_port_pair_.port())); |
| 2969 EXPECT_EQ(QuicChromiumClientSession::QUIC_DISABLED_TIMEOUT_WITH_OPEN_STREAMS, | 2969 EXPECT_EQ(QuicChromiumClientSession::QUIC_DISABLED_TIMEOUT_WITH_OPEN_STREAMS, |
| 2970 factory_->QuicDisabledReason(host_port_pair_.port())); | 2970 factory_->QuicDisabledReason(host_port_pair_.port())); |
| 2971 | 2971 |
| 2972 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); | 2972 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); |
| 2973 EXPECT_TRUE(stream2.get()); | 2973 EXPECT_FALSE(stream2.get()); // Session is already closed. |
| 2974 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 2974 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 2975 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 2975 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 2976 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 2976 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
| 2977 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 2977 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
| 2978 EXPECT_TRUE(socket_data3.AllReadDataConsumed()); | 2978 EXPECT_TRUE(socket_data3.AllReadDataConsumed()); |
| 2979 EXPECT_TRUE(socket_data3.AllWriteDataConsumed()); | 2979 EXPECT_TRUE(socket_data3.AllWriteDataConsumed()); |
| 2980 } | 2980 } |
| 2981 | 2981 |
| 2982 TEST_P(QuicStreamFactoryTest, DisableQuicWhenTimeoutsWithOpenStreams) { | 2982 TEST_P(QuicStreamFactoryTest, DisableQuicWhenTimeoutsWithOpenStreams) { |
| 2983 disable_disk_cache_ = true; | 2983 disable_disk_cache_ = true; |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3157 // Need to spin the loop now to ensure that | 3157 // Need to spin the loop now to ensure that |
| 3158 // QuicStreamFactory::OnSessionClosed() runs. | 3158 // QuicStreamFactory::OnSessionClosed() runs. |
| 3159 base::RunLoop run_loop4; | 3159 base::RunLoop run_loop4; |
| 3160 run_loop4.RunUntilIdle(); | 3160 run_loop4.RunUntilIdle(); |
| 3161 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake( | 3161 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake( |
| 3162 factory_.get())); | 3162 factory_.get())); |
| 3163 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), | 3163 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), |
| 3164 host_port_pair_.port())); | 3164 host_port_pair_.port())); |
| 3165 | 3165 |
| 3166 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); | 3166 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); |
| 3167 EXPECT_TRUE(stream.get()); | 3167 EXPECT_FALSE(stream.get()); // Session is already closed. |
| 3168 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); | 3168 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); |
| 3169 EXPECT_TRUE(stream2.get()); | 3169 EXPECT_FALSE(stream2.get()); // Session is already closed. |
| 3170 scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream(); | 3170 scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream(); |
| 3171 EXPECT_TRUE(stream3.get()); | 3171 EXPECT_FALSE(stream3.get()); // Session is already closed. |
| 3172 scoped_ptr<QuicHttpStream> stream4 = request4.ReleaseStream(); | 3172 scoped_ptr<QuicHttpStream> stream4 = request4.ReleaseStream(); |
| 3173 EXPECT_TRUE(stream4.get()); | 3173 EXPECT_FALSE(stream4.get()); // Session is already closed. |
| 3174 | 3174 |
| 3175 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 3175 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 3176 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 3176 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 3177 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 3177 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
| 3178 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 3178 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
| 3179 EXPECT_TRUE(socket_data3.AllReadDataConsumed()); | 3179 EXPECT_TRUE(socket_data3.AllReadDataConsumed()); |
| 3180 EXPECT_TRUE(socket_data3.AllWriteDataConsumed()); | 3180 EXPECT_TRUE(socket_data3.AllWriteDataConsumed()); |
| 3181 EXPECT_TRUE(socket_data4.AllReadDataConsumed()); | 3181 EXPECT_TRUE(socket_data4.AllReadDataConsumed()); |
| 3182 EXPECT_TRUE(socket_data4.AllWriteDataConsumed()); | 3182 EXPECT_TRUE(socket_data4.AllWriteDataConsumed()); |
| 3183 } | 3183 } |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3313 // Need to spin the loop now to ensure that | 3313 // Need to spin the loop now to ensure that |
| 3314 // QuicStreamFactory::OnSessionClosed() runs. | 3314 // QuicStreamFactory::OnSessionClosed() runs. |
| 3315 base::RunLoop run_loop4; | 3315 base::RunLoop run_loop4; |
| 3316 run_loop4.RunUntilIdle(); | 3316 run_loop4.RunUntilIdle(); |
| 3317 EXPECT_EQ( | 3317 EXPECT_EQ( |
| 3318 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get())); | 3318 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get())); |
| 3319 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), | 3319 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), |
| 3320 host_port_pair_.port())); | 3320 host_port_pair_.port())); |
| 3321 | 3321 |
| 3322 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); | 3322 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); |
| 3323 EXPECT_TRUE(stream2.get()); | 3323 EXPECT_FALSE(stream2.get()); // Session is already closed. |
| 3324 scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream(); | 3324 scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream(); |
| 3325 EXPECT_TRUE(stream3.get()); | 3325 EXPECT_FALSE(stream3.get()); // Session is already closed. |
| 3326 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 3326 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 3327 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 3327 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 3328 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 3328 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
| 3329 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 3329 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
| 3330 EXPECT_TRUE(socket_data3.AllReadDataConsumed()); | 3330 EXPECT_TRUE(socket_data3.AllReadDataConsumed()); |
| 3331 EXPECT_TRUE(socket_data3.AllWriteDataConsumed()); | 3331 EXPECT_TRUE(socket_data3.AllWriteDataConsumed()); |
| 3332 EXPECT_TRUE(socket_data4.AllReadDataConsumed()); | 3332 EXPECT_TRUE(socket_data4.AllReadDataConsumed()); |
| 3333 EXPECT_TRUE(socket_data4.AllWriteDataConsumed()); | 3333 EXPECT_TRUE(socket_data4.AllWriteDataConsumed()); |
| 3334 } | 3334 } |
| 3335 | 3335 |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3515 // called. | 3515 // called. |
| 3516 base::RunLoop run_loop; | 3516 base::RunLoop run_loop; |
| 3517 run_loop.RunUntilIdle(); | 3517 run_loop.RunUntilIdle(); |
| 3518 | 3518 |
| 3519 // Verify task that the observer's executed_count is 1, which indicates | 3519 // Verify task that the observer's executed_count is 1, which indicates |
| 3520 // QuicChromiumPacketReader::StartReading() has posted only one task and | 3520 // QuicChromiumPacketReader::StartReading() has posted only one task and |
| 3521 // yielded the read. | 3521 // yielded the read. |
| 3522 EXPECT_EQ(1u, observer.executed_count()); | 3522 EXPECT_EQ(1u, observer.executed_count()); |
| 3523 | 3523 |
| 3524 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); | 3524 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); |
| 3525 EXPECT_TRUE(stream.get()); | 3525 EXPECT_FALSE(stream.get()); // Session is already closed. |
| 3526 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 3526 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 3527 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 3527 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 3528 } | 3528 } |
| 3529 | 3529 |
| 3530 TEST_P(QuicStreamFactoryTest, YieldAfterDuration) { | 3530 TEST_P(QuicStreamFactoryTest, YieldAfterDuration) { |
| 3531 Initialize(); | 3531 Initialize(); |
| 3532 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 3532 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 3533 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 3533 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 3534 QuicStreamFactoryPeer::SetYieldAfterDuration( | 3534 QuicStreamFactoryPeer::SetYieldAfterDuration( |
| 3535 factory_.get(), QuicTime::Delta::FromMilliseconds(-1)); | 3535 factory_.get(), QuicTime::Delta::FromMilliseconds(-1)); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 3564 // called. | 3564 // called. |
| 3565 base::RunLoop run_loop; | 3565 base::RunLoop run_loop; |
| 3566 run_loop.RunUntilIdle(); | 3566 run_loop.RunUntilIdle(); |
| 3567 | 3567 |
| 3568 // Verify task that the observer's executed_count is 1, which indicates | 3568 // Verify task that the observer's executed_count is 1, which indicates |
| 3569 // QuicChromiumPacketReader::StartReading() has posted only one task and | 3569 // QuicChromiumPacketReader::StartReading() has posted only one task and |
| 3570 // yielded the read. | 3570 // yielded the read. |
| 3571 EXPECT_EQ(1u, observer.executed_count()); | 3571 EXPECT_EQ(1u, observer.executed_count()); |
| 3572 | 3572 |
| 3573 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); | 3573 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); |
| 3574 EXPECT_TRUE(stream.get()); | 3574 EXPECT_FALSE(stream.get()); // Session is already closed. |
| 3575 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 3575 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
| 3576 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 3576 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
| 3577 } | 3577 } |
| 3578 | 3578 |
| 3579 TEST_P(QuicStreamFactoryTest, ServerPushSessionAffinity) { | 3579 TEST_P(QuicStreamFactoryTest, ServerPushSessionAffinity) { |
| 3580 Initialize(); | 3580 Initialize(); |
| 3581 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 3581 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
| 3582 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 3582 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
| 3583 | 3583 |
| 3584 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 3584 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3675 EXPECT_TRUE(stream2.get()); | 3675 EXPECT_TRUE(stream2.get()); |
| 3676 | 3676 |
| 3677 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); | 3677 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); |
| 3678 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); | 3678 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); |
| 3679 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 3679 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
| 3680 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 3680 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
| 3681 } | 3681 } |
| 3682 | 3682 |
| 3683 } // namespace test | 3683 } // namespace test |
| 3684 } // namespace net | 3684 } // namespace net |
| OLD | NEW |