Index: net/http/http_network_transaction_unittest.cc |
diff --git a/net/http/http_network_transaction_spdy2_unittest.cc b/net/http/http_network_transaction_unittest.cc |
similarity index 94% |
rename from net/http/http_network_transaction_spdy2_unittest.cc |
rename to net/http/http_network_transaction_unittest.cc |
index ffe23b256db45cdfa18c072a9210f64012a58a32..a13f156ccb0514b0ff218950b4be915f46234526 100644 |
--- a/net/http/http_network_transaction_spdy2_unittest.cc |
+++ b/net/http/http_network_transaction_unittest.cc |
@@ -56,7 +56,7 @@ |
#include "net/spdy/spdy_framer.h" |
#include "net/spdy/spdy_session.h" |
#include "net/spdy/spdy_session_pool.h" |
-#include "net/spdy/spdy_test_util_spdy2.h" |
+#include "net/spdy/spdy_test_util_common.h" |
#include "net/ssl/ssl_cert_request_info.h" |
#include "net/ssl/ssl_config_service_defaults.h" |
#include "net/ssl/ssl_info.h" |
@@ -64,8 +64,6 @@ |
#include "testing/gtest/include/gtest/gtest.h" |
#include "testing/platform_test.h" |
-using namespace net::test_spdy2; |
- |
//----------------------------------------------------------------------------- |
namespace { |
@@ -235,9 +233,11 @@ HttpNetworkSession* CreateSession(SpdySessionDependencies* session_deps) { |
} // namespace |
-class HttpNetworkTransactionSpdy2Test : public PlatformTest { |
+class HttpNetworkTransactionTest |
+ : public PlatformTest, |
+ public ::testing::WithParamInterface<NextProto> { |
public: |
- virtual ~HttpNetworkTransactionSpdy2Test() { |
+ virtual ~HttpNetworkTransactionTest() { |
// Important to restore the per-pool limit first, since the pool limit must |
// always be greater than group limit, and the tests reduce both limits. |
ClientSocketPoolManager::set_max_sockets_per_pool( |
@@ -247,9 +247,9 @@ class HttpNetworkTransactionSpdy2Test : public PlatformTest { |
} |
protected: |
- HttpNetworkTransactionSpdy2Test() |
- : spdy_util_(kProtoSPDY2), |
- session_deps_(kProtoSPDY2), |
+ HttpNetworkTransactionTest() |
+ : spdy_util_(GetParam()), |
+ session_deps_(GetParam()), |
old_max_group_sockets_(ClientSocketPoolManager::max_sockets_per_group( |
HttpNetworkSession::NORMAL_SOCKET_POOL)), |
old_max_pool_sockets_(ClientSocketPoolManager::max_sockets_per_pool( |
@@ -383,6 +383,11 @@ class HttpNetworkTransactionSpdy2Test : public PlatformTest { |
int old_max_pool_sockets_; |
}; |
+INSTANTIATE_TEST_CASE_P( |
+ NextProto, |
+ HttpNetworkTransactionTest, |
+ testing::Values(kProtoSPDY2, kProtoSPDY3, kProtoSPDY31, kProtoSPDY4a2)); |
+ |
namespace { |
// Fill |str| with a long header list that consumes >= |size| bytes. |
@@ -562,13 +567,16 @@ bool CheckNTLMServerAuth(const AuthChallengeInfo* auth_challenge) { |
} // namespace |
-TEST_F(HttpNetworkTransactionSpdy2Test, Basic) { |
+// TODO(akalin): Don't early-exit in the tests below for values > |
+// kProtoSPDY3. |
+ |
+TEST_P(HttpNetworkTransactionTest, Basic) { |
scoped_ptr<HttpTransaction> trans( |
new HttpNetworkTransaction(DEFAULT_PRIORITY, |
CreateSession(&session_deps_))); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, SimpleGET) { |
+TEST_P(HttpNetworkTransactionTest, SimpleGET) { |
MockRead data_reads[] = { |
MockRead("HTTP/1.0 200 OK\r\n\r\n"), |
MockRead("hello world"), |
@@ -582,7 +590,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, SimpleGET) { |
} |
// Response with no status line. |
-TEST_F(HttpNetworkTransactionSpdy2Test, SimpleGETNoHeaders) { |
+TEST_P(HttpNetworkTransactionTest, SimpleGETNoHeaders) { |
MockRead data_reads[] = { |
MockRead("hello world"), |
MockRead(SYNCHRONOUS, OK), |
@@ -595,7 +603,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, SimpleGETNoHeaders) { |
} |
// Allow up to 4 bytes of junk to precede status line. |
-TEST_F(HttpNetworkTransactionSpdy2Test, StatusLineJunk3Bytes) { |
+TEST_P(HttpNetworkTransactionTest, StatusLineJunk3Bytes) { |
MockRead data_reads[] = { |
MockRead("xxxHTTP/1.0 404 Not Found\nServer: blah\n\nDATA"), |
MockRead(SYNCHRONOUS, OK), |
@@ -608,7 +616,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, StatusLineJunk3Bytes) { |
} |
// Allow up to 4 bytes of junk to precede status line. |
-TEST_F(HttpNetworkTransactionSpdy2Test, StatusLineJunk4Bytes) { |
+TEST_P(HttpNetworkTransactionTest, StatusLineJunk4Bytes) { |
MockRead data_reads[] = { |
MockRead("\n\nQJHTTP/1.0 404 Not Found\nServer: blah\n\nDATA"), |
MockRead(SYNCHRONOUS, OK), |
@@ -621,7 +629,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, StatusLineJunk4Bytes) { |
} |
// Beyond 4 bytes of slop and it should fail to find a status line. |
-TEST_F(HttpNetworkTransactionSpdy2Test, StatusLineJunk5Bytes) { |
+TEST_P(HttpNetworkTransactionTest, StatusLineJunk5Bytes) { |
MockRead data_reads[] = { |
MockRead("xxxxxHTTP/1.1 404 Not Found\nServer: blah"), |
MockRead(SYNCHRONOUS, OK), |
@@ -634,7 +642,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, StatusLineJunk5Bytes) { |
} |
// Same as StatusLineJunk4Bytes, except the read chunks are smaller. |
-TEST_F(HttpNetworkTransactionSpdy2Test, StatusLineJunk4Bytes_Slow) { |
+TEST_P(HttpNetworkTransactionTest, StatusLineJunk4Bytes_Slow) { |
MockRead data_reads[] = { |
MockRead("\n"), |
MockRead("\n"), |
@@ -651,7 +659,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, StatusLineJunk4Bytes_Slow) { |
} |
// Close the connection before enough bytes to have a status line. |
-TEST_F(HttpNetworkTransactionSpdy2Test, StatusLinePartial) { |
+TEST_P(HttpNetworkTransactionTest, StatusLinePartial) { |
MockRead data_reads[] = { |
MockRead("HTT"), |
MockRead(SYNCHRONOUS, OK), |
@@ -666,7 +674,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, StatusLinePartial) { |
// Simulate a 204 response, lacking a Content-Length header, sent over a |
// persistent connection. The response should still terminate since a 204 |
// cannot have a response body. |
-TEST_F(HttpNetworkTransactionSpdy2Test, StopsReading204) { |
+TEST_P(HttpNetworkTransactionTest, StopsReading204) { |
MockRead data_reads[] = { |
MockRead("HTTP/1.1 204 No Content\r\n\r\n"), |
MockRead("junk"), // Should not be read!! |
@@ -681,7 +689,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, StopsReading204) { |
// A simple request using chunked encoding with some extra data after. |
// (Like might be seen in a pipelined response.) |
-TEST_F(HttpNetworkTransactionSpdy2Test, ChunkedEncoding) { |
+TEST_P(HttpNetworkTransactionTest, ChunkedEncoding) { |
MockRead data_reads[] = { |
MockRead("HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n"), |
MockRead("5\r\nHello\r\n"), |
@@ -700,7 +708,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ChunkedEncoding) { |
// Next tests deal with http://crbug.com/56344. |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
MultipleContentLengthHeadersNoTransferEncoding) { |
MockRead data_reads[] = { |
MockRead("HTTP/1.1 200 OK\r\n"), |
@@ -712,7 +720,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
EXPECT_EQ(ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH, out.rv); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
DuplicateContentLengthHeadersNoTransferEncoding) { |
MockRead data_reads[] = { |
MockRead("HTTP/1.1 200 OK\r\n"), |
@@ -727,7 +735,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
EXPECT_EQ("Hello", out.response_data); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
ComplexContentLengthHeadersNoTransferEncoding) { |
// More than 2 dupes. |
{ |
@@ -773,7 +781,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
} |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
MultipleContentLengthHeadersTransferEncoding) { |
MockRead data_reads[] = { |
MockRead("HTTP/1.1 200 OK\r\n"), |
@@ -797,7 +805,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
// Next tests deal with http://crbug.com/98895. |
// Checks that a single Content-Disposition header results in no error. |
-TEST_F(HttpNetworkTransactionSpdy2Test, SingleContentDispositionHeader) { |
+TEST_P(HttpNetworkTransactionTest, SingleContentDispositionHeader) { |
MockRead data_reads[] = { |
MockRead("HTTP/1.1 200 OK\r\n"), |
MockRead("Content-Disposition: attachment;filename=\"salutations.txt\"r\n"), |
@@ -812,7 +820,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, SingleContentDispositionHeader) { |
} |
// Checks that two identical Content-Disposition headers result in no error. |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
TwoIdenticalContentDispositionHeaders) { |
MockRead data_reads[] = { |
MockRead("HTTP/1.1 200 OK\r\n"), |
@@ -829,7 +837,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
} |
// Checks that two distinct Content-Disposition headers result in an error. |
-TEST_F(HttpNetworkTransactionSpdy2Test, TwoDistinctContentDispositionHeaders) { |
+TEST_P(HttpNetworkTransactionTest, TwoDistinctContentDispositionHeaders) { |
MockRead data_reads[] = { |
MockRead("HTTP/1.1 200 OK\r\n"), |
MockRead("Content-Disposition: attachment;filename=\"greetings.txt\"r\n"), |
@@ -844,7 +852,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, TwoDistinctContentDispositionHeaders) { |
// Checks that two identical Location headers result in no error. |
// Also tests Location header behavior. |
-TEST_F(HttpNetworkTransactionSpdy2Test, TwoIdenticalLocationHeaders) { |
+TEST_P(HttpNetworkTransactionTest, TwoIdenticalLocationHeaders) { |
MockRead data_reads[] = { |
MockRead("HTTP/1.1 302 Redirect\r\n"), |
MockRead("Location: http://good.com/\r\n"), |
@@ -881,7 +889,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, TwoIdenticalLocationHeaders) { |
} |
// Checks that two distinct Location headers result in an error. |
-TEST_F(HttpNetworkTransactionSpdy2Test, TwoDistinctLocationHeaders) { |
+TEST_P(HttpNetworkTransactionTest, TwoDistinctLocationHeaders) { |
MockRead data_reads[] = { |
MockRead("HTTP/1.1 302 Redirect\r\n"), |
MockRead("Location: http://good.com/\r\n"), |
@@ -896,7 +904,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, TwoDistinctLocationHeaders) { |
// Do a request using the HEAD method. Verify that we don't try to read the |
// message body (since HEAD has none). |
-TEST_F(HttpNetworkTransactionSpdy2Test, Head) { |
+TEST_P(HttpNetworkTransactionTest, Head) { |
HttpRequestInfo request; |
request.method = "HEAD"; |
request.url = GURL("http://www.google.com/"); |
@@ -956,7 +964,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, Head) { |
EXPECT_EQ("", response_data); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ReuseConnection) { |
+TEST_P(HttpNetworkTransactionTest, ReuseConnection) { |
scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
MockRead data_reads[] = { |
@@ -1003,7 +1011,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ReuseConnection) { |
} |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, Ignores100) { |
+TEST_P(HttpNetworkTransactionTest, Ignores100) { |
ScopedVector<UploadElementReader> element_readers; |
element_readers.push_back(new UploadBytesElementReader("foo", 3)); |
UploadDataStream upload_data_stream(&element_readers, 0); |
@@ -1050,7 +1058,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, Ignores100) { |
// This test is almost the same as Ignores100 above, but the response contains |
// a 102 instead of a 100. Also, instead of HTTP/1.0 the response is |
// HTTP/1.1 and the two status headers are read in one read. |
-TEST_F(HttpNetworkTransactionSpdy2Test, Ignores1xx) { |
+TEST_P(HttpNetworkTransactionTest, Ignores1xx) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.foo.com/"); |
@@ -1089,7 +1097,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, Ignores1xx) { |
EXPECT_EQ("hello world", response_data); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, Incomplete100ThenEOF) { |
+TEST_P(HttpNetworkTransactionTest, Incomplete100ThenEOF) { |
HttpRequestInfo request; |
request.method = "POST"; |
request.url = GURL("http://www.foo.com/"); |
@@ -1120,7 +1128,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, Incomplete100ThenEOF) { |
EXPECT_EQ("", response_data); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, EmptyResponse) { |
+TEST_P(HttpNetworkTransactionTest, EmptyResponse) { |
HttpRequestInfo request; |
request.method = "POST"; |
request.url = GURL("http://www.foo.com/"); |
@@ -1145,7 +1153,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, EmptyResponse) { |
EXPECT_EQ(ERR_EMPTY_RESPONSE, rv); |
} |
-void HttpNetworkTransactionSpdy2Test::KeepAliveConnectionResendRequestTest( |
+void HttpNetworkTransactionTest::KeepAliveConnectionResendRequestTest( |
const MockWrite* write_failure, |
const MockRead* read_failure) { |
HttpRequestInfo request; |
@@ -1234,23 +1242,23 @@ void HttpNetworkTransactionSpdy2Test::KeepAliveConnectionResendRequestTest( |
} |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
KeepAliveConnectionNotConnectedOnWrite) { |
MockWrite write_failure(ASYNC, ERR_SOCKET_NOT_CONNECTED); |
KeepAliveConnectionResendRequestTest(&write_failure, NULL); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, KeepAliveConnectionReset) { |
+TEST_P(HttpNetworkTransactionTest, KeepAliveConnectionReset) { |
MockRead read_failure(ASYNC, ERR_CONNECTION_RESET); |
KeepAliveConnectionResendRequestTest(NULL, &read_failure); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, KeepAliveConnectionEOF) { |
+TEST_P(HttpNetworkTransactionTest, KeepAliveConnectionEOF) { |
MockRead read_failure(SYNCHRONOUS, OK); // EOF |
KeepAliveConnectionResendRequestTest(NULL, &read_failure); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, NonKeepAliveConnectionReset) { |
+TEST_P(HttpNetworkTransactionTest, NonKeepAliveConnectionReset) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -1290,7 +1298,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, NonKeepAliveConnectionReset) { |
// Opera 9.52: after five attempts, blank page |
// Us with WinHTTP: error page (ERR_INVALID_RESPONSE) |
// Us: error page (EMPTY_RESPONSE) |
-TEST_F(HttpNetworkTransactionSpdy2Test, NonKeepAliveConnectionEOF) { |
+TEST_P(HttpNetworkTransactionTest, NonKeepAliveConnectionEOF) { |
MockRead data_reads[] = { |
MockRead(SYNCHRONOUS, OK), // EOF |
MockRead("HTTP/1.0 200 OK\r\n\r\n"), // Should not be used |
@@ -1306,7 +1314,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, NonKeepAliveConnectionEOF) { |
// tests. There was a bug causing HttpNetworkTransaction to hang in the |
// destructor in such situations. |
// See http://crbug.com/154712 and http://crbug.com/156609. |
-TEST_F(HttpNetworkTransactionSpdy2Test, KeepAliveEarlyClose) { |
+TEST_P(HttpNetworkTransactionTest, KeepAliveEarlyClose) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -1347,7 +1355,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, KeepAliveEarlyClose) { |
EXPECT_EQ(0, GetIdleSocketCountInTransportSocketPool(session.get())); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, KeepAliveEarlyClose2) { |
+TEST_P(HttpNetworkTransactionTest, KeepAliveEarlyClose2) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -1387,7 +1395,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, KeepAliveEarlyClose2) { |
// Test that we correctly reuse a keep-alive connection after not explicitly |
// reading the body. |
-TEST_F(HttpNetworkTransactionSpdy2Test, KeepAliveAfterUnreadBody) { |
+TEST_P(HttpNetworkTransactionTest, KeepAliveAfterUnreadBody) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.foo.com/"); |
@@ -1496,7 +1504,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, KeepAliveAfterUnreadBody) { |
// Test the request-challenge-retry sequence for basic auth. |
// (basic auth is the easiest to mock, because it has no randomness). |
-TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuth) { |
+TEST_P(HttpNetworkTransactionTest, BasicAuth) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -1591,7 +1599,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuth) { |
EXPECT_EQ(100, response->headers->GetContentLength()); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, DoNotSendAuth) { |
+TEST_P(HttpNetworkTransactionTest, DoNotSendAuth) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -1634,7 +1642,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, DoNotSendAuth) { |
// Test the request-challenge-retry sequence for basic auth, over a keep-alive |
// connection. |
-TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthKeepAlive) { |
+TEST_P(HttpNetworkTransactionTest, BasicAuthKeepAlive) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -1728,7 +1736,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthKeepAlive) { |
// Test the request-challenge-retry sequence for basic auth, over a keep-alive |
// connection and with no response body to drain. |
-TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthKeepAliveNoBody) { |
+TEST_P(HttpNetworkTransactionTest, BasicAuthKeepAliveNoBody) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -1804,7 +1812,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthKeepAliveNoBody) { |
// Test the request-challenge-retry sequence for basic auth, over a keep-alive |
// connection and with a large response body to drain. |
-TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthKeepAliveLargeBody) { |
+TEST_P(HttpNetworkTransactionTest, BasicAuthKeepAliveLargeBody) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -1888,7 +1896,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthKeepAliveLargeBody) { |
// Test the request-challenge-retry sequence for basic auth, over a keep-alive |
// connection, but the server gets impatient and closes the connection. |
-TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthKeepAliveImpatientServer) { |
+TEST_P(HttpNetworkTransactionTest, BasicAuthKeepAliveImpatientServer) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -1974,7 +1982,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthKeepAliveImpatientServer) { |
// Test the request-challenge-retry sequence for basic auth, over a connection |
// that requires a restart when setting up an SSL tunnel. |
-TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthProxyNoKeepAlive) { |
+TEST_P(HttpNetworkTransactionTest, BasicAuthProxyNoKeepAlive) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("https://www.google.com/"); |
@@ -2090,7 +2098,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthProxyNoKeepAlive) { |
// Test the request-challenge-retry sequence for basic auth, over a keep-alive |
// proxy connection, when setting up an SSL tunnel. |
-TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthProxyKeepAlive) { |
+TEST_P(HttpNetworkTransactionTest, BasicAuthProxyKeepAlive) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("https://www.google.com/"); |
@@ -2194,7 +2202,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthProxyKeepAlive) { |
// Test that we don't read the response body when we fail to establish a tunnel, |
// even if the user cancels the proxy's auth attempt. |
-TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthProxyCancelTunnel) { |
+TEST_P(HttpNetworkTransactionTest, BasicAuthProxyCancelTunnel) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("https://www.google.com/"); |
@@ -2253,7 +2261,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthProxyCancelTunnel) { |
// Test when a server (non-proxy) returns a 407 (proxy-authenticate). |
// The request should fail with ERR_UNEXPECTED_PROXY_AUTH. |
-TEST_F(HttpNetworkTransactionSpdy2Test, UnexpectedProxyAuth) { |
+TEST_P(HttpNetworkTransactionTest, UnexpectedProxyAuth) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -2298,7 +2306,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, UnexpectedProxyAuth) { |
// a non-authenticating proxy - there is nothing to indicate whether the |
// response came from the proxy or the server, so it is treated as if the proxy |
// issued the challenge. |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
HttpsServerRequestsProxyAuthThroughProxy) { |
HttpRequestInfo request; |
request.method = "GET"; |
@@ -2357,7 +2365,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
} |
// Test the load timing for HTTPS requests with an HTTP proxy. |
-TEST_F(HttpNetworkTransactionSpdy2Test, HttpProxyLoadTimingNoPacTwoRequests) { |
+TEST_P(HttpNetworkTransactionTest, HttpProxyLoadTimingNoPacTwoRequests) { |
HttpRequestInfo request1; |
request1.method = "GET"; |
request1.url = GURL("https://www.google.com/1"); |
@@ -2455,7 +2463,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpProxyLoadTimingNoPacTwoRequests) { |
} |
// Test the load timing for HTTPS requests with an HTTP proxy and a PAC script. |
-TEST_F(HttpNetworkTransactionSpdy2Test, HttpProxyLoadTimingWithPacTwoRequests) { |
+TEST_P(HttpNetworkTransactionTest, HttpProxyLoadTimingWithPacTwoRequests) { |
HttpRequestInfo request1; |
request1.method = "GET"; |
request1.url = GURL("https://www.google.com/1"); |
@@ -2554,7 +2562,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpProxyLoadTimingWithPacTwoRequests) { |
} |
// Test a simple get through an HTTPS Proxy. |
-TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxyGet) { |
+TEST_P(HttpNetworkTransactionTest, HttpsProxyGet) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -2615,7 +2623,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxyGet) { |
} |
// Test a SPDY get through an HTTPS Proxy. |
-TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyGet) { |
+TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGet) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -2633,8 +2644,8 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyGet) { |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false)); |
MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
- scoped_ptr<SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead spdy_reads[] = { |
CreateMockRead(*resp), |
CreateMockRead(*data), |
@@ -2648,7 +2659,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyGet) { |
session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
TestCompletionCallback callback1; |
@@ -2678,7 +2689,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyGet) { |
} |
// Test a SPDY get through an HTTPS Proxy. |
-TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyGetWithProxyAuth) { |
+TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGetWithProxyAuth) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -2717,14 +2731,15 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyGetWithProxyAuth) { |
"proxy-authenticate", "Basic realm=\"MyRealm1\"" |
}; |
scoped_ptr<SpdyFrame> resp_authentication( |
- ConstructSpdySynReplyError( |
+ spdy_util_.ConstructSpdySynReplyError( |
"407 Proxy Authentication Required", |
kExtraAuthenticationHeaders, arraysize(kExtraAuthenticationHeaders)/2, |
1)); |
scoped_ptr<SpdyFrame> body_authentication( |
- ConstructSpdyBodyFrame(1, true)); |
- scoped_ptr<SpdyFrame> resp_data(ConstructSpdyGetSynReply(NULL, 0, 3)); |
- scoped_ptr<SpdyFrame> body_data(ConstructSpdyBodyFrame(3, true)); |
+ spdy_util_.ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> resp_data( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); |
+ scoped_ptr<SpdyFrame> body_data(spdy_util_.ConstructSpdyBodyFrame(3, true)); |
MockRead spdy_reads[] = { |
CreateMockRead(*resp_authentication, 2), |
CreateMockRead(*body_authentication, 3), |
@@ -2739,7 +2754,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyGetWithProxyAuth) { |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
TestCompletionCallback callback1; |
@@ -2780,7 +2795,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyGetWithProxyAuth) { |
} |
// Test a SPDY CONNECT through an HTTPS Proxy to an HTTPS (non-SPDY) Server. |
-TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyConnectHttps) { |
+TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectHttps) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("https://www.google.com/"); |
@@ -2804,14 +2822,15 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyConnectHttps) { |
"Host: www.google.com\r\n" |
"Connection: keep-alive\r\n\r\n"; |
scoped_ptr<SpdyFrame> wrapped_get( |
- ConstructSpdyBodyFrame(1, get, strlen(get), false)); |
- scoped_ptr<SpdyFrame> conn_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ spdy_util_.ConstructSpdyBodyFrame(1, get, strlen(get), false)); |
+ scoped_ptr<SpdyFrame> conn_resp( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
const char resp[] = "HTTP/1.1 200 OK\r\n" |
"Content-Length: 10\r\n\r\n"; |
scoped_ptr<SpdyFrame> wrapped_get_resp( |
- ConstructSpdyBodyFrame(1, resp, strlen(resp), false)); |
+ spdy_util_.ConstructSpdyBodyFrame(1, resp, strlen(resp), false)); |
scoped_ptr<SpdyFrame> wrapped_body( |
- ConstructSpdyBodyFrame(1, "1234567890", 10, false)); |
+ spdy_util_.ConstructSpdyBodyFrame(1, "1234567890", 10, false)); |
scoped_ptr<SpdyFrame> window_update( |
spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp->size())); |
@@ -2835,7 +2854,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyConnectHttps) { |
session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
SSLSocketDataProvider ssl2(ASYNC, OK); |
ssl2.was_npn_negotiated = false; |
@@ -2865,7 +2884,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyConnectHttps) { |
} |
// Test a SPDY CONNECT through an HTTPS Proxy to a SPDY server. |
-TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyConnectSpdy) { |
+TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectSpdy) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("https://www.google.com/"); |
@@ -2887,13 +2909,17 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyConnectSpdy) { |
const char* const kMyUrl = "https://www.google.com/"; |
scoped_ptr<SpdyFrame> get( |
spdy_util_.ConstructSpdyGet(kMyUrl, false, 1, LOWEST)); |
- scoped_ptr<SpdyFrame> wrapped_get(ConstructWrappedSpdyFrame(get, 1)); |
- scoped_ptr<SpdyFrame> conn_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> get_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> wrapped_get( |
+ spdy_util_.ConstructWrappedSpdyFrame(get, 1)); |
+ scoped_ptr<SpdyFrame> conn_resp( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> get_resp( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
scoped_ptr<SpdyFrame> wrapped_get_resp( |
- ConstructWrappedSpdyFrame(get_resp, 1)); |
- scoped_ptr<SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
- scoped_ptr<SpdyFrame> wrapped_body(ConstructWrappedSpdyFrame(body, 1)); |
+ spdy_util_.ConstructWrappedSpdyFrame(get_resp, 1)); |
+ scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> wrapped_body( |
+ spdy_util_.ConstructWrappedSpdyFrame(body, 1)); |
scoped_ptr<SpdyFrame> window_update_get_resp( |
spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp->size())); |
scoped_ptr<SpdyFrame> window_update_body( |
@@ -2919,11 +2945,11 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyConnectSpdy) { |
session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
SSLSocketDataProvider ssl2(ASYNC, OK); |
- ssl2.SetNextProto(kProtoSPDY2); |
- ssl2.protocol_negotiated = kProtoSPDY2; |
+ ssl2.SetNextProto(GetParam()); |
+ ssl2.protocol_negotiated = GetParam(); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2); |
TestCompletionCallback callback1; |
@@ -2949,7 +2975,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyConnectSpdy) { |
} |
// Test a SPDY CONNECT failure through an HTTPS Proxy. |
-TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyConnectFailure) { |
+TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectFailure) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("https://www.google.com/"); |
@@ -2975,8 +3004,8 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyConnectFailure) { |
CreateMockWrite(*get, 3), |
}; |
- scoped_ptr<SpdyFrame> resp(ConstructSpdySynReplyError(1)); |
- scoped_ptr<SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdySynReplyError(1)); |
+ scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead spdy_reads[] = { |
CreateMockRead(*resp, 2, ASYNC), |
MockRead(ASYNC, 0, 4), |
@@ -2988,10 +3017,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyConnectFailure) { |
session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
SSLSocketDataProvider ssl2(ASYNC, OK); |
- ssl2.SetNextProto(kProtoSPDY2); |
+ ssl2.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2); |
TestCompletionCallback callback1; |
@@ -3007,8 +3036,11 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxySpdyConnectFailure) { |
// Test load timing in the case of two HTTPS (non-SPDY) requests through a SPDY |
// HTTPS Proxy to different servers. |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
HttpsProxySpdyConnectHttpsLoadTimingTwoRequestsTwoServers) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
// Configure against https proxy server "proxy:70". |
session_deps_.proxy_service.reset(ProxyService::CreateFixed( |
"https://proxy:70")); |
@@ -3029,28 +3061,30 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
// CONNECT to www.google.com:443 via SPDY. |
scoped_ptr<SpdyFrame> connect1(spdy_util_.ConstructSpdyConnect(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> conn_resp1(ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> conn_resp1( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
// Fetch https://www.google.com/ via HTTP. |
const char get1[] = "GET / HTTP/1.1\r\n" |
"Host: www.google.com\r\n" |
"Connection: keep-alive\r\n\r\n"; |
scoped_ptr<SpdyFrame> wrapped_get1( |
- ConstructSpdyBodyFrame(1, get1, strlen(get1), false)); |
+ spdy_util_.ConstructSpdyBodyFrame(1, get1, strlen(get1), false)); |
const char resp1[] = "HTTP/1.1 200 OK\r\n" |
"Content-Length: 1\r\n\r\n"; |
scoped_ptr<SpdyFrame> wrapped_get_resp1( |
- ConstructSpdyBodyFrame(1, resp1, strlen(resp1), false)); |
- scoped_ptr<SpdyFrame> wrapped_body1(ConstructSpdyBodyFrame(1, "1", 1, false)); |
+ spdy_util_.ConstructSpdyBodyFrame(1, resp1, strlen(resp1), false)); |
+ scoped_ptr<SpdyFrame> wrapped_body1( |
+ spdy_util_.ConstructSpdyBodyFrame(1, "1", 1, false)); |
scoped_ptr<SpdyFrame> window_update( |
spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp1->size())); |
// CONNECT to news.google.com:443 via SPDY. |
const char* const kConnectHeaders2[] = { |
- "method", "CONNECT", |
- "url", "news.google.com:443", |
- "host", "news.google.com", |
- "version", "HTTP/1.1", |
+ spdy_util_.GetMethodKey(), "CONNECT", |
+ spdy_util_.GetPathKey(), "news.google.com:443", |
+ spdy_util_.GetHostKey(), "news.google.com", |
+ spdy_util_.GetVersionKey(), "HTTP/1.1", |
}; |
scoped_ptr<SpdyFrame> connect2( |
spdy_util_.ConstructSpdyControlFrame(NULL, |
@@ -3063,20 +3097,21 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
kConnectHeaders2, |
arraysize(kConnectHeaders2), |
0)); |
- scoped_ptr<SpdyFrame> conn_resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); |
+ scoped_ptr<SpdyFrame> conn_resp2( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); |
// Fetch https://news.google.com/ via HTTP. |
const char get2[] = "GET / HTTP/1.1\r\n" |
"Host: news.google.com\r\n" |
"Connection: keep-alive\r\n\r\n"; |
scoped_ptr<SpdyFrame> wrapped_get2( |
- ConstructSpdyBodyFrame(3, get2, strlen(get2), false)); |
+ spdy_util_.ConstructSpdyBodyFrame(3, get2, strlen(get2), false)); |
const char resp2[] = "HTTP/1.1 200 OK\r\n" |
"Content-Length: 2\r\n\r\n"; |
scoped_ptr<SpdyFrame> wrapped_get_resp2( |
- ConstructSpdyBodyFrame(3, resp2, strlen(resp2), false)); |
+ spdy_util_.ConstructSpdyBodyFrame(3, resp2, strlen(resp2), false)); |
scoped_ptr<SpdyFrame> wrapped_body2( |
- ConstructSpdyBodyFrame(3, "22", 2, false)); |
+ spdy_util_.ConstructSpdyBodyFrame(3, "22", 2, false)); |
MockWrite spdy_writes[] = { |
CreateMockWrite(*connect1, 0), |
@@ -3101,7 +3136,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
session_deps_.deterministic_socket_factory->AddSocketDataProvider(&spdy_data); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); |
SSLSocketDataProvider ssl2(ASYNC, OK); |
ssl2.was_npn_negotiated = false; |
@@ -3162,8 +3197,11 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
// Test load timing in the case of two HTTPS (non-SPDY) requests through a SPDY |
// HTTPS Proxy to the same server. |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
HttpsProxySpdyConnectHttpsLoadTimingTwoRequestsSameServer) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
// Configure against https proxy server "proxy:70". |
session_deps_.proxy_service.reset(ProxyService::CreateFixed( |
"https://proxy:70")); |
@@ -3184,19 +3222,21 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
// CONNECT to www.google.com:443 via SPDY. |
scoped_ptr<SpdyFrame> connect1(spdy_util_.ConstructSpdyConnect(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> conn_resp1(ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> conn_resp1( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
// Fetch https://www.google.com/ via HTTP. |
const char get1[] = "GET / HTTP/1.1\r\n" |
"Host: www.google.com\r\n" |
"Connection: keep-alive\r\n\r\n"; |
scoped_ptr<SpdyFrame> wrapped_get1( |
- ConstructSpdyBodyFrame(1, get1, strlen(get1), false)); |
+ spdy_util_.ConstructSpdyBodyFrame(1, get1, strlen(get1), false)); |
const char resp1[] = "HTTP/1.1 200 OK\r\n" |
"Content-Length: 1\r\n\r\n"; |
scoped_ptr<SpdyFrame> wrapped_get_resp1( |
- ConstructSpdyBodyFrame(1, resp1, strlen(resp1), false)); |
- scoped_ptr<SpdyFrame> wrapped_body1(ConstructSpdyBodyFrame(1, "1", 1, false)); |
+ spdy_util_.ConstructSpdyBodyFrame(1, resp1, strlen(resp1), false)); |
+ scoped_ptr<SpdyFrame> wrapped_body1( |
+ spdy_util_.ConstructSpdyBodyFrame(1, "1", 1, false)); |
scoped_ptr<SpdyFrame> window_update( |
spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp1->size())); |
@@ -3205,13 +3245,13 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
"Host: www.google.com\r\n" |
"Connection: keep-alive\r\n\r\n"; |
scoped_ptr<SpdyFrame> wrapped_get2( |
- ConstructSpdyBodyFrame(1, get2, strlen(get2), false)); |
+ spdy_util_.ConstructSpdyBodyFrame(1, get2, strlen(get2), false)); |
const char resp2[] = "HTTP/1.1 200 OK\r\n" |
"Content-Length: 2\r\n\r\n"; |
scoped_ptr<SpdyFrame> wrapped_get_resp2( |
- ConstructSpdyBodyFrame(1, resp2, strlen(resp2), false)); |
+ spdy_util_.ConstructSpdyBodyFrame(1, resp2, strlen(resp2), false)); |
scoped_ptr<SpdyFrame> wrapped_body2( |
- ConstructSpdyBodyFrame(1, "22", 2, false)); |
+ spdy_util_.ConstructSpdyBodyFrame(1, "22", 2, false)); |
MockWrite spdy_writes[] = { |
CreateMockWrite(*connect1, 0), |
@@ -3234,7 +3274,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
session_deps_.deterministic_socket_factory->AddSocketDataProvider(&spdy_data); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); |
SSLSocketDataProvider ssl2(ASYNC, OK); |
ssl2.was_npn_negotiated = false; |
@@ -3290,8 +3330,11 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
// Test load timing in the case of of two HTTP requests through a SPDY HTTPS |
// Proxy to different servers. |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
HttpsProxySpdyLoadTimingTwoHttpRequests) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
// Configure against https proxy server "proxy:70". |
session_deps_.proxy_service.reset(ProxyService::CreateFixed( |
"https://proxy:70")); |
@@ -3311,32 +3354,24 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
request2.load_flags = 0; |
// http://www.google.com/ |
- const char* const headers1[] = { |
- "method", "GET", |
- "url", "http://www.google.com/", |
- "host", "www.google.com", |
- "scheme", "http", |
- "version", "HTTP/1.1" |
- }; |
+ scoped_ptr<SpdyHeaderBlock> headers( |
+ spdy_util_.ConstructGetHeaderBlockForProxy("http://www.google.com/")); |
scoped_ptr<SpdyFrame> get1(spdy_util_.ConstructSpdyControlFrame( |
- NULL, 0, false, 1, LOWEST, SYN_STREAM, CONTROL_FLAG_FIN, |
- headers1, arraysize(headers1), 0)); |
- scoped_ptr<SpdyFrame> get_resp1(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> body1(ConstructSpdyBodyFrame(1, "1", 1, true)); |
+ headers.Pass(), false, 1, LOWEST, SYN_STREAM, CONTROL_FLAG_FIN, 0)); |
+ scoped_ptr<SpdyFrame> get_resp1( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> body1( |
+ spdy_util_.ConstructSpdyBodyFrame(1, "1", 1, true)); |
// http://news.google.com/ |
- const char* const headers2[] = { |
- "method", "GET", |
- "url", "http://news.google.com/", |
- "host", "news.google.com", |
- "scheme", "http", |
- "version", "HTTP/1.1" |
- }; |
+ scoped_ptr<SpdyHeaderBlock> headers2( |
+ spdy_util_.ConstructGetHeaderBlockForProxy("http://news.google.com/")); |
scoped_ptr<SpdyFrame> get2(spdy_util_.ConstructSpdyControlFrame( |
- NULL, 0, false, 3, LOWEST, SYN_STREAM, CONTROL_FLAG_FIN, |
- headers2, arraysize(headers2), 0)); |
- scoped_ptr<SpdyFrame> get_resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); |
- scoped_ptr<SpdyFrame> body2(ConstructSpdyBodyFrame(3, "22", 2, true)); |
+ headers2.Pass(), false, 3, LOWEST, SYN_STREAM, CONTROL_FLAG_FIN, 0)); |
+ scoped_ptr<SpdyFrame> get_resp2( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); |
+ scoped_ptr<SpdyFrame> body2( |
+ spdy_util_.ConstructSpdyBodyFrame(3, "22", 2, true)); |
MockWrite spdy_writes[] = { |
CreateMockWrite(*get1, 0), |
@@ -3357,7 +3392,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
session_deps_.deterministic_socket_factory->AddSocketDataProvider(&spdy_data); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); |
TestCompletionCallback callback; |
@@ -3411,7 +3446,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
} |
// Test the challenge-response-retry sequence through an HTTPS Proxy |
-TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxyAuthRetry) { |
+TEST_P(HttpNetworkTransactionTest, HttpsProxyAuthRetry) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -3509,7 +3544,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HttpsProxyAuthRetry) { |
EXPECT_TRUE(response->auth_challenge.get() == NULL); |
} |
-void HttpNetworkTransactionSpdy2Test::ConnectStatusHelperWithExpectedStatus( |
+void HttpNetworkTransactionTest::ConnectStatusHelperWithExpectedStatus( |
const MockRead& status, int expected_status) { |
HttpRequestInfo request; |
request.method = "GET"; |
@@ -3551,180 +3586,180 @@ void HttpNetworkTransactionSpdy2Test::ConnectStatusHelperWithExpectedStatus( |
EXPECT_EQ(expected_status, rv); |
} |
-void HttpNetworkTransactionSpdy2Test::ConnectStatusHelper( |
+void HttpNetworkTransactionTest::ConnectStatusHelper( |
const MockRead& status) { |
ConnectStatusHelperWithExpectedStatus( |
status, ERR_TUNNEL_CONNECTION_FAILED); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus100) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus100) { |
ConnectStatusHelper(MockRead("HTTP/1.1 100 Continue\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus101) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus101) { |
ConnectStatusHelper(MockRead("HTTP/1.1 101 Switching Protocols\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus201) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus201) { |
ConnectStatusHelper(MockRead("HTTP/1.1 201 Created\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus202) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus202) { |
ConnectStatusHelper(MockRead("HTTP/1.1 202 Accepted\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus203) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus203) { |
ConnectStatusHelper( |
MockRead("HTTP/1.1 203 Non-Authoritative Information\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus204) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus204) { |
ConnectStatusHelper(MockRead("HTTP/1.1 204 No Content\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus205) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus205) { |
ConnectStatusHelper(MockRead("HTTP/1.1 205 Reset Content\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus206) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus206) { |
ConnectStatusHelper(MockRead("HTTP/1.1 206 Partial Content\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus300) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus300) { |
ConnectStatusHelper(MockRead("HTTP/1.1 300 Multiple Choices\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus301) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus301) { |
ConnectStatusHelper(MockRead("HTTP/1.1 301 Moved Permanently\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus302) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus302) { |
ConnectStatusHelper(MockRead("HTTP/1.1 302 Found\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus303) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus303) { |
ConnectStatusHelper(MockRead("HTTP/1.1 303 See Other\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus304) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus304) { |
ConnectStatusHelper(MockRead("HTTP/1.1 304 Not Modified\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus305) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus305) { |
ConnectStatusHelper(MockRead("HTTP/1.1 305 Use Proxy\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus306) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus306) { |
ConnectStatusHelper(MockRead("HTTP/1.1 306\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus307) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus307) { |
ConnectStatusHelper(MockRead("HTTP/1.1 307 Temporary Redirect\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus400) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus400) { |
ConnectStatusHelper(MockRead("HTTP/1.1 400 Bad Request\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus401) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus401) { |
ConnectStatusHelper(MockRead("HTTP/1.1 401 Unauthorized\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus402) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus402) { |
ConnectStatusHelper(MockRead("HTTP/1.1 402 Payment Required\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus403) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus403) { |
ConnectStatusHelper(MockRead("HTTP/1.1 403 Forbidden\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus404) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus404) { |
ConnectStatusHelper(MockRead("HTTP/1.1 404 Not Found\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus405) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus405) { |
ConnectStatusHelper(MockRead("HTTP/1.1 405 Method Not Allowed\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus406) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus406) { |
ConnectStatusHelper(MockRead("HTTP/1.1 406 Not Acceptable\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus407) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus407) { |
ConnectStatusHelperWithExpectedStatus( |
MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), |
ERR_PROXY_AUTH_UNSUPPORTED); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus408) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus408) { |
ConnectStatusHelper(MockRead("HTTP/1.1 408 Request Timeout\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus409) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus409) { |
ConnectStatusHelper(MockRead("HTTP/1.1 409 Conflict\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus410) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus410) { |
ConnectStatusHelper(MockRead("HTTP/1.1 410 Gone\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus411) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus411) { |
ConnectStatusHelper(MockRead("HTTP/1.1 411 Length Required\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus412) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus412) { |
ConnectStatusHelper(MockRead("HTTP/1.1 412 Precondition Failed\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus413) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus413) { |
ConnectStatusHelper(MockRead("HTTP/1.1 413 Request Entity Too Large\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus414) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus414) { |
ConnectStatusHelper(MockRead("HTTP/1.1 414 Request-URI Too Long\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus415) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus415) { |
ConnectStatusHelper(MockRead("HTTP/1.1 415 Unsupported Media Type\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus416) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus416) { |
ConnectStatusHelper( |
MockRead("HTTP/1.1 416 Requested Range Not Satisfiable\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus417) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus417) { |
ConnectStatusHelper(MockRead("HTTP/1.1 417 Expectation Failed\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus500) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus500) { |
ConnectStatusHelper(MockRead("HTTP/1.1 500 Internal Server Error\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus501) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus501) { |
ConnectStatusHelper(MockRead("HTTP/1.1 501 Not Implemented\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus502) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus502) { |
ConnectStatusHelper(MockRead("HTTP/1.1 502 Bad Gateway\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus503) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus503) { |
ConnectStatusHelper(MockRead("HTTP/1.1 503 Service Unavailable\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus504) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus504) { |
ConnectStatusHelper(MockRead("HTTP/1.1 504 Gateway Timeout\r\n")); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectStatus505) { |
+TEST_P(HttpNetworkTransactionTest, ConnectStatus505) { |
ConnectStatusHelper(MockRead("HTTP/1.1 505 HTTP Version Not Supported\r\n")); |
} |
// Test the flow when both the proxy server AND origin server require |
// authentication. Again, this uses basic auth for both since that is |
// the simplest to mock. |
-TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthProxyThenServer) { |
+TEST_P(HttpNetworkTransactionTest, BasicAuthProxyThenServer) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -3853,7 +3888,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthProxyThenServer) { |
// bytes in the debugger. |
// Enter the correct password and authenticate successfully. |
-TEST_F(HttpNetworkTransactionSpdy2Test, NTLMAuth1) { |
+TEST_P(HttpNetworkTransactionTest, NTLMAuth1) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://172.22.68.17/kids/login.aspx"); |
@@ -3982,7 +4017,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, NTLMAuth1) { |
} |
// Enter a wrong password, and then the correct one. |
-TEST_F(HttpNetworkTransactionSpdy2Test, NTLMAuth2) { |
+TEST_P(HttpNetworkTransactionTest, NTLMAuth2) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://172.22.68.17/kids/login.aspx"); |
@@ -4184,7 +4219,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, NTLMAuth2) { |
// Test reading a server response which has only headers, and no body. |
// After some maximum number of bytes is consumed, the transaction should |
// fail with ERR_RESPONSE_HEADERS_TOO_BIG. |
-TEST_F(HttpNetworkTransactionSpdy2Test, LargeHeadersNoBody) { |
+TEST_P(HttpNetworkTransactionTest, LargeHeadersNoBody) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -4222,7 +4257,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, LargeHeadersNoBody) { |
// Make sure that we don't try to reuse a TCPClientSocket when failing to |
// establish tunnel. |
// http://code.google.com/p/chromium/issues/detail?id=3772 |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
DontRecycleTransportSocketForSSLTunnel) { |
HttpRequestInfo request; |
request.method = "GET"; |
@@ -4282,7 +4317,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
} |
// Make sure that we recycle a socket after reading all of the response body. |
-TEST_F(HttpNetworkTransactionSpdy2Test, RecycleSocket) { |
+TEST_P(HttpNetworkTransactionTest, RecycleSocket) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -4338,7 +4373,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, RecycleSocket) { |
// Make sure that we recycle a SSL socket after reading all of the response |
// body. |
-TEST_F(HttpNetworkTransactionSpdy2Test, RecycleSSLSocket) { |
+TEST_P(HttpNetworkTransactionTest, RecycleSSLSocket) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("https://www.google.com/"); |
@@ -4397,7 +4432,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, RecycleSSLSocket) { |
// Grab a SSL socket, use it, and put it back into the pool. Then, reuse it |
// from the pool and make sure that we recover okay. |
-TEST_F(HttpNetworkTransactionSpdy2Test, RecycleDeadSSLSocket) { |
+TEST_P(HttpNetworkTransactionTest, RecycleDeadSSLSocket) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("https://www.google.com/"); |
@@ -4492,7 +4527,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, RecycleDeadSSLSocket) { |
// Make sure that we recycle a socket after a zero-length response. |
// http://crbug.com/9880 |
-TEST_F(HttpNetworkTransactionSpdy2Test, RecycleSocketAfterZeroContentLength) { |
+TEST_P(HttpNetworkTransactionTest, RecycleSocketAfterZeroContentLength) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/csi?v=3&s=web&action=&" |
@@ -4547,7 +4582,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, RecycleSocketAfterZeroContentLength) { |
EXPECT_EQ(1, GetIdleSocketCountInTransportSocketPool(session.get())); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ResendRequestOnWriteBodyError) { |
+TEST_P(HttpNetworkTransactionTest, ResendRequestOnWriteBodyError) { |
ScopedVector<UploadElementReader> element_readers; |
element_readers.push_back(new UploadBytesElementReader("foo", 3)); |
UploadDataStream upload_data_stream(&element_readers, 0); |
@@ -4639,7 +4674,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ResendRequestOnWriteBodyError) { |
// Test the request-challenge-retry sequence for basic auth when there is |
// an identity in the URL. The request should be sent as normal, but when |
// it fails the identity from the URL is used to answer the challenge. |
-TEST_F(HttpNetworkTransactionSpdy2Test, AuthIdentityInURL) { |
+TEST_P(HttpNetworkTransactionTest, AuthIdentityInURL) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://foo:b@r@www.google.com/"); |
@@ -4717,7 +4752,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, AuthIdentityInURL) { |
// Test the request-challenge-retry sequence for basic auth when there is an |
// incorrect identity in the URL. The identity from the URL should be used only |
// once. |
-TEST_F(HttpNetworkTransactionSpdy2Test, WrongAuthIdentityInURL) { |
+TEST_P(HttpNetworkTransactionTest, WrongAuthIdentityInURL) { |
HttpRequestInfo request; |
request.method = "GET"; |
// Note: the URL has a username:password in it. The password "baz" is |
@@ -4825,7 +4860,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, WrongAuthIdentityInURL) { |
} |
// Test that previously tried username/passwords for a realm get re-used. |
-TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthCacheAndPreauth) { |
+TEST_P(HttpNetworkTransactionTest, BasicAuthCacheAndPreauth) { |
scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
// Transaction 1: authenticate (foo, bar) on MyRealm1 |
@@ -5209,7 +5244,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthCacheAndPreauth) { |
// Tests that nonce count increments when multiple auth attempts |
// are started with the same nonce. |
-TEST_F(HttpNetworkTransactionSpdy2Test, DigestPreAuthNonceCount) { |
+TEST_P(HttpNetworkTransactionTest, DigestPreAuthNonceCount) { |
HttpAuthHandlerDigest::Factory* digest_factory = |
new HttpAuthHandlerDigest::Factory(); |
HttpAuthHandlerDigest::FixedNonceGenerator* nonce_generator = |
@@ -5343,7 +5378,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, DigestPreAuthNonceCount) { |
} |
// Test the ResetStateForRestart() private method. |
-TEST_F(HttpNetworkTransactionSpdy2Test, ResetStateForRestart) { |
+TEST_P(HttpNetworkTransactionTest, ResetStateForRestart) { |
// Create a transaction (the dependencies aren't important). |
scoped_ptr<HttpNetworkTransaction> trans( |
new HttpNetworkTransaction(DEFAULT_PRIORITY, |
@@ -5386,7 +5421,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ResetStateForRestart) { |
} |
// Test HTTPS connections to a site with a bad certificate |
-TEST_F(HttpNetworkTransactionSpdy2Test, HTTPSBadCertificate) { |
+TEST_P(HttpNetworkTransactionTest, HTTPSBadCertificate) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("https://www.google.com/"); |
@@ -5442,7 +5477,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HTTPSBadCertificate) { |
// Test HTTPS connections to a site with a bad certificate, going through a |
// proxy |
-TEST_F(HttpNetworkTransactionSpdy2Test, HTTPSBadCertificateViaProxy) { |
+TEST_P(HttpNetworkTransactionTest, HTTPSBadCertificateViaProxy) { |
session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); |
HttpRequestInfo request; |
@@ -5521,7 +5556,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HTTPSBadCertificateViaProxy) { |
// Test HTTPS connections to a site, going through an HTTPS proxy |
-TEST_F(HttpNetworkTransactionSpdy2Test, HTTPSViaHttpsProxy) { |
+TEST_P(HttpNetworkTransactionTest, HTTPSViaHttpsProxy) { |
session_deps_.proxy_service.reset( |
ProxyService::CreateFixedFromPacResult("HTTPS proxy:70")); |
CapturingNetLog net_log; |
@@ -5585,7 +5620,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HTTPSViaHttpsProxy) { |
} |
// Test an HTTPS Proxy's ability to redirect a CONNECT request |
-TEST_F(HttpNetworkTransactionSpdy2Test, RedirectOfHttpsConnectViaHttpsProxy) { |
+TEST_P(HttpNetworkTransactionTest, RedirectOfHttpsConnectViaHttpsProxy) { |
session_deps_.proxy_service.reset( |
ProxyService::CreateFixedFromPacResult("HTTPS proxy:70")); |
CapturingNetLog net_log; |
@@ -5661,7 +5696,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, RedirectOfHttpsConnectViaHttpsProxy) { |
} |
// Test an HTTPS (SPDY) Proxy's ability to redirect a CONNECT request |
-TEST_F(HttpNetworkTransactionSpdy2Test, RedirectOfHttpsConnectViaSpdyProxy) { |
+TEST_P(HttpNetworkTransactionTest, RedirectOfHttpsConnectViaSpdyProxy) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
session_deps_.proxy_service.reset( |
ProxyService::CreateFixed("https://proxy:70")); |
@@ -5682,7 +5720,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, RedirectOfHttpsConnectViaSpdyProxy) { |
"http://login.example.com/", |
}; |
scoped_ptr<SpdyFrame> resp( |
- ConstructSpdySynReplyError("302 Redirect", kExtraHeaders, |
+ spdy_util_.ConstructSpdySynReplyError("302 Redirect", kExtraHeaders, |
arraysize(kExtraHeaders)/2, 1)); |
MockRead data_reads[] = { |
CreateMockRead(*resp.get(), 1, SYNCHRONOUS), |
@@ -5694,7 +5732,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, RedirectOfHttpsConnectViaSpdyProxy) { |
data_reads, arraysize(data_reads), |
data_writes, arraysize(data_writes)); |
SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy |
- proxy_ssl.SetNextProto(kProtoSPDY2); |
+ proxy_ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy_ssl); |
@@ -5721,7 +5759,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, RedirectOfHttpsConnectViaSpdyProxy) { |
} |
// Test that an HTTPS proxy's response to a CONNECT request is filtered. |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
ErrorResponseToHttpsConnectViaHttpsProxy) { |
session_deps_.proxy_service.reset( |
ProxyService::CreateFixed("https://proxy:70")); |
@@ -5767,8 +5805,11 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
} |
// Test that a SPDY proxy's response to a CONNECT request is filtered. |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
ErrorResponseToHttpsConnectViaSpdyProxy) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
session_deps_.proxy_service.reset( |
ProxyService::CreateFixed("https://proxy:70")); |
@@ -5790,10 +5831,11 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
"http://login.example.com/", |
}; |
scoped_ptr<SpdyFrame> resp( |
- ConstructSpdySynReplyError("404 Not Found", kExtraHeaders, |
+ spdy_util_.ConstructSpdySynReplyError("404 Not Found", kExtraHeaders, |
arraysize(kExtraHeaders)/2, 1)); |
scoped_ptr<SpdyFrame> body( |
- ConstructSpdyBodyFrame(1, "The host does not exist", 23, true)); |
+ spdy_util_.ConstructSpdyBodyFrame( |
+ 1, "The host does not exist", 23, true)); |
MockRead data_reads[] = { |
CreateMockRead(*resp.get(), 1, SYNCHRONOUS), |
CreateMockRead(*body.get(), 2, SYNCHRONOUS), |
@@ -5805,7 +5847,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
data_reads, arraysize(data_reads), |
data_writes, arraysize(data_writes)); |
SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy |
- proxy_ssl.SetNextProto(kProtoSPDY2); |
+ proxy_ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy_ssl); |
@@ -5827,7 +5869,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
// Test the request-challenge-retry sequence for basic auth, through |
// a SPDY proxy over a single SPDY session. |
-TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthSpdyProxy) { |
+TEST_P(HttpNetworkTransactionTest, BasicAuthSpdyProxy) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("https://www.google.com/"); |
@@ -5858,7 +5903,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthSpdyProxy) { |
"Host: www.google.com\r\n" |
"Connection: keep-alive\r\n\r\n"; |
scoped_ptr<SpdyFrame> wrapped_get( |
- ConstructSpdyBodyFrame(3, get, strlen(get), false)); |
+ spdy_util_.ConstructSpdyBodyFrame(3, get, strlen(get), false)); |
MockWrite spdy_writes[] = { |
CreateMockWrite(*req, 1, ASYNC), |
@@ -5870,8 +5915,8 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthSpdyProxy) { |
// The proxy responds to the connect with a 407, using a persistent |
// connection. |
const char* const kAuthChallenge[] = { |
- "status", "407 Proxy Authentication Required", |
- "version", "HTTP/1.1", |
+ spdy_util_.GetStatusKey(), "407 Proxy Authentication Required", |
+ spdy_util_.GetVersionKey(), "HTTP/1.1", |
"proxy-authenticate", "Basic realm=\"MyRealm1\"", |
}; |
@@ -5887,14 +5932,15 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthSpdyProxy) { |
arraysize(kAuthChallenge), |
0)); |
- scoped_ptr<SpdyFrame> conn_resp(ConstructSpdyGetSynReply(NULL, 0, 3)); |
+ scoped_ptr<SpdyFrame> conn_resp( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); |
const char resp[] = "HTTP/1.1 200 OK\r\n" |
"Content-Length: 5\r\n\r\n"; |
scoped_ptr<SpdyFrame> wrapped_get_resp( |
- ConstructSpdyBodyFrame(3, resp, strlen(resp), false)); |
+ spdy_util_.ConstructSpdyBodyFrame(3, resp, strlen(resp), false)); |
scoped_ptr<SpdyFrame> wrapped_body( |
- ConstructSpdyBodyFrame(3, "hello", 5, false)); |
+ spdy_util_.ConstructSpdyBodyFrame(3, "hello", 5, false)); |
MockRead spdy_reads[] = { |
CreateMockRead(*conn_auth_resp, 2, ASYNC), |
CreateMockRead(*conn_resp, 6, ASYNC), |
@@ -5909,7 +5955,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthSpdyProxy) { |
session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); |
// Negotiate SPDY to the proxy |
SSLSocketDataProvider proxy(ASYNC, OK); |
- proxy.SetNextProto(kProtoSPDY2); |
+ proxy.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); |
// Vanilla SSL to the server |
SSLSocketDataProvider server(ASYNC, OK); |
@@ -5974,7 +6020,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BasicAuthSpdyProxy) { |
// Test that an explicitly trusted SPDY proxy can push a resource from an |
// origin that is different from that of its associated resource. |
-TEST_F(HttpNetworkTransactionSpdy2Test, CrossOriginProxyPush) { |
+TEST_P(HttpNetworkTransactionTest, CrossOriginProxyPush) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
HttpRequestInfo request; |
HttpRequestInfo push_request; |
@@ -6008,13 +6057,13 @@ TEST_F(HttpNetworkTransactionSpdy2Test, CrossOriginProxyPush) { |
}; |
scoped_ptr<SpdyFrame> |
- stream1_reply(ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ stream1_reply(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
scoped_ptr<SpdyFrame> |
- stream1_body(ConstructSpdyBodyFrame(1, true)); |
+ stream1_body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
scoped_ptr<SpdyFrame> |
- stream2_syn(ConstructSpdyPush(NULL, |
+ stream2_syn(spdy_util_.ConstructSpdyPush(NULL, |
0, |
2, |
1, |
@@ -6035,7 +6084,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, CrossOriginProxyPush) { |
session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); |
// Negotiate SPDY to the proxy |
SSLSocketDataProvider proxy(ASYNC, OK); |
- proxy.SetNextProto(kProtoSPDY2); |
+ proxy.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); |
scoped_ptr<HttpTransaction> trans( |
@@ -6095,7 +6144,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, CrossOriginProxyPush) { |
} |
// Test that an explicitly trusted SPDY proxy cannot push HTTPS content. |
-TEST_F(HttpNetworkTransactionSpdy2Test, CrossOriginProxyPushCorrectness) { |
+TEST_P(HttpNetworkTransactionTest, CrossOriginProxyPushCorrectness) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
HttpRequestInfo request; |
request.method = "GET"; |
@@ -6124,13 +6176,13 @@ TEST_F(HttpNetworkTransactionSpdy2Test, CrossOriginProxyPushCorrectness) { |
}; |
scoped_ptr<SpdyFrame> |
- stream1_reply(ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ stream1_reply(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
scoped_ptr<SpdyFrame> |
- stream1_body(ConstructSpdyBodyFrame(1, true)); |
+ stream1_body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
scoped_ptr<SpdyFrame> |
- stream2_syn(ConstructSpdyPush(NULL, |
+ stream2_syn(spdy_util_.ConstructSpdyPush(NULL, |
0, |
2, |
1, |
@@ -6149,7 +6201,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, CrossOriginProxyPushCorrectness) { |
session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); |
// Negotiate SPDY to the proxy |
SSLSocketDataProvider proxy(ASYNC, OK); |
- proxy.SetNextProto(kProtoSPDY2); |
+ proxy.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); |
scoped_ptr<HttpTransaction> trans( |
@@ -6179,7 +6231,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, CrossOriginProxyPushCorrectness) { |
// Test HTTPS connections to a site with a bad certificate, going through an |
// HTTPS proxy |
-TEST_F(HttpNetworkTransactionSpdy2Test, HTTPSBadCertificateViaHttpsProxy) { |
+TEST_P(HttpNetworkTransactionTest, HTTPSBadCertificateViaHttpsProxy) { |
session_deps_.proxy_service.reset(ProxyService::CreateFixed( |
"https://proxy:70")); |
@@ -6260,7 +6312,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HTTPSBadCertificateViaHttpsProxy) { |
EXPECT_EQ(100, response->headers->GetContentLength()); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_UserAgent) { |
+TEST_P(HttpNetworkTransactionTest, BuildRequest_UserAgent) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -6299,7 +6351,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_UserAgent) { |
EXPECT_EQ(OK, rv); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_UserAgentOverTunnel) { |
+TEST_P(HttpNetworkTransactionTest, BuildRequest_UserAgentOverTunnel) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("https://www.google.com/"); |
@@ -6338,7 +6390,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_UserAgentOverTunnel) { |
EXPECT_EQ(OK, rv); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_Referer) { |
+TEST_P(HttpNetworkTransactionTest, BuildRequest_Referer) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -6378,7 +6430,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_Referer) { |
EXPECT_EQ(OK, rv); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_PostContentLengthZero) { |
+TEST_P(HttpNetworkTransactionTest, BuildRequest_PostContentLengthZero) { |
HttpRequestInfo request; |
request.method = "POST"; |
request.url = GURL("http://www.google.com/"); |
@@ -6415,7 +6467,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_PostContentLengthZero) { |
EXPECT_EQ(OK, rv); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_PutContentLengthZero) { |
+TEST_P(HttpNetworkTransactionTest, BuildRequest_PutContentLengthZero) { |
HttpRequestInfo request; |
request.method = "PUT"; |
request.url = GURL("http://www.google.com/"); |
@@ -6452,7 +6504,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_PutContentLengthZero) { |
EXPECT_EQ(OK, rv); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_HeadContentLengthZero) { |
+TEST_P(HttpNetworkTransactionTest, BuildRequest_HeadContentLengthZero) { |
HttpRequestInfo request; |
request.method = "HEAD"; |
request.url = GURL("http://www.google.com/"); |
@@ -6489,7 +6541,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_HeadContentLengthZero) { |
EXPECT_EQ(OK, rv); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_CacheControlNoCache) { |
+TEST_P(HttpNetworkTransactionTest, BuildRequest_CacheControlNoCache) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -6528,7 +6580,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_CacheControlNoCache) { |
EXPECT_EQ(OK, rv); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
BuildRequest_CacheControlValidateCache) { |
HttpRequestInfo request; |
request.method = "GET"; |
@@ -6567,7 +6619,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
EXPECT_EQ(OK, rv); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_ExtraHeaders) { |
+TEST_P(HttpNetworkTransactionTest, BuildRequest_ExtraHeaders) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -6605,7 +6657,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_ExtraHeaders) { |
EXPECT_EQ(OK, rv); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_ExtraHeadersStripped) { |
+TEST_P(HttpNetworkTransactionTest, BuildRequest_ExtraHeadersStripped) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -6647,7 +6699,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, BuildRequest_ExtraHeadersStripped) { |
EXPECT_EQ(OK, rv); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, SOCKS4_HTTP_GET) { |
+TEST_P(HttpNetworkTransactionTest, SOCKS4_HTTP_GET) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -6706,7 +6758,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, SOCKS4_HTTP_GET) { |
EXPECT_EQ("Payload", response_text); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, SOCKS4_SSL_GET) { |
+TEST_P(HttpNetworkTransactionTest, SOCKS4_SSL_GET) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("https://www.google.com/"); |
@@ -6770,7 +6822,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, SOCKS4_SSL_GET) { |
EXPECT_EQ("Payload", response_text); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, SOCKS4_HTTP_GET_no_PAC) { |
+TEST_P(HttpNetworkTransactionTest, SOCKS4_HTTP_GET_no_PAC) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -6829,7 +6881,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, SOCKS4_HTTP_GET_no_PAC) { |
EXPECT_EQ("Payload", response_text); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, SOCKS5_HTTP_GET) { |
+TEST_P(HttpNetworkTransactionTest, SOCKS5_HTTP_GET) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -6902,7 +6954,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, SOCKS5_HTTP_GET) { |
EXPECT_EQ("Payload", response_text); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, SOCKS5_SSL_GET) { |
+TEST_P(HttpNetworkTransactionTest, SOCKS5_SSL_GET) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("https://www.google.com/"); |
@@ -7023,7 +7075,7 @@ int GroupNameTransactionHelper( |
} // namespace |
-TEST_F(HttpNetworkTransactionSpdy2Test, GroupNameForDirectConnections) { |
+TEST_P(HttpNetworkTransactionTest, GroupNameForDirectConnections) { |
const GroupNameTest tests[] = { |
{ |
"", // unused |
@@ -7090,7 +7142,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, GroupNameForDirectConnections) { |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, GroupNameForHTTPProxyConnections) { |
+TEST_P(HttpNetworkTransactionTest, GroupNameForHTTPProxyConnections) { |
const GroupNameTest tests[] = { |
{ |
"http_proxy", |
@@ -7155,7 +7207,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, GroupNameForHTTPProxyConnections) { |
} |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, GroupNameForSOCKSConnections) { |
+TEST_P(HttpNetworkTransactionTest, GroupNameForSOCKSConnections) { |
const GroupNameTest tests[] = { |
{ |
"socks4://socks_proxy:1080", |
@@ -7228,7 +7280,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, GroupNameForSOCKSConnections) { |
} |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, ReconsiderProxyAfterFailedConnection) { |
+TEST_P(HttpNetworkTransactionTest, ReconsiderProxyAfterFailedConnection) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -7255,7 +7307,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ReconsiderProxyAfterFailedConnection) { |
// Base test to make sure that when the load flags for a request specify to |
// bypass the cache, the DNS cache is not used. |
-void HttpNetworkTransactionSpdy2Test::BypassHostCacheOnRefreshHelper( |
+void HttpNetworkTransactionTest::BypassHostCacheOnRefreshHelper( |
int load_flags) { |
// Issue a request, asking to bypass the cache(s). |
HttpRequestInfo request; |
@@ -7309,20 +7361,20 @@ void HttpNetworkTransactionSpdy2Test::BypassHostCacheOnRefreshHelper( |
// There are multiple load flags that should trigger the host cache bypass. |
// Test each in isolation: |
-TEST_F(HttpNetworkTransactionSpdy2Test, BypassHostCacheOnRefresh1) { |
+TEST_P(HttpNetworkTransactionTest, BypassHostCacheOnRefresh1) { |
BypassHostCacheOnRefreshHelper(LOAD_BYPASS_CACHE); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, BypassHostCacheOnRefresh2) { |
+TEST_P(HttpNetworkTransactionTest, BypassHostCacheOnRefresh2) { |
BypassHostCacheOnRefreshHelper(LOAD_VALIDATE_CACHE); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, BypassHostCacheOnRefresh3) { |
+TEST_P(HttpNetworkTransactionTest, BypassHostCacheOnRefresh3) { |
BypassHostCacheOnRefreshHelper(LOAD_DISABLE_CACHE); |
} |
// Make sure we can handle an error when writing the request. |
-TEST_F(HttpNetworkTransactionSpdy2Test, RequestWriteError) { |
+TEST_P(HttpNetworkTransactionTest, RequestWriteError) { |
scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
HttpRequestInfo request; |
@@ -7351,7 +7403,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, RequestWriteError) { |
} |
// Check that a connection closed after the start of the headers finishes ok. |
-TEST_F(HttpNetworkTransactionSpdy2Test, ConnectionClosedAfterStartOfHeaders) { |
+TEST_P(HttpNetworkTransactionTest, ConnectionClosedAfterStartOfHeaders) { |
scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
HttpRequestInfo request; |
@@ -7393,7 +7445,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ConnectionClosedAfterStartOfHeaders) { |
// Make sure that a dropped connection while draining the body for auth |
// restart does the right thing. |
-TEST_F(HttpNetworkTransactionSpdy2Test, DrainResetOK) { |
+TEST_P(HttpNetworkTransactionTest, DrainResetOK) { |
scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
HttpRequestInfo request; |
@@ -7472,7 +7524,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, DrainResetOK) { |
} |
// Test HTTPS connections going through a proxy that sends extra data. |
-TEST_F(HttpNetworkTransactionSpdy2Test, HTTPSViaProxyWithExtraData) { |
+TEST_P(HttpNetworkTransactionTest, HTTPSViaProxyWithExtraData) { |
session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); |
HttpRequestInfo request; |
@@ -7506,7 +7558,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HTTPSViaProxyWithExtraData) { |
EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, LargeContentLengthThenClose) { |
+TEST_P(HttpNetworkTransactionTest, LargeContentLengthThenClose) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.google.com/"); |
@@ -7542,7 +7594,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, LargeContentLengthThenClose) { |
EXPECT_EQ(ERR_CONTENT_LENGTH_MISMATCH, rv); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, UploadFileSmallerThanLength) { |
+TEST_P(HttpNetworkTransactionTest, UploadFileSmallerThanLength) { |
base::FilePath temp_file_path; |
ASSERT_TRUE(file_util::CreateTemporaryFile(&temp_file_path)); |
const uint64 kFakeSize = 100000; // file is actually blank |
@@ -7598,7 +7650,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, UploadFileSmallerThanLength) { |
file_util::Delete(temp_file_path, false); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, UploadUnreadableFile) { |
+TEST_P(HttpNetworkTransactionTest, UploadUnreadableFile) { |
base::FilePath temp_file; |
ASSERT_TRUE(file_util::CreateTemporaryFile(&temp_file)); |
std::string temp_file_content("Unreadable file."); |
@@ -7658,7 +7710,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, UploadUnreadableFile) { |
file_util::Delete(temp_file, false); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, UnreadableUploadFileAfterAuthRestart) { |
+TEST_P(HttpNetworkTransactionTest, UnreadableUploadFileAfterAuthRestart) { |
base::FilePath temp_file; |
ASSERT_TRUE(file_util::CreateTemporaryFile(&temp_file)); |
std::string temp_file_contents("Unreadable file."); |
@@ -7750,7 +7802,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, UnreadableUploadFileAfterAuthRestart) { |
} |
// Tests that changes to Auth realms are treated like auth rejections. |
-TEST_F(HttpNetworkTransactionSpdy2Test, ChangeAuthRealms) { |
+TEST_P(HttpNetworkTransactionTest, ChangeAuthRealms) { |
HttpRequestInfo request; |
request.method = "GET"; |
@@ -7902,7 +7954,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ChangeAuthRealms) { |
EXPECT_TRUE(response->auth_challenge.get() == NULL); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, HonorAlternateProtocolHeader) { |
+TEST_P(HttpNetworkTransactionTest, HonorAlternateProtocolHeader) { |
HttpStreamFactory::SetNextProtos(SpdyNextProtos()); |
HttpStreamFactory::set_use_alternate_protocols(true); |
@@ -7961,7 +8013,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, HonorAlternateProtocolHeader) { |
HttpStreamFactory::SetNextProtos(std::vector<std::string>()); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
MarkBrokenAlternateProtocolAndFallback) { |
HttpStreamFactory::set_use_alternate_protocols(true); |
@@ -8020,7 +8072,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate.protocol); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
AlternateProtocolPortRestrictedBlocked) { |
// Ensure that we're not allowed to redirect traffic via an alternate |
// protocol to an unrestricted (port >= 1024) when the original traffic was |
@@ -8069,7 +8121,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
EXPECT_EQ(ERR_CONNECTION_REFUSED, callback.WaitForResult()); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
AlternateProtocolPortRestrictedPermitted) { |
// Ensure that we're allowed to redirect traffic via an alternate |
// protocol to an unrestricted (port >= 1024) when the original traffic was |
@@ -8119,7 +8171,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
EXPECT_EQ(OK, callback.WaitForResult()); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
AlternateProtocolPortRestrictedAllowed) { |
// Ensure that we're not allowed to redirect traffic via an alternate |
// protocol to an unrestricted (port >= 1024) when the original traffic was |
@@ -8168,7 +8220,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
EXPECT_EQ(OK, callback.WaitForResult()); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
AlternateProtocolPortUnrestrictedAllowed1) { |
// Ensure that we're not allowed to redirect traffic via an alternate |
// protocol to an unrestricted (port >= 1024) when the original traffic was |
@@ -8216,7 +8268,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
EXPECT_EQ(OK, callback.WaitForResult()); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
AlternateProtocolPortUnrestrictedAllowed2) { |
// Ensure that we're not allowed to redirect traffic via an alternate |
// protocol to an unrestricted (port >= 1024) when the original traffic was |
@@ -8264,7 +8316,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
EXPECT_EQ(OK, callback.WaitForResult()); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
AlternateProtocolUnsafeBlocked) { |
// Ensure that we're not allowed to redirect traffic via an alternate |
// protocol to an unsafe port, and that we resume the second |
@@ -8319,7 +8371,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
EXPECT_EQ("hello world", response_data); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, UseAlternateProtocolForNpnSpdy) { |
+TEST_P(HttpNetworkTransactionTest, UseAlternateProtocolForNpnSpdy) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
HttpStreamFactory::set_use_alternate_protocols(true); |
HttpStreamFactory::SetNextProtos(SpdyNextProtos()); |
@@ -8341,15 +8396,15 @@ TEST_F(HttpNetworkTransactionSpdy2Test, UseAlternateProtocolForNpnSpdy) { |
session_deps_.socket_factory->AddSocketDataProvider(&first_transaction); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
- scoped_ptr<SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead spdy_reads[] = { |
CreateMockRead(*resp), |
CreateMockRead(*data), |
@@ -8406,7 +8461,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, UseAlternateProtocolForNpnSpdy) { |
EXPECT_EQ("hello!", response_data); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, AlternateProtocolWithSpdyLateBinding) { |
+TEST_P(HttpNetworkTransactionTest, AlternateProtocolWithSpdyLateBinding) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
HttpStreamFactory::set_use_alternate_protocols(true); |
HttpStreamFactory::SetNextProtos(SpdyNextProtos()); |
@@ -8438,7 +8496,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, AlternateProtocolWithSpdyLateBinding) { |
session_deps_.socket_factory->AddSocketDataProvider(&hanging_socket); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
scoped_ptr<SpdyFrame> req1( |
@@ -8449,10 +8507,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, AlternateProtocolWithSpdyLateBinding) { |
CreateMockWrite(*req1), |
CreateMockWrite(*req2), |
}; |
- scoped_ptr<SpdyFrame> resp1(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> data1(ConstructSpdyBodyFrame(1, true)); |
- scoped_ptr<SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); |
- scoped_ptr<SpdyFrame> data2(ConstructSpdyBodyFrame(3, true)); |
+ scoped_ptr<SpdyFrame> resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> data1(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); |
+ scoped_ptr<SpdyFrame> data2(spdy_util_.ConstructSpdyBodyFrame(3, true)); |
MockRead spdy_reads[] = { |
CreateMockRead(*resp1), |
CreateMockRead(*data1), |
@@ -8520,7 +8578,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, AlternateProtocolWithSpdyLateBinding) { |
EXPECT_EQ("hello!", response_data); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, StallAlternateProtocolForNpnSpdy) { |
+TEST_P(HttpNetworkTransactionTest, StallAlternateProtocolForNpnSpdy) { |
HttpStreamFactory::set_use_alternate_protocols(true); |
HttpStreamFactory::SetNextProtos(SpdyNextProtos()); |
@@ -8542,7 +8600,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, StallAlternateProtocolForNpnSpdy) { |
session_deps_.socket_factory->AddSocketDataProvider(&first_transaction); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
@@ -8635,8 +8693,11 @@ class CapturingProxyResolver : public ProxyResolver { |
DISALLOW_COPY_AND_ASSIGN(CapturingProxyResolver); |
}; |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
UseAlternateProtocolForTunneledNpnSpdy) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
HttpStreamFactory::set_use_alternate_protocols(true); |
HttpStreamFactory::SetNextProtos(SpdyNextProtos()); |
@@ -8670,7 +8731,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
session_deps_.socket_factory->AddSocketDataProvider(&first_transaction); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
scoped_ptr<SpdyFrame> req( |
@@ -8684,8 +8745,8 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; |
- scoped_ptr<SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead spdy_reads[] = { |
MockRead(ASYNC, kCONNECTResponse, arraysize(kCONNECTResponse) - 1, 1), // 1 |
CreateMockRead(*resp.get(), 4), // 2, 4 |
@@ -8754,8 +8815,11 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
CONNECT_TIMING_HAS_SSL_TIMES); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
UseAlternateProtocolForNpnSpdyWithExistingSpdySession) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
HttpStreamFactory::set_use_alternate_protocols(true); |
HttpStreamFactory::SetNextProtos(SpdyNextProtos()); |
@@ -8776,15 +8840,15 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
session_deps_.socket_factory->AddSocketDataProvider(&first_transaction); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
- scoped_ptr<SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead spdy_reads[] = { |
CreateMockRead(*resp), |
CreateMockRead(*data), |
@@ -8891,7 +8955,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
// potentially running up to three rounds in each of the tests. The TestConfig |
// specifies both the configuration for the test as well as the expectations |
// for the results. |
-TEST_F(HttpNetworkTransactionSpdy2Test, GenerateAuthToken) { |
+TEST_P(HttpNetworkTransactionTest, GenerateAuthToken) { |
static const char kServer[] = "http://www.example.com"; |
static const char kSecureServer[] = "https://www.example.com"; |
static const char kProxy[] = "myproxy:70"; |
@@ -9289,7 +9353,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, GenerateAuthToken) { |
} |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, MultiRoundAuth) { |
+TEST_P(HttpNetworkTransactionTest, MultiRoundAuth) { |
// Do multi-round authentication and make sure it works correctly. |
HttpAuthHandlerMock::Factory* auth_factory( |
new HttpAuthHandlerMock::Factory()); |
@@ -9477,7 +9541,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, MultiRoundAuth) { |
// This tests the case that a request is issued via http instead of spdy after |
// npn is negotiated. |
-TEST_F(HttpNetworkTransactionSpdy2Test, NpnWithHttpOverSSL) { |
+TEST_P(HttpNetworkTransactionTest, NpnWithHttpOverSSL) { |
HttpStreamFactory::set_use_alternate_protocols(true); |
HttpStreamFactory::SetNextProtos( |
MakeNextProtos("http/1.1", "http1.1", NULL)); |
@@ -9534,7 +9598,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, NpnWithHttpOverSSL) { |
EXPECT_TRUE(response->was_npn_negotiated); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, SpdyPostNPNServerHangup) { |
+TEST_P(HttpNetworkTransactionTest, SpdyPostNPNServerHangup) { |
// Simulate the SSL handshake completing with an NPN negotiation |
// followed by an immediate server closing of the socket. |
// Fix crash: http://crbug.com/46369 |
@@ -9547,7 +9611,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, SpdyPostNPNServerHangup) { |
request.load_flags = 0; |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
scoped_ptr<SpdyFrame> req( |
@@ -9575,7 +9639,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, SpdyPostNPNServerHangup) { |
EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, SpdyAlternateProtocolThroughProxy) { |
+TEST_P(HttpNetworkTransactionTest, SpdyAlternateProtocolThroughProxy) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
// This test ensures that the URL passed into the proxy is upgraded |
// to https when doing an Alternate Protocol upgrade. |
HttpStreamFactory::set_use_alternate_protocols(true); |
@@ -9635,8 +9702,8 @@ TEST_F(HttpNetworkTransactionSpdy2Test, SpdyAlternateProtocolThroughProxy) { |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
- scoped_ptr<SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockWrite data_writes_2[] = { |
// First connection attempt without Proxy-Authorization. |
@@ -9680,7 +9747,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, SpdyAlternateProtocolThroughProxy) { |
data_writes_2, arraysize(data_writes_2)); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
StaticSocketDataProvider hanging_non_alternate_protocol_socket( |
@@ -9735,7 +9802,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, SpdyAlternateProtocolThroughProxy) { |
// Test that if we cancel the transaction as the connection is completing, that |
// everything tears down correctly. |
-TEST_F(HttpNetworkTransactionSpdy2Test, SimpleCancel) { |
+TEST_P(HttpNetworkTransactionTest, SimpleCancel) { |
// Setup everything about the connection to complete synchronously, so that |
// after calling HttpNetworkTransaction::Start, the only thing we're waiting |
// for is the callback from the HttpStreamRequest. |
@@ -9773,7 +9840,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, SimpleCancel) { |
} |
// Test a basic GET request through a proxy. |
-TEST_F(HttpNetworkTransactionSpdy2Test, ProxyGet) { |
+TEST_P(HttpNetworkTransactionTest, ProxyGet) { |
session_deps_.proxy_service.reset( |
ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); |
CapturingBoundNetLog log; |
@@ -9828,7 +9895,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ProxyGet) { |
} |
// Test a basic HTTPS GET request through a proxy. |
-TEST_F(HttpNetworkTransactionSpdy2Test, ProxyTunnelGet) { |
+TEST_P(HttpNetworkTransactionTest, ProxyTunnelGet) { |
session_deps_.proxy_service.reset( |
ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); |
CapturingBoundNetLog log; |
@@ -9902,7 +9969,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ProxyTunnelGet) { |
// Test a basic HTTPS GET request through a proxy, but the server hangs up |
// while establishing the tunnel. |
-TEST_F(HttpNetworkTransactionSpdy2Test, ProxyTunnelGetHangup) { |
+TEST_P(HttpNetworkTransactionTest, ProxyTunnelGetHangup) { |
session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); |
CapturingBoundNetLog log; |
session_deps_.net_log = log.bound().net_log(); |
@@ -9957,14 +10024,16 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ProxyTunnelGetHangup) { |
} |
// Test for crbug.com/55424. |
-TEST_F(HttpNetworkTransactionSpdy2Test, PreconnectWithExistingSpdySession) { |
+TEST_P(HttpNetworkTransactionTest, PreconnectWithExistingSpdySession) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet("https://www.google.com", false, 1, LOWEST)); |
MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
- scoped_ptr<SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead spdy_reads[] = { |
CreateMockRead(*resp), |
CreateMockRead(*data), |
@@ -9978,7 +10047,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, PreconnectWithExistingSpdySession) { |
session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
@@ -10024,7 +10093,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, PreconnectWithExistingSpdySession) { |
// Given a net error, cause that error to be returned from the first Write() |
// call and verify that the HttpTransaction fails with that error. |
-void HttpNetworkTransactionSpdy2Test::CheckErrorIsPassedBack( |
+void HttpNetworkTransactionTest::CheckErrorIsPassedBack( |
int error, IoMode mode) { |
net::HttpRequestInfo request_info; |
request_info.url = GURL("https://www.example.com/"); |
@@ -10051,7 +10120,7 @@ void HttpNetworkTransactionSpdy2Test::CheckErrorIsPassedBack( |
ASSERT_EQ(error, rv); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, SSLWriteCertError) { |
+TEST_P(HttpNetworkTransactionTest, SSLWriteCertError) { |
// Just check a grab bag of cert errors. |
static const int kErrors[] = { |
ERR_CERT_COMMON_NAME_INVALID, |
@@ -10070,7 +10139,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, SSLWriteCertError) { |
// 2) TLS False Start is disabled. |
// 3) The initial TLS handshake requests a client certificate. |
// 4) The client supplies an invalid/unacceptable certificate. |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
ClientAuthCertCache_Direct_NoFalseStart) { |
net::HttpRequestInfo request_info; |
request_info.url = GURL("https://www.example.com/"); |
@@ -10180,7 +10249,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
// 2) TLS False Start is enabled. |
// 3) The initial TLS handshake requests a client certificate. |
// 4) The client supplies an invalid/unacceptable certificate. |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
+TEST_P(HttpNetworkTransactionTest, |
ClientAuthCertCache_Direct_FalseStart) { |
net::HttpRequestInfo request_info; |
request_info.url = GURL("https://www.example.com/"); |
@@ -10303,7 +10372,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
// proxy. |
// The test is repeated twice, first for connecting to an HTTPS endpoint, |
// then for connecting to an HTTP endpoint. |
-TEST_F(HttpNetworkTransactionSpdy2Test, ClientAuthCertCache_Proxy_Fail) { |
+TEST_P(HttpNetworkTransactionTest, ClientAuthCertCache_Proxy_Fail) { |
session_deps_.proxy_service.reset( |
ProxyService::CreateFixed("https://proxy:70")); |
CapturingBoundNetLog log; |
@@ -10396,13 +10465,26 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ClientAuthCertCache_Proxy_Fail) { |
} |
} |
+// Unlike TEST/TEST_F, which are macros that expand to further macros, |
+// TEST_P is a macro that expands directly to code that stringizes the |
+// arguments. As a result, macros passed as parameters (such as prefix |
+// or test_case_name) will not be expanded by the preprocessor. To |
+// work around this, indirect the macro for TEST_P, so that the |
+// pre-processor will expand macros such as MAYBE_test_name before |
+// instantiating the test. |
+#define WRAPPED_TEST_P(test_case_name, test_name) \ |
+ TEST_P(test_case_name, test_name) |
+ |
// Times out on Win7 dbg(2) bot. http://crbug.com/124776 |
#if defined(OS_WIN) |
#define MAYBE_UseIPConnectionPooling DISABLED_UseIPConnectionPooling |
#else |
#define MAYBE_UseIPConnectionPooling UseIPConnectionPooling |
#endif |
-TEST_F(HttpNetworkTransactionSpdy2Test, MAYBE_UseIPConnectionPooling) { |
+WRAPPED_TEST_P(HttpNetworkTransactionTest, MAYBE_UseIPConnectionPooling) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
HttpStreamFactory::set_use_alternate_protocols(true); |
HttpStreamFactory::SetNextProtos(SpdyNextProtos()); |
@@ -10413,7 +10495,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, MAYBE_UseIPConnectionPooling) { |
pool_peer.DisableDomainAuthenticationVerification(); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
scoped_ptr<SpdyFrame> host1_req( |
@@ -10424,10 +10506,14 @@ TEST_F(HttpNetworkTransactionSpdy2Test, MAYBE_UseIPConnectionPooling) { |
CreateMockWrite(*host1_req, 1), |
CreateMockWrite(*host2_req, 4), |
}; |
- scoped_ptr<SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true)); |
- scoped_ptr<SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3)); |
- scoped_ptr<SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true)); |
+ scoped_ptr<SpdyFrame> host1_resp( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> host1_resp_body( |
+ spdy_util_.ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> host2_resp( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); |
+ scoped_ptr<SpdyFrame> host2_resp_body( |
+ spdy_util_.ConstructSpdyBodyFrame(3, true)); |
MockRead spdy_reads[] = { |
CreateMockRead(*host1_resp, 2), |
CreateMockRead(*host1_resp_body, 3), |
@@ -10498,7 +10584,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, MAYBE_UseIPConnectionPooling) { |
} |
#undef MAYBE_UseIPConnectionPooling |
-TEST_F(HttpNetworkTransactionSpdy2Test, UseIPConnectionPoolingAfterResolution) { |
+TEST_P(HttpNetworkTransactionTest, UseIPConnectionPoolingAfterResolution) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
HttpStreamFactory::set_use_alternate_protocols(true); |
HttpStreamFactory::SetNextProtos(SpdyNextProtos()); |
@@ -10509,7 +10598,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, UseIPConnectionPoolingAfterResolution) { |
pool_peer.DisableDomainAuthenticationVerification(); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
scoped_ptr<SpdyFrame> host1_req( |
@@ -10520,10 +10609,14 @@ TEST_F(HttpNetworkTransactionSpdy2Test, UseIPConnectionPoolingAfterResolution) { |
CreateMockWrite(*host1_req, 1), |
CreateMockWrite(*host2_req, 4), |
}; |
- scoped_ptr<SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true)); |
- scoped_ptr<SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3)); |
- scoped_ptr<SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true)); |
+ scoped_ptr<SpdyFrame> host1_resp( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> host1_resp_body( |
+ spdy_util_.ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> host2_resp( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); |
+ scoped_ptr<SpdyFrame> host2_resp_body( |
+ spdy_util_.ConstructSpdyBodyFrame(3, true)); |
MockRead spdy_reads[] = { |
CreateMockRead(*host1_resp, 2), |
CreateMockRead(*host1_resp_body, 3), |
@@ -10630,8 +10723,17 @@ class OneTimeCachingHostResolver : public net::HostResolver { |
#define MAYBE_UseIPConnectionPoolingWithHostCacheExpiration \ |
UseIPConnectionPoolingWithHostCacheExpiration |
#endif |
-TEST_F(HttpNetworkTransactionSpdy2Test, |
- MAYBE_UseIPConnectionPoolingWithHostCacheExpiration) { |
+WRAPPED_TEST_P(HttpNetworkTransactionTest, |
+ MAYBE_UseIPConnectionPoolingWithHostCacheExpiration) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
+// Times out on Win7 dbg(2) bot. http://crbug.com/124776 . (MAYBE_ |
+// prefix doesn't work with parametrized tests). |
+#if defined(OS_WIN) |
+ return; |
+#endif |
+ |
HttpStreamFactory::set_use_alternate_protocols(true); |
HttpStreamFactory::SetNextProtos(SpdyNextProtos()); |
@@ -10645,7 +10747,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
pool_peer.DisableDomainAuthenticationVerification(); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
scoped_ptr<SpdyFrame> host1_req( |
@@ -10656,10 +10758,14 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
CreateMockWrite(*host1_req, 1), |
CreateMockWrite(*host2_req, 4), |
}; |
- scoped_ptr<SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true)); |
- scoped_ptr<SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3)); |
- scoped_ptr<SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true)); |
+ scoped_ptr<SpdyFrame> host1_resp( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> host1_resp_body( |
+ spdy_util_.ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> host2_resp( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); |
+ scoped_ptr<SpdyFrame> host2_resp_body( |
+ spdy_util_.ConstructSpdyBodyFrame(3, true)); |
MockRead spdy_reads[] = { |
CreateMockRead(*host1_resp, 2), |
CreateMockRead(*host1_resp_body, 3), |
@@ -10728,7 +10834,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, |
} |
#undef MAYBE_UseIPConnectionPoolingWithHostCacheExpiration |
-TEST_F(HttpNetworkTransactionSpdy2Test, ReadPipelineEvictionFallback) { |
+TEST_P(HttpNetworkTransactionTest, ReadPipelineEvictionFallback) { |
MockRead data_reads1[] = { |
MockRead(SYNCHRONOUS, ERR_PIPELINE_EVICTION), |
}; |
@@ -10748,7 +10854,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ReadPipelineEvictionFallback) { |
EXPECT_EQ("hello world", out.response_data); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, SendPipelineEvictionFallback) { |
+TEST_P(HttpNetworkTransactionTest, SendPipelineEvictionFallback) { |
MockWrite data_writes1[] = { |
MockWrite(SYNCHRONOUS, ERR_PIPELINE_EVICTION), |
}; |
@@ -10775,7 +10881,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, SendPipelineEvictionFallback) { |
EXPECT_EQ("hello world", out.response_data); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, DoNotUseSpdySessionForHttp) { |
+TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionForHttp) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
const std::string https_url = "https://www.google.com/"; |
const std::string http_url = "http://www.google.com:443/"; |
@@ -10787,8 +10896,8 @@ TEST_F(HttpNetworkTransactionSpdy2Test, DoNotUseSpdySessionForHttp) { |
CreateMockWrite(*req1, 0), |
}; |
- scoped_ptr<SpdyFrame> resp1(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> body1(ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> body1(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads1[] = { |
CreateMockRead(*resp1, 1), |
CreateMockRead(*body1, 2), |
@@ -10820,7 +10929,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, DoNotUseSpdySessionForHttp) { |
writes2, arraysize(writes2)); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
session_deps_.socket_factory->AddSocketDataProvider(&data1); |
session_deps_.socket_factory->AddSocketDataProvider(&data2); |
@@ -10856,7 +10965,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, DoNotUseSpdySessionForHttp) { |
EXPECT_FALSE(trans2.GetResponseInfo()->was_fetched_via_spdy); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, DoNotUseSpdySessionForHttpOverTunnel) { |
+TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionForHttpOverTunnel) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
const std::string https_url = "https://www.google.com/"; |
const std::string http_url = "http://www.google.com:443/"; |
@@ -10866,13 +10978,14 @@ TEST_F(HttpNetworkTransactionSpdy2Test, DoNotUseSpdySessionForHttpOverTunnel) { |
spdy_util_.ConstructSpdyGet(https_url.c_str(), false, 1, LOWEST)); |
// SPDY GET for HTTP URL (through the proxy, but not the tunnel) |
- scoped_ptr<SpdyFrame> wrapped_req1(ConstructWrappedSpdyFrame(req1, 1)); |
+ scoped_ptr<SpdyFrame> wrapped_req1( |
+ spdy_util_.ConstructWrappedSpdyFrame(req1, 1)); |
const char* const headers[] = { |
- "method", "GET", |
- "url", http_url.c_str(), |
- "host", "www.google.com:443", |
- "scheme", "http", |
- "version", "HTTP/1.1" |
+ spdy_util_.GetMethodKey(), "GET", |
+ spdy_util_.GetPathKey(), spdy_util_.is_spdy2() ? http_url.c_str() : "/", |
+ spdy_util_.GetHostKey(), "www.google.com:443", |
+ spdy_util_.GetSchemeKey(), "http", |
+ spdy_util_.GetVersionKey(), "HTTP/1.1" |
}; |
scoped_ptr<SpdyFrame> req2(spdy_util_.ConstructSpdyControlFrame( |
NULL, 0, false, 3, MEDIUM, SYN_STREAM, CONTROL_FLAG_FIN, |
@@ -10884,13 +10997,16 @@ TEST_F(HttpNetworkTransactionSpdy2Test, DoNotUseSpdySessionForHttpOverTunnel) { |
CreateMockWrite(*req2, 5), |
}; |
- scoped_ptr<SpdyFrame> conn_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> resp1(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> body1(ConstructSpdyBodyFrame(1, true)); |
- scoped_ptr<SpdyFrame> wrapped_resp1(ConstructWrappedSpdyFrame(resp1, 1)); |
- scoped_ptr<SpdyFrame> wrapped_body1(ConstructWrappedSpdyFrame(body1, 1)); |
- scoped_ptr<SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); |
- scoped_ptr<SpdyFrame> body2(ConstructSpdyBodyFrame(3, true)); |
+ scoped_ptr<SpdyFrame> conn_resp( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> body1(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> wrapped_resp1( |
+ spdy_util_.ConstructWrappedSpdyFrame(resp1, 1)); |
+ scoped_ptr<SpdyFrame> wrapped_body1( |
+ spdy_util_.ConstructWrappedSpdyFrame(body1, 1)); |
+ scoped_ptr<SpdyFrame> resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); |
+ scoped_ptr<SpdyFrame> body2(spdy_util_.ConstructSpdyBodyFrame(3, true)); |
MockRead reads1[] = { |
CreateMockRead(*conn_resp, 1), |
CreateMockRead(*wrapped_resp1, 3), |
@@ -10910,10 +11026,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, DoNotUseSpdySessionForHttpOverTunnel) { |
CapturingNetLog log; |
session_deps_.net_log = &log; |
SSLSocketDataProvider ssl1(ASYNC, OK); // to the proxy |
- ssl1.SetNextProto(kProtoSPDY2); |
+ ssl1.SetNextProto(GetParam()); |
session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl1); |
SSLSocketDataProvider ssl2(ASYNC, OK); // to the server |
- ssl2.SetNextProto(kProtoSPDY2); |
+ ssl2.SetNextProto(GetParam()); |
session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl2); |
session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data1); |
@@ -10964,7 +11080,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, DoNotUseSpdySessionForHttpOverTunnel) { |
EXPECT_NE(load_timing_info1.socket_log_id, load_timing_info2.socket_log_id); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, UseSpdySessionForHttpWhenForced) { |
+TEST_P(HttpNetworkTransactionTest, UseSpdySessionForHttpWhenForced) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
HttpStreamFactory::set_force_spdy_always(true); |
const std::string https_url = "https://www.google.com/"; |
const std::string http_url = "http://www.google.com:443/"; |
@@ -10981,10 +11100,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, UseSpdySessionForHttpWhenForced) { |
CreateMockWrite(*req2, 4), |
}; |
- scoped_ptr<SpdyFrame> resp1(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> body1(ConstructSpdyBodyFrame(1, true)); |
- scoped_ptr<SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); |
- scoped_ptr<SpdyFrame> body2(ConstructSpdyBodyFrame(3, true)); |
+ scoped_ptr<SpdyFrame> resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> body1(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); |
+ scoped_ptr<SpdyFrame> body2(spdy_util_.ConstructSpdyBodyFrame(3, true)); |
MockRead reads[] = { |
CreateMockRead(*resp1, 2), |
CreateMockRead(*body1, 3), |
@@ -10997,7 +11116,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, UseSpdySessionForHttpWhenForced) { |
writes, arraysize(writes)); |
SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.SetNextProto(kProtoSPDY2); |
+ ssl.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
@@ -11036,29 +11155,26 @@ TEST_F(HttpNetworkTransactionSpdy2Test, UseSpdySessionForHttpWhenForced) { |
// that we do not pool other origins that resolve to the same IP when |
// the certificate does not match the new origin. |
// http://crbug.com/134690 |
-TEST_F(HttpNetworkTransactionSpdy2Test, DoNotUseSpdySessionIfCertDoesNotMatch) { |
+TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionIfCertDoesNotMatch) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
const std::string url1 = "http://www.google.com/"; |
const std::string url2 = "https://mail.google.com/"; |
const std::string ip_addr = "1.2.3.4"; |
// SPDY GET for HTTP URL (through SPDY proxy) |
- const char* const headers[] = { |
- "method", "GET", |
- "url", url1.c_str(), |
- "host", "www.google.com", |
- "scheme", "http", |
- "version", "HTTP/1.1" |
- }; |
+ scoped_ptr<SpdyHeaderBlock> headers( |
+ spdy_util_.ConstructGetHeaderBlockForProxy("http://www.google.com/")); |
scoped_ptr<SpdyFrame> req1(spdy_util_.ConstructSpdyControlFrame( |
- NULL, 0, false, 1, LOWEST, SYN_STREAM, CONTROL_FLAG_FIN, |
- headers, arraysize(headers), 0)); |
+ headers.Pass(), false, 1, LOWEST, SYN_STREAM, CONTROL_FLAG_FIN, 0)); |
MockWrite writes1[] = { |
CreateMockWrite(*req1, 0), |
}; |
- scoped_ptr<SpdyFrame> resp1(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> body1(ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> body1(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads1[] = { |
CreateMockRead(*resp1, 1), |
CreateMockRead(*body1, 2), |
@@ -11082,8 +11198,8 @@ TEST_F(HttpNetworkTransactionSpdy2Test, DoNotUseSpdySessionIfCertDoesNotMatch) { |
CreateMockWrite(*req2, 0), |
}; |
- scoped_ptr<SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> body2(ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> body2(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads2[] = { |
CreateMockRead(*resp2, 1), |
CreateMockRead(*body2, 2), |
@@ -11116,14 +11232,14 @@ TEST_F(HttpNetworkTransactionSpdy2Test, DoNotUseSpdySessionIfCertDoesNotMatch) { |
ASSERT_NE(static_cast<X509Certificate*>(NULL), server_cert); |
SSLSocketDataProvider ssl1(ASYNC, OK); // to the proxy |
- ssl1.SetNextProto(kProtoSPDY2); |
+ ssl1.SetNextProto(GetParam()); |
ssl1.cert = server_cert; |
session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl1); |
session_deps_.deterministic_socket_factory->AddSocketDataProvider( |
data1.get()); |
SSLSocketDataProvider ssl2(ASYNC, OK); // to the server |
- ssl2.SetNextProto(kProtoSPDY2); |
+ ssl2.SetNextProto(GetParam()); |
session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl2); |
session_deps_.deterministic_socket_factory->AddSocketDataProvider( |
data2.get()); |
@@ -11171,7 +11287,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, DoNotUseSpdySessionIfCertDoesNotMatch) { |
// error) in SPDY session, removes the socket from pool and closes the SPDY |
// session. Verify that new url's from the same HttpNetworkSession (and a new |
// SpdySession) do work. http://crbug.com/224701 |
-TEST_F(HttpNetworkTransactionSpdy2Test, ErrorSocketNotConnected) { |
+TEST_P(HttpNetworkTransactionTest, ErrorSocketNotConnected) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
const std::string https_url = "https://www.google.com/"; |
MockRead reads1[] = { |
@@ -11188,8 +11307,8 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ErrorSocketNotConnected) { |
CreateMockWrite(*req2, 0), |
}; |
- scoped_ptr<SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> body2(ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> body2(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads2[] = { |
CreateMockRead(*resp2, 1), |
CreateMockRead(*body2, 2), |
@@ -11201,13 +11320,13 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ErrorSocketNotConnected) { |
writes2, arraysize(writes2))); |
SSLSocketDataProvider ssl1(ASYNC, OK); |
- ssl1.SetNextProto(kProtoSPDY2); |
+ ssl1.SetNextProto(GetParam()); |
session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl1); |
session_deps_.deterministic_socket_factory->AddSocketDataProvider( |
data1.get()); |
SSLSocketDataProvider ssl2(ASYNC, OK); |
- ssl2.SetNextProto(kProtoSPDY2); |
+ ssl2.SetNextProto(GetParam()); |
session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl2); |
session_deps_.deterministic_socket_factory->AddSocketDataProvider( |
data2.get()); |
@@ -11245,7 +11364,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, ErrorSocketNotConnected) { |
EXPECT_TRUE(trans2.GetResponseInfo()->was_fetched_via_spdy); |
} |
-TEST_F(HttpNetworkTransactionSpdy2Test, CloseIdleSpdySessionToOpenNewOne) { |
+TEST_P(HttpNetworkTransactionTest, CloseIdleSpdySessionToOpenNewOne) { |
+ if (GetParam() > kProtoSPDY3) |
+ return; |
+ |
HttpStreamFactory::SetNextProtos(SpdyNextProtos()); |
ClientSocketPoolManager::set_max_sockets_per_group( |
HttpNetworkSession::NORMAL_SOCKET_POOL, 1); |
@@ -11258,9 +11380,9 @@ TEST_F(HttpNetworkTransactionSpdy2Test, CloseIdleSpdySessionToOpenNewOne) { |
scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
SSLSocketDataProvider ssl1(ASYNC, OK); |
- ssl1.SetNextProto(kProtoSPDY2); |
+ ssl1.SetNextProto(GetParam()); |
SSLSocketDataProvider ssl2(ASYNC, OK); |
- ssl2.SetNextProto(kProtoSPDY2); |
+ ssl2.SetNextProto(GetParam()); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1); |
session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2); |
@@ -11269,8 +11391,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, CloseIdleSpdySessionToOpenNewOne) { |
MockWrite spdy1_writes[] = { |
CreateMockWrite(*host1_req, 1), |
}; |
- scoped_ptr<SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> host1_resp( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> host1_resp_body( |
+ spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead spdy1_reads[] = { |
CreateMockRead(*host1_resp, 2), |
CreateMockRead(*host1_resp_body, 3), |
@@ -11288,8 +11412,10 @@ TEST_F(HttpNetworkTransactionSpdy2Test, CloseIdleSpdySessionToOpenNewOne) { |
MockWrite spdy2_writes[] = { |
CreateMockWrite(*host2_req, 1), |
}; |
- scoped_ptr<SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(1, true)); |
+ scoped_ptr<SpdyFrame> host2_resp( |
+ spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> host2_resp_body( |
+ spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead spdy2_reads[] = { |
CreateMockRead(*host2_resp, 2), |
CreateMockRead(*host2_resp_body, 3), |