summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorttuttle@chromium.org <ttuttle@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-10 02:53:05 +0000
committerttuttle@chromium.org <ttuttle@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-10 02:53:05 +0000
commit9ec54f89915ea9d6cb39e8f5366d2fb447df0903 (patch)
tree49a664308ca24b4dc744db9a0e5ada84a15f826c
parentc8893e02045b5cc858be8c6e20426ca64272d779 (diff)
downloadchromium_src-9ec54f89915ea9d6cb39e8f5366d2fb447df0903.zip
chromium_src-9ec54f89915ea9d6cb39e8f5366d2fb447df0903.tar.gz
chromium_src-9ec54f89915ea9d6cb39e8f5366d2fb447df0903.tar.bz2
Merge ConstructSpdyFrame into SpdyTestUtil
Merge the two forms of ConstructSpdyFrame from spdy_test_util_spdy2/3 into SpdyTestUtil and update tests to use the shared version. BUG=226192 Review URL: https://chromiumcodereview.appspot.com/15077005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@199346 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--net/spdy/spdy_http_stream_spdy3_unittest.cc4
-rw-r--r--net/spdy/spdy_network_transaction_spdy2_unittest.cc90
-rw-r--r--net/spdy/spdy_network_transaction_spdy3_unittest.cc90
-rw-r--r--net/spdy/spdy_proxy_client_socket_spdy2_unittest.cc6
-rw-r--r--net/spdy/spdy_proxy_client_socket_spdy3_unittest.cc6
-rw-r--r--net/spdy/spdy_test_util_common.cc83
-rw-r--r--net/spdy/spdy_test_util_common.h23
-rw-r--r--net/spdy/spdy_test_util_spdy2.cc55
-rw-r--r--net/spdy/spdy_test_util_spdy2.h15
-rw-r--r--net/spdy/spdy_test_util_spdy3.cc54
-rw-r--r--net/spdy/spdy_test_util_spdy3.h24
-rw-r--r--net/spdy/spdy_websocket_test_util_spdy2.cc6
-rw-r--r--net/spdy/spdy_websocket_test_util_spdy3.cc6
13 files changed, 251 insertions, 211 deletions
diff --git a/net/spdy/spdy_http_stream_spdy3_unittest.cc b/net/spdy/spdy_http_stream_spdy3_unittest.cc
index 0562bed..d849f28 100644
--- a/net/spdy/spdy_http_stream_spdy3_unittest.cc
+++ b/net/spdy/spdy_http_stream_spdy3_unittest.cc
@@ -710,6 +710,8 @@ void GetECServerBoundCertAndProof(
// a credential set.
SpdyFrame* ConstructCredentialRequestFrame(size_t slot, const GURL& url,
SpdyStreamId stream_id) {
+ SpdyTestUtil util(kProtoSPDY3);
+
const SpdyHeaderInfo syn_headers = {
SYN_STREAM,
stream_id,
@@ -754,7 +756,7 @@ SpdyFrame* ConstructCredentialRequestFrame(size_t slot, const GURL& url,
":version",
"HTTP/1.1"
};
- return ConstructSpdyFrame(
+ return util.ConstructSpdyFrame(
syn_headers, NULL, 0, headers, arraysize(headers)/2);
}
diff --git a/net/spdy/spdy_network_transaction_spdy2_unittest.cc b/net/spdy/spdy_network_transaction_spdy2_unittest.cc
index 8f7ecd3..ec57eac 100644
--- a/net/spdy/spdy_network_transaction_spdy2_unittest.cc
+++ b/net/spdy/spdy_network_transaction_spdy2_unittest.cc
@@ -61,6 +61,8 @@ static SpdySessionDependencies* CreateSpdySessionDependencies(
class SpdyNetworkTransactionSpdy2Test
: public ::testing::TestWithParam<SpdyNetworkTransactionSpdy2TestTypes> {
protected:
+ SpdyNetworkTransactionSpdy2Test() : spdy_util_(kProtoSPDY2) {
+ }
virtual void SetUp() {
google_get_request_initialized_ = false;
@@ -598,6 +600,8 @@ class SpdyNetworkTransactionSpdy2Test
callback.WaitForResult();
}
+ SpdyTestUtil spdy_util_;
+
private:
scoped_ptr<UploadDataStream> upload_data_stream_;
bool google_get_request_initialized_;
@@ -1524,8 +1528,10 @@ TEST_P(SpdyNetworkTransactionSpdy2Test, Put) {
"version", "HTTP/1.1",
"content-length", "0"
};
- scoped_ptr<SpdyFrame> req(ConstructSpdyFrame(kSynStartHeader, NULL, 0,
- kPutHeaders, arraysize(kPutHeaders) / 2));
+ scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyFrame(
+ kSynStartHeader,
+ NULL, 0,
+ kPutHeaders, arraysize(kPutHeaders) / 2));
MockWrite writes[] = {
CreateMockWrite(*req)
};
@@ -1549,8 +1555,10 @@ TEST_P(SpdyNetworkTransactionSpdy2Test, Put) {
"version", "HTTP/1.1"
"content-length", "1234"
};
- scoped_ptr<SpdyFrame> resp(ConstructSpdyFrame(kSynReplyHeader,
- NULL, 0, kStandardGetHeaders, arraysize(kStandardGetHeaders) / 2));
+ scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyFrame(
+ kSynReplyHeader,
+ NULL, 0,
+ kStandardGetHeaders, arraysize(kStandardGetHeaders) / 2));
MockRead reads[] = {
CreateMockRead(*resp),
CreateMockRead(*body),
@@ -1596,8 +1604,10 @@ TEST_P(SpdyNetworkTransactionSpdy2Test, Head) {
"version", "HTTP/1.1",
"content-length", "0"
};
- scoped_ptr<SpdyFrame> req(ConstructSpdyFrame(kSynStartHeader, NULL, 0,
- kHeadHeaders, arraysize(kHeadHeaders) / 2));
+ scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyFrame(
+ kSynStartHeader,
+ NULL, 0,
+ kHeadHeaders, arraysize(kHeadHeaders) / 2));
MockWrite writes[] = {
CreateMockWrite(*req)
};
@@ -1621,8 +1631,10 @@ TEST_P(SpdyNetworkTransactionSpdy2Test, Head) {
"version", "HTTP/1.1"
"content-length", "1234"
};
- scoped_ptr<SpdyFrame> resp(ConstructSpdyFrame(kSynReplyHeader,
- NULL, 0, kStandardGetHeaders, arraysize(kStandardGetHeaders) / 2));
+ scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyFrame(
+ kSynReplyHeader,
+ NULL, 0,
+ kStandardGetHeaders, arraysize(kStandardGetHeaders) / 2));
MockRead reads[] = {
CreateMockRead(*resp),
CreateMockRead(*body),
@@ -2341,10 +2353,10 @@ TEST_P(SpdyNetworkTransactionSpdy2Test, RedirectGetRequest) {
};
// Setup writes/reads to www.google.com
- scoped_ptr<SpdyFrame> req(ConstructSpdyFrame(
+ scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyFrame(
kSynStartHeader, kExtraHeaders, arraysize(kExtraHeaders) / 2,
kStandardGetHeaders, arraysize(kStandardGetHeaders) / 2));
- scoped_ptr<SpdyFrame> req2(ConstructSpdyFrame(
+ scoped_ptr<SpdyFrame> req2(spdy_util_.ConstructSpdyFrame(
kSynStartHeader, kExtraHeaders, arraysize(kExtraHeaders) / 2,
kStandardGetHeaders2, arraysize(kStandardGetHeaders2) / 2));
scoped_ptr<SpdyFrame> resp(ConstructSpdyGetSynReplyRedirect(1));
@@ -2554,11 +2566,11 @@ TEST_P(SpdyNetworkTransactionSpdy2Test, RedirectServerPush) {
// Setup writes/reads to www.google.com
scoped_ptr<SpdyFrame> req(
- ConstructSpdyFrame(kSynStartHeader,
- kExtraHeaders,
- arraysize(kExtraHeaders) / 2,
- kStandardGetHeaders,
- arraysize(kStandardGetHeaders) / 2));
+ spdy_util_.ConstructSpdyFrame(kSynStartHeader,
+ kExtraHeaders,
+ arraysize(kExtraHeaders) / 2,
+ kStandardGetHeaders,
+ arraysize(kStandardGetHeaders) / 2));
scoped_ptr<SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1));
scoped_ptr<SpdyFrame> rep(
ConstructSpdyPush(NULL,
@@ -2598,11 +2610,11 @@ TEST_P(SpdyNetworkTransactionSpdy2Test, RedirectServerPush) {
"HTTP/1.1"
};
scoped_ptr<SpdyFrame> req2(
- ConstructSpdyFrame(kSynStartHeader,
- kExtraHeaders,
- arraysize(kExtraHeaders) / 2,
- kStandardGetHeaders2,
- arraysize(kStandardGetHeaders2) / 2));
+ spdy_util_.ConstructSpdyFrame(kSynStartHeader,
+ kExtraHeaders,
+ arraysize(kExtraHeaders) / 2,
+ kStandardGetHeaders2,
+ arraysize(kStandardGetHeaders2) / 2));
scoped_ptr<SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 1));
scoped_ptr<SpdyFrame> body2(ConstructSpdyBodyFrame(1, true));
MockWrite writes2[] = {
@@ -3417,11 +3429,11 @@ TEST_P(SpdyNetworkTransactionSpdy2Test, SynReplyHeadersVary) {
// Construct the reply.
scoped_ptr<SpdyFrame> frame_reply(
- ConstructSpdyFrame(*test_cases[i].syn_reply,
- test_cases[i].extra_headers[1],
- test_cases[i].num_headers[1],
- NULL,
- 0));
+ spdy_util_.ConstructSpdyFrame(*test_cases[i].syn_reply,
+ test_cases[i].extra_headers[1],
+ test_cases[i].num_headers[1],
+ NULL,
+ 0));
scoped_ptr<SpdyFrame> body(ConstructSpdyBodyFrame(1, true));
MockRead reads[] = {
@@ -3534,10 +3546,10 @@ TEST_P(SpdyNetworkTransactionSpdy2Test, InvalidSynReply) {
};
scoped_ptr<SpdyFrame> resp(
- ConstructSpdyFrame(kSynStartHeader,
- NULL, 0,
- test_cases[i].headers,
- test_cases[i].num_headers));
+ spdy_util_.ConstructSpdyFrame(kSynStartHeader,
+ NULL, 0,
+ test_cases[i].headers,
+ test_cases[i].num_headers));
scoped_ptr<SpdyFrame> body(ConstructSpdyBodyFrame(1, true));
MockRead reads[] = {
CreateMockRead(*resp),
@@ -4237,11 +4249,11 @@ TEST_P(SpdyNetworkTransactionSpdy2Test, SettingsSaved) {
// Construct the reply.
scoped_ptr<SpdyFrame> reply(
- ConstructSpdyFrame(kSynReplyInfo,
- kExtraHeaders,
- arraysize(kExtraHeaders) / 2,
- NULL,
- 0));
+ spdy_util_.ConstructSpdyFrame(kSynReplyInfo,
+ kExtraHeaders,
+ arraysize(kExtraHeaders) / 2,
+ NULL,
+ 0));
const SpdySettingsIds kSampleId1 = SETTINGS_UPLOAD_BANDWIDTH;
unsigned int kSampleValue1 = 0x0a0a0a0a;
@@ -4376,11 +4388,11 @@ TEST_P(SpdyNetworkTransactionSpdy2Test, SettingsPlayback) {
// Construct the reply.
scoped_ptr<SpdyFrame> reply(
- ConstructSpdyFrame(kSynReplyInfo,
- kExtraHeaders,
- arraysize(kExtraHeaders) / 2,
- NULL,
- 0));
+ spdy_util_.ConstructSpdyFrame(kSynReplyInfo,
+ kExtraHeaders,
+ arraysize(kExtraHeaders) / 2,
+ NULL,
+ 0));
scoped_ptr<SpdyFrame> body(ConstructSpdyBodyFrame(1, true));
MockRead reads[] = {
diff --git a/net/spdy/spdy_network_transaction_spdy3_unittest.cc b/net/spdy/spdy_network_transaction_spdy3_unittest.cc
index e627255..08b8411 100644
--- a/net/spdy/spdy_network_transaction_spdy3_unittest.cc
+++ b/net/spdy/spdy_network_transaction_spdy3_unittest.cc
@@ -61,6 +61,8 @@ static SpdySessionDependencies* CreateSpdySessionDependencies(
class SpdyNetworkTransactionSpdy3Test
: public ::testing::TestWithParam<SpdyNetworkTransactionSpdy3TestTypes> {
protected:
+ SpdyNetworkTransactionSpdy3Test() : spdy_util_(kProtoSPDY3) {
+ }
virtual void SetUp() {
google_get_request_initialized_ = false;
@@ -600,6 +602,8 @@ class SpdyNetworkTransactionSpdy3Test
callback.WaitForResult();
}
+ SpdyTestUtil spdy_util_;
+
private:
scoped_ptr<UploadDataStream> upload_data_stream_;
bool google_get_request_initialized_;
@@ -1528,8 +1532,10 @@ TEST_P(SpdyNetworkTransactionSpdy3Test, Put) {
":version", "HTTP/1.1",
"content-length", "0"
};
- scoped_ptr<SpdyFrame> req(ConstructSpdyFrame(kSynStartHeader, NULL, 0,
- kPutHeaders, arraysize(kPutHeaders) / 2));
+ scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyFrame(
+ kSynStartHeader,
+ NULL, 0,
+ kPutHeaders, arraysize(kPutHeaders) / 2));
MockWrite writes[] = {
CreateMockWrite(*req)
};
@@ -1553,8 +1559,10 @@ TEST_P(SpdyNetworkTransactionSpdy3Test, Put) {
":version", "HTTP/1.1"
"content-length", "1234"
};
- scoped_ptr<SpdyFrame> resp(ConstructSpdyFrame(kSynReplyHeader,
- NULL, 0, kStandardRespHeaders, arraysize(kStandardRespHeaders) / 2));
+ scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyFrame(
+ kSynReplyHeader,
+ NULL, 0,
+ kStandardRespHeaders, arraysize(kStandardRespHeaders) / 2));
MockRead reads[] = {
CreateMockRead(*resp),
CreateMockRead(*body),
@@ -1600,8 +1608,10 @@ TEST_P(SpdyNetworkTransactionSpdy3Test, Head) {
":version", "HTTP/1.1",
"content-length", "0"
};
- scoped_ptr<SpdyFrame> req(ConstructSpdyFrame(kSynStartHeader, NULL, 0,
- kHeadHeaders, arraysize(kHeadHeaders) / 2));
+ scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyFrame(
+ kSynStartHeader,
+ NULL, 0,
+ kHeadHeaders, arraysize(kHeadHeaders) / 2));
MockWrite writes[] = {
CreateMockWrite(*req)
};
@@ -1625,8 +1635,10 @@ TEST_P(SpdyNetworkTransactionSpdy3Test, Head) {
":version", "HTTP/1.1"
"content-length", "1234"
};
- scoped_ptr<SpdyFrame> resp(ConstructSpdyFrame(kSynReplyHeader,
- NULL, 0, kStandardRespHeaders, arraysize(kStandardRespHeaders) / 2));
+ scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyFrame(
+ kSynReplyHeader,
+ NULL, 0,
+ kStandardRespHeaders, arraysize(kStandardRespHeaders) / 2));
MockRead reads[] = {
CreateMockRead(*resp),
CreateMockRead(*body),
@@ -2925,10 +2937,10 @@ TEST_P(SpdyNetworkTransactionSpdy3Test, RedirectGetRequest) {
};
// Setup writes/reads to www.google.com
- scoped_ptr<SpdyFrame> req(ConstructSpdyFrame(
+ scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyFrame(
kSynStartHeader, kExtraHeaders, arraysize(kExtraHeaders) / 2,
kStandardGetHeaders, arraysize(kStandardGetHeaders) / 2));
- scoped_ptr<SpdyFrame> req2(ConstructSpdyFrame(
+ scoped_ptr<SpdyFrame> req2(spdy_util_.ConstructSpdyFrame(
kSynStartHeader, kExtraHeaders, arraysize(kExtraHeaders) / 2,
kStandardGetHeaders2, arraysize(kStandardGetHeaders2) / 2));
scoped_ptr<SpdyFrame> resp(ConstructSpdyGetSynReplyRedirect(1));
@@ -3140,11 +3152,11 @@ TEST_P(SpdyNetworkTransactionSpdy3Test, RedirectServerPush) {
// Setup writes/reads to www.google.com
scoped_ptr<SpdyFrame> req(
- ConstructSpdyFrame(kSynStartHeader,
- kExtraHeaders,
- arraysize(kExtraHeaders) / 2,
- kStandardGetHeaders,
- arraysize(kStandardGetHeaders) / 2));
+ spdy_util_.ConstructSpdyFrame(kSynStartHeader,
+ kExtraHeaders,
+ arraysize(kExtraHeaders) / 2,
+ kStandardGetHeaders,
+ arraysize(kStandardGetHeaders) / 2));
scoped_ptr<SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1));
scoped_ptr<SpdyFrame> rep(
ConstructSpdyPush(NULL,
@@ -3184,11 +3196,11 @@ TEST_P(SpdyNetworkTransactionSpdy3Test, RedirectServerPush) {
"HTTP/1.1"
};
scoped_ptr<SpdyFrame> req2(
- ConstructSpdyFrame(kSynStartHeader,
- kExtraHeaders,
- arraysize(kExtraHeaders) / 2,
- kStandardGetHeaders2,
- arraysize(kStandardGetHeaders2) / 2));
+ spdy_util_.ConstructSpdyFrame(kSynStartHeader,
+ kExtraHeaders,
+ arraysize(kExtraHeaders) / 2,
+ kStandardGetHeaders2,
+ arraysize(kStandardGetHeaders2) / 2));
scoped_ptr<SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 1));
scoped_ptr<SpdyFrame> body2(ConstructSpdyBodyFrame(1, true));
MockWrite writes2[] = {
@@ -4003,11 +4015,11 @@ TEST_P(SpdyNetworkTransactionSpdy3Test, SynReplyHeadersVary) {
// Construct the reply.
scoped_ptr<SpdyFrame> frame_reply(
- ConstructSpdyFrame(*test_cases[i].syn_reply,
- test_cases[i].extra_headers[1],
- test_cases[i].num_headers[1],
- NULL,
- 0));
+ spdy_util_.ConstructSpdyFrame(*test_cases[i].syn_reply,
+ test_cases[i].extra_headers[1],
+ test_cases[i].num_headers[1],
+ NULL,
+ 0));
scoped_ptr<SpdyFrame> body(ConstructSpdyBodyFrame(1, true));
MockRead reads[] = {
@@ -4120,10 +4132,10 @@ TEST_P(SpdyNetworkTransactionSpdy3Test, InvalidSynReply) {
};
scoped_ptr<SpdyFrame> resp(
- ConstructSpdyFrame(kSynStartHeader,
- NULL, 0,
- test_cases[i].headers,
- test_cases[i].num_headers));
+ spdy_util_.ConstructSpdyFrame(kSynStartHeader,
+ NULL, 0,
+ test_cases[i].headers,
+ test_cases[i].num_headers));
scoped_ptr<SpdyFrame> body(ConstructSpdyBodyFrame(1, true));
MockRead reads[] = {
CreateMockRead(*resp),
@@ -4823,11 +4835,11 @@ TEST_P(SpdyNetworkTransactionSpdy3Test, SettingsSaved) {
// Construct the reply.
scoped_ptr<SpdyFrame> reply(
- ConstructSpdyFrame(kSynReplyInfo,
- kExtraHeaders,
- arraysize(kExtraHeaders) / 2,
- NULL,
- 0));
+ spdy_util_.ConstructSpdyFrame(kSynReplyInfo,
+ kExtraHeaders,
+ arraysize(kExtraHeaders) / 2,
+ NULL,
+ 0));
const SpdySettingsIds kSampleId1 = SETTINGS_UPLOAD_BANDWIDTH;
unsigned int kSampleValue1 = 0x0a0a0a0a;
@@ -4962,11 +4974,11 @@ TEST_P(SpdyNetworkTransactionSpdy3Test, SettingsPlayback) {
// Construct the reply.
scoped_ptr<SpdyFrame> reply(
- ConstructSpdyFrame(kSynReplyInfo,
- kExtraHeaders,
- arraysize(kExtraHeaders) / 2,
- NULL,
- 0));
+ spdy_util_.ConstructSpdyFrame(kSynReplyInfo,
+ kExtraHeaders,
+ arraysize(kExtraHeaders) / 2,
+ NULL,
+ 0));
scoped_ptr<SpdyFrame> body(ConstructSpdyBodyFrame(1, true));
MockRead reads[] = {
diff --git a/net/spdy/spdy_proxy_client_socket_spdy2_unittest.cc b/net/spdy/spdy_proxy_client_socket_spdy2_unittest.cc
index 91c92f9..0e2d2b1 100644
--- a/net/spdy/spdy_proxy_client_socket_spdy2_unittest.cc
+++ b/net/spdy/spdy_proxy_client_socket_spdy2_unittest.cc
@@ -116,6 +116,7 @@ class SpdyProxyClientSocketSpdy2Test : public PlatformTest {
CapturingBoundNetLog net_log_;
private:
+ SpdyTestUtil spdy_util_;
scoped_refptr<HttpNetworkSession> session_;
scoped_refptr<IOBuffer> read_buf_;
SpdySessionDependencies session_deps_;
@@ -138,6 +139,7 @@ class SpdyProxyClientSocketSpdy2Test : public PlatformTest {
SpdyProxyClientSocketSpdy2Test::SpdyProxyClientSocketSpdy2Test()
: sock_(NULL),
data_(NULL),
+ spdy_util_(kProtoSPDY2),
session_(NULL),
read_buf_(NULL),
session_deps_(kProtoSPDY2),
@@ -339,7 +341,7 @@ SpdyProxyClientSocketSpdy2Test::ConstructConnectRequestFrame() {
"user-agent", kUserAgent,
"version", "HTTP/1.1",
};
- return ConstructSpdyFrame(
+ return spdy_util_.ConstructSpdyFrame(
kSynStartHeader, NULL, 0, kConnectHeaders, arraysize(kConnectHeaders)/2);
}
@@ -368,7 +370,7 @@ SpdyProxyClientSocketSpdy2Test::ConstructConnectAuthRequestFrame() {
"version", "HTTP/1.1",
"proxy-authorization", "Basic Zm9vOmJhcg==",
};
- return ConstructSpdyFrame(
+ return spdy_util_.ConstructSpdyFrame(
kSynStartHeader, NULL, 0, kConnectHeaders, arraysize(kConnectHeaders)/2);
}
diff --git a/net/spdy/spdy_proxy_client_socket_spdy3_unittest.cc b/net/spdy/spdy_proxy_client_socket_spdy3_unittest.cc
index 331fa60..0251f81 100644
--- a/net/spdy/spdy_proxy_client_socket_spdy3_unittest.cc
+++ b/net/spdy/spdy_proxy_client_socket_spdy3_unittest.cc
@@ -116,6 +116,7 @@ class SpdyProxyClientSocketSpdy3Test : public PlatformTest {
CapturingBoundNetLog net_log_;
private:
+ SpdyTestUtil spdy_util_;
scoped_refptr<HttpNetworkSession> session_;
scoped_refptr<IOBuffer> read_buf_;
SpdySessionDependencies session_deps_;
@@ -138,6 +139,7 @@ class SpdyProxyClientSocketSpdy3Test : public PlatformTest {
SpdyProxyClientSocketSpdy3Test::SpdyProxyClientSocketSpdy3Test()
: sock_(NULL),
data_(NULL),
+ spdy_util_(kProtoSPDY3),
session_(NULL),
read_buf_(NULL),
session_deps_(kProtoSPDY3),
@@ -339,7 +341,7 @@ SpdyProxyClientSocketSpdy3Test::ConstructConnectRequestFrame() {
"user-agent", kUserAgent,
":version", "HTTP/1.1",
};
- return ConstructSpdyFrame(
+ return spdy_util_.ConstructSpdyFrame(
kSynStartHeader, NULL, 0, kConnectHeaders, arraysize(kConnectHeaders)/2);
}
@@ -368,7 +370,7 @@ SpdyProxyClientSocketSpdy3Test::ConstructConnectAuthRequestFrame() {
":version", "HTTP/1.1",
"proxy-authorization", "Basic Zm9vOmJhcg==",
};
- return ConstructSpdyFrame(
+ return spdy_util_.ConstructSpdyFrame(
kSynStartHeader, NULL, 0, kConnectHeaders, arraysize(kConnectHeaders)/2);
}
diff --git a/net/spdy/spdy_test_util_common.cc b/net/spdy/spdy_test_util_common.cc
index b8ff86f..4f17b65 100644
--- a/net/spdy/spdy_test_util_common.cc
+++ b/net/spdy/spdy_test_util_common.cc
@@ -516,7 +516,39 @@ void SpdySessionPoolPeer::EnableSendingInitialSettings(bool enabled) {
pool_->enable_sending_initial_settings_ = enabled;
}
-SpdyTestUtil::SpdyTestUtil(NextProto protocol) : protocol_(protocol) {
+NextProto NextProtoFromSpdyVersion(int spdy_version) {
+ switch (spdy_version) {
+ case kSpdyVersion2:
+ return kProtoSPDY2;
+ case kSpdyVersion3:
+ return kProtoSPDY3;
+ case kSpdyVersion4:
+ return kProtoSPDY4a1;
+ default:
+ NOTREACHED();
+ return kProtoUnknown;
+ }
+}
+
+int SpdyVersionFromNextProto(NextProto next_proto) {
+ switch (next_proto) {
+ case kProtoSPDY2:
+ case kProtoSPDY21:
+ return kSpdyVersion2;
+ case kProtoSPDY3:
+ case kProtoSPDY31:
+ return kSpdyVersion3;
+ case kProtoSPDY4a1:
+ return kSpdyVersion4;
+ default:
+ NOTREACHED();
+ return 0;
+ }
+}
+
+SpdyTestUtil::SpdyTestUtil(NextProto protocol)
+ : protocol_(protocol),
+ spdy_version_(SpdyVersionFromNextProto(protocol)) {
DCHECK(next_proto_is_spdy(protocol)) << "Invalid protocol: " << protocol;
}
@@ -557,4 +589,53 @@ scoped_ptr<SpdyHeaderBlock> SpdyTestUtil::ConstructPostHeaderBlock(
return header_block.Pass();
}
+SpdyFrame* SpdyTestUtil::ConstructSpdyFrame(
+ const SpdyHeaderInfo& header_info,
+ scoped_ptr<SpdyHeaderBlock> headers) const {
+ BufferedSpdyFramer framer(spdy_version_, header_info.compressed);
+ const bool spdy2 = protocol_ < kProtoSPDY3;
+ SpdyFrame* frame = NULL;
+ switch (header_info.kind) {
+ case DATA:
+ frame = framer.CreateDataFrame(header_info.id, header_info.data,
+ header_info.data_length,
+ header_info.data_flags);
+ break;
+ case SYN_STREAM:
+ frame = framer.CreateSynStream(header_info.id, header_info.assoc_id,
+ header_info.priority,
+ spdy2 ? 0 : header_info.credential_slot,
+ header_info.control_flags,
+ header_info.compressed, headers.get());
+ break;
+ case SYN_REPLY:
+ frame = framer.CreateSynReply(header_info.id, header_info.control_flags,
+ header_info.compressed, headers.get());
+ break;
+ case RST_STREAM:
+ frame = framer.CreateRstStream(header_info.id, header_info.status);
+ break;
+ case HEADERS:
+ frame = framer.CreateHeaders(header_info.id, header_info.control_flags,
+ header_info.compressed, headers.get());
+ break;
+ default:
+ ADD_FAILURE();
+ break;
+ }
+ return frame;
+}
+
+SpdyFrame* SpdyTestUtil::ConstructSpdyFrame(const SpdyHeaderInfo& header_info,
+ const char* const extra_headers[],
+ int extra_header_count,
+ const char* const tail_headers[],
+ int tail_header_count) const {
+ scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock());
+ AppendToHeaderBlock(extra_headers, extra_header_count, headers.get());
+ if (tail_headers && tail_header_count)
+ AppendToHeaderBlock(tail_headers, tail_header_count, headers.get());
+ return ConstructSpdyFrame(header_info, headers.Pass());
+}
+
} // namespace net
diff --git a/net/spdy/spdy_test_util_common.h b/net/spdy/spdy_test_util_common.h
index 4763583..5531a85 100644
--- a/net/spdy/spdy_test_util_common.h
+++ b/net/spdy/spdy_test_util_common.h
@@ -271,6 +271,11 @@ class SpdySessionPoolPeer {
DISALLOW_COPY_AND_ASSIGN(SpdySessionPoolPeer);
};
+// TODO(ttuttle): Move these somewhere more widely-accessible; surely this is
+// not the only place that needs such functions.
+NextProto NextProtoFromSpdyVersion(int spdy_version);
+int SpdyVersionFromNextProto(NextProto next_proto);
+
class SpdyTestUtil {
public:
explicit SpdyTestUtil(NextProto protocol);
@@ -281,8 +286,26 @@ class SpdyTestUtil {
base::StringPiece url,
int64 content_length) const;
+ // Construct a SPDY frame. If it is a SYN_STREAM or SYN_REPLY frame (as
+ // specified in header_info.kind), the provided headers are included in the
+ // frame.
+ SpdyFrame* ConstructSpdyFrame(
+ const SpdyHeaderInfo& header_info,
+ scoped_ptr<SpdyHeaderBlock> headers) const;
+
+ // Construct a SPDY frame. If it is a SYN_STREAM or SYN_REPLY frame (as
+ // specified in header_info.kind), the headers provided in extra_headers and
+ // (if non-NULL) tail_headers are concatenated and included in the frame.
+ // (extra_headers must always be non-NULL.)
+ SpdyFrame* ConstructSpdyFrame(const SpdyHeaderInfo& header_info,
+ const char* const extra_headers[],
+ int extra_header_count,
+ const char* const tail_headers[],
+ int tail_header_count) const;
+
private:
const NextProto protocol_;
+ const int spdy_version_;
};
} // namespace net
diff --git a/net/spdy/spdy_test_util_spdy2.cc b/net/spdy/spdy_test_util_spdy2.cc
index be9276e..a8c1588 100644
--- a/net/spdy/spdy_test_util_spdy2.cc
+++ b/net/spdy/spdy_test_util_spdy2.cc
@@ -49,54 +49,33 @@ scoped_ptr<SpdyHeaderBlock> ConstructPostHeaderBlock(base::StringPiece url,
return util.ConstructPostHeaderBlock(url, content_length);
}
-} // namespace
-
+// Construct a SPDY frame.
SpdyFrame* ConstructSpdyFrame(const SpdyHeaderInfo& header_info,
scoped_ptr<SpdyHeaderBlock> headers) {
- BufferedSpdyFramer framer(kSpdyVersion2, header_info.compressed);
- SpdyFrame* frame = NULL;
- switch (header_info.kind) {
- case DATA:
- frame = framer.CreateDataFrame(header_info.id, header_info.data,
- header_info.data_length,
- header_info.data_flags);
- break;
- case SYN_STREAM:
- frame = framer.CreateSynStream(header_info.id, header_info.assoc_id,
- header_info.priority, 0,
- header_info.control_flags,
- header_info.compressed, headers.get());
- break;
- case SYN_REPLY:
- frame = framer.CreateSynReply(header_info.id, header_info.control_flags,
- header_info.compressed, headers.get());
- break;
- case RST_STREAM:
- frame = framer.CreateRstStream(header_info.id, header_info.status);
- break;
- case HEADERS:
- frame = framer.CreateHeaders(header_info.id, header_info.control_flags,
- header_info.compressed, headers.get());
- break;
- default:
- ADD_FAILURE();
- break;
- }
- return frame;
+ SpdyTestUtil util(kProtoSPDY2);
+ return util.ConstructSpdyFrame(header_info, headers.Pass());
}
+// Construct a SPDY frame.
+// |extra_headers| are the extra header-value pairs, which typically
+// will vary the most between calls.
+// |tail| is any (relatively constant) header-value pairs to add.
+// Returns a SpdyFrame.
SpdyFrame* ConstructSpdyFrame(const SpdyHeaderInfo& header_info,
const char* const extra_headers[],
int extra_header_count,
- const char* const tail[],
+ const char* const tail_headers[],
int tail_header_count) {
- scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock());
- AppendToHeaderBlock(extra_headers, extra_header_count, headers.get());
- if (tail && tail_header_count)
- AppendToHeaderBlock(tail, tail_header_count, headers.get());
- return ConstructSpdyFrame(header_info, headers.Pass());
+ SpdyTestUtil util(kProtoSPDY2);
+ return util.ConstructSpdyFrame(header_info,
+ extra_headers,
+ extra_header_count,
+ tail_headers,
+ tail_header_count);
}
+} // namespace
+
SpdyFrame* ConstructSpdySettings(const SettingsMap& settings) {
BufferedSpdyFramer framer(2, false);
return framer.CreateSettings(settings);
diff --git a/net/spdy/spdy_test_util_spdy2.h b/net/spdy/spdy_test_util_spdy2.h
index efe0778..ebd1e51 100644
--- a/net/spdy/spdy_test_util_spdy2.h
+++ b/net/spdy/spdy_test_util_spdy2.h
@@ -24,21 +24,6 @@ namespace test_spdy2 {
// Can't find a function you're looking for? ttuttle is migrating functions
// from here into methods in the SpdyTestUtil class in spdy_test_common.h.
-// Construct a SPDY frame.
-SpdyFrame* ConstructSpdyFrame(const SpdyHeaderInfo& header_info,
- scoped_ptr<SpdyHeaderBlock> headers);
-
-// Construct a SPDY frame.
-// |extra_headers| are the extra header-value pairs, which typically
-// will vary the most between calls.
-// |tail| is any (relatively constant) header-value pairs to add.
-// Returns a SpdyFrame.
-SpdyFrame* ConstructSpdyFrame(const SpdyHeaderInfo& header_info,
- const char* const extra_headers[],
- int extra_header_count,
- const char* const tail[],
- int tail_header_count);
-
// Construct a generic SpdyControlFrame.
SpdyFrame* ConstructSpdyControlFrame(const char* const extra_headers[],
int extra_header_count,
diff --git a/net/spdy/spdy_test_util_spdy3.cc b/net/spdy/spdy_test_util_spdy3.cc
index bd9b38f..3ea8c19 100644
--- a/net/spdy/spdy_test_util_spdy3.cc
+++ b/net/spdy/spdy_test_util_spdy3.cc
@@ -48,62 +48,24 @@ scoped_ptr<SpdyHeaderBlock> ConstructPostHeaderBlock(base::StringPiece url,
return util.ConstructPostHeaderBlock(url, content_length);
}
-} // namespace
-
+// Construct a SPDY frame. |spdy_version| must be kSpdyVersion3 or
+// kSpdyVersion4.
SpdyFrame* ConstructSpdyFrameWithVersion(int spdy_version,
const SpdyHeaderInfo& header_info,
scoped_ptr<SpdyHeaderBlock> headers) {
DCHECK(spdy_version == kSpdyVersion3 || spdy_version == kSpdyVersion4);
- BufferedSpdyFramer framer(spdy_version, header_info.compressed);
- SpdyFrame* frame = NULL;
- switch (header_info.kind) {
- case DATA:
- frame = framer.CreateDataFrame(header_info.id, header_info.data,
- header_info.data_length,
- header_info.data_flags);
- break;
- case SYN_STREAM:
- frame = framer.CreateSynStream(header_info.id, header_info.assoc_id,
- header_info.priority,
- header_info.credential_slot,
- header_info.control_flags,
- header_info.compressed, headers.get());
- break;
- case SYN_REPLY:
- frame = framer.CreateSynReply(header_info.id, header_info.control_flags,
- header_info.compressed, headers.get());
- break;
- case RST_STREAM:
- frame = framer.CreateRstStream(header_info.id, header_info.status);
- break;
- case HEADERS:
- frame = framer.CreateHeaders(header_info.id, header_info.control_flags,
- header_info.compressed, headers.get());
- break;
- default:
- ADD_FAILURE();
- break;
- }
- return frame;
+ SpdyTestUtil util(NextProtoFromSpdyVersion(spdy_version));
+ return util.ConstructSpdyFrame(header_info, headers.Pass());
}
+// Construct a SPDY frame.
SpdyFrame* ConstructSpdyFrame(const SpdyHeaderInfo& header_info,
scoped_ptr<SpdyHeaderBlock> headers) {
- return ConstructSpdyFrameWithVersion(
- kSpdyVersion3, header_info, headers.Pass());
+ SpdyTestUtil util(kProtoSPDY3);
+ return util.ConstructSpdyFrame(header_info, headers.Pass());
}
-SpdyFrame* ConstructSpdyFrame(const SpdyHeaderInfo& header_info,
- const char* const extra_headers[],
- int extra_header_count,
- const char* const tail[],
- int tail_header_count) {
- scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock());
- AppendToHeaderBlock(extra_headers, extra_header_count, headers.get());
- if (tail && tail_header_count)
- AppendToHeaderBlock(tail, tail_header_count, headers.get());
- return ConstructSpdyFrame(header_info, headers.Pass());
-}
+} // namespace
SpdyFrame* ConstructSpdySettings(const SettingsMap& settings) {
BufferedSpdyFramer framer(3, false);
diff --git a/net/spdy/spdy_test_util_spdy3.h b/net/spdy/spdy_test_util_spdy3.h
index ac2857a..cd166b8 100644
--- a/net/spdy/spdy_test_util_spdy3.h
+++ b/net/spdy/spdy_test_util_spdy3.h
@@ -28,30 +28,6 @@ namespace test_spdy3 {
// Can't find a function you're looking for? ttuttle is migrating functions
// from here into methods in the SpdyTestUtil class in spdy_test_common.h.
-// Construct a SPDY frame. |spdy_version| must be kSpdyVersion3 or
-// kSpdyVersion4.
-//
-// TODO(akalin): Move this to a common area once the SpdyHeaderInfo
-// struct is shared between the SPDY2 and SPDY3 tests.
-SpdyFrame* ConstructSpdyFrameWithVersion(int spdy_version,
- const SpdyHeaderInfo& header_info,
- scoped_ptr<SpdyHeaderBlock> headers);
-
-// Construct a SPDY frame.
-SpdyFrame* ConstructSpdyFrame(const SpdyHeaderInfo& header_info,
- scoped_ptr<SpdyHeaderBlock> headers);
-
-// Construct a SPDY frame.
-// |extra_headers| are the extra header-value pairs, which typically
-// will vary the most between calls.
-// |tail| is any (relatively constant) header-value pairs to add.
-// Returns a SpdyFrame.
-SpdyFrame* ConstructSpdyFrame(const SpdyHeaderInfo& header_info,
- const char* const extra_headers[],
- int extra_header_count,
- const char* const tail[],
- int tail_header_count);
-
// Construct a SPDY control frame. |spdy_version| must be
// kSpdyVersion3 or kSpdyVersion4.
//
diff --git a/net/spdy/spdy_websocket_test_util_spdy2.cc b/net/spdy/spdy_websocket_test_util_spdy2.cc
index 16536dd..0738ef8 100644
--- a/net/spdy/spdy_websocket_test_util_spdy2.cc
+++ b/net/spdy/spdy_websocket_test_util_spdy2.cc
@@ -67,6 +67,7 @@ SpdyFrame* ConstructSpdyWebSocketHandshakeRequestFrame(
int header_count,
SpdyStreamId stream_id,
RequestPriority request_priority) {
+ SpdyTestUtil util(kProtoSPDY2);
// SPDY SYN_STREAM control frame header.
const SpdyHeaderInfo kSynStreamHeader = {
@@ -84,7 +85,7 @@ SpdyFrame* ConstructSpdyWebSocketHandshakeRequestFrame(
};
// Construct SPDY SYN_STREAM control frame.
- return ConstructSpdyFrame(
+ return util.ConstructSpdyFrame(
kSynStreamHeader,
kDefaultExtraHeaders,
kDefaultExtraHeaderCount,
@@ -97,6 +98,7 @@ SpdyFrame* ConstructSpdyWebSocketHandshakeResponseFrame(
int header_count,
SpdyStreamId stream_id,
RequestPriority request_priority) {
+ SpdyTestUtil util(kProtoSPDY2);
// SPDY SYN_REPLY control frame header.
const SpdyHeaderInfo kSynReplyHeader = {
@@ -114,7 +116,7 @@ SpdyFrame* ConstructSpdyWebSocketHandshakeResponseFrame(
};
// Construct SPDY SYN_REPLY control frame.
- return ConstructSpdyFrame(
+ return util.ConstructSpdyFrame(
kSynReplyHeader,
kDefaultExtraHeaders,
kDefaultExtraHeaderCount,
diff --git a/net/spdy/spdy_websocket_test_util_spdy3.cc b/net/spdy/spdy_websocket_test_util_spdy3.cc
index 657dab6..82b10c9 100644
--- a/net/spdy/spdy_websocket_test_util_spdy3.cc
+++ b/net/spdy/spdy_websocket_test_util_spdy3.cc
@@ -68,6 +68,7 @@ SpdyFrame* ConstructSpdyWebSocketHandshakeRequestFrame(
int header_count,
SpdyStreamId stream_id,
RequestPriority request_priority) {
+ SpdyTestUtil util(kProtoSPDY3);
// SPDY SYN_STREAM control frame header.
const SpdyHeaderInfo kSynStreamHeader = {
@@ -85,7 +86,7 @@ SpdyFrame* ConstructSpdyWebSocketHandshakeRequestFrame(
};
// Construct SPDY SYN_STREAM control frame.
- return ConstructSpdyFrame(
+ return util.ConstructSpdyFrame(
kSynStreamHeader,
kDefaultExtraHeaders,
kDefaultExtraHeaderCount,
@@ -98,6 +99,7 @@ SpdyFrame* ConstructSpdyWebSocketHandshakeResponseFrame(
int header_count,
SpdyStreamId stream_id,
RequestPriority request_priority) {
+ SpdyTestUtil util(kProtoSPDY3);
// SPDY SYN_REPLY control frame header.
const SpdyHeaderInfo kSynReplyHeader = {
@@ -115,7 +117,7 @@ SpdyFrame* ConstructSpdyWebSocketHandshakeResponseFrame(
};
// Construct SPDY SYN_REPLY control frame.
- return ConstructSpdyFrame(
+ return util.ConstructSpdyFrame(
kSynReplyHeader,
kDefaultExtraHeaders,
kDefaultExtraHeaderCount,