| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <memory> | 5 #include <memory> |
| 6 #include <ostream> | 6 #include <ostream> |
| 7 #include <utility> | 7 #include <utility> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 #include "net/http/transport_security_state.h" | 30 #include "net/http/transport_security_state.h" |
| 31 #include "net/proxy/proxy_service.h" | 31 #include "net/proxy/proxy_service.h" |
| 32 #include "net/quic/test_tools/crypto_test_utils.h" | 32 #include "net/quic/test_tools/crypto_test_utils.h" |
| 33 #include "net/quic/test_tools/quic_test_utils.h" | 33 #include "net/quic/test_tools/quic_test_utils.h" |
| 34 #include "net/ssl/default_channel_id_store.h" | 34 #include "net/ssl/default_channel_id_store.h" |
| 35 #include "net/ssl/ssl_config_service_defaults.h" | 35 #include "net/ssl/ssl_config_service_defaults.h" |
| 36 #include "net/test/cert_test_util.h" | 36 #include "net/test/cert_test_util.h" |
| 37 #include "net/test/gtest_util.h" | 37 #include "net/test/gtest_util.h" |
| 38 #include "net/test/test_data_directory.h" | 38 #include "net/test/test_data_directory.h" |
| 39 #include "net/tools/quic/quic_in_memory_cache.h" | 39 #include "net/tools/quic/quic_in_memory_cache.h" |
| 40 #include "net/tools/quic/quic_server.h" | 40 #include "net/tools/quic/quic_simple_server.h" |
| 41 #include "net/tools/quic/test_tools/quic_in_memory_cache_peer.h" | 41 #include "net/tools/quic/test_tools/quic_in_memory_cache_peer.h" |
| 42 #include "net/tools/quic/test_tools/server_thread.h" | |
| 43 #include "testing/gmock/include/gmock/gmock.h" | 42 #include "testing/gmock/include/gmock/gmock.h" |
| 44 #include "testing/gtest/include/gtest/gtest.h" | 43 #include "testing/gtest/include/gtest/gtest.h" |
| 45 #include "testing/platform_test.h" | 44 #include "testing/platform_test.h" |
| 46 | 45 |
| 47 using base::StringPiece; | 46 using base::StringPiece; |
| 48 | 47 |
| 49 namespace net { | 48 namespace net { |
| 50 | 49 |
| 51 using test::IsOk; | 50 using test::IsOk; |
| 52 using test::QuicInMemoryCachePeer; | 51 using test::QuicInMemoryCachePeer; |
| 53 using test::ServerThread; | |
| 54 | 52 |
| 55 namespace test { | 53 namespace test { |
| 56 | 54 |
| 57 namespace { | 55 namespace { |
| 58 | 56 |
| 59 const char kResponseBody[] = "some arbitrary response body"; | 57 const char kResponseBody[] = "some arbitrary response body"; |
| 60 | 58 |
| 61 // Factory for creating HttpTransactions, used by TestTransactionConsumer. | 59 // Factory for creating HttpTransactions, used by TestTransactionConsumer. |
| 62 class TestTransactionFactory : public HttpTransactionFactory { | 60 class TestTransactionFactory : public HttpTransactionFactory { |
| 63 public: | 61 public: |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 return resolver; | 152 return resolver; |
| 155 } | 153 } |
| 156 | 154 |
| 157 void SetUp() override { | 155 void SetUp() override { |
| 158 QuicInMemoryCachePeer::ResetForTests(); | 156 QuicInMemoryCachePeer::ResetForTests(); |
| 159 StartServer(); | 157 StartServer(); |
| 160 | 158 |
| 161 // Use a mapped host resolver so that request for test.example.com (port 80) | 159 // Use a mapped host resolver so that request for test.example.com (port 80) |
| 162 // reach the server running on localhost. | 160 // reach the server running on localhost. |
| 163 std::string map_rule = "MAP test.example.com test.example.com:" + | 161 std::string map_rule = "MAP test.example.com test.example.com:" + |
| 164 base::IntToString(server_thread_->GetPort()); | 162 base::IntToString(server_->server_address().port()); |
| 165 EXPECT_TRUE(host_resolver_.AddRuleFromString(map_rule)); | 163 EXPECT_TRUE(host_resolver_.AddRuleFromString(map_rule)); |
| 166 | 164 |
| 167 // To simplify the test, and avoid the race with the HTTP request, we force | 165 // To simplify the test, and avoid the race with the HTTP request, we force |
| 168 // QUIC for these requests. | 166 // QUIC for these requests. |
| 169 params_.origins_to_force_quic_on.insert( | 167 params_.origins_to_force_quic_on.insert( |
| 170 HostPortPair::FromString("test.example.com:443")); | 168 HostPortPair::FromString("test.example.com:443")); |
| 171 | 169 |
| 172 transaction_factory_.reset(new TestTransactionFactory(params_)); | 170 transaction_factory_.reset(new TestTransactionFactory(params_)); |
| 173 } | 171 } |
| 174 | 172 |
| 175 void TearDown() override { | 173 void TearDown() override { QuicInMemoryCachePeer::ResetForTests(); } |
| 176 StopServer(); | |
| 177 QuicInMemoryCachePeer::ResetForTests(); | |
| 178 } | |
| 179 | 174 |
| 180 // Starts the QUIC server listening on a random port. | 175 // Starts the QUIC server listening on a random port. |
| 181 void StartServer() { | 176 void StartServer() { |
| 182 server_address_ = IPEndPoint(IPAddress(127, 0, 0, 1), 0); | 177 server_address_ = IPEndPoint(IPAddress(127, 0, 0, 1), 0); |
| 183 server_config_.SetInitialStreamFlowControlWindowToSend( | 178 server_config_.SetInitialStreamFlowControlWindowToSend( |
| 184 kInitialStreamFlowControlWindowForTest); | 179 kInitialStreamFlowControlWindowForTest); |
| 185 server_config_.SetInitialSessionFlowControlWindowToSend( | 180 server_config_.SetInitialSessionFlowControlWindowToSend( |
| 186 kInitialSessionFlowControlWindowForTest); | 181 kInitialSessionFlowControlWindowForTest); |
| 187 server_config_options_.token_binding_enabled = true; | 182 server_config_options_.token_binding_enabled = true; |
| 188 QuicServer* server = | 183 server_.reset(new QuicSimpleServer(CryptoTestUtils::ProofSourceForTesting(), |
| 189 new QuicServer(CryptoTestUtils::ProofSourceForTesting(), server_config_, | 184 server_config_, server_config_options_, |
| 190 server_config_options_, AllSupportedVersions()); | 185 AllSupportedVersions())); |
| 191 server_thread_.reset(new ServerThread(server, server_address_, | 186 server_->Listen(server_address_); |
| 192 strike_register_no_startup_period_)); | 187 server_address_ = server_->server_address(); |
| 193 server_thread_->Initialize(); | 188 server_->StartReading(); |
| 194 server_address_ = | |
| 195 IPEndPoint(server_address_.address(), server_thread_->GetPort()); | |
| 196 server_thread_->Start(); | |
| 197 server_started_ = true; | 189 server_started_ = true; |
| 198 } | 190 } |
| 199 | 191 |
| 200 // Stops the QUIC server. | |
| 201 void StopServer() { | |
| 202 if (!server_started_) { | |
| 203 return; | |
| 204 } | |
| 205 if (server_thread_.get()) { | |
| 206 server_thread_->Quit(); | |
| 207 server_thread_->Join(); | |
| 208 } | |
| 209 } | |
| 210 | |
| 211 // Adds an entry to the cache used by the QUIC server to serve | 192 // Adds an entry to the cache used by the QUIC server to serve |
| 212 // responses. | 193 // responses. |
| 213 void AddToCache(StringPiece path, | 194 void AddToCache(StringPiece path, |
| 214 int response_code, | 195 int response_code, |
| 215 StringPiece response_detail, | 196 StringPiece response_detail, |
| 216 StringPiece body) { | 197 StringPiece body) { |
| 217 QuicInMemoryCache::GetInstance()->AddSimpleResponse( | 198 QuicInMemoryCache::GetInstance()->AddSimpleResponse( |
| 218 "test.example.com", path, response_code, body); | 199 "test.example.com", path, response_code, body); |
| 219 } | 200 } |
| 220 | 201 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 262 CTPolicyEnforcer ct_policy_enforcer_; | 243 CTPolicyEnforcer ct_policy_enforcer_; |
| 263 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_; | 244 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_; |
| 264 std::unique_ptr<ProxyService> proxy_service_; | 245 std::unique_ptr<ProxyService> proxy_service_; |
| 265 std::unique_ptr<HttpAuthHandlerFactory> auth_handler_factory_; | 246 std::unique_ptr<HttpAuthHandlerFactory> auth_handler_factory_; |
| 266 HttpServerPropertiesImpl http_server_properties_; | 247 HttpServerPropertiesImpl http_server_properties_; |
| 267 HttpNetworkSession::Params params_; | 248 HttpNetworkSession::Params params_; |
| 268 std::unique_ptr<TestTransactionFactory> transaction_factory_; | 249 std::unique_ptr<TestTransactionFactory> transaction_factory_; |
| 269 HttpRequestInfo request_; | 250 HttpRequestInfo request_; |
| 270 std::string request_body_; | 251 std::string request_body_; |
| 271 std::unique_ptr<UploadDataStream> upload_data_stream_; | 252 std::unique_ptr<UploadDataStream> upload_data_stream_; |
| 272 std::unique_ptr<ServerThread> server_thread_; | 253 std::unique_ptr<QuicSimpleServer> server_; |
| 273 IPEndPoint server_address_; | 254 IPEndPoint server_address_; |
| 274 std::string server_hostname_; | 255 std::string server_hostname_; |
| 275 QuicConfig server_config_; | 256 QuicConfig server_config_; |
| 276 QuicCryptoServerConfig::ConfigOptions server_config_options_; | 257 QuicCryptoServerConfig::ConfigOptions server_config_options_; |
| 277 bool server_started_; | 258 bool server_started_; |
| 278 bool strike_register_no_startup_period_; | 259 bool strike_register_no_startup_period_; |
| 279 }; | 260 }; |
| 280 | 261 |
| 281 INSTANTIATE_TEST_CASE_P(Tests, | 262 INSTANTIATE_TEST_CASE_P(Tests, |
| 282 QuicEndToEndTest, | 263 QuicEndToEndTest, |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 383 base::RunLoop().Run(); | 364 base::RunLoop().Run(); |
| 384 | 365 |
| 385 for (size_t i = 0; i < num_requests; ++i) { | 366 for (size_t i = 0; i < num_requests; ++i) { |
| 386 CheckResponse(*consumers[i], "HTTP/1.1 200", kResponseBody); | 367 CheckResponse(*consumers[i], "HTTP/1.1 200", kResponseBody); |
| 387 } | 368 } |
| 388 base::STLDeleteElements(&consumers); | 369 base::STLDeleteElements(&consumers); |
| 389 } | 370 } |
| 390 | 371 |
| 391 } // namespace test | 372 } // namespace test |
| 392 } // namespace net | 373 } // namespace net |
| OLD | NEW |