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 |