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

Side by Side Diff: net/quic/quic_network_transaction_unittest.cc

Issue 1142523004: Custom hosts in QuicTestPacketMaker. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use constant instead of literal. Created 5 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/quic_http_stream_test.cc ('k') | net/quic/quic_stream_factory_test.cc » ('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 <vector> 5 #include <vector>
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 // This is the expected return from a current server advertising QUIC. 56 // This is the expected return from a current server advertising QUIC.
57 static const char kQuicAlternateProtocolHttpHeader[] = 57 static const char kQuicAlternateProtocolHttpHeader[] =
58 "Alternate-Protocol: 80:quic\r\n\r\n"; 58 "Alternate-Protocol: 80:quic\r\n\r\n";
59 static const char kQuicAlternateProtocol50pctHttpHeader[] = 59 static const char kQuicAlternateProtocol50pctHttpHeader[] =
60 "Alternate-Protocol: 80:quic,p=.5\r\n\r\n"; 60 "Alternate-Protocol: 80:quic,p=.5\r\n\r\n";
61 static const char kQuicAlternateProtocolDifferentPortHttpHeader[] = 61 static const char kQuicAlternateProtocolDifferentPortHttpHeader[] =
62 "Alternate-Protocol: 137:quic\r\n\r\n"; 62 "Alternate-Protocol: 137:quic\r\n\r\n";
63 static const char kQuicAlternateProtocolHttpsHeader[] = 63 static const char kQuicAlternateProtocolHttpsHeader[] =
64 "Alternate-Protocol: 443:quic\r\n\r\n"; 64 "Alternate-Protocol: 443:quic\r\n\r\n";
65 65
66 const char kDefaultServerHostName[] = "www.google.com";
67
66 } // namespace 68 } // namespace
67 69
68 // Helper class to encapsulate MockReads and MockWrites for QUIC. 70 // Helper class to encapsulate MockReads and MockWrites for QUIC.
69 // Simplify ownership issues and the interaction with the MockSocketFactory. 71 // Simplify ownership issues and the interaction with the MockSocketFactory.
70 class MockQuicData { 72 class MockQuicData {
71 public: 73 public:
72 MockQuicData() : sequence_number_(0) {} 74 MockQuicData() : sequence_number_(0) {}
73 75
74 ~MockQuicData() { 76 ~MockQuicData() {
75 STLDeleteElements(&packets_); 77 STLDeleteElements(&packets_);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 private: 129 private:
128 bool was_called_; 130 bool was_called_;
129 }; 131 };
130 132
131 class QuicNetworkTransactionTest 133 class QuicNetworkTransactionTest
132 : public PlatformTest, 134 : public PlatformTest,
133 public ::testing::WithParamInterface<QuicVersion> { 135 public ::testing::WithParamInterface<QuicVersion> {
134 protected: 136 protected:
135 QuicNetworkTransactionTest() 137 QuicNetworkTransactionTest()
136 : clock_(new MockClock), 138 : clock_(new MockClock),
137 maker_(GetParam(), 0, clock_), 139 maker_(GetParam(), 0, clock_, kDefaultServerHostName),
138 ssl_config_service_(new SSLConfigServiceDefaults), 140 ssl_config_service_(new SSLConfigServiceDefaults),
139 proxy_service_(ProxyService::CreateDirect()), 141 proxy_service_(ProxyService::CreateDirect()),
140 auth_handler_factory_( 142 auth_handler_factory_(
141 HttpAuthHandlerFactory::CreateDefault(&host_resolver_)), 143 HttpAuthHandlerFactory::CreateDefault(&host_resolver_)),
142 random_generator_(0), 144 random_generator_(0),
143 hanging_data_(nullptr, 0, nullptr, 0) { 145 hanging_data_(nullptr, 0, nullptr, 0) {
144 request_.method = "GET"; 146 request_.method = "GET";
145 request_.url = GURL("http://www.google.com/"); 147 std::string url("http://");
148 url.append(kDefaultServerHostName);
149 request_.url = GURL(url);
146 request_.load_flags = 0; 150 request_.load_flags = 0;
147 clock_->AdvanceTime(QuicTime::Delta::FromMilliseconds(20)); 151 clock_->AdvanceTime(QuicTime::Delta::FromMilliseconds(20));
148 } 152 }
149 153
150 void SetUp() override { 154 void SetUp() override {
151 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); 155 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests();
152 base::MessageLoop::current()->RunUntilIdle(); 156 base::MessageLoop::current()->RunUntilIdle();
153 } 157 }
154 158
155 void TearDown() override { 159 void TearDown() override {
(...skipping 1042 matching lines...) Expand 10 before | Expand all | Expand 10 after
1198 1202
1199 CreateSessionWithNextProtos(); 1203 CreateSessionWithNextProtos();
1200 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); 1204 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT);
1201 SendRequestAndExpectHttpResponse("hello world"); 1205 SendRequestAndExpectHttpResponse("hello world");
1202 } 1206 }
1203 1207
1204 // Test that a secure request over an insecure QUIC connection fails with 1208 // Test that a secure request over an insecure QUIC connection fails with
1205 // the appropriate error code. Note that this never happens in production, 1209 // the appropriate error code. Note that this never happens in production,
1206 // because the handshake (which this test mocks) would fail in this scenario. 1210 // because the handshake (which this test mocks) would fail in this scenario.
1207 TEST_P(QuicNetworkTransactionTest, SecureResourceOverInsecureQuic) { 1211 TEST_P(QuicNetworkTransactionTest, SecureResourceOverInsecureQuic) {
1212 QuicTestPacketMaker maker(GetParam(), 0, clock_, "www.example.org");
Ryan Hamilton 2015/05/14 18:17:02 So is the reason you need this maker so that you c
Bence 2015/05/14 18:33:00 Done.
1208 MockQuicData mock_quic_data; 1213 MockQuicData mock_quic_data;
1209 mock_quic_data.AddWrite( 1214 mock_quic_data.AddWrite(ConstructRequestHeadersPacket(
1210 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, 1215 1, kClientDataStreamId1, true, true,
1211 GetRequestHeaders("GET", "https", "/"))); 1216 maker.GetRequestHeaders("GET", "https", "/")));
1212 mock_quic_data.AddRead(ConstructResponseHeadersPacket( 1217 mock_quic_data.AddRead(
1213 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 1218 ConstructResponseHeadersPacket(1, kClientDataStreamId1, false, false,
1219 maker.GetResponseHeaders("200 OK")));
1214 mock_quic_data.AddRead( 1220 mock_quic_data.AddRead(
1215 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); 1221 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!"));
1216 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); 1222 mock_quic_data.AddWrite(ConstructAckPacket(2, 1));
1217 mock_quic_data.AddRead(SYNCHRONOUS, 0); 1223 mock_quic_data.AddRead(SYNCHRONOUS, 0);
1218 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 1224 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
1219 1225
1220 request_.url = GURL("https://www.google.com:443"); 1226 request_.url = GURL("https://www.example.org:443");
1221 AddHangingNonAlternateProtocolSocketData(); 1227 AddHangingNonAlternateProtocolSocketData();
1222 CreateSessionWithNextProtos(); 1228 CreateSessionWithNextProtos();
1223 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); 1229 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE);
1224 scoped_ptr<HttpNetworkTransaction> trans( 1230 scoped_ptr<HttpNetworkTransaction> trans(
1225 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); 1231 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get()));
1226 TestCompletionCallback callback; 1232 TestCompletionCallback callback;
1227 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); 1233 int rv = trans->Start(&request_, callback.callback(), net_log_.bound());
1228 EXPECT_EQ(ERR_REQUEST_FOR_SECURE_RESOURCE_OVER_INSECURE_QUIC, 1234 EXPECT_EQ(ERR_REQUEST_FOR_SECURE_RESOURCE_OVER_INSECURE_QUIC,
1229 callback.GetResult(rv)); 1235 callback.GetResult(rv));
1230 } 1236 }
1231 1237
1232 TEST_P(QuicNetworkTransactionTest, SecureResourceOverSecureQuic) { 1238 TEST_P(QuicNetworkTransactionTest, SecureResourceOverSecureQuic) {
1239 QuicTestPacketMaker maker(GetParam(), 0, clock_, "www.example.org");
1233 MockQuicData mock_quic_data; 1240 MockQuicData mock_quic_data;
1234 mock_quic_data.AddWrite( 1241 mock_quic_data.AddWrite(ConstructRequestHeadersPacket(
1235 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, 1242 1, kClientDataStreamId1, true, true,
1236 GetRequestHeaders("GET", "https", "/"))); 1243 maker.GetRequestHeaders("GET", "https", "/")));
1237 mock_quic_data.AddRead(ConstructResponseHeadersPacket( 1244 mock_quic_data.AddRead(
1238 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 1245 ConstructResponseHeadersPacket(1, kClientDataStreamId1, false, false,
1246 maker.GetResponseHeaders("200 OK")));
1239 mock_quic_data.AddRead( 1247 mock_quic_data.AddRead(
1240 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); 1248 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!"));
1241 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); 1249 mock_quic_data.AddWrite(ConstructAckPacket(2, 1));
1242 mock_quic_data.AddRead(SYNCHRONOUS, 0); 1250 mock_quic_data.AddRead(SYNCHRONOUS, 0);
1243 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 1251 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
1244 1252
1245 scoped_refptr<X509Certificate> cert( 1253 scoped_refptr<X509Certificate> cert(
1246 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem")); 1254 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"));
1247 ASSERT_TRUE(cert.get()); 1255 ASSERT_TRUE(cert.get());
1256 bool common_name_fallback_used;
1257 EXPECT_TRUE(
1258 cert->VerifyNameMatch("www.example.org", &common_name_fallback_used));
1248 ProofVerifyDetailsChromium verify_details; 1259 ProofVerifyDetailsChromium verify_details;
1249 verify_details.cert_verify_result.verified_cert = cert; 1260 verify_details.cert_verify_result.verified_cert = cert;
1250 crypto_client_stream_factory_.set_proof_verify_details(&verify_details); 1261 crypto_client_stream_factory_.set_proof_verify_details(&verify_details);
1251 1262
1252 request_.url = GURL("https://www.google.com:443"); 1263 request_.url = GURL("https://www.example.org:443");
1253 AddHangingNonAlternateProtocolSocketData(); 1264 AddHangingNonAlternateProtocolSocketData();
1254 CreateSessionWithNextProtos(); 1265 CreateSessionWithNextProtos();
1255 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); 1266 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE);
1256 SendRequestAndExpectQuicResponse("hello!"); 1267 SendRequestAndExpectQuicResponse("hello!");
1257 } 1268 }
1258 1269
1259 } // namespace test 1270 } // namespace test
1260 } // namespace net 1271 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_http_stream_test.cc ('k') | net/quic/quic_stream_factory_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698