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

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

Issue 2334943002: Add a new QuicChromiumClientSession::Handle class (Closed)
Patch Set: fixes 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
« no previous file with comments | « net/quic/chromium/quic_stream_factory.cc ('k') | net/spdy/chromium/multiplexed_http_stream.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "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 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 params.push_back(PoolingTestParams{version, SAME_AS_SECOND}); 150 params.push_back(PoolingTestParams{version, SAME_AS_SECOND});
151 params.push_back(PoolingTestParams{version, DIFFERENT}); 151 params.push_back(PoolingTestParams{version, DIFFERENT});
152 } 152 }
153 return params; 153 return params;
154 } 154 }
155 155
156 } // namespace 156 } // namespace
157 157
158 class QuicHttpStreamPeer { 158 class QuicHttpStreamPeer {
159 public: 159 public:
160 static QuicChromiumClientSession* GetSession(HttpStream* stream) { 160 static QuicChromiumClientSession::Handle* GetSessionHandle(
161 return static_cast<QuicHttpStream*>(stream)->session_.get(); 161 HttpStream* stream) {
162 return static_cast<QuicHttpStream*>(stream)->quic_session();
162 } 163 }
163 }; 164 };
164 165
165 class QuicStreamFactoryTestBase { 166 class QuicStreamFactoryTestBase {
166 protected: 167 protected:
167 explicit QuicStreamFactoryTestBase(QuicVersion version) 168 explicit QuicStreamFactoryTestBase(QuicVersion version)
168 : ssl_config_service_(new MockSSLConfigService), 169 : ssl_config_service_(new MockSSLConfigService),
169 random_generator_(0), 170 random_generator_(0),
170 runner_(new TestTaskRunner(&clock_)), 171 runner_(new TestTaskRunner(&clock_)),
171 version_(version), 172 version_(version),
(...skipping 595 matching lines...) Expand 10 before | Expand all | Expand 10 after
767 768
768 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 769 EXPECT_THAT(callback_.WaitForResult(), IsOk());
769 std::unique_ptr<HttpStream> stream = request.CreateStream(); 770 std::unique_ptr<HttpStream> stream = request.CreateStream();
770 EXPECT_TRUE(stream.get()); 771 EXPECT_TRUE(stream.get());
771 772
772 QuicStreamRequest request2(factory_.get(), &http_server_properties_); 773 QuicStreamRequest request2(factory_.get(), &http_server_properties_);
773 EXPECT_EQ(OK, request2.Request(host_port_pair_, privacy_mode_, 774 EXPECT_EQ(OK, request2.Request(host_port_pair_, privacy_mode_,
774 /*cert_verify_flags=*/0, url_, "GET", net_log_, 775 /*cert_verify_flags=*/0, url_, "GET", net_log_,
775 callback_.callback())); 776 callback_.callback()));
776 // Will reset stream 3. 777 // Will reset stream 3.
777 stream = request.CreateStream(); 778 stream = request2.CreateStream();
778 779
779 EXPECT_TRUE(stream.get()); 780 EXPECT_TRUE(stream.get());
780 781
781 // TODO(rtenneti): We should probably have a tests that HTTP and HTTPS result 782 // TODO(rtenneti): We should probably have a tests that HTTP and HTTPS result
782 // in streams on different sessions. 783 // in streams on different sessions.
783 QuicStreamRequest request3(factory_.get(), &http_server_properties_); 784 QuicStreamRequest request3(factory_.get(), &http_server_properties_);
784 EXPECT_EQ(OK, request3.Request(host_port_pair_, privacy_mode_, 785 EXPECT_EQ(OK, request3.Request(host_port_pair_, privacy_mode_,
785 /*cert_verify_flags=*/0, url_, "GET", net_log_, 786 /*cert_verify_flags=*/0, url_, "GET", net_log_,
786 callback_.callback())); 787 callback_.callback()));
787 stream = request3.CreateStream(); // Will reset stream 5. 788 stream = request3.CreateStream(); // Will reset stream 5.
(...skipping 3881 matching lines...) Expand 10 before | Expand all | Expand 10 after
4669 4670
4670 // Second request returns synchronously because it pools to existing session. 4671 // Second request returns synchronously because it pools to existing session.
4671 TestCompletionCallback callback2; 4672 TestCompletionCallback callback2;
4672 QuicStreamRequest request2(factory_.get(), &http_server_properties_); 4673 QuicStreamRequest request2(factory_.get(), &http_server_properties_);
4673 EXPECT_EQ(OK, request2.Request(destination2, privacy_mode_, 4674 EXPECT_EQ(OK, request2.Request(destination2, privacy_mode_,
4674 /*cert_verify_flags=*/0, url_, "GET", net_log_, 4675 /*cert_verify_flags=*/0, url_, "GET", net_log_,
4675 callback2.callback())); 4676 callback2.callback()));
4676 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 4677 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
4677 EXPECT_TRUE(stream2.get()); 4678 EXPECT_TRUE(stream2.get());
4678 4679
4679 QuicChromiumClientSession* session1 = 4680 QuicChromiumClientSession::Handle* session1 =
4680 QuicHttpStreamPeer::GetSession(stream1.get()); 4681 QuicHttpStreamPeer::GetSessionHandle(stream1.get());
4681 QuicChromiumClientSession* session2 = 4682 QuicChromiumClientSession::Handle* session2 =
4682 QuicHttpStreamPeer::GetSession(stream2.get()); 4683 QuicHttpStreamPeer::GetSessionHandle(stream2.get());
4683 EXPECT_EQ(session1, session2); 4684 EXPECT_TRUE(session1->SharesSameSession(*session2));
4684 EXPECT_EQ(QuicServerId(host_port_pair_, privacy_mode_), 4685 EXPECT_EQ(QuicServerId(host_port_pair_, privacy_mode_),
4685 session1->server_id()); 4686 session1->server_id());
4686 4687
4687 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 4688 EXPECT_TRUE(socket_data.AllReadDataConsumed());
4688 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 4689 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
4689 } 4690 }
4690 4691
4691 TEST_P(QuicStreamFactoryTest, ForceHolBlockingEnabled) { 4692 TEST_P(QuicStreamFactoryTest, ForceHolBlockingEnabled) {
4692 force_hol_blocking_ = true; 4693 force_hol_blocking_ = true;
4693 Initialize(); 4694 Initialize();
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
4852 4853
4853 // Second request returns synchronously because it pools to existing session. 4854 // Second request returns synchronously because it pools to existing session.
4854 TestCompletionCallback callback2; 4855 TestCompletionCallback callback2;
4855 QuicStreamRequest request2(factory_.get(), &http_server_properties_); 4856 QuicStreamRequest request2(factory_.get(), &http_server_properties_);
4856 EXPECT_EQ(OK, request2.Request(destination, privacy_mode_, 4857 EXPECT_EQ(OK, request2.Request(destination, privacy_mode_,
4857 /*cert_verify_flags=*/0, url2, "GET", net_log_, 4858 /*cert_verify_flags=*/0, url2, "GET", net_log_,
4858 callback2.callback())); 4859 callback2.callback()));
4859 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 4860 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
4860 EXPECT_TRUE(stream2.get()); 4861 EXPECT_TRUE(stream2.get());
4861 4862
4862 QuicChromiumClientSession* session1 = 4863 QuicChromiumClientSession::Handle* session1 =
4863 QuicHttpStreamPeer::GetSession(stream1.get()); 4864 QuicHttpStreamPeer::GetSessionHandle(stream1.get());
4864 QuicChromiumClientSession* session2 = 4865 QuicChromiumClientSession::Handle* session2 =
4865 QuicHttpStreamPeer::GetSession(stream2.get()); 4866 QuicHttpStreamPeer::GetSessionHandle(stream2.get());
4866 EXPECT_EQ(session1, session2); 4867 EXPECT_TRUE(session1->SharesSameSession(*session2));
4867 4868
4868 EXPECT_EQ(QuicServerId(origin1_, privacy_mode_), session1->server_id()); 4869 EXPECT_EQ(QuicServerId(origin1_, privacy_mode_), session1->server_id());
4869 4870
4870 EXPECT_TRUE(AllDataConsumed()); 4871 EXPECT_TRUE(AllDataConsumed());
4871 } 4872 }
4872 4873
4873 // QuicStreamRequest is not pooled if PrivacyMode differs. 4874 // QuicStreamRequest is not pooled if PrivacyMode differs.
4874 TEST_P(QuicStreamFactoryWithDestinationTest, DifferentPrivacyMode) { 4875 TEST_P(QuicStreamFactoryWithDestinationTest, DifferentPrivacyMode) {
4875 Initialize(); 4876 Initialize();
4876 4877
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
4927 request2.Request(destination, PRIVACY_MODE_ENABLED, 4928 request2.Request(destination, PRIVACY_MODE_ENABLED,
4928 /*cert_verify_flags=*/0, url2, "GET", net_log_, 4929 /*cert_verify_flags=*/0, url2, "GET", net_log_,
4929 callback2.callback())); 4930 callback2.callback()));
4930 EXPECT_EQ(OK, callback2.WaitForResult()); 4931 EXPECT_EQ(OK, callback2.WaitForResult());
4931 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 4932 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
4932 EXPECT_TRUE(stream2.get()); 4933 EXPECT_TRUE(stream2.get());
4933 4934
4934 // |request2| does not pool to the first session, because PrivacyMode does not 4935 // |request2| does not pool to the first session, because PrivacyMode does not
4935 // match. Instead, another session is opened to the same destination, but 4936 // match. Instead, another session is opened to the same destination, but
4936 // with a different QuicServerId. 4937 // with a different QuicServerId.
4937 QuicChromiumClientSession* session1 = 4938 QuicChromiumClientSession::Handle* session1 =
4938 QuicHttpStreamPeer::GetSession(stream1.get()); 4939 QuicHttpStreamPeer::GetSessionHandle(stream1.get());
4939 QuicChromiumClientSession* session2 = 4940 QuicChromiumClientSession::Handle* session2 =
4940 QuicHttpStreamPeer::GetSession(stream2.get()); 4941 QuicHttpStreamPeer::GetSessionHandle(stream2.get());
4941 EXPECT_NE(session1, session2); 4942 EXPECT_FALSE(session1->SharesSameSession(*session2));
4942 4943
4943 EXPECT_EQ(QuicServerId(origin1_, PRIVACY_MODE_DISABLED), 4944 EXPECT_EQ(QuicServerId(origin1_, PRIVACY_MODE_DISABLED),
4944 session1->server_id()); 4945 session1->server_id());
4945 EXPECT_EQ(QuicServerId(origin2_, PRIVACY_MODE_ENABLED), 4946 EXPECT_EQ(QuicServerId(origin2_, PRIVACY_MODE_ENABLED),
4946 session2->server_id()); 4947 session2->server_id());
4947 4948
4948 EXPECT_TRUE(AllDataConsumed()); 4949 EXPECT_TRUE(AllDataConsumed());
4949 } 4950 }
4950 4951
4951 // QuicStreamRequest is not pooled if certificate does not match its origin. 4952 // QuicStreamRequest is not pooled if certificate does not match its origin.
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
5010 request2.Request(destination, privacy_mode_, 5011 request2.Request(destination, privacy_mode_,
5011 /*cert_verify_flags=*/0, url2, "GET", net_log_, 5012 /*cert_verify_flags=*/0, url2, "GET", net_log_,
5012 callback2.callback())); 5013 callback2.callback()));
5013 EXPECT_THAT(callback2.WaitForResult(), IsOk()); 5014 EXPECT_THAT(callback2.WaitForResult(), IsOk());
5014 std::unique_ptr<HttpStream> stream2 = request2.CreateStream(); 5015 std::unique_ptr<HttpStream> stream2 = request2.CreateStream();
5015 EXPECT_TRUE(stream2.get()); 5016 EXPECT_TRUE(stream2.get());
5016 5017
5017 // |request2| does not pool to the first session, because the certificate does 5018 // |request2| does not pool to the first session, because the certificate does
5018 // not match. Instead, another session is opened to the same destination, but 5019 // not match. Instead, another session is opened to the same destination, but
5019 // with a different QuicServerId. 5020 // with a different QuicServerId.
5020 QuicChromiumClientSession* session1 = 5021 QuicChromiumClientSession::Handle* session1 =
5021 QuicHttpStreamPeer::GetSession(stream1.get()); 5022 QuicHttpStreamPeer::GetSessionHandle(stream1.get());
5022 QuicChromiumClientSession* session2 = 5023 QuicChromiumClientSession::Handle* session2 =
5023 QuicHttpStreamPeer::GetSession(stream2.get()); 5024 QuicHttpStreamPeer::GetSessionHandle(stream2.get());
5024 EXPECT_NE(session1, session2); 5025 EXPECT_FALSE(session1->SharesSameSession(*session2));
5025 5026
5026 EXPECT_EQ(QuicServerId(origin1_, privacy_mode_), session1->server_id()); 5027 EXPECT_EQ(QuicServerId(origin1_, privacy_mode_), session1->server_id());
5027 EXPECT_EQ(QuicServerId(origin2_, privacy_mode_), session2->server_id()); 5028 EXPECT_EQ(QuicServerId(origin2_, privacy_mode_), session2->server_id());
5028 5029
5029 EXPECT_TRUE(AllDataConsumed()); 5030 EXPECT_TRUE(AllDataConsumed());
5030 } 5031 }
5031 5032
5032 // This test verifies that QuicStreamFactory::ClearCachedStatesInCryptoConfig 5033 // This test verifies that QuicStreamFactory::ClearCachedStatesInCryptoConfig
5033 // correctly transform an origin filter to a ServerIdFilter. Whether the 5034 // correctly transform an origin filter to a ServerIdFilter. Whether the
5034 // deletion itself works correctly is tested in QuicCryptoClientConfigTest. 5035 // deletion itself works correctly is tested in QuicCryptoClientConfigTest.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
5071 // Clear all cached states. 5072 // Clear all cached states.
5072 factory_->ClearCachedStatesInCryptoConfig( 5073 factory_->ClearCachedStatesInCryptoConfig(
5073 base::Callback<bool(const GURL&)>()); 5074 base::Callback<bool(const GURL&)>());
5074 EXPECT_TRUE(test_cases[0].state->certs().empty()); 5075 EXPECT_TRUE(test_cases[0].state->certs().empty());
5075 EXPECT_TRUE(test_cases[1].state->certs().empty()); 5076 EXPECT_TRUE(test_cases[1].state->certs().empty());
5076 EXPECT_TRUE(test_cases[2].state->certs().empty()); 5077 EXPECT_TRUE(test_cases[2].state->certs().empty());
5077 } 5078 }
5078 5079
5079 } // namespace test 5080 } // namespace test
5080 } // namespace net 5081 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/chromium/quic_stream_factory.cc ('k') | net/spdy/chromium/multiplexed_http_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698