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

Side by Side Diff: net/spdy/spdy_network_transaction_unittest.cc

Issue 2140733002: Remove HttpStreamFactory::spdy_enabled_ static member and accessors. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Drop half of this CL. Created 4 years, 5 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 <cmath> 5 #include <cmath>
6 #include <memory> 6 #include <memory>
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 std::unique_ptr<SpdySessionDependencies> session_deps) 123 std::unique_ptr<SpdySessionDependencies> session_deps)
124 : request_(request), 124 : request_(request),
125 priority_(priority), 125 priority_(priority),
126 session_deps_( 126 session_deps_(
127 session_deps.get() == NULL 127 session_deps.get() == NULL
128 ? CreateSpdySessionDependencies(priority_to_dependency) 128 ? CreateSpdySessionDependencies(priority_to_dependency)
129 : std::move(session_deps)), 129 : std::move(session_deps)),
130 session_( 130 session_(
131 SpdySessionDependencies::SpdyCreateSession(session_deps_.get())), 131 SpdySessionDependencies::SpdyCreateSession(session_deps_.get())),
132 log_(log), 132 log_(log),
133 priority_to_dependency_(priority_to_dependency), 133 priority_to_dependency_(priority_to_dependency) {}
134 spdy_enabled_(true) {}
135 134
136 ~NormalSpdyTransactionHelper() { 135 ~NormalSpdyTransactionHelper() {
137 // Any test which doesn't close the socket by sending it an EOF will 136 // Any test which doesn't close the socket by sending it an EOF will
138 // have a valid session left open, which leaks the entire session pool. 137 // have a valid session left open, which leaks the entire session pool.
139 // This is just fine - in fact, some of our tests intentionally do this 138 // This is just fine - in fact, some of our tests intentionally do this
140 // so that we can check consistency of the SpdySessionPool as the test 139 // so that we can check consistency of the SpdySessionPool as the test
141 // finishes. If we had put an EOF on the socket, the SpdySession would 140 // finishes. If we had put an EOF on the socket, the SpdySession would
142 // have closed and we wouldn't be able to check the consistency. 141 // have closed and we wouldn't be able to check the consistency.
143 142
144 // Forcefully close existing sessions here. 143 // Forcefully close existing sessions here.
145 session()->spdy_session_pool()->CloseAllSessions(); 144 session()->spdy_session_pool()->CloseAllSessions();
146 } 145 }
147 146
148 void SetSpdyDisabled() {
149 spdy_enabled_ = false;
150 }
151
152 void RunPreTestSetup() { 147 void RunPreTestSetup() {
153 if (!session_deps_.get()) 148 if (!session_deps_.get())
154 session_deps_ = CreateSpdySessionDependencies(priority_to_dependency_); 149 session_deps_ = CreateSpdySessionDependencies(priority_to_dependency_);
155 if (!session_.get()) { 150 if (!session_.get()) {
156 session_ = SpdySessionDependencies::SpdyCreateSession( 151 session_ = SpdySessionDependencies::SpdyCreateSession(
157 session_deps_.get()); 152 session_deps_.get());
158 } 153 }
159 154
160 // We're now ready to use SSL-npn SPDY. 155 // We're now ready to use SSL-npn SPDY.
161 trans_.reset(new HttpNetworkTransaction(priority_, session_.get())); 156 trans_.reset(new HttpNetworkTransaction(priority_, session_.get()));
(...skipping 18 matching lines...) Expand all
180 output_.rv = callback_.WaitForResult(); 175 output_.rv = callback_.WaitForResult();
181 if (output_.rv != OK) { 176 if (output_.rv != OK) {
182 session_->spdy_session_pool()->CloseCurrentSessions(ERR_ABORTED); 177 session_->spdy_session_pool()->CloseCurrentSessions(ERR_ABORTED);
183 return; 178 return;
184 } 179 }
185 180
186 // Verify responses. 181 // Verify responses.
187 const HttpResponseInfo* response = trans_->GetResponseInfo(); 182 const HttpResponseInfo* response = trans_->GetResponseInfo();
188 ASSERT_TRUE(response); 183 ASSERT_TRUE(response);
189 ASSERT_TRUE(response->headers); 184 ASSERT_TRUE(response->headers);
190 if (HttpStreamFactory::spdy_enabled()) { 185 EXPECT_EQ(HttpResponseInfo::ConnectionInfoFromNextProto(kProtoHTTP2),
191 EXPECT_EQ(HttpResponseInfo::ConnectionInfoFromNextProto(kProtoHTTP2), 186 response->connection_info);
192 response->connection_info); 187 EXPECT_EQ("HTTP/1.1 200", response->headers->GetStatusLine());
193 } else { 188 EXPECT_TRUE(response->was_fetched_via_spdy);
194 EXPECT_EQ(HttpResponseInfo::CONNECTION_INFO_HTTP1_1, 189 EXPECT_TRUE(response->was_npn_negotiated);
195 response->connection_info);
196 }
197 if (spdy_enabled_) {
198 EXPECT_EQ("HTTP/1.1 200", response->headers->GetStatusLine());
199 EXPECT_TRUE(response->was_fetched_via_spdy);
200 EXPECT_TRUE(response->was_npn_negotiated);
201 } else {
202 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
203 EXPECT_FALSE(response->was_fetched_via_spdy);
204 // If SPDY is disabled, an HTTP request should not be diverted
205 // over an SSL session.
206 EXPECT_EQ(request_.url.SchemeIs("https"),
207 response->was_npn_negotiated);
208 }
209 EXPECT_EQ("127.0.0.1", response->socket_address.host()); 190 EXPECT_EQ("127.0.0.1", response->socket_address.host());
210 EXPECT_EQ(443, response->socket_address.port()); 191 EXPECT_EQ(443, response->socket_address.port());
211 output_.status_line = response->headers->GetStatusLine(); 192 output_.status_line = response->headers->GetStatusLine();
212 output_.response_info = *response; // Make a copy so we can verify. 193 output_.response_info = *response; // Make a copy so we can verify.
213 output_.rv = ReadTransaction(trans_.get(), &output_.response_data); 194 output_.rv = ReadTransaction(trans_.get(), &output_.response_data);
214 } 195 }
215 196
216 void FinishDefaultTestWithoutVerification() { 197 void FinishDefaultTestWithoutVerification() {
217 output_.rv = callback_.WaitForResult(); 198 output_.rv = callback_.WaitForResult();
218 if (output_.rv != OK) 199 if (output_.rv != OK)
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 TransactionHelperResult output_; 285 TransactionHelperResult output_;
305 std::unique_ptr<SocketDataProvider> first_transaction_; 286 std::unique_ptr<SocketDataProvider> first_transaction_;
306 SSLVector ssl_vector_; 287 SSLVector ssl_vector_;
307 TestCompletionCallback callback_; 288 TestCompletionCallback callback_;
308 std::unique_ptr<HttpNetworkTransaction> trans_; 289 std::unique_ptr<HttpNetworkTransaction> trans_;
309 std::unique_ptr<HttpNetworkTransaction> trans_http_; 290 std::unique_ptr<HttpNetworkTransaction> trans_http_;
310 DataVector data_vector_; 291 DataVector data_vector_;
311 AlternateVector alternate_vector_; 292 AlternateVector alternate_vector_;
312 const BoundNetLog log_; 293 const BoundNetLog log_;
313 bool priority_to_dependency_; 294 bool priority_to_dependency_;
314 bool spdy_enabled_;
315 }; 295 };
316 296
317 void ConnectStatusHelperWithExpectedStatus(const MockRead& status, 297 void ConnectStatusHelperWithExpectedStatus(const MockRead& status,
318 int expected_status); 298 int expected_status);
319 299
320 void ConnectStatusHelper(const MockRead& status); 300 void ConnectStatusHelper(const MockRead& status);
321 301
322 const HttpRequestInfo& CreateGetPushRequest() { 302 const HttpRequestInfo& CreateGetPushRequest() {
323 get_push_request_.method = "GET"; 303 get_push_request_.method = "GET";
324 get_push_request_.url = GURL(GetDefaultUrlWithPath("/foo.dat")); 304 get_push_request_.url = GURL(GetDefaultUrlWithPath("/foo.dat"));
(...skipping 4227 matching lines...) Expand 10 before | Expand all | Expand 10 after
4552 EXPECT_EQ("HTTP/1.1 200", response->headers->GetStatusLine()); 4532 EXPECT_EQ("HTTP/1.1 200", response->headers->GetStatusLine());
4553 EXPECT_EQ("hello!", response_data); 4533 EXPECT_EQ("hello!", response_data);
4554 base::RunLoop().RunUntilIdle(); 4534 base::RunLoop().RunUntilIdle();
4555 } 4535 }
4556 4536
4557 helper.VerifyDataConsumed(); 4537 helper.VerifyDataConsumed();
4558 base::RunLoop().RunUntilIdle(); 4538 base::RunLoop().RunUntilIdle();
4559 } 4539 }
4560 } 4540 }
4561 4541
4562 // Test that turning SPDY on and off works properly.
4563 TEST_P(SpdyNetworkTransactionTest, SpdyOnOffToggle) {
4564 HttpStreamFactory::set_spdy_enabled(true);
4565 std::unique_ptr<SpdySerializedFrame> req(
4566 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
4567 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)};
4568
4569 std::unique_ptr<SpdySerializedFrame> resp(
4570 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
4571 std::unique_ptr<SpdySerializedFrame> body(
4572 spdy_util_.ConstructSpdyBodyFrame(1, true));
4573 MockRead spdy_reads[] = {
4574 CreateMockRead(*resp, 1),
4575 CreateMockRead(*body, 2),
4576 MockRead(ASYNC, 0, 3) // EOF
4577 };
4578
4579 SequencedSocketData data(spdy_reads, arraysize(spdy_reads), spdy_writes,
4580 arraysize(spdy_writes));
4581 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
4582 BoundNetLog(), GetParam(), NULL);
4583 helper.RunToCompletion(&data);
4584 TransactionHelperResult out = helper.output();
4585 EXPECT_THAT(out.rv, IsOk());
4586 EXPECT_EQ("HTTP/1.1 200", out.status_line);
4587 EXPECT_EQ("hello!", out.response_data);
4588
4589 HttpStreamFactory::set_spdy_enabled(false);
4590 MockWrite http_writes[] = {
4591 MockWrite(SYNCHRONOUS, 0,
4592 "GET / HTTP/1.1\r\n"
4593 "Host: www.example.org\r\n"
4594 "Connection: keep-alive\r\n\r\n"),
4595 };
4596
4597 MockRead http_reads[] = {
4598 MockRead(SYNCHRONOUS, 1, "HTTP/1.1 200 OK\r\n\r\n"),
4599 MockRead(SYNCHRONOUS, 2, "hello from http"),
4600 MockRead(SYNCHRONOUS, OK, 3),
4601 };
4602 SequencedSocketData data2(http_reads, arraysize(http_reads), http_writes,
4603 arraysize(http_writes));
4604 NormalSpdyTransactionHelper helper2(CreateGetRequest(), DEFAULT_PRIORITY,
4605 BoundNetLog(), GetParam(), NULL);
4606 helper2.SetSpdyDisabled();
4607 helper2.RunToCompletion(&data2);
4608 TransactionHelperResult out2 = helper2.output();
4609 EXPECT_THAT(out2.rv, IsOk());
4610 EXPECT_EQ("HTTP/1.1 200 OK", out2.status_line);
4611 EXPECT_EQ("hello from http", out2.response_data);
4612
4613 HttpStreamFactory::set_spdy_enabled(true);
4614 }
4615
4616 // Tests that Basic authentication works over SPDY 4542 // Tests that Basic authentication works over SPDY
4617 TEST_P(SpdyNetworkTransactionTest, SpdyBasicAuth) { 4543 TEST_P(SpdyNetworkTransactionTest, SpdyBasicAuth) {
4618 HttpStreamFactory::set_spdy_enabled(true);
4619
4620 // The first request will be a bare GET, the second request will be a 4544 // The first request will be a bare GET, the second request will be a
4621 // GET with an Authorization header. 4545 // GET with an Authorization header.
4622 std::unique_ptr<SpdySerializedFrame> req_get( 4546 std::unique_ptr<SpdySerializedFrame> req_get(
4623 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 4547 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
4624 // Will be refused for lack of auth. 4548 // Will be refused for lack of auth.
4625 spdy_util_.UpdateWithStreamDestruction(1); 4549 spdy_util_.UpdateWithStreamDestruction(1);
4626 const char* const kExtraAuthorizationHeaders[] = { 4550 const char* const kExtraAuthorizationHeaders[] = {
4627 "authorization", "Basic Zm9vOmJhcg==" 4551 "authorization", "Basic Zm9vOmJhcg=="
4628 }; 4552 };
4629 std::unique_ptr<SpdySerializedFrame> req_get_authorization( 4553 std::unique_ptr<SpdySerializedFrame> req_get_authorization(
(...skipping 2076 matching lines...) Expand 10 before | Expand all | Expand 10 after
6706 TEST_P(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) { 6630 TEST_P(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) {
6707 std::unique_ptr<SSLSocketDataProvider> ssl_provider( 6631 std::unique_ptr<SSLSocketDataProvider> ssl_provider(
6708 new SSLSocketDataProvider(ASYNC, OK)); 6632 new SSLSocketDataProvider(ASYNC, OK));
6709 // Set to TLS_RSA_WITH_NULL_MD5 6633 // Set to TLS_RSA_WITH_NULL_MD5
6710 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status); 6634 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status);
6711 6635
6712 RunTLSUsageCheckTest(std::move(ssl_provider)); 6636 RunTLSUsageCheckTest(std::move(ssl_provider));
6713 } 6637 }
6714 6638
6715 } // namespace net 6639 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698