Index: net/spdy/spdy_session_unittest.cc |
diff --git a/net/spdy/spdy_session_unittest.cc b/net/spdy/spdy_session_unittest.cc |
index 98a6c2d52c5ec68224b1c5758de6febc8b4c8fea..629a14c28b925e30c910ffa190bc5e0475c1c0d9 100644 |
--- a/net/spdy/spdy_session_unittest.cc |
+++ b/net/spdy/spdy_session_unittest.cc |
@@ -35,6 +35,19 @@ namespace net { |
namespace { |
+enum TestCase { |
+ // Test using the SPDY/3.1 protocol. |
+ kTestCaseSPDY31, |
+ |
+ // Test using the HTTP/2 protocol, without specifying a stream |
+ // dependency based on the RequestPriority. |
+ kTestCaseHTTP2NoPriorityDependencies, |
+ |
+ // Test using the HTTP/2 protocol, specifying a stream |
+ // dependency based on the RequestPriority. |
+ kTestCaseHTTP2PriorityDependencies |
+}; |
+ |
const char kBodyData[] = "Body data"; |
const size_t kBodyDataSize = arraysize(kBodyData); |
const base::StringPiece kBodyDataStringPiece(kBodyData, kBodyDataSize); |
@@ -59,7 +72,7 @@ base::TimeTicks InstantaneousReads() { |
} // namespace |
class SpdySessionTest : public PlatformTest, |
- public ::testing::WithParamInterface<NextProto> { |
+ public ::testing::WithParamInterface<TestCase> { |
public: |
// Functions used with RunResumeAfterUnstallTest(). |
@@ -96,19 +109,30 @@ class SpdySessionTest : public PlatformTest, |
} |
protected: |
+ NextProto GetProtocol() const { |
+ return GetParam() == kTestCaseSPDY31 ? kProtoSPDY31 : kProtoHTTP2; |
+ } |
+ |
+ bool GetDependenciesFromPriority() const { |
+ return GetParam() == kTestCaseHTTP2PriorityDependencies; |
+ } |
+ |
SpdySessionTest() |
: old_max_group_sockets_(ClientSocketPoolManager::max_sockets_per_group( |
HttpNetworkSession::NORMAL_SOCKET_POOL)), |
old_max_pool_sockets_(ClientSocketPoolManager::max_sockets_per_pool( |
HttpNetworkSession::NORMAL_SOCKET_POOL)), |
- spdy_util_(GetParam()), |
- session_deps_(GetParam()), |
+ spdy_util_(GetProtocol(), GetDependenciesFromPriority()), |
+ session_deps_(GetProtocol()), |
spdy_session_pool_(nullptr), |
test_url_(kDefaultURL), |
test_host_port_pair_(HostPortPair::FromURL(test_url_)), |
key_(test_host_port_pair_, |
ProxyServer::Direct(), |
- PRIVACY_MODE_DISABLED) {} |
+ PRIVACY_MODE_DISABLED) { |
+ SpdySession::SetPriorityDependencyDefaultForTesting( |
+ GetDependenciesFromPriority()); |
+ } |
virtual ~SpdySessionTest() { |
// Important to restore the per-pool limit first, since the pool limit must |
@@ -117,6 +141,7 @@ class SpdySessionTest : public PlatformTest, |
HttpNetworkSession::NORMAL_SOCKET_POOL, old_max_pool_sockets_); |
ClientSocketPoolManager::set_max_sockets_per_group( |
HttpNetworkSession::NORMAL_SOCKET_POOL, old_max_group_sockets_); |
+ SpdySession::SetPriorityDependencyDefaultForTesting(false); |
} |
void SetUp() override { |
@@ -183,10 +208,11 @@ class SpdySessionTest : public PlatformTest, |
BoundTestNetLog log_; |
}; |
-INSTANTIATE_TEST_CASE_P(NextProto, |
+INSTANTIATE_TEST_CASE_P(ProtoPlusDepend, |
SpdySessionTest, |
- testing::Values(kProtoSPDY31, |
- kProtoHTTP2)); |
+ testing::Values(kTestCaseSPDY31, |
+ kTestCaseHTTP2NoPriorityDependencies, |
+ kTestCaseHTTP2PriorityDependencies)); |
// Try to create a SPDY session that will fail during |
// initialization. Nothing should blow up. |
@@ -1218,9 +1244,9 @@ TEST_P(SpdySessionTest, DeleteExpiredPushStreams) { |
if (session_->flow_control_state_ == |
SpdySession::FLOW_CONTROL_STREAM_AND_SESSION) { |
// Unclaimed push body consumed bytes from the session window. |
- EXPECT_EQ( |
- SpdySession::GetDefaultInitialWindowSize(GetParam()) - kUploadDataSize, |
- session_->session_recv_window_size_); |
+ EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetProtocol()) - |
+ kUploadDataSize, |
+ session_->session_recv_window_size_); |
EXPECT_EQ(0, session_->session_unacked_recv_window_bytes_); |
} |
@@ -1239,7 +1265,7 @@ TEST_P(SpdySessionTest, DeleteExpiredPushStreams) { |
if (session_->flow_control_state_ == |
SpdySession::FLOW_CONTROL_STREAM_AND_SESSION) { |
// Verify that the session window reclaimed the evicted stream body. |
- EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetParam()), |
+ EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetProtocol()), |
session_->session_recv_window_size_); |
EXPECT_EQ(kUploadDataSize, session_->session_unacked_recv_window_bytes_); |
} |
@@ -1315,7 +1341,7 @@ TEST_P(SpdySessionTest, OnSettings) { |
int seq = 0; |
std::vector<MockWrite> writes; |
scoped_ptr<SpdyFrame> settings_ack(spdy_util_.ConstructSpdySettingsAck()); |
- if (GetParam() == kProtoHTTP2) { |
+ if (GetProtocol() == kProtoHTTP2) { |
writes.push_back(CreateMockWrite(*settings_ack, ++seq)); |
} |
@@ -1512,7 +1538,7 @@ TEST_P(SpdySessionTest, SendInitialDataOnNewSession) { |
scoped_ptr<SpdyFrame> settings_frame( |
spdy_util_.ConstructSpdySettings(settings)); |
std::vector<MockWrite> writes; |
- if (GetParam() == kProtoHTTP2) { |
+ if (GetProtocol() == kProtoHTTP2) { |
writes.push_back( |
MockWrite(ASYNC, |
kHttp2ConnectionHeaderPrefix, |
@@ -1527,7 +1553,7 @@ TEST_P(SpdySessionTest, SendInitialDataOnNewSession) { |
initial_max_concurrent_streams); |
scoped_ptr<SpdyFrame> server_settings_frame( |
spdy_util_.ConstructSpdySettings(server_settings)); |
- if (GetParam() <= kProtoSPDY31) { |
+ if (GetProtocol() <= kProtoSPDY31) { |
writes.push_back(CreateMockWrite(*server_settings_frame)); |
} |
@@ -1632,7 +1658,7 @@ TEST_P(SpdySessionTest, NetLogOnSessionGoaway) { |
log_.GetEntries(&entries); |
EXPECT_LT(0u, entries.size()); |
- if (GetParam() == kProtoHTTP2) { |
+ if (GetProtocol() == kProtoHTTP2) { |
int pos = ExpectLogContainsSomewhere( |
entries, 0, NetLog::TYPE_HTTP2_SESSION_GOAWAY, NetLog::PHASE_NONE); |
TestNetLogEntry entry = entries[pos]; |
@@ -2316,8 +2342,10 @@ TEST_P(SpdySessionTest, CloseTwoStalledCreateStream) { |
scoped_ptr<SpdyFrame> settings_ack(spdy_util_.ConstructSpdySettingsAck()); |
scoped_ptr<SpdyFrame> req1( |
spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, LOWEST, true)); |
+ spdy_util_.UpdateWithStreamDestruction(1); |
scoped_ptr<SpdyFrame> req2( |
spdy_util_.ConstructSpdyGet(nullptr, 0, false, 3, LOWEST, true)); |
+ spdy_util_.UpdateWithStreamDestruction(3); |
scoped_ptr<SpdyFrame> req3( |
spdy_util_.ConstructSpdyGet(nullptr, 0, false, 5, LOWEST, true)); |
MockWrite writes[] = { |
@@ -3019,9 +3047,9 @@ TEST_P(SpdySessionTest, ProtocolNegotiation) { |
session_->buffered_spdy_framer_->protocol_version()); |
EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION, |
session_->flow_control_state()); |
- EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetParam()), |
+ EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetProtocol()), |
session_->session_send_window_size_); |
- EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetParam()), |
+ EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetProtocol()), |
session_->session_recv_window_size_); |
EXPECT_EQ(0, session_->session_unacked_recv_window_bytes_); |
} |
@@ -3422,7 +3450,7 @@ TEST_P(SpdySessionTest, AdjustRecvWindowSize) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
const int32 initial_window_size = |
- SpdySession::GetDefaultInitialWindowSize(GetParam()); |
+ SpdySession::GetDefaultInitialWindowSize(GetProtocol()); |
const int32 delta_window_size = 100; |
MockRead reads[] = { |
@@ -3489,7 +3517,7 @@ TEST_P(SpdySessionTest, AdjustSendWindowSize) { |
session_->flow_control_state()); |
const int32 initial_window_size = |
- SpdySession::GetDefaultInitialWindowSize(GetParam()); |
+ SpdySession::GetDefaultInitialWindowSize(GetProtocol()); |
const int32 delta_window_size = 100; |
EXPECT_EQ(initial_window_size, session_->session_send_window_size_); |
@@ -3522,13 +3550,13 @@ TEST_P(SpdySessionTest, SessionFlowControlInactiveStream) { |
EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION, |
session_->flow_control_state()); |
- EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetParam()), |
+ EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetProtocol()), |
session_->session_recv_window_size_); |
EXPECT_EQ(0, session_->session_unacked_recv_window_bytes_); |
base::RunLoop().RunUntilIdle(); |
- EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetParam()), |
+ EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetProtocol()), |
session_->session_recv_window_size_); |
EXPECT_EQ(kUploadDataSize, session_->session_unacked_recv_window_bytes_); |
@@ -3542,7 +3570,7 @@ TEST_P(SpdySessionTest, SessionFlowControlInactiveStream) { |
// (including optional pad length and padding) is. |
TEST_P(SpdySessionTest, SessionFlowControlPadding) { |
// Padding only exists in HTTP/2. |
- if (GetParam() < kProtoHTTP2) |
+ if (GetProtocol() < kProtoHTTP2) |
return; |
session_deps_.host_resolver->set_synchronous_mode(true); |
@@ -3563,13 +3591,13 @@ TEST_P(SpdySessionTest, SessionFlowControlPadding) { |
EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION, |
session_->flow_control_state()); |
- EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetParam()), |
+ EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetProtocol()), |
session_->session_recv_window_size_); |
EXPECT_EQ(0, session_->session_unacked_recv_window_bytes_); |
base::RunLoop().RunUntilIdle(); |
- EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetParam()), |
+ EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetProtocol()), |
session_->session_recv_window_size_); |
EXPECT_EQ(kUploadDataSize + padding_length, |
session_->session_unacked_recv_window_bytes_); |
@@ -3864,7 +3892,7 @@ TEST_P(SpdySessionTest, SessionFlowControlNoReceiveLeaks) { |
EXPECT_TRUE(stream->HasUrlFromHeaders()); |
const int32 initial_window_size = |
- SpdySession::GetDefaultInitialWindowSize(GetParam()); |
+ SpdySession::GetDefaultInitialWindowSize(GetProtocol()); |
EXPECT_EQ(initial_window_size, session_->session_recv_window_size_); |
EXPECT_EQ(0, session_->session_unacked_recv_window_bytes_); |
@@ -3930,7 +3958,7 @@ TEST_P(SpdySessionTest, SessionFlowControlNoSendLeaks) { |
EXPECT_TRUE(stream->HasUrlFromHeaders()); |
const int32 initial_window_size = |
- SpdySession::GetDefaultInitialWindowSize(GetParam()); |
+ SpdySession::GetDefaultInitialWindowSize(GetProtocol()); |
EXPECT_EQ(initial_window_size, session_->session_send_window_size_); |
// Write request. |
@@ -4017,7 +4045,7 @@ TEST_P(SpdySessionTest, SessionFlowControlEndToEnd) { |
EXPECT_TRUE(stream->HasUrlFromHeaders()); |
const int32 initial_window_size = |
- SpdySession::GetDefaultInitialWindowSize(GetParam()); |
+ SpdySession::GetDefaultInitialWindowSize(GetProtocol()); |
EXPECT_EQ(initial_window_size, session_->session_send_window_size_); |
EXPECT_EQ(initial_window_size, session_->session_recv_window_size_); |
EXPECT_EQ(0, session_->session_unacked_recv_window_bytes_); |