Index: net/spdy/spdy_session_unittest.cc |
diff --git a/net/spdy/spdy_session_unittest.cc b/net/spdy/spdy_session_unittest.cc |
index a8196e42cacd5af4cb78eeff93cf65d0943a2e20..5ed45ae2e6e657d9d93d312c81a33acf791c433a 100644 |
--- a/net/spdy/spdy_session_unittest.cc |
+++ b/net/spdy/spdy_session_unittest.cc |
@@ -107,12 +107,12 @@ class SpdySessionTest : public PlatformTest, |
HttpNetworkSession::NORMAL_SOCKET_POOL)), |
spdy_util_(GetParam()), |
session_deps_(GetParam()), |
- spdy_session_pool_(NULL), |
+ spdy_session_pool_(nullptr), |
test_url_(kTestUrl), |
test_host_port_pair_(kTestHost, kTestPort), |
- key_(test_host_port_pair_, ProxyServer::Direct(), |
- PRIVACY_MODE_DISABLED) { |
- } |
+ key_(test_host_port_pair_, |
+ ProxyServer::Direct(), |
+ PRIVACY_MODE_DISABLED) {} |
virtual ~SpdySessionTest() { |
// Important to restore the per-pool limit first, since the pool limit must |
@@ -125,12 +125,6 @@ class SpdySessionTest : public PlatformTest, |
void SetUp() override { g_time_delta = base::TimeDelta(); } |
- void CreateDeterministicNetworkSession() { |
- http_session_ = |
- SpdySessionDependencies::SpdyCreateSessionDeterministic(&session_deps_); |
- spdy_session_pool_ = http_session_->spdy_session_pool(); |
- } |
- |
void CreateNetworkSession() { |
http_session_ = |
SpdySessionDependencies::SpdyCreateSession(&session_deps_); |
@@ -189,7 +183,7 @@ INSTANTIATE_TEST_CASE_P(NextProto, |
// Try to create a SPDY session that will fail during |
// initialization. Nothing should blow up. |
TEST_P(SpdySessionTest, InitialReadError) { |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = TryCreateFakeSpdySessionExpectingFailure( |
spdy_session_pool_, key_, ERR_CONNECTION_CLOSED); |
@@ -238,12 +232,10 @@ TEST_P(SpdySessionTest, PendingStreamCancellingAnother) { |
MockRead reads[] = {MockRead(ASYNC, 0, 0), }; |
- DeterministicSocketData data(reads, arraysize(reads), NULL, 0); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), nullptr, 0); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -252,7 +244,7 @@ TEST_P(SpdySessionTest, PendingStreamCancellingAnother) { |
for (size_t i = 0; i < kInitialMaxConcurrentStreams; ++i) { |
base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously( |
SPDY_BIDIRECTIONAL_STREAM, session, test_url_, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream != NULL); |
+ ASSERT_TRUE(spdy_stream != nullptr); |
} |
SpdyStreamRequest request1; |
@@ -288,16 +280,14 @@ TEST_P(SpdySessionTest, PendingStreamCancellingAnother) { |
TEST_P(SpdySessionTest, GoAwayWithNoActiveStreams) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway(1)); |
MockRead reads[] = { |
CreateMockRead(*goaway, 0), |
}; |
- DeterministicSocketData data(reads, arraysize(reads), NULL, 0); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), nullptr, 0); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -307,10 +297,9 @@ TEST_P(SpdySessionTest, GoAwayWithNoActiveStreams) { |
EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); |
// Read and process the GOAWAY frame. |
- data.RunFor(1); |
- EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
base::RunLoop().RunUntilIdle(); |
- EXPECT_TRUE(session == NULL); |
+ EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
+ EXPECT_FALSE(session); |
} |
// A session receiving a GOAWAY frame immediately with no active |
@@ -318,18 +307,14 @@ TEST_P(SpdySessionTest, GoAwayWithNoActiveStreams) { |
TEST_P(SpdySessionTest, GoAwayImmediatelyWithNoActiveStreams) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway(1)); |
MockRead reads[] = { |
- CreateMockRead(*goaway, 0, SYNCHRONOUS), |
+ CreateMockRead(*goaway, 0, SYNCHRONOUS), MockRead(ASYNC, 0, 1) // EOF |
}; |
- DeterministicSocketData data(reads, arraysize(reads), NULL, 0); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
- |
- CreateDeterministicNetworkSession(); |
+ SequencedSocketData data(reads, arraysize(reads), nullptr, 0); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- data.StopAfter(1); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
TryCreateInsecureSpdySessionExpectingFailure( |
@@ -338,6 +323,7 @@ TEST_P(SpdySessionTest, GoAwayImmediatelyWithNoActiveStreams) { |
EXPECT_FALSE(session); |
EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
+ EXPECT_FALSE(data.AllReadDataConsumed()); |
} |
// A session receiving a GOAWAY frame with active streams should close |
@@ -345,26 +331,25 @@ TEST_P(SpdySessionTest, GoAwayImmediatelyWithNoActiveStreams) { |
TEST_P(SpdySessionTest, GoAwayWithActiveStreams) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway(1)); |
MockRead reads[] = { |
- CreateMockRead(*goaway, 2), |
- MockRead(ASYNC, 0, 3) // EOF |
+ MockRead(ASYNC, ERR_IO_PENDING, 2), |
+ CreateMockRead(*goaway, 3), |
+ MockRead(ASYNC, ERR_IO_PENDING, 4), |
+ MockRead(ASYNC, 0, 5) // EOF |
}; |
scoped_ptr<SpdyFrame> req1( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, MEDIUM, true)); |
scoped_ptr<SpdyFrame> req2( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 3, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 3, MEDIUM, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req1, 0), |
CreateMockWrite(*req2, 1), |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -393,7 +378,7 @@ TEST_P(SpdySessionTest, GoAwayWithActiveStreams) { |
spdy_stream2->SendRequestHeaders(headers2.Pass(), NO_MORE_DATA_TO_SEND); |
EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders()); |
- data.RunFor(2); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, spdy_stream1->stream_id()); |
EXPECT_EQ(3u, spdy_stream2->stream_id()); |
@@ -401,22 +386,25 @@ TEST_P(SpdySessionTest, GoAwayWithActiveStreams) { |
EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); |
// Read and process the GOAWAY frame. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
EXPECT_FALSE(session->IsStreamActive(3)); |
- EXPECT_EQ(NULL, spdy_stream2.get()); |
+ EXPECT_FALSE(spdy_stream2); |
EXPECT_TRUE(session->IsStreamActive(1)); |
EXPECT_TRUE(session->IsGoingAway()); |
// Should close the session. |
spdy_stream1->Close(); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
+ EXPECT_FALSE(spdy_stream1); |
- base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_TRUE(session == NULL); |
+ EXPECT_TRUE(session); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// Have a session receive two GOAWAY frames, with the last one causing |
@@ -425,28 +413,28 @@ TEST_P(SpdySessionTest, GoAwayWithActiveStreams) { |
TEST_P(SpdySessionTest, GoAwayTwice) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
scoped_ptr<SpdyFrame> goaway1(spdy_util_.ConstructSpdyGoAway(1)); |
scoped_ptr<SpdyFrame> goaway2(spdy_util_.ConstructSpdyGoAway(0)); |
MockRead reads[] = { |
- CreateMockRead(*goaway1, 2), |
- CreateMockRead(*goaway2, 3), |
- MockRead(ASYNC, 0, 4) // EOF |
+ MockRead(ASYNC, ERR_IO_PENDING, 2), |
+ CreateMockRead(*goaway1, 3), |
+ MockRead(ASYNC, ERR_IO_PENDING, 4), |
+ CreateMockRead(*goaway2, 5), |
+ MockRead(ASYNC, ERR_IO_PENDING, 6), |
+ MockRead(ASYNC, 0, 7) // EOF |
}; |
scoped_ptr<SpdyFrame> req1( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, MEDIUM, true)); |
scoped_ptr<SpdyFrame> req2( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 3, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 3, MEDIUM, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req1, 0), |
CreateMockWrite(*req2, 1), |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -475,7 +463,7 @@ TEST_P(SpdySessionTest, GoAwayTwice) { |
spdy_stream2->SendRequestHeaders(headers2.Pass(), NO_MORE_DATA_TO_SEND); |
EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders()); |
- data.RunFor(2); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, spdy_stream1->stream_id()); |
EXPECT_EQ(3u, spdy_stream2->stream_id()); |
@@ -483,20 +471,21 @@ TEST_P(SpdySessionTest, GoAwayTwice) { |
EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); |
// Read and process the first GOAWAY frame. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
EXPECT_FALSE(session->IsStreamActive(3)); |
- EXPECT_EQ(NULL, spdy_stream2.get()); |
+ EXPECT_FALSE(spdy_stream2); |
EXPECT_TRUE(session->IsStreamActive(1)); |
EXPECT_TRUE(session->IsGoingAway()); |
// Read and process the second GOAWAY frame, which should close the |
// session. |
- data.RunFor(1); |
- base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_TRUE(session == NULL); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// Have a session with active streams receive a GOAWAY frame and then |
@@ -505,26 +494,25 @@ TEST_P(SpdySessionTest, GoAwayTwice) { |
TEST_P(SpdySessionTest, GoAwayWithActiveStreamsThenClose) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway(1)); |
MockRead reads[] = { |
- CreateMockRead(*goaway, 2), |
- MockRead(ASYNC, 0, 3) // EOF |
+ MockRead(ASYNC, ERR_IO_PENDING, 2), |
+ CreateMockRead(*goaway, 3), |
+ MockRead(ASYNC, ERR_IO_PENDING, 4), |
+ MockRead(ASYNC, 0, 5) // EOF |
}; |
scoped_ptr<SpdyFrame> req1( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, MEDIUM, true)); |
scoped_ptr<SpdyFrame> req2( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 3, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 3, MEDIUM, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req1, 0), |
CreateMockWrite(*req2, 1), |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -553,7 +541,7 @@ TEST_P(SpdySessionTest, GoAwayWithActiveStreamsThenClose) { |
spdy_stream2->SendRequestHeaders(headers2.Pass(), NO_MORE_DATA_TO_SEND); |
EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders()); |
- data.RunFor(2); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, spdy_stream1->stream_id()); |
EXPECT_EQ(3u, spdy_stream2->stream_id()); |
@@ -561,20 +549,22 @@ TEST_P(SpdySessionTest, GoAwayWithActiveStreamsThenClose) { |
EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); |
// Read and process the GOAWAY frame. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
EXPECT_FALSE(session->IsStreamActive(3)); |
- EXPECT_EQ(NULL, spdy_stream2.get()); |
+ EXPECT_FALSE(spdy_stream2); |
EXPECT_TRUE(session->IsStreamActive(1)); |
EXPECT_TRUE(session->IsGoingAway()); |
session->CloseSessionOnError(ERR_ABORTED, "Aborting session"); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
+ EXPECT_FALSE(spdy_stream1); |
- base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_TRUE(session == NULL); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// Process a joint read buffer which causes the session to begin draining, and |
@@ -584,12 +574,13 @@ TEST_P(SpdySessionTest, GoAwayWhileDraining) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, MEDIUM, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req, 0), |
}; |
- scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> resp( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); |
scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway(1)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
size_t joint_size = goaway->size() * 2 + body->size(); |
@@ -613,13 +604,10 @@ TEST_P(SpdySessionTest, GoAwayWhileDraining) { |
MockRead(ASYNC, 0, 3) // EOF |
}; |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- DeterministicSocketData data( |
- reads, arraysize(reads), writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -634,14 +622,13 @@ TEST_P(SpdySessionTest, GoAwayWhileDraining) { |
spdy_stream->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND); |
EXPECT_TRUE(spdy_stream->HasUrlFromHeaders()); |
- data.RunFor(3); |
- base::MessageLoop::current()->RunUntilIdle(); |
+ base::RunLoop().RunUntilIdle(); |
// Stream and session closed gracefully. |
EXPECT_TRUE(delegate.StreamIsClosed()); |
EXPECT_EQ(OK, delegate.WaitForClose()); |
EXPECT_EQ(kUploadData, delegate.TakeReceivedData()); |
- EXPECT_TRUE(session == NULL); |
+ EXPECT_FALSE(session); |
} |
// Try to create a stream after receiving a GOAWAY frame. It should |
@@ -649,23 +636,22 @@ TEST_P(SpdySessionTest, GoAwayWhileDraining) { |
TEST_P(SpdySessionTest, CreateStreamAfterGoAway) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway(1)); |
MockRead reads[] = { |
- CreateMockRead(*goaway, 1), |
- MockRead(ASYNC, 0, 2) // EOF |
+ MockRead(ASYNC, ERR_IO_PENDING, 1), |
+ CreateMockRead(*goaway, 2), |
+ MockRead(ASYNC, ERR_IO_PENDING, 3), |
+ MockRead(ASYNC, 0, 4) // EOF |
}; |
scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, MEDIUM, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req, 0), |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -684,14 +670,15 @@ TEST_P(SpdySessionTest, CreateStreamAfterGoAway) { |
spdy_stream->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND); |
EXPECT_TRUE(spdy_stream->HasUrlFromHeaders()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, spdy_stream->stream_id()); |
EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); |
// Read and process the GOAWAY frame. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
EXPECT_TRUE(session->IsStreamActive(1)); |
@@ -702,10 +689,10 @@ TEST_P(SpdySessionTest, CreateStreamAfterGoAway) { |
CompletionCallback()); |
EXPECT_EQ(ERR_FAILED, rv); |
- // Read and process EOF. |
- data.RunFor(1); |
- |
- EXPECT_TRUE(session == NULL); |
+ EXPECT_TRUE(session); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// Receiving a SYN_STREAM frame after a GOAWAY frame should result in |
@@ -713,29 +700,25 @@ TEST_P(SpdySessionTest, CreateStreamAfterGoAway) { |
TEST_P(SpdySessionTest, SynStreamAfterGoAway) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway(1)); |
- scoped_ptr<SpdyFrame> |
- push(spdy_util_.ConstructSpdyPush(NULL, 0, 2, 1, kDefaultURL)); |
+ scoped_ptr<SpdyFrame> push( |
+ spdy_util_.ConstructSpdyPush(nullptr, 0, 2, 1, kDefaultURL)); |
MockRead reads[] = { |
- CreateMockRead(*goaway, 1), |
- CreateMockRead(*push, 2), |
- MockRead(ASYNC, 0, 4) // EOF |
+ MockRead(ASYNC, ERR_IO_PENDING, 1), |
+ CreateMockRead(*goaway, 2), |
+ MockRead(ASYNC, ERR_IO_PENDING, 3), |
+ CreateMockRead(*push, 4), |
+ MockRead(ASYNC, 0, 6) // EOF |
}; |
scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, MEDIUM, true)); |
scoped_ptr<SpdyFrame> rst( |
spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); |
- MockWrite writes[] = { |
- CreateMockWrite(*req, 0), |
- CreateMockWrite(*rst, 3) |
- }; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ MockWrite writes[] = {CreateMockWrite(*req, 0), CreateMockWrite(*rst, 5)}; |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -754,23 +737,24 @@ TEST_P(SpdySessionTest, SynStreamAfterGoAway) { |
spdy_stream->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND); |
EXPECT_TRUE(spdy_stream->HasUrlFromHeaders()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, spdy_stream->stream_id()); |
EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); |
// Read and process the GOAWAY frame. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
EXPECT_TRUE(session->IsStreamActive(1)); |
// Read and process the SYN_STREAM frame, the subsequent RST_STREAM, |
// and EOF. |
- data.RunFor(3); |
- base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_TRUE(session == NULL); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// A session observing a network change with active streams should close |
@@ -778,21 +762,18 @@ TEST_P(SpdySessionTest, SynStreamAfterGoAway) { |
TEST_P(SpdySessionTest, NetworkChangeWithActiveStreams) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
MockRead reads[] = { |
- MockRead(ASYNC, 0, 1) // EOF |
+ MockRead(ASYNC, ERR_IO_PENDING, 1), MockRead(ASYNC, 0, 2) // EOF |
}; |
scoped_ptr<SpdyFrame> req1( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, MEDIUM, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req1, 0), |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -811,7 +792,7 @@ TEST_P(SpdySessionTest, NetworkChangeWithActiveStreams) { |
spdy_stream->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND); |
EXPECT_TRUE(spdy_stream->HasUrlFromHeaders()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, spdy_stream->stream_id()); |
@@ -835,32 +816,31 @@ TEST_P(SpdySessionTest, NetworkChangeWithActiveStreams) { |
// Should close the session. |
spdy_stream->Close(); |
#endif |
- EXPECT_EQ(NULL, spdy_stream.get()); |
+ EXPECT_FALSE(spdy_stream); |
- base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_TRUE(session == NULL); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
TEST_P(SpdySessionTest, ClientPing) { |
session_deps_.enable_ping = true; |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
scoped_ptr<SpdyFrame> read_ping(spdy_util_.ConstructSpdyPing(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*read_ping, 1), |
- MockRead(ASYNC, 0, 0, 2) // EOF |
+ CreateMockRead(*read_ping, 1), |
+ MockRead(ASYNC, ERR_IO_PENDING, 2), |
+ MockRead(ASYNC, 0, 3) // EOF |
}; |
scoped_ptr<SpdyFrame> write_ping(spdy_util_.ConstructSpdyPing(1, false)); |
MockWrite writes[] = { |
CreateMockWrite(*write_ping, 0), |
}; |
- DeterministicSocketData data( |
- reads, arraysize(reads), writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -868,8 +848,8 @@ TEST_P(SpdySessionTest, ClientPing) { |
base::WeakPtr<SpdyStream> spdy_stream1 = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, test_url_, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
- test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
+ test::StreamDelegateSendImmediate delegate(spdy_stream1, nullptr); |
spdy_stream1->SetDelegate(&delegate); |
base::TimeTicks before_ping_time = base::TimeTicks::Now(); |
@@ -880,7 +860,7 @@ TEST_P(SpdySessionTest, ClientPing) { |
session->SendPrefacePingIfNoneInFlight(); |
- data.RunFor(2); |
+ base::RunLoop().RunUntilIdle(); |
session->CheckPingStatus(before_ping_time); |
@@ -889,18 +869,18 @@ TEST_P(SpdySessionTest, ClientPing) { |
EXPECT_FALSE(session->check_ping_status_pending()); |
EXPECT_GE(session->last_activity_time(), before_ping_time); |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); |
EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
- EXPECT_TRUE(session == NULL); |
+ EXPECT_FALSE(session); |
} |
TEST_P(SpdySessionTest, ServerPing) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
scoped_ptr<SpdyFrame> read_ping(spdy_util_.ConstructSpdyPing(2, false)); |
MockRead reads[] = { |
CreateMockRead(*read_ping), |
@@ -912,7 +892,6 @@ TEST_P(SpdySessionTest, ServerPing) { |
}; |
StaticSocketDataProvider data( |
reads, arraysize(reads), writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
CreateNetworkSession(); |
@@ -923,17 +902,17 @@ TEST_P(SpdySessionTest, ServerPing) { |
base::WeakPtr<SpdyStream> spdy_stream1 = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, test_url_, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
- test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
+ test::StreamDelegateSendImmediate delegate(spdy_stream1, nullptr); |
spdy_stream1->SetDelegate(&delegate); |
// Flush the read completion task. |
- base::MessageLoop::current()->RunUntilIdle(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
- EXPECT_TRUE(session == NULL); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
+ EXPECT_FALSE(session); |
+ EXPECT_FALSE(spdy_stream1); |
} |
// Cause a ping to be sent out while producing a write. The write loop |
@@ -944,27 +923,24 @@ TEST_P(SpdySessionTest, PingAndWriteLoop) { |
session_deps_.enable_ping = true; |
session_deps_.time_func = TheNearFuture; |
- MockConnect connect_data(SYNCHRONOUS, OK); |
scoped_ptr<SpdyFrame> write_ping(spdy_util_.ConstructSpdyPing(1, false)); |
scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, LOWEST, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req, 0), |
CreateMockWrite(*write_ping, 1), |
}; |
MockRead reads[] = { |
- MockRead(ASYNC, 0, 2) // EOF |
+ MockRead(ASYNC, ERR_IO_PENDING, 2), MockRead(ASYNC, 0, 3) // EOF |
}; |
session_deps_.host_resolver->set_synchronous_mode(true); |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -983,9 +959,12 @@ TEST_P(SpdySessionTest, PingAndWriteLoop) { |
// Shift time so that a ping will be sent out. |
g_time_delta = base::TimeDelta::FromSeconds(11); |
- data.RunFor(2); |
- |
+ base::RunLoop().RunUntilIdle(); |
session->CloseSessionOnError(ERR_ABORTED, "Aborting"); |
+ |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
TEST_P(SpdySessionTest, StreamIdSpaceExhausted) { |
@@ -1000,18 +979,18 @@ TEST_P(SpdySessionTest, StreamIdSpaceExhausted) { |
// at which point the session closes. |
scoped_ptr<SpdyFrame> req1(spdy_util_.ConstructSpdyGet( |
- NULL, 0, false, kLastStreamId - 2, MEDIUM, true)); |
- scoped_ptr<SpdyFrame> req2( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, kLastStreamId, MEDIUM, true)); |
+ nullptr, 0, false, kLastStreamId - 2, MEDIUM, true)); |
+ scoped_ptr<SpdyFrame> req2(spdy_util_.ConstructSpdyGet( |
+ nullptr, 0, false, kLastStreamId, MEDIUM, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req1, 0), CreateMockWrite(*req2, 1), |
}; |
scoped_ptr<SpdyFrame> resp1( |
- spdy_util_.ConstructSpdyGetSynReply(NULL, 0, kLastStreamId - 2)); |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, kLastStreamId - 2)); |
scoped_ptr<SpdyFrame> resp2( |
- spdy_util_.ConstructSpdyGetSynReply(NULL, 0, kLastStreamId)); |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, kLastStreamId)); |
scoped_ptr<SpdyFrame> body1( |
spdy_util_.ConstructSpdyBodyFrame(kLastStreamId - 2, true)); |
@@ -1019,19 +998,18 @@ TEST_P(SpdySessionTest, StreamIdSpaceExhausted) { |
spdy_util_.ConstructSpdyBodyFrame(kLastStreamId, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp1, 2), CreateMockRead(*resp2, 3), |
- CreateMockRead(*body1, 4), CreateMockRead(*body2, 5), |
- MockRead(ASYNC, 0, 6) // EOF |
+ CreateMockRead(*resp1, 2), |
+ CreateMockRead(*resp2, 3), |
+ MockRead(ASYNC, ERR_IO_PENDING, 4), |
+ CreateMockRead(*body1, 5), |
+ CreateMockRead(*body2, 6), |
+ MockRead(ASYNC, 0, 7) // EOF |
}; |
- DeterministicSocketData data( |
- reads, arraysize(reads), writes, arraysize(writes)); |
- |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -1077,7 +1055,7 @@ TEST_P(SpdySessionTest, StreamIdSpaceExhausted) { |
scoped_ptr<SpdyHeaderBlock>( |
spdy_util_.ConstructGetHeaderBlock(url.spec())), |
NO_MORE_DATA_TO_SEND); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(kLastStreamId - 2u, stream1->stream_id()); |
EXPECT_EQ(1u, session->num_active_streams()); |
@@ -1089,7 +1067,7 @@ TEST_P(SpdySessionTest, StreamIdSpaceExhausted) { |
scoped_ptr<SpdyHeaderBlock>( |
spdy_util_.ConstructGetHeaderBlock(url.spec())), |
NO_MORE_DATA_TO_SEND); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
// Active streams remain active. |
EXPECT_EQ(kLastStreamId, stream2->stream_id()); |
@@ -1103,15 +1081,15 @@ TEST_P(SpdySessionTest, StreamIdSpaceExhausted) { |
EXPECT_EQ(0u, session->pending_create_stream_queue_size(MEDIUM)); |
// Read responses on remaining active streams. |
- data.RunFor(4); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(OK, delegate1.WaitForClose()); |
EXPECT_EQ(kUploadData, delegate1.TakeReceivedData()); |
EXPECT_EQ(OK, delegate2.WaitForClose()); |
EXPECT_EQ(kUploadData, delegate2.TakeReceivedData()); |
// Session was destroyed. |
- base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_FALSE(session.get()); |
+ EXPECT_FALSE(session); |
} |
// Verifies that an unstalled pending stream creation racing with a new stream |
@@ -1124,10 +1102,7 @@ TEST_P(SpdySessionTest, UnstallRacesWithStreamCreation) { |
MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
}; |
- StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
- |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- data.set_connect_data(connect_data); |
+ StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
CreateNetworkSession(); |
@@ -1169,15 +1144,15 @@ TEST_P(SpdySessionTest, UnstallRacesWithStreamCreation) { |
EXPECT_EQ(1u, session->num_created_streams()); |
EXPECT_EQ(0u, session->pending_create_stream_queue_size(MEDIUM)); |
- // NOW run the message loop. The unstalled stream will re-stall itself. |
- base::MessageLoop::current()->RunUntilIdle(); |
+ // Now run the message loop. The unstalled stream will re-stall itself. |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, session->num_created_streams()); |
EXPECT_EQ(1u, session->pending_create_stream_queue_size(MEDIUM)); |
// Cancel the third stream and run the message loop. Verify that the second |
// stream creation now completes. |
stream3->Cancel(); |
- base::MessageLoop::current()->RunUntilIdle(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, session->num_created_streams()); |
EXPECT_EQ(0u, session->pending_create_stream_queue_size(MEDIUM)); |
@@ -1189,31 +1164,32 @@ TEST_P(SpdySessionTest, DeleteExpiredPushStreams) { |
session_deps_.time_func = TheNearFuture; |
scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, MEDIUM, true)); |
scoped_ptr<SpdyFrame> rst( |
spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); |
+ MockWrite writes[] = {CreateMockWrite(*req, 0), CreateMockWrite(*rst, 5)}; |
scoped_ptr<SpdyFrame> push_a(spdy_util_.ConstructSpdyPush( |
- NULL, 0, 2, 1, "http://www.example.org/a.dat")); |
+ nullptr, 0, 2, 1, "http://www.example.org/a.dat")); |
scoped_ptr<SpdyFrame> push_a_body( |
spdy_util_.ConstructSpdyBodyFrame(2, false)); |
// In ascii "0" < "a". We use it to verify that we properly handle std::map |
// iterators inside. See http://crbug.com/443490 |
scoped_ptr<SpdyFrame> push_b(spdy_util_.ConstructSpdyPush( |
- NULL, 0, 4, 1, "http://www.example.org/0.dat")); |
- MockWrite writes[] = {CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4)}; |
+ nullptr, 0, 4, 1, "http://www.example.org/0.dat")); |
MockRead reads[] = { |
- CreateMockRead(*push_a, 1), CreateMockRead(*push_a_body, 2), |
- CreateMockRead(*push_b, 3), MockRead(ASYNC, 0, 5), // EOF |
+ CreateMockRead(*push_a, 1), |
+ CreateMockRead(*push_a_body, 2), |
+ MockRead(ASYNC, ERR_IO_PENDING, 3), |
+ CreateMockRead(*push_b, 4), |
+ MockRead(ASYNC, ERR_IO_PENDING, 6), |
+ MockRead(ASYNC, 0, 7) // EOF |
}; |
- DeterministicSocketData data( |
- reads, arraysize(reads), writes, arraysize(writes)); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -1228,7 +1204,7 @@ TEST_P(SpdySessionTest, DeleteExpiredPushStreams) { |
spdy_util_.ConstructGetHeaderBlock(url.spec())); |
spdy_stream->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND); |
- data.RunFor(3); |
+ base::RunLoop().RunUntilIdle(); |
// Verify that there is one unclaimed push stream. |
EXPECT_EQ(1u, session->num_unclaimed_pushed_streams()); |
@@ -1249,7 +1225,8 @@ TEST_P(SpdySessionTest, DeleteExpiredPushStreams) { |
// Shift time to expire the push stream. Read the second SYN_STREAM, |
// and verify a RST_STREAM was written. |
g_time_delta = base::TimeDelta::FromSeconds(301); |
- data.RunFor(2); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
// Verify that the second pushed stream evicted the first pushed stream. |
EXPECT_EQ(1u, session->num_unclaimed_pushed_streams()); |
@@ -1266,15 +1243,15 @@ TEST_P(SpdySessionTest, DeleteExpiredPushStreams) { |
} |
// Read and process EOF. |
- data.RunFor(1); |
- base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_TRUE(session == NULL); |
+ EXPECT_TRUE(session); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
TEST_P(SpdySessionTest, FailedPing) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
MockRead reads[] = { |
MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
}; |
@@ -1282,9 +1259,9 @@ TEST_P(SpdySessionTest, FailedPing) { |
scoped_ptr<SpdyFrame> goaway( |
spdy_util_.ConstructSpdyGoAway(0, GOAWAY_PROTOCOL_ERROR, "Failed ping.")); |
MockWrite writes[] = {CreateMockWrite(*write_ping), CreateMockWrite(*goaway)}; |
+ |
StaticSocketDataProvider data( |
reads, arraysize(reads), writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
CreateNetworkSession(); |
@@ -1295,8 +1272,8 @@ TEST_P(SpdySessionTest, FailedPing) { |
base::WeakPtr<SpdyStream> spdy_stream1 = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, test_url_, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
- test::StreamDelegateSendImmediate delegate(spdy_stream1, NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
+ test::StreamDelegateSendImmediate delegate(spdy_stream1, nullptr); |
spdy_stream1->SetDelegate(&delegate); |
session->set_connection_at_risk_of_loss_time(base::TimeDelta::FromSeconds(0)); |
@@ -1318,11 +1295,11 @@ TEST_P(SpdySessionTest, FailedPing) { |
base::TimeTicks now = base::TimeTicks::Now(); |
session->last_activity_time_ = now - base::TimeDelta::FromSeconds(1); |
session->CheckPingStatus(now); |
- base::MessageLoop::current()->RunUntilIdle(); |
+ base::RunLoop().RunUntilIdle(); |
- EXPECT_TRUE(session == NULL); |
+ EXPECT_FALSE(session); |
EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
+ EXPECT_FALSE(spdy_stream1); |
} |
// Request kInitialMaxConcurrentStreams + 1 streams. Receive a |
@@ -1334,6 +1311,13 @@ TEST_P(SpdySessionTest, OnSettings) { |
const SpdySettingsIds kSpdySettingsIds = SETTINGS_MAX_CONCURRENT_STREAMS; |
+ int seq = 0; |
+ std::vector<MockWrite> writes; |
+ scoped_ptr<SpdyFrame> settings_ack(spdy_util_.ConstructSpdySettingsAck()); |
+ if (GetParam() >= kProtoSPDY4MinimumVersion) { |
+ writes.push_back(CreateMockWrite(*settings_ack, ++seq)); |
+ } |
+ |
SettingsMap new_settings; |
const uint32 max_concurrent_streams = kInitialMaxConcurrentStreams + 1; |
new_settings[kSpdySettingsIds] = |
@@ -1341,22 +1325,16 @@ TEST_P(SpdySessionTest, OnSettings) { |
scoped_ptr<SpdyFrame> settings_frame( |
spdy_util_.ConstructSpdySettings(new_settings)); |
MockRead reads[] = { |
- CreateMockRead(*settings_frame, 0), |
- MockRead(ASYNC, 0, 1), |
- }; |
- |
- scoped_ptr<SpdyFrame> settings_ack(spdy_util_.ConstructSpdySettingsAck()); |
- MockWrite writes[] = { |
- CreateMockWrite(*settings_ack, 2), |
+ CreateMockRead(*settings_frame, 0), |
+ MockRead(ASYNC, ERR_IO_PENDING, ++seq), |
+ MockRead(ASYNC, 0, ++seq), |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), vector_as_array(&writes), |
+ writes.size()); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -1366,7 +1344,7 @@ TEST_P(SpdySessionTest, OnSettings) { |
base::WeakPtr<SpdyStream> spdy_stream = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, test_url_, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream != NULL); |
+ ASSERT_TRUE(spdy_stream != nullptr); |
} |
StreamReleaserCallback stream_releaser; |
@@ -1377,17 +1355,16 @@ TEST_P(SpdySessionTest, OnSettings) { |
BoundNetLog(), |
stream_releaser.MakeCallback(&request))); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(OK, stream_releaser.WaitForResult()); |
- data.RunFor(1); |
- if (spdy_util_.spdy_version() >= SPDY4) { |
- // Allow the SETTINGS+ACK to write, so the session finishes draining. |
- data.RunFor(1); |
- } |
- base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_TRUE(session == NULL); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
+ |
+ EXPECT_TRUE(data.AllWriteDataConsumed()); |
+ EXPECT_TRUE(data.AllReadDataConsumed()); |
} |
// Start with a persisted value for max concurrent streams. Receive a |
@@ -1411,16 +1388,15 @@ TEST_P(SpdySessionTest, ClearSettings) { |
uint8 flags = SETTINGS_FLAG_CLEAR_PREVIOUSLY_PERSISTED_SETTINGS; |
test::SetFrameFlags(settings_frame.get(), flags, spdy_util_.spdy_version()); |
MockRead reads[] = { |
- CreateMockRead(*settings_frame, 0), |
- MockRead(ASYNC, 0, 1), |
+ CreateMockRead(*settings_frame, 0), |
+ MockRead(ASYNC, ERR_IO_PENDING, 1), |
+ MockRead(ASYNC, 0, 2), |
}; |
- DeterministicSocketData data(reads, arraysize(reads), NULL, 0); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), nullptr, 0); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
// Initialize the SpdySetting with the default. |
spdy_session_pool_->http_server_properties()->SetSpdySetting( |
@@ -1441,7 +1417,7 @@ TEST_P(SpdySessionTest, ClearSettings) { |
base::WeakPtr<SpdyStream> spdy_stream = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, test_url_, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream != NULL); |
+ ASSERT_TRUE(spdy_stream != nullptr); |
} |
StreamReleaserCallback stream_releaser; |
@@ -1453,7 +1429,7 @@ TEST_P(SpdySessionTest, ClearSettings) { |
BoundNetLog(), |
stream_releaser.MakeCallback(&request))); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(OK, stream_releaser.WaitForResult()); |
@@ -1466,8 +1442,9 @@ TEST_P(SpdySessionTest, ClearSettings) { |
EXPECT_EQ(kInitialMaxConcurrentStreams + 1, |
session->max_concurrent_streams()); |
- data.RunFor(1); |
- EXPECT_TRUE(session == NULL); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// Start with max concurrent streams set to 1. Request two streams. |
@@ -1482,10 +1459,7 @@ TEST_P(SpdySessionTest, CancelPendingCreateStream) { |
MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
}; |
- StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- |
- data.set_connect_data(connect_data); |
+ StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
CreateNetworkSession(); |
@@ -1505,14 +1479,14 @@ TEST_P(SpdySessionTest, CancelPendingCreateStream) { |
base::WeakPtr<SpdyStream> spdy_stream = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, test_url_, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream != NULL); |
+ ASSERT_TRUE(spdy_stream != nullptr); |
} |
// Create 2 more streams. First will succeed. Second will be pending. |
base::WeakPtr<SpdyStream> spdy_stream1 = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, test_url_, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
// Use scoped_ptr to let us invalidate the memory when we want to, to trigger |
// a valgrind error if the callback is invoked when it's not supposed to be. |
@@ -1527,13 +1501,13 @@ TEST_P(SpdySessionTest, CancelPendingCreateStream) { |
// Release the first one, this will allow the second to be created. |
spdy_stream1->Cancel(); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
+ EXPECT_FALSE(spdy_stream1); |
request.CancelRequest(); |
callback.reset(); |
// Should not crash when running the pending callback. |
- base::MessageLoop::current()->RunUntilIdle(); |
+ base::RunLoop().RunUntilIdle(); |
} |
TEST_P(SpdySessionTest, SendInitialDataOnNewSession) { |
@@ -1546,7 +1520,6 @@ TEST_P(SpdySessionTest, SendInitialDataOnNewSession) { |
SettingsMap settings; |
settings[SETTINGS_MAX_CONCURRENT_STREAMS] = |
SettingsFlagsAndValue(SETTINGS_FLAG_NONE, kMaxConcurrentPushedStreams); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
scoped_ptr<SpdyFrame> settings_frame( |
spdy_util_.ConstructSpdySettings(settings)); |
std::vector<MockWrite> writes; |
@@ -1572,7 +1545,6 @@ TEST_P(SpdySessionTest, SendInitialDataOnNewSession) { |
StaticSocketDataProvider data(reads, arraysize(reads), |
vector_as_array(&writes), writes.size()); |
- data.set_connect_data(connect_data); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
CreateNetworkSession(); |
@@ -1589,7 +1561,7 @@ TEST_P(SpdySessionTest, SendInitialDataOnNewSession) { |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
- base::MessageLoop::current()->RunUntilIdle(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_TRUE(data.AllWriteDataConsumed()); |
} |
@@ -1616,13 +1588,11 @@ TEST_P(SpdySessionTest, Initialize) { |
session_deps_.net_log = log.bound().net_log(); |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
MockRead reads[] = { |
MockRead(ASYNC, 0, 0) // EOF |
}; |
- StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
- data.set_connect_data(connect_data); |
+ StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
CreateNetworkSession(); |
@@ -1632,7 +1602,7 @@ TEST_P(SpdySessionTest, Initialize) { |
EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); |
// Flush the read completion task. |
- base::MessageLoop::current()->RunUntilIdle(); |
+ base::RunLoop().RunUntilIdle(); |
TestNetLogEntry::List entries; |
log.GetEntries(&entries); |
@@ -1654,15 +1624,13 @@ TEST_P(SpdySessionTest, Initialize) { |
TEST_P(SpdySessionTest, NetLogOnSessionGoaway) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway()); |
MockRead reads[] = { |
CreateMockRead(*goaway), |
MockRead(SYNCHRONOUS, 0, 0) // EOF |
}; |
- StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
- data.set_connect_data(connect_data); |
+ StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
CreateNetworkSession(); |
@@ -1673,10 +1641,10 @@ TEST_P(SpdySessionTest, NetLogOnSessionGoaway) { |
EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); |
// Flush the read completion task. |
- base::MessageLoop::current()->RunUntilIdle(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
- EXPECT_TRUE(session == NULL); |
+ EXPECT_FALSE(session); |
// Check that the NetLog was filled reasonably. |
TestNetLogEntry::List entries; |
@@ -1700,13 +1668,11 @@ TEST_P(SpdySessionTest, NetLogOnSessionGoaway) { |
TEST_P(SpdySessionTest, NetLogOnSessionEOF) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
MockRead reads[] = { |
MockRead(SYNCHRONOUS, 0, 0) // EOF |
}; |
- StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
- data.set_connect_data(connect_data); |
+ StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
CreateNetworkSession(); |
@@ -1717,10 +1683,10 @@ TEST_P(SpdySessionTest, NetLogOnSessionEOF) { |
EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); |
// Flush the read completion task. |
- base::MessageLoop::current()->RunUntilIdle(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
- EXPECT_TRUE(session == NULL); |
+ EXPECT_FALSE(session); |
// Check that the NetLog was filled reasonably. |
TestNetLogEntry::List entries; |
@@ -1745,20 +1711,17 @@ TEST_P(SpdySessionTest, SynCompressionHistograms) { |
session_deps_.enable_compression = true; |
scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyGet(NULL, 0, true, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, true, 1, MEDIUM, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req, 0), |
}; |
MockRead reads[] = { |
- MockRead(ASYNC, 0, 1) // EOF |
+ MockRead(ASYNC, ERR_IO_PENDING, 1), MockRead(ASYNC, 0, 2) // EOF |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -1777,7 +1740,7 @@ TEST_P(SpdySessionTest, SynCompressionHistograms) { |
// Write request headers & capture resulting histogram update. |
base::HistogramTester histogram_tester; |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
// Regression test of compression performance under the request fixture. |
switch (spdy_util_.spdy_version()) { |
case SPDY3: |
@@ -1793,9 +1756,10 @@ TEST_P(SpdySessionTest, SynCompressionHistograms) { |
} |
// Read and process EOF. |
- data.RunFor(1); |
- base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_TRUE(session == NULL); |
+ EXPECT_TRUE(session); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// Queue up a low-priority SYN_STREAM followed by a high-priority |
@@ -1803,22 +1767,21 @@ TEST_P(SpdySessionTest, SynCompressionHistograms) { |
// first. |
TEST_P(SpdySessionTest, OutOfOrderSynStreams) { |
// Construct the request. |
- MockConnect connect_data(SYNCHRONOUS, OK); |
scoped_ptr<SpdyFrame> req_highest( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, HIGHEST, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, HIGHEST, true)); |
scoped_ptr<SpdyFrame> req_lowest( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 3, LOWEST, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 3, LOWEST, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req_highest, 0), |
CreateMockWrite(*req_lowest, 1), |
}; |
scoped_ptr<SpdyFrame> resp_highest( |
- spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); |
scoped_ptr<SpdyFrame> body_highest( |
spdy_util_.ConstructSpdyBodyFrame(1, true)); |
scoped_ptr<SpdyFrame> resp_lowest( |
- spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 3)); |
scoped_ptr<SpdyFrame> body_lowest( |
spdy_util_.ConstructSpdyBodyFrame(3, true)); |
MockRead reads[] = { |
@@ -1831,12 +1794,10 @@ TEST_P(SpdySessionTest, OutOfOrderSynStreams) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -1873,7 +1834,7 @@ TEST_P(SpdySessionTest, OutOfOrderSynStreams) { |
headers_highest.Pass(), NO_MORE_DATA_TO_SEND); |
EXPECT_TRUE(spdy_stream_highest->HasUrlFromHeaders()); |
- data.RunFor(7); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_FALSE(spdy_stream_lowest); |
EXPECT_FALSE(spdy_stream_highest); |
@@ -1882,31 +1843,30 @@ TEST_P(SpdySessionTest, OutOfOrderSynStreams) { |
} |
TEST_P(SpdySessionTest, CancelStream) { |
- MockConnect connect_data(SYNCHRONOUS, OK); |
// Request 1, at HIGHEST priority, will be cancelled before it writes data. |
// Request 2, at LOWEST priority, will be a full request and will be id 1. |
scoped_ptr<SpdyFrame> req2( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, LOWEST, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req2, 0), |
}; |
- scoped_ptr<SpdyFrame> resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> resp2( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); |
scoped_ptr<SpdyFrame> body2(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp2, 1), |
- CreateMockRead(*body2, 2), |
- MockRead(ASYNC, 0, 3) // EOF |
+ CreateMockRead(*resp2, 1), |
+ MockRead(ASYNC, ERR_IO_PENDING, 2), |
+ CreateMockRead(*body2, 3), |
+ MockRead(ASYNC, 0, 4) // EOF |
}; |
session_deps_.host_resolver->set_synchronous_mode(true); |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -1915,7 +1875,7 @@ TEST_P(SpdySessionTest, CancelStream) { |
base::WeakPtr<SpdyStream> spdy_stream1 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url1, HIGHEST, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
test::StreamDelegateDoNothing delegate1(spdy_stream1); |
spdy_stream1->SetDelegate(&delegate1); |
@@ -1924,7 +1884,7 @@ TEST_P(SpdySessionTest, CancelStream) { |
base::WeakPtr<SpdyStream> spdy_stream2 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url2, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream2.get() != NULL); |
+ ASSERT_TRUE(spdy_stream2.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream2->stream_id()); |
test::StreamDelegateDoNothing delegate2(spdy_stream2); |
spdy_stream2->SetDelegate(&delegate2); |
@@ -1942,17 +1902,17 @@ TEST_P(SpdySessionTest, CancelStream) { |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
spdy_stream1->Cancel(); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
+ EXPECT_FALSE(spdy_stream1); |
EXPECT_EQ(0u, delegate1.stream_id()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(0u, delegate1.stream_id()); |
EXPECT_EQ(1u, delegate2.stream_id()); |
spdy_stream2->Cancel(); |
- EXPECT_EQ(NULL, spdy_stream2.get()); |
+ EXPECT_FALSE(spdy_stream2); |
} |
// Create two streams that are set to re-close themselves on close, |
@@ -1961,7 +1921,6 @@ TEST_P(SpdySessionTest, CancelStream) { |
TEST_P(SpdySessionTest, CloseSessionWithTwoCreatedSelfClosingStreams) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
// No actual data will be sent. |
MockWrite writes[] = { |
@@ -1971,12 +1930,10 @@ TEST_P(SpdySessionTest, CloseSessionWithTwoCreatedSelfClosingStreams) { |
MockRead reads[] = { |
MockRead(ASYNC, 0, 0) // EOF |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -1985,14 +1942,14 @@ TEST_P(SpdySessionTest, CloseSessionWithTwoCreatedSelfClosingStreams) { |
base::WeakPtr<SpdyStream> spdy_stream1 = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, url1, HIGHEST, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
GURL url2(kDefaultURL); |
base::WeakPtr<SpdyStream> spdy_stream2 = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, url2, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream2.get() != NULL); |
+ ASSERT_TRUE(spdy_stream2.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream2->stream_id()); |
test::ClosingDelegate delegate1(spdy_stream1); |
@@ -2018,14 +1975,14 @@ TEST_P(SpdySessionTest, CloseSessionWithTwoCreatedSelfClosingStreams) { |
// Ensure we don't crash while closing the session. |
session->CloseSessionOnError(ERR_ABORTED, std::string()); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
- EXPECT_EQ(NULL, spdy_stream2.get()); |
+ EXPECT_FALSE(spdy_stream1); |
+ EXPECT_FALSE(spdy_stream2); |
EXPECT_TRUE(delegate1.StreamIsClosed()); |
EXPECT_TRUE(delegate2.StreamIsClosed()); |
- base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_TRUE(session == NULL); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// Create two streams that are set to close each other on close, and |
@@ -2033,22 +1990,10 @@ TEST_P(SpdySessionTest, CloseSessionWithTwoCreatedSelfClosingStreams) { |
TEST_P(SpdySessionTest, CloseSessionWithTwoCreatedMutuallyClosingStreams) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- |
- // No actual data will be sent. |
- MockWrite writes[] = { |
- MockWrite(ASYNC, 0, 1) // EOF |
- }; |
- |
- MockRead reads[] = { |
- MockRead(ASYNC, 0, 0) // EOF |
- }; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(nullptr, 0, nullptr, 0); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -2057,14 +2002,14 @@ TEST_P(SpdySessionTest, CloseSessionWithTwoCreatedMutuallyClosingStreams) { |
base::WeakPtr<SpdyStream> spdy_stream1 = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, url1, HIGHEST, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1); |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
GURL url2(kDefaultURL); |
base::WeakPtr<SpdyStream> spdy_stream2 = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, url2, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream2.get() != NULL); |
+ ASSERT_TRUE(spdy_stream2); |
EXPECT_EQ(0u, spdy_stream2->stream_id()); |
// Make |spdy_stream1| close |spdy_stream2|. |
@@ -2092,14 +2037,14 @@ TEST_P(SpdySessionTest, CloseSessionWithTwoCreatedMutuallyClosingStreams) { |
// Ensure we don't crash while closing the session. |
session->CloseSessionOnError(ERR_ABORTED, std::string()); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
- EXPECT_EQ(NULL, spdy_stream2.get()); |
+ EXPECT_FALSE(spdy_stream1); |
+ EXPECT_FALSE(spdy_stream2); |
EXPECT_TRUE(delegate1.StreamIsClosed()); |
EXPECT_TRUE(delegate2.StreamIsClosed()); |
- base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_TRUE(session == NULL); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// Create two streams that are set to re-close themselves on close, |
@@ -2107,27 +2052,23 @@ TEST_P(SpdySessionTest, CloseSessionWithTwoCreatedMutuallyClosingStreams) { |
TEST_P(SpdySessionTest, CloseSessionWithTwoActivatedSelfClosingStreams) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- |
scoped_ptr<SpdyFrame> req1( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, MEDIUM, true)); |
scoped_ptr<SpdyFrame> req2( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 3, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 3, MEDIUM, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req1, 0), |
CreateMockWrite(*req2, 1), |
}; |
MockRead reads[] = { |
- MockRead(ASYNC, 0, 2) // EOF |
+ MockRead(ASYNC, ERR_IO_PENDING, 2), MockRead(ASYNC, 0, 3) // EOF |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -2136,14 +2077,14 @@ TEST_P(SpdySessionTest, CloseSessionWithTwoActivatedSelfClosingStreams) { |
base::WeakPtr<SpdyStream> spdy_stream1 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url1, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
GURL url2(kDefaultURL); |
base::WeakPtr<SpdyStream> spdy_stream2 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url2, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream2.get() != NULL); |
+ ASSERT_TRUE(spdy_stream2.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream2->stream_id()); |
test::ClosingDelegate delegate1(spdy_stream1); |
@@ -2166,7 +2107,7 @@ TEST_P(SpdySessionTest, CloseSessionWithTwoActivatedSelfClosingStreams) { |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
EXPECT_EQ(0u, spdy_stream2->stream_id()); |
- data.RunFor(2); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, spdy_stream1->stream_id()); |
EXPECT_EQ(3u, spdy_stream2->stream_id()); |
@@ -2174,14 +2115,16 @@ TEST_P(SpdySessionTest, CloseSessionWithTwoActivatedSelfClosingStreams) { |
// Ensure we don't crash while closing the session. |
session->CloseSessionOnError(ERR_ABORTED, std::string()); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
- EXPECT_EQ(NULL, spdy_stream2.get()); |
+ EXPECT_FALSE(spdy_stream1); |
+ EXPECT_FALSE(spdy_stream2); |
EXPECT_TRUE(delegate1.StreamIsClosed()); |
EXPECT_TRUE(delegate2.StreamIsClosed()); |
- base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_TRUE(session == NULL); |
+ EXPECT_TRUE(session); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// Create two streams that are set to close each other on close, |
@@ -2189,27 +2132,23 @@ TEST_P(SpdySessionTest, CloseSessionWithTwoActivatedSelfClosingStreams) { |
TEST_P(SpdySessionTest, CloseSessionWithTwoActivatedMutuallyClosingStreams) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- |
scoped_ptr<SpdyFrame> req1( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, MEDIUM, true)); |
scoped_ptr<SpdyFrame> req2( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 3, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 3, MEDIUM, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req1, 0), |
CreateMockWrite(*req2, 1), |
}; |
MockRead reads[] = { |
- MockRead(ASYNC, 0, 2) // EOF |
+ MockRead(ASYNC, ERR_IO_PENDING, 2), MockRead(ASYNC, 0, 3) // EOF |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -2218,14 +2157,14 @@ TEST_P(SpdySessionTest, CloseSessionWithTwoActivatedMutuallyClosingStreams) { |
base::WeakPtr<SpdyStream> spdy_stream1 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url1, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1); |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
GURL url2(kDefaultURL); |
base::WeakPtr<SpdyStream> spdy_stream2 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url2, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream2.get() != NULL); |
+ ASSERT_TRUE(spdy_stream2); |
EXPECT_EQ(0u, spdy_stream2->stream_id()); |
// Make |spdy_stream1| close |spdy_stream2|. |
@@ -2250,7 +2189,7 @@ TEST_P(SpdySessionTest, CloseSessionWithTwoActivatedMutuallyClosingStreams) { |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
EXPECT_EQ(0u, spdy_stream2->stream_id()); |
- data.RunFor(2); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, spdy_stream1->stream_id()); |
EXPECT_EQ(3u, spdy_stream2->stream_id()); |
@@ -2258,14 +2197,16 @@ TEST_P(SpdySessionTest, CloseSessionWithTwoActivatedMutuallyClosingStreams) { |
// Ensure we don't crash while closing the session. |
session->CloseSessionOnError(ERR_ABORTED, std::string()); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
- EXPECT_EQ(NULL, spdy_stream2.get()); |
+ EXPECT_FALSE(spdy_stream1); |
+ EXPECT_FALSE(spdy_stream2); |
EXPECT_TRUE(delegate1.StreamIsClosed()); |
EXPECT_TRUE(delegate2.StreamIsClosed()); |
- base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_TRUE(session == NULL); |
+ EXPECT_TRUE(session); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// Delegate that closes a given session when the stream is closed. |
@@ -2287,14 +2228,12 @@ class SessionClosingDelegate : public test::StreamDelegateDoNothing { |
}; |
// Close an activated stream that closes its session. Nothing should |
-// blow up. This is a regression test for http://crbug.com/263691 . |
+// blow up. This is a regression test for https://crbug.com/263691. |
TEST_P(SpdySessionTest, CloseActivatedStreamThatClosesSession) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- |
scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, MEDIUM, true)); |
scoped_ptr<SpdyFrame> rst( |
spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); |
scoped_ptr<SpdyFrame> goaway( |
@@ -2302,19 +2241,18 @@ TEST_P(SpdySessionTest, CloseActivatedStreamThatClosesSession) { |
// The GOAWAY has higher-priority than the RST_STREAM, and is written first |
// despite being queued second. |
MockWrite writes[] = { |
- CreateMockWrite(*req, 0), CreateMockWrite(*goaway, 1), |
- CreateMockWrite(*rst, 2), |
+ CreateMockWrite(*req, 0), |
+ CreateMockWrite(*goaway, 1), |
+ CreateMockWrite(*rst, 3), |
}; |
MockRead reads[] = { |
- MockRead(ASYNC, 0, 3) // EOF |
+ MockRead(ASYNC, 0, 2) // EOF |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -2323,7 +2261,7 @@ TEST_P(SpdySessionTest, CloseActivatedStreamThatClosesSession) { |
base::WeakPtr<SpdyStream> spdy_stream = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream.get() != NULL); |
+ ASSERT_TRUE(spdy_stream.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream->stream_id()); |
SessionClosingDelegate delegate(spdy_stream, session); |
@@ -2336,7 +2274,7 @@ TEST_P(SpdySessionTest, CloseActivatedStreamThatClosesSession) { |
EXPECT_EQ(0u, spdy_stream->stream_id()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, spdy_stream->stream_id()); |
@@ -2344,31 +2282,20 @@ TEST_P(SpdySessionTest, CloseActivatedStreamThatClosesSession) { |
// session). |
spdy_stream->Cancel(); |
- EXPECT_EQ(NULL, spdy_stream.get()); |
+ EXPECT_FALSE(spdy_stream); |
EXPECT_TRUE(delegate.StreamIsClosed()); |
- data.RunFor(2); // Write the RST_STREAM & GOAWAY. |
- base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_TRUE(session == NULL); |
+ // Write the RST_STREAM & GOAWAY. |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_TRUE(data.AllWriteDataConsumed()); |
+ EXPECT_TRUE(data.AllReadDataConsumed()); |
} |
TEST_P(SpdySessionTest, VerifyDomainAuthentication) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- |
- // No actual data will be sent. |
- MockWrite writes[] = { |
- MockWrite(ASYNC, 0, 1) // EOF |
- }; |
- |
- MockRead reads[] = { |
- MockRead(ASYNC, 0, 0) // EOF |
- }; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(nullptr, 0, nullptr, 0); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
// Load a cert that is valid for: |
// www.example.org |
@@ -2377,13 +2304,13 @@ TEST_P(SpdySessionTest, VerifyDomainAuthentication) { |
base::FilePath certs_dir = GetTestCertsDirectory(); |
scoped_refptr<X509Certificate> test_cert( |
ImportCertFromFile(certs_dir, "spdy_pooling.pem")); |
- ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); |
+ ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get()); |
SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
ssl.cert = test_cert; |
- session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); |
+ session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateSecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -2397,20 +2324,8 @@ TEST_P(SpdySessionTest, VerifyDomainAuthentication) { |
TEST_P(SpdySessionTest, ConnectionPooledWithTlsChannelId) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- |
- // No actual data will be sent. |
- MockWrite writes[] = { |
- MockWrite(ASYNC, 0, 1) // EOF |
- }; |
- |
- MockRead reads[] = { |
- MockRead(ASYNC, 0, 0) // EOF |
- }; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(nullptr, 0, nullptr, 0); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
// Load a cert that is valid for: |
// www.example.org |
@@ -2419,14 +2334,14 @@ TEST_P(SpdySessionTest, ConnectionPooledWithTlsChannelId) { |
base::FilePath certs_dir = GetTestCertsDirectory(); |
scoped_refptr<X509Certificate> test_cert( |
ImportCertFromFile(certs_dir, "spdy_pooling.pem")); |
- ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); |
+ ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get()); |
SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
ssl.channel_id_sent = true; |
ssl.cert = test_cert; |
- session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl); |
+ session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateSecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -2440,8 +2355,6 @@ TEST_P(SpdySessionTest, ConnectionPooledWithTlsChannelId) { |
TEST_P(SpdySessionTest, CloseTwoStalledCreateStream) { |
// TODO(rtenneti): Define a helper class/methods and move the common code in |
// this file. |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- |
SettingsMap new_settings; |
const SpdySettingsIds kSpdySettingsIds1 = SETTINGS_MAX_CONCURRENT_STREAMS; |
const uint32 max_concurrent_streams = 1; |
@@ -2450,11 +2363,11 @@ TEST_P(SpdySessionTest, CloseTwoStalledCreateStream) { |
scoped_ptr<SpdyFrame> settings_ack(spdy_util_.ConstructSpdySettingsAck()); |
scoped_ptr<SpdyFrame> req1( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, LOWEST, true)); |
scoped_ptr<SpdyFrame> req2( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 3, LOWEST, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 3, LOWEST, true)); |
scoped_ptr<SpdyFrame> req3( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 5, LOWEST, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 5, LOWEST, true)); |
MockWrite writes[] = { |
CreateMockWrite(*settings_ack, 1), |
CreateMockWrite(*req1, 2), |
@@ -2467,44 +2380,46 @@ TEST_P(SpdySessionTest, CloseTwoStalledCreateStream) { |
scoped_ptr<SpdyFrame> settings_frame( |
spdy_util_.ConstructSpdySettings(new_settings)); |
- scoped_ptr<SpdyFrame> resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> resp1( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); |
scoped_ptr<SpdyFrame> body1(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
- scoped_ptr<SpdyFrame> resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); |
+ scoped_ptr<SpdyFrame> resp2( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 3)); |
scoped_ptr<SpdyFrame> body2(spdy_util_.ConstructSpdyBodyFrame(3, true)); |
- scoped_ptr<SpdyFrame> resp3(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 5)); |
+ scoped_ptr<SpdyFrame> resp3( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 5)); |
scoped_ptr<SpdyFrame> body3(spdy_util_.ConstructSpdyBodyFrame(5, true)); |
MockRead reads[] = { |
- CreateMockRead(*settings_frame), |
- CreateMockRead(*resp1, 3), |
- CreateMockRead(*body1, 4), |
- CreateMockRead(*resp2, 6), |
- CreateMockRead(*body2, 7), |
- CreateMockRead(*resp3, 9), |
- CreateMockRead(*body3, 10), |
- MockRead(ASYNC, 0, 11) // EOF |
+ CreateMockRead(*settings_frame, 0), |
+ CreateMockRead(*resp1, 3), |
+ CreateMockRead(*body1, 4), |
+ CreateMockRead(*resp2, 6), |
+ CreateMockRead(*body2, 7), |
+ CreateMockRead(*resp3, 9), |
+ CreateMockRead(*body3, 10), |
+ MockRead(ASYNC, ERR_IO_PENDING, 11), |
+ MockRead(ASYNC, 0, 12) // EOF |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
// Read the settings frame. |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
GURL url1(kDefaultURL); |
base::WeakPtr<SpdyStream> spdy_stream1 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url1, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
test::StreamDelegateDoNothing delegate1(spdy_stream1); |
spdy_stream1->SetDelegate(&delegate1); |
@@ -2536,17 +2451,16 @@ TEST_P(SpdySessionTest, CloseTwoStalledCreateStream) { |
// Run until 1st stream is activated and then closed. |
EXPECT_EQ(0u, delegate1.stream_id()); |
- data.RunFor(4); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(spdy_stream1); |
EXPECT_EQ(1u, delegate1.stream_id()); |
EXPECT_EQ(0u, session->num_active_streams()); |
- EXPECT_EQ(0u, session->num_created_streams()); |
EXPECT_EQ(1u, session->pending_create_stream_queue_size(LOWEST)); |
// Pump loop for SpdySession::ProcessPendingStreamRequests() to |
// create the 2nd stream. |
- base::MessageLoop::current()->RunUntilIdle(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(0u, session->num_active_streams()); |
EXPECT_EQ(1u, session->num_created_streams()); |
@@ -2562,17 +2476,16 @@ TEST_P(SpdySessionTest, CloseTwoStalledCreateStream) { |
// Run until 2nd stream is activated and then closed. |
EXPECT_EQ(0u, delegate2.stream_id()); |
- data.RunFor(3); |
- EXPECT_EQ(NULL, stream2.get()); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(stream2); |
EXPECT_EQ(3u, delegate2.stream_id()); |
EXPECT_EQ(0u, session->num_active_streams()); |
- EXPECT_EQ(0u, session->num_created_streams()); |
EXPECT_EQ(0u, session->pending_create_stream_queue_size(LOWEST)); |
// Pump loop for SpdySession::ProcessPendingStreamRequests() to |
// create the 3rd stream. |
- base::MessageLoop::current()->RunUntilIdle(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(0u, session->num_active_streams()); |
EXPECT_EQ(1u, session->num_created_streams()); |
@@ -2588,15 +2501,16 @@ TEST_P(SpdySessionTest, CloseTwoStalledCreateStream) { |
// Run until 2nd stream is activated and then closed. |
EXPECT_EQ(0u, delegate3.stream_id()); |
- data.RunFor(3); |
- EXPECT_EQ(NULL, stream3.get()); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(stream3); |
EXPECT_EQ(5u, delegate3.stream_id()); |
EXPECT_EQ(0u, session->num_active_streams()); |
EXPECT_EQ(0u, session->num_created_streams()); |
EXPECT_EQ(0u, session->pending_create_stream_queue_size(LOWEST)); |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
} |
TEST_P(SpdySessionTest, CancelTwoStalledCreateStream) { |
@@ -2606,10 +2520,7 @@ TEST_P(SpdySessionTest, CancelTwoStalledCreateStream) { |
MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
}; |
- StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- |
- data.set_connect_data(connect_data); |
+ StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
CreateNetworkSession(); |
@@ -2622,14 +2533,14 @@ TEST_P(SpdySessionTest, CancelTwoStalledCreateStream) { |
base::WeakPtr<SpdyStream> spdy_stream = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, test_url_, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream != NULL); |
+ ASSERT_TRUE(spdy_stream != nullptr); |
} |
GURL url1(kDefaultURL); |
base::WeakPtr<SpdyStream> spdy_stream1 = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, url1, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
TestCompletionCallback callback2; |
@@ -2653,9 +2564,9 @@ TEST_P(SpdySessionTest, CancelTwoStalledCreateStream) { |
EXPECT_EQ(2u, session->pending_create_stream_queue_size(LOWEST)); |
// Cancel the first stream; this will allow the second stream to be created. |
- EXPECT_TRUE(spdy_stream1.get() != NULL); |
+ EXPECT_TRUE(spdy_stream1); |
spdy_stream1->Cancel(); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
+ EXPECT_FALSE(spdy_stream1); |
EXPECT_EQ(OK, callback2.WaitForResult()); |
EXPECT_EQ(0u, session->num_active_streams()); |
@@ -2665,7 +2576,7 @@ TEST_P(SpdySessionTest, CancelTwoStalledCreateStream) { |
// Cancel the second stream; this will allow the third stream to be created. |
base::WeakPtr<SpdyStream> spdy_stream2 = request2.ReleaseStream(); |
spdy_stream2->Cancel(); |
- EXPECT_EQ(NULL, spdy_stream2.get()); |
+ EXPECT_FALSE(spdy_stream2); |
EXPECT_EQ(OK, callback3.WaitForResult()); |
EXPECT_EQ(0u, session->num_active_streams()); |
@@ -2675,7 +2586,7 @@ TEST_P(SpdySessionTest, CancelTwoStalledCreateStream) { |
// Cancel the third stream. |
base::WeakPtr<SpdyStream> spdy_stream3 = request3.ReleaseStream(); |
spdy_stream3->Cancel(); |
- EXPECT_EQ(NULL, spdy_stream3.get()); |
+ EXPECT_FALSE(spdy_stream3); |
EXPECT_EQ(0u, session->num_active_streams()); |
EXPECT_EQ(kInitialMaxConcurrentStreams - 1, session->num_created_streams()); |
EXPECT_EQ(0u, session->pending_create_stream_queue_size(LOWEST)); |
@@ -2686,11 +2597,12 @@ TEST_P(SpdySessionTest, CancelTwoStalledCreateStream) { |
// on the socket for reading. It then verifies that it has read all |
// the available data without yielding. |
TEST_P(SpdySessionTest, ReadDataWithoutYielding) { |
- MockConnect connect_data(SYNCHRONOUS, OK); |
+ session_deps_.host_resolver->set_synchronous_mode(true); |
+ |
BufferedSpdyFramer framer(spdy_util_.spdy_version(), false); |
scoped_ptr<SpdyFrame> req1( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, MEDIUM, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req1, 0), |
}; |
@@ -2710,27 +2622,26 @@ TEST_P(SpdySessionTest, ReadDataWithoutYielding) { |
scoped_ptr<SpdyFrame> finish_data_frame( |
framer.CreateDataFrame(1, payload_data, kPayloadSize - 1, DATA_FLAG_FIN)); |
- scoped_ptr<SpdyFrame> resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> resp1( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); |
// Write 1 byte less than kMaxReadBytes to check that DoRead reads up to 32k |
// bytes. |
MockRead reads[] = { |
- CreateMockRead(*resp1, 1), |
- CreateMockRead(*partial_data_frame, 2), |
- CreateMockRead(*partial_data_frame, 3, SYNCHRONOUS), |
- CreateMockRead(*partial_data_frame, 4, SYNCHRONOUS), |
- CreateMockRead(*finish_data_frame, 5, SYNCHRONOUS), |
- MockRead(ASYNC, 0, 6) // EOF |
+ CreateMockRead(*resp1, 1), |
+ MockRead(ASYNC, ERR_IO_PENDING, 2), |
+ CreateMockRead(*partial_data_frame, 3), |
+ CreateMockRead(*partial_data_frame, 4, SYNCHRONOUS), |
+ CreateMockRead(*partial_data_frame, 5, SYNCHRONOUS), |
+ CreateMockRead(*finish_data_frame, 6, SYNCHRONOUS), |
+ MockRead(ASYNC, 0, 7) // EOF |
}; |
// Create SpdySession and SpdyStream and send the request. |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.host_resolver->set_synchronous_mode(true); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -2739,7 +2650,7 @@ TEST_P(SpdySessionTest, ReadDataWithoutYielding) { |
base::WeakPtr<SpdyStream> spdy_stream1 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url1, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
test::StreamDelegateDoNothing delegate1(spdy_stream1); |
spdy_stream1->SetDelegate(&delegate1); |
@@ -2755,14 +2666,15 @@ TEST_P(SpdySessionTest, ReadDataWithoutYielding) { |
// Run until 1st read. |
EXPECT_EQ(0u, delegate1.stream_id()); |
- data.RunFor(2); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, delegate1.stream_id()); |
EXPECT_EQ(0u, observer.executed_count()); |
// Read all the data and verify SpdySession::DoReadLoop has not |
// posted a task. |
- data.RunFor(4); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(spdy_stream1); |
// Verify task observer's executed_count is zero, which indicates DoRead read |
// all the available data. |
@@ -2777,11 +2689,12 @@ TEST_P(SpdySessionTest, ReadDataWithoutYielding) { |
// there is data available for it to read (i.e, socket()->Read didn't |
// return ERR_IO_PENDING during socket reads). |
TEST_P(SpdySessionTest, TestYieldingDuringReadData) { |
- MockConnect connect_data(SYNCHRONOUS, OK); |
+ session_deps_.host_resolver->set_synchronous_mode(true); |
+ |
BufferedSpdyFramer framer(spdy_util_.spdy_version(), false); |
scoped_ptr<SpdyFrame> req1( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, MEDIUM, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req1, 0), |
}; |
@@ -2801,27 +2714,26 @@ TEST_P(SpdySessionTest, TestYieldingDuringReadData) { |
scoped_ptr<SpdyFrame> finish_data_frame( |
framer.CreateDataFrame(1, "h", 1, DATA_FLAG_FIN)); |
- scoped_ptr<SpdyFrame> resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> resp1( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); |
// Write 1 byte more than kMaxReadBytes to check that DoRead yields. |
MockRead reads[] = { |
- CreateMockRead(*resp1, 1), |
- CreateMockRead(*partial_data_frame, 2), |
- CreateMockRead(*partial_data_frame, 3, SYNCHRONOUS), |
- CreateMockRead(*partial_data_frame, 4, SYNCHRONOUS), |
- CreateMockRead(*partial_data_frame, 5, SYNCHRONOUS), |
- CreateMockRead(*finish_data_frame, 6, SYNCHRONOUS), |
- MockRead(ASYNC, 0, 7) // EOF |
+ CreateMockRead(*resp1, 1), |
+ MockRead(ASYNC, ERR_IO_PENDING, 2), |
+ CreateMockRead(*partial_data_frame, 3), |
+ CreateMockRead(*partial_data_frame, 4, SYNCHRONOUS), |
+ CreateMockRead(*partial_data_frame, 5, SYNCHRONOUS), |
+ CreateMockRead(*partial_data_frame, 6, SYNCHRONOUS), |
+ CreateMockRead(*finish_data_frame, 7, SYNCHRONOUS), |
+ MockRead(ASYNC, 0, 8) // EOF |
}; |
// Create SpdySession and SpdyStream and send the request. |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.host_resolver->set_synchronous_mode(true); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -2830,7 +2742,7 @@ TEST_P(SpdySessionTest, TestYieldingDuringReadData) { |
base::WeakPtr<SpdyStream> spdy_stream1 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url1, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
test::StreamDelegateDoNothing delegate1(spdy_stream1); |
spdy_stream1->SetDelegate(&delegate1); |
@@ -2846,14 +2758,15 @@ TEST_P(SpdySessionTest, TestYieldingDuringReadData) { |
// Run until 1st read. |
EXPECT_EQ(0u, delegate1.stream_id()); |
- data.RunFor(2); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, delegate1.stream_id()); |
EXPECT_EQ(0u, observer.executed_count()); |
// Read all the data and verify SpdySession::DoReadLoop has posted a |
// task. |
- data.RunFor(6); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(spdy_stream1); |
// Verify task observer's executed_count is 1, which indicates DoRead has |
// posted only one task and thus yielded though there is data available for it |
@@ -2875,11 +2788,12 @@ TEST_P(SpdySessionTest, TestYieldingDuringReadData) { |
// yield. When we come back, DoRead() will read the results from the |
// async read, and rest of the data synchronously. |
TEST_P(SpdySessionTest, TestYieldingDuringAsyncReadData) { |
- MockConnect connect_data(SYNCHRONOUS, OK); |
+ session_deps_.host_resolver->set_synchronous_mode(true); |
+ |
BufferedSpdyFramer framer(spdy_util_.spdy_version(), false); |
scoped_ptr<SpdyFrame> req1( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, MEDIUM, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req1, 0), |
}; |
@@ -2908,31 +2822,30 @@ TEST_P(SpdySessionTest, TestYieldingDuringAsyncReadData) { |
scoped_ptr<SpdyFrame> finish_data_frame(framer.CreateDataFrame( |
1, "h", 1, DATA_FLAG_FIN)); |
- scoped_ptr<SpdyFrame> resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> resp1( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); |
MockRead reads[] = { |
- CreateMockRead(*resp1, 1), |
- CreateMockRead(*eightk_data_frame, 2), |
- CreateMockRead(*eightk_data_frame, 3, SYNCHRONOUS), |
- CreateMockRead(*eightk_data_frame, 4, SYNCHRONOUS), |
- CreateMockRead(*twok_data_frame, 5, SYNCHRONOUS), |
- CreateMockRead(*eightk_data_frame, 6, ASYNC), |
- CreateMockRead(*eightk_data_frame, 7, SYNCHRONOUS), |
- CreateMockRead(*eightk_data_frame, 8, SYNCHRONOUS), |
- CreateMockRead(*eightk_data_frame, 9, SYNCHRONOUS), |
- CreateMockRead(*twok_data_frame, 10, SYNCHRONOUS), |
- CreateMockRead(*finish_data_frame, 11, SYNCHRONOUS), |
- MockRead(ASYNC, 0, 12) // EOF |
+ CreateMockRead(*resp1, 1), |
+ MockRead(ASYNC, ERR_IO_PENDING, 2), |
+ CreateMockRead(*eightk_data_frame, 3), |
+ CreateMockRead(*eightk_data_frame, 4, SYNCHRONOUS), |
+ CreateMockRead(*eightk_data_frame, 5, SYNCHRONOUS), |
+ CreateMockRead(*twok_data_frame, 6, SYNCHRONOUS), |
+ CreateMockRead(*eightk_data_frame, 7, ASYNC), |
+ CreateMockRead(*eightk_data_frame, 8, SYNCHRONOUS), |
+ CreateMockRead(*eightk_data_frame, 9, SYNCHRONOUS), |
+ CreateMockRead(*eightk_data_frame, 10, SYNCHRONOUS), |
+ CreateMockRead(*twok_data_frame, 11, SYNCHRONOUS), |
+ CreateMockRead(*finish_data_frame, 12, SYNCHRONOUS), |
+ MockRead(ASYNC, 0, 13) // EOF |
}; |
// Create SpdySession and SpdyStream and send the request. |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.host_resolver->set_synchronous_mode(true); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -2941,7 +2854,7 @@ TEST_P(SpdySessionTest, TestYieldingDuringAsyncReadData) { |
base::WeakPtr<SpdyStream> spdy_stream1 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url1, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
test::StreamDelegateDoNothing delegate1(spdy_stream1); |
spdy_stream1->SetDelegate(&delegate1); |
@@ -2957,14 +2870,15 @@ TEST_P(SpdySessionTest, TestYieldingDuringAsyncReadData) { |
// Run until 1st read. |
EXPECT_EQ(0u, delegate1.stream_id()); |
- data.RunFor(2); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, delegate1.stream_id()); |
EXPECT_EQ(0u, observer.executed_count()); |
// Read all the data and verify SpdySession::DoReadLoop has posted a |
// task. |
- data.RunFor(12); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(spdy_stream1); |
// Verify task observer's executed_count is 1, which indicates DoRead has |
// posted only one task and thus yielded though there is data available for |
@@ -2977,33 +2891,33 @@ TEST_P(SpdySessionTest, TestYieldingDuringAsyncReadData) { |
// Send a GoAway frame when SpdySession is in DoReadLoop. Make sure |
// nothing blows up. |
TEST_P(SpdySessionTest, GoAwayWhileInDoReadLoop) { |
- MockConnect connect_data(SYNCHRONOUS, OK); |
+ session_deps_.host_resolver->set_synchronous_mode(true); |
+ |
BufferedSpdyFramer framer(spdy_util_.spdy_version(), false); |
scoped_ptr<SpdyFrame> req1( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, MEDIUM, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req1, 0), |
}; |
- scoped_ptr<SpdyFrame> resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> resp1( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); |
scoped_ptr<SpdyFrame> body1(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway()); |
MockRead reads[] = { |
- CreateMockRead(*resp1, 1), |
- CreateMockRead(*body1, 2), |
- CreateMockRead(*goaway, 3), |
+ CreateMockRead(*resp1, 1), |
+ MockRead(ASYNC, ERR_IO_PENDING, 2), |
+ CreateMockRead(*body1, 3), |
+ CreateMockRead(*goaway, 4), |
}; |
// Create SpdySession and SpdyStream and send the request. |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.host_resolver->set_synchronous_mode(true); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -3014,7 +2928,7 @@ TEST_P(SpdySessionTest, GoAwayWhileInDoReadLoop) { |
session, url1, MEDIUM, BoundNetLog()); |
test::StreamDelegateDoNothing delegate1(spdy_stream1); |
spdy_stream1->SetDelegate(&delegate1); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
scoped_ptr<SpdyHeaderBlock> headers1( |
@@ -3024,15 +2938,16 @@ TEST_P(SpdySessionTest, GoAwayWhileInDoReadLoop) { |
// Run until 1st read. |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, spdy_stream1->stream_id()); |
// Run until GoAway. |
- data.RunFor(3); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(spdy_stream1); |
EXPECT_TRUE(data.AllWriteDataConsumed()); |
EXPECT_TRUE(data.AllReadDataConsumed()); |
- EXPECT_TRUE(session == NULL); |
+ EXPECT_FALSE(session); |
} |
// Within this framework, a SpdySession should be initialized with |
@@ -3042,12 +2957,10 @@ TEST_P(SpdySessionTest, GoAwayWhileInDoReadLoop) { |
TEST_P(SpdySessionTest, ProtocolNegotiation) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
MockRead reads[] = { |
MockRead(SYNCHRONOUS, 0, 0) // EOF |
}; |
- StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
- data.set_connect_data(connect_data); |
+ StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
CreateNetworkSession(); |
@@ -3073,12 +2986,10 @@ TEST_P(SpdySessionTest, CloseOneIdleConnection) { |
ClientSocketPoolManager::set_max_sockets_per_pool( |
HttpNetworkSession::NORMAL_SOCKET_POOL, 1); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
MockRead reads[] = { |
MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
}; |
- StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
- data.set_connect_data(connect_data); |
+ StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
@@ -3113,7 +3024,7 @@ TEST_P(SpdySessionTest, CloseOneIdleConnection) { |
// new connection. |
EXPECT_EQ(OK, callback2.WaitForResult()); |
EXPECT_FALSE(pool->IsStalled()); |
- EXPECT_TRUE(session1 == NULL); |
+ EXPECT_FALSE(session1); |
} |
// Tests the case of a non-SPDY request closing an idle SPDY session when no |
@@ -3125,12 +3036,10 @@ TEST_P(SpdySessionTest, CloseOneIdleConnectionWithAlias) { |
ClientSocketPoolManager::set_max_sockets_per_pool( |
HttpNetworkSession::NORMAL_SOCKET_POOL, 1); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
MockRead reads[] = { |
MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
}; |
- StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
- data.set_connect_data(connect_data); |
+ StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
@@ -3163,11 +3072,8 @@ TEST_P(SpdySessionTest, CloseOneIdleConnectionWithAlias) { |
AddressList addresses; |
// Pre-populate the DNS cache, since a synchronous resolution is required in |
// order to create the alias. |
- session_deps_.host_resolver->Resolve(info, |
- DEFAULT_PRIORITY, |
- &addresses, |
- CompletionCallback(), |
- NULL, |
+ session_deps_.host_resolver->Resolve(info, DEFAULT_PRIORITY, &addresses, |
+ CompletionCallback(), nullptr, |
BoundNetLog()); |
// Get a session for |key2|, which should return the session created earlier. |
base::WeakPtr<SpdySession> session2 = |
@@ -3193,8 +3099,8 @@ TEST_P(SpdySessionTest, CloseOneIdleConnectionWithAlias) { |
// new connection. |
EXPECT_EQ(OK, callback3.WaitForResult()); |
EXPECT_FALSE(pool->IsStalled()); |
- EXPECT_TRUE(session1 == NULL); |
- EXPECT_TRUE(session2 == NULL); |
+ EXPECT_FALSE(session1); |
+ EXPECT_FALSE(session2); |
} |
// Tests that when a SPDY session becomes idle, it closes itself if there is |
@@ -3205,12 +3111,11 @@ TEST_P(SpdySessionTest, CloseSessionOnIdleWhenPoolStalled) { |
ClientSocketPoolManager::set_max_sockets_per_pool( |
HttpNetworkSession::NORMAL_SOCKET_POOL, 1); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
MockRead reads[] = { |
MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
}; |
scoped_ptr<SpdyFrame> req1( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, LOWEST, true)); |
scoped_ptr<SpdyFrame> cancel1( |
spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); |
MockWrite writes[] = { |
@@ -3219,15 +3124,13 @@ TEST_P(SpdySessionTest, CloseSessionOnIdleWhenPoolStalled) { |
}; |
StaticSocketDataProvider data(reads, arraysize(reads), |
writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
MockRead http_reads[] = { |
MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
}; |
- StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), |
- NULL, 0); |
- http_data.set_connect_data(connect_data); |
+ StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, |
+ 0); |
session_deps_.socket_factory->AddSocketDataProvider(&http_data); |
@@ -3263,7 +3166,7 @@ TEST_P(SpdySessionTest, CloseSessionOnIdleWhenPoolStalled) { |
headers1.Pass(), NO_MORE_DATA_TO_SEND)); |
EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); |
- base::MessageLoop::current()->RunUntilIdle(); |
+ base::RunLoop().RunUntilIdle(); |
// Trying to create a new connection should cause the pool to be stalled, and |
// post a task asynchronously to try and close the session. |
@@ -3298,7 +3201,7 @@ TEST_P(SpdySessionTest, CloseSessionOnIdleWhenPoolStalled) { |
// Verify that SpdySessionKey and therefore SpdySession is different when |
// privacy mode is enabled or disabled. |
TEST_P(SpdySessionTest, SpdySessionKeyPrivacyMode) { |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
HostPortPair host_port_pair("www.example.org", 443); |
SpdySessionKey key_privacy_enabled(host_port_pair, ProxyServer::Direct(), |
@@ -3359,10 +3262,8 @@ class StreamCreatingDelegate : public test::StreamDelegateDoNothing { |
TEST_P(SpdySessionTest, CreateStreamOnStreamReset) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- |
scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, MEDIUM, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, MEDIUM, true)); |
MockWrite writes[] = { |
CreateMockWrite(*req, 0), |
}; |
@@ -3370,15 +3271,15 @@ TEST_P(SpdySessionTest, CreateStreamOnStreamReset) { |
scoped_ptr<SpdyFrame> rst( |
spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_REFUSED_STREAM)); |
MockRead reads[] = { |
- CreateMockRead(*rst, 1), |
- MockRead(ASYNC, 0, 2) // EOF |
+ MockRead(ASYNC, ERR_IO_PENDING, 1), |
+ CreateMockRead(*rst, 2), |
+ MockRead(ASYNC, ERR_IO_PENDING, 3), |
+ MockRead(ASYNC, 0, 4) // EOF |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -3387,7 +3288,7 @@ TEST_P(SpdySessionTest, CreateStreamOnStreamReset) { |
base::WeakPtr<SpdyStream> spdy_stream = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream.get() != NULL); |
+ ASSERT_TRUE(spdy_stream.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream->stream_id()); |
StreamCreatingDelegate delegate(spdy_stream, session); |
@@ -3400,18 +3301,23 @@ TEST_P(SpdySessionTest, CreateStreamOnStreamReset) { |
EXPECT_EQ(0u, spdy_stream->stream_id()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, spdy_stream->stream_id()); |
// Cause the stream to be reset, which should cause another stream |
// to be created. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
- EXPECT_EQ(NULL, spdy_stream.get()); |
+ EXPECT_FALSE(spdy_stream); |
EXPECT_TRUE(delegate.StreamIsClosed()); |
EXPECT_EQ(0u, session->num_active_streams()); |
EXPECT_EQ(1u, session->num_created_streams()); |
+ |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// The tests below are only for SPDY/3 and above. |
@@ -3426,60 +3332,63 @@ TEST_P(SpdySessionTest, UpdateStreamsSendWindowSize) { |
// Set up the socket so we read a SETTINGS frame that sets |
// INITIAL_WINDOW_SIZE. |
- MockConnect connect_data(SYNCHRONOUS, OK); |
scoped_ptr<SpdyFrame> settings_frame( |
spdy_util_.ConstructSpdySettings(new_settings)); |
MockRead reads[] = { |
- CreateMockRead(*settings_frame, 0), |
- MockRead(ASYNC, 0, 1) // EOF |
+ CreateMockRead(*settings_frame, 0), |
+ MockRead(ASYNC, ERR_IO_PENDING, 1), |
+ MockRead(ASYNC, 0, 2) // EOF |
}; |
scoped_ptr<SpdyFrame> settings_ack(spdy_util_.ConstructSpdySettingsAck()); |
MockWrite writes[] = { |
- CreateMockWrite(*settings_ack, 2), |
+ CreateMockWrite(*settings_ack, 3), |
}; |
session_deps_.host_resolver->set_synchronous_mode(true); |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
base::WeakPtr<SpdyStream> spdy_stream1 = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, test_url_, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
TestCompletionCallback callback1; |
EXPECT_NE(spdy_stream1->send_window_size(), window_size); |
- data.RunFor(1); // Process the SETTINGS frame, but not the EOF |
- base::MessageLoop::current()->RunUntilIdle(); |
+ // Process the SETTINGS frame. |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(session->stream_initial_send_window_size(), window_size); |
EXPECT_EQ(spdy_stream1->send_window_size(), window_size); |
// Release the first one, this will allow the second to be created. |
spdy_stream1->Cancel(); |
- EXPECT_EQ(NULL, spdy_stream1.get()); |
+ EXPECT_FALSE(spdy_stream1); |
base::WeakPtr<SpdyStream> spdy_stream2 = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, test_url_, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream2.get() != NULL); |
+ ASSERT_TRUE(spdy_stream2.get() != nullptr); |
EXPECT_EQ(spdy_stream2->send_window_size(), window_size); |
spdy_stream2->Cancel(); |
- EXPECT_EQ(NULL, spdy_stream2.get()); |
+ EXPECT_FALSE(spdy_stream2); |
+ |
+ EXPECT_TRUE(session); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// The tests below are only for SPDY/3.1 and above. |
// SpdySession::{Increase,Decrease}RecvWindowSize should properly |
-// adjust the session receive window size for SPDY 3.1 and higher. In |
-// addition, SpdySession::IncreaseRecvWindowSize should trigger |
+// adjust the session receive window size. In addition, |
+// SpdySession::IncreaseRecvWindowSize should trigger |
// sending a WINDOW_UPDATE frame for a large enough delta. |
TEST_P(SpdySessionTest, AdjustRecvWindowSize) { |
if (GetParam() < kProtoSPDY31) |
@@ -3491,21 +3400,18 @@ TEST_P(SpdySessionTest, AdjustRecvWindowSize) { |
SpdySession::GetDefaultInitialWindowSize(GetParam()); |
const int32 delta_window_size = 100; |
- MockConnect connect_data(SYNCHRONOUS, OK); |
MockRead reads[] = { |
- MockRead(ASYNC, 0, 1) // EOF |
+ MockRead(ASYNC, ERR_IO_PENDING, 1), MockRead(ASYNC, 0, 2) // EOF |
}; |
scoped_ptr<SpdyFrame> window_update(spdy_util_.ConstructSpdyWindowUpdate( |
kSessionFlowControlStreamId, initial_window_size + delta_window_size)); |
MockWrite writes[] = { |
CreateMockWrite(*window_update, 0), |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION, |
@@ -3525,7 +3431,7 @@ TEST_P(SpdySessionTest, AdjustRecvWindowSize) { |
session->session_recv_window_size_); |
EXPECT_EQ(0, session->session_unacked_recv_window_bytes_); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
// DecreaseRecvWindowSize() expects |in_io_loop_| to be true. |
session->in_io_loop_ = true; |
@@ -3534,6 +3440,11 @@ TEST_P(SpdySessionTest, AdjustRecvWindowSize) { |
session->in_io_loop_ = false; |
EXPECT_EQ(0, session->session_recv_window_size_); |
EXPECT_EQ(0, session->session_unacked_recv_window_bytes_); |
+ |
+ EXPECT_TRUE(session); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// SpdySession::{Increase,Decrease}SendWindowSize should properly |
@@ -3545,12 +3456,10 @@ TEST_P(SpdySessionTest, AdjustSendWindowSize) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
MockRead reads[] = { |
MockRead(SYNCHRONOUS, 0, 0) // EOF |
}; |
- StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
- data.set_connect_data(connect_data); |
+ StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
CreateNetworkSession(); |
@@ -3582,17 +3491,16 @@ TEST_P(SpdySessionTest, SessionFlowControlInactiveStream) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyBodyFrame(1, false)); |
MockRead reads[] = { |
- CreateMockRead(*resp, 0), |
- MockRead(ASYNC, 0, 1) // EOF |
+ CreateMockRead(*resp, 0), |
+ MockRead(ASYNC, ERR_IO_PENDING, 1), |
+ MockRead(ASYNC, 0, 2) // EOF |
}; |
- DeterministicSocketData data(reads, arraysize(reads), NULL, 0); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), nullptr, 0); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION, |
@@ -3602,13 +3510,16 @@ TEST_P(SpdySessionTest, SessionFlowControlInactiveStream) { |
session->session_recv_window_size_); |
EXPECT_EQ(0, session->session_unacked_recv_window_bytes_); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetParam()), |
session->session_recv_window_size_); |
EXPECT_EQ(kUploadDataSize, session->session_unacked_recv_window_bytes_); |
- data.RunFor(1); |
+ EXPECT_TRUE(session); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// The frame header is not included in flow control, but frame payload |
@@ -3621,17 +3532,17 @@ TEST_P(SpdySessionTest, SessionFlowControlPadding) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
const int padding_length = 42; |
- MockConnect connect_data(SYNCHRONOUS, OK); |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyBodyFrame( |
1, kUploadData, kUploadDataSize, false, padding_length)); |
MockRead reads[] = { |
- CreateMockRead(*resp, 0), MockRead(ASYNC, 0, 1) // EOF |
+ CreateMockRead(*resp, 0), |
+ MockRead(ASYNC, ERR_IO_PENDING, 1), |
+ MockRead(ASYNC, 0, 2) // EOF |
}; |
- DeterministicSocketData data(reads, arraysize(reads), NULL, 0); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), nullptr, 0); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION, |
@@ -3641,14 +3552,16 @@ TEST_P(SpdySessionTest, SessionFlowControlPadding) { |
session->session_recv_window_size_); |
EXPECT_EQ(0, session->session_unacked_recv_window_bytes_); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SpdySession::GetDefaultInitialWindowSize(GetParam()), |
session->session_recv_window_size_); |
EXPECT_EQ(kUploadDataSize + padding_length, |
session->session_unacked_recv_window_bytes_); |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// Peer sends more data than stream level receiving flow control window. |
@@ -3657,26 +3570,29 @@ TEST_P(SpdySessionTest, StreamFlowControlTooMuchData) { |
const int32 data_frame_size = 2 * stream_max_recv_window_size; |
scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, LOWEST, true)); |
+ scoped_ptr<SpdyFrame> rst( |
+ spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_FLOW_CONTROL_ERROR)); |
MockWrite writes[] = { |
- CreateMockWrite(*req, 0), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4), |
}; |
- scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> resp( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); |
const std::string payload(data_frame_size, 'a'); |
scoped_ptr<SpdyFrame> data_frame(spdy_util_.ConstructSpdyBodyFrame( |
1, payload.data(), data_frame_size, false)); |
MockRead reads[] = { |
CreateMockRead(*resp, 1), |
- CreateMockRead(*data_frame, 2), |
- MockRead(ASYNC, 0, 3), |
+ MockRead(ASYNC, ERR_IO_PENDING, 2), |
+ CreateMockRead(*data_frame, 3), |
+ MockRead(ASYNC, ERR_IO_PENDING, 5), |
+ MockRead(ASYNC, 0, 6), |
}; |
- DeterministicSocketData data(reads, arraysize(reads), writes, |
- arraysize(writes)); |
- data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
+ CreateNetworkSession(); |
SpdySessionPoolPeer pool_peer(spdy_session_pool_); |
pool_peer.SetStreamInitialRecvWindowSize(stream_max_recv_window_size); |
@@ -3698,12 +3614,18 @@ TEST_P(SpdySessionTest, StreamFlowControlTooMuchData) { |
headers.Pass(), NO_MORE_DATA_TO_SEND)); |
// Request and response. |
- data.RunFor(2); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, spdy_stream->stream_id()); |
// Too large data frame causes flow control error, should close stream. |
- data.RunFor(1); |
- EXPECT_EQ(nullptr, spdy_stream.get()); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(spdy_stream); |
+ |
+ EXPECT_TRUE(session); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// Regression test for a bug that was caused by including unsent WINDOW_UPDATE |
@@ -3728,6 +3650,14 @@ TEST_P(SpdySessionTest, SessionFlowControlTooMuchDataTwoDataFrames) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
+ scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway( |
+ 0, GOAWAY_FLOW_CONTROL_ERROR, |
+ "delta_window_size is 400 in DecreaseRecvWindowSize, which is larger " |
+ "than the receive window size of 500")); |
+ MockWrite writes[] = { |
+ CreateMockWrite(*goaway, 4), |
+ }; |
+ |
const std::string first_data_frame(first_data_frame_size, 'a'); |
scoped_ptr<SpdyFrame> first(spdy_util_.ConstructSpdyBodyFrame( |
1, first_data_frame.data(), first_data_frame_size, false)); |
@@ -3736,14 +3666,14 @@ TEST_P(SpdySessionTest, SessionFlowControlTooMuchDataTwoDataFrames) { |
1, second_data_frame.data(), second_data_frame_size, false)); |
MockRead reads[] = { |
CreateMockRead(*first, 0), |
- CreateMockRead(*second, 1), |
- MockRead(ASYNC, 0, 2), |
+ MockRead(ASYNC, ERR_IO_PENDING, 1), |
+ CreateMockRead(*second, 2), |
+ MockRead(ASYNC, 0, 3), |
}; |
- DeterministicSocketData data(reads, arraysize(reads), NULL, 0); |
- data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION, |
@@ -3754,13 +3684,14 @@ TEST_P(SpdySessionTest, SessionFlowControlTooMuchDataTwoDataFrames) { |
// First data frame is immediately consumed and does not trigger |
// WINDOW_UPDATE. |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(first_data_frame_size, session->session_unacked_recv_window_bytes_); |
EXPECT_EQ(session_max_recv_window_size, session->session_recv_window_size_); |
EXPECT_EQ(SpdySession::STATE_AVAILABLE, session->availability_state_); |
// Second data frame overflows receiving window, causes session to close. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SpdySession::STATE_DRAINING, session->availability_state_); |
} |
@@ -3784,14 +3715,15 @@ TEST_P(SpdySessionTest, StreamFlowControlTooMuchDataTwoDataFrames) { |
first_data_frame_size + second_data_frame_size); |
scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, LOWEST, true)); |
scoped_ptr<SpdyFrame> rst( |
spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_FLOW_CONTROL_ERROR)); |
MockWrite writes[] = { |
- CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*rst, 6), |
}; |
- scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> resp( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); |
const std::string first_data_frame(first_data_frame_size, 'a'); |
scoped_ptr<SpdyFrame> first(spdy_util_.ConstructSpdyBodyFrame( |
1, first_data_frame.data(), first_data_frame_size, false)); |
@@ -3800,17 +3732,18 @@ TEST_P(SpdySessionTest, StreamFlowControlTooMuchDataTwoDataFrames) { |
1, second_data_frame.data(), second_data_frame_size, false)); |
MockRead reads[] = { |
CreateMockRead(*resp, 1), |
- CreateMockRead(*first, 2), |
- CreateMockRead(*second, 3), |
- MockRead(ASYNC, 0, 5), |
+ MockRead(ASYNC, ERR_IO_PENDING, 2), |
+ CreateMockRead(*first, 3), |
+ MockRead(ASYNC, ERR_IO_PENDING, 4), |
+ CreateMockRead(*second, 5), |
+ MockRead(ASYNC, ERR_IO_PENDING, 7), |
+ MockRead(ASYNC, 0, 8), |
}; |
- DeterministicSocketData data(reads, arraysize(reads), writes, |
- arraysize(writes)); |
- data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
SpdySessionPoolPeer pool_peer(spdy_session_pool_); |
pool_peer.SetStreamInitialRecvWindowSize(stream_max_recv_window_size); |
@@ -3829,12 +3762,13 @@ TEST_P(SpdySessionTest, StreamFlowControlTooMuchDataTwoDataFrames) { |
headers.Pass(), NO_MORE_DATA_TO_SEND)); |
// Request and response. |
- data.RunFor(2); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_TRUE(spdy_stream->IsLocallyClosed()); |
EXPECT_EQ(stream_max_recv_window_size, spdy_stream->recv_window_size()); |
// First data frame. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_TRUE(spdy_stream->IsLocallyClosed()); |
EXPECT_EQ(stream_max_recv_window_size - first_data_frame_size, |
spdy_stream->recv_window_size()); |
@@ -3845,11 +3779,15 @@ TEST_P(SpdySessionTest, StreamFlowControlTooMuchDataTwoDataFrames) { |
EXPECT_EQ(stream_max_recv_window_size, spdy_stream->recv_window_size()); |
// Second data frame overflows receiving window, causes the stream to close. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_FALSE(spdy_stream.get()); |
// RST_STREAM |
- data.RunFor(1); |
+ EXPECT_TRUE(session); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// A delegate that drops any received data. |
@@ -3877,11 +3815,8 @@ TEST_P(SpdySessionTest, SessionFlowControlNoReceiveLeaks) { |
const int32 msg_data_size = 100; |
const std::string msg_data(msg_data_size, 'a'); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- |
- scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyPost( |
- kStreamUrl, 1, msg_data_size, MEDIUM, NULL, 0)); |
+ scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyPost( |
+ kStreamUrl, 1, msg_data_size, MEDIUM, nullptr, 0)); |
scoped_ptr<SpdyFrame> msg( |
spdy_util_.ConstructSpdyBodyFrame( |
1, msg_data.data(), msg_data_size, false)); |
@@ -3890,7 +3825,8 @@ TEST_P(SpdySessionTest, SessionFlowControlNoReceiveLeaks) { |
CreateMockWrite(*msg, 2), |
}; |
- scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> resp( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); |
scoped_ptr<SpdyFrame> echo( |
spdy_util_.ConstructSpdyBodyFrame( |
1, msg_data.data(), msg_data_size, false)); |
@@ -3898,19 +3834,18 @@ TEST_P(SpdySessionTest, SessionFlowControlNoReceiveLeaks) { |
spdy_util_.ConstructSpdyWindowUpdate( |
kSessionFlowControlStreamId, msg_data_size)); |
MockRead reads[] = { |
- CreateMockRead(*resp, 1), |
- CreateMockRead(*echo, 3), |
- MockRead(ASYNC, 0, 4) // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*echo, 3), |
+ MockRead(ASYNC, ERR_IO_PENDING, 4), |
+ MockRead(ASYNC, 0, 5) // EOF |
}; |
// Create SpdySession and SpdyStream and send the request. |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
session_deps_.host_resolver->set_synchronous_mode(true); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -3919,7 +3854,7 @@ TEST_P(SpdySessionTest, SessionFlowControlNoReceiveLeaks) { |
base::WeakPtr<SpdyStream> stream = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, url, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(stream.get() != NULL); |
+ ASSERT_TRUE(stream.get() != nullptr); |
EXPECT_EQ(0u, stream->stream_id()); |
DropReceivedDataDelegate delegate(stream, msg_data); |
@@ -3936,21 +3871,22 @@ TEST_P(SpdySessionTest, SessionFlowControlNoReceiveLeaks) { |
EXPECT_EQ(initial_window_size, session->session_recv_window_size_); |
EXPECT_EQ(0, session->session_unacked_recv_window_bytes_); |
- data.RunFor(4); |
- |
- EXPECT_TRUE(data.AllWriteDataConsumed()); |
- EXPECT_TRUE(data.AllReadDataConsumed()); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(initial_window_size, session->session_recv_window_size_); |
EXPECT_EQ(msg_data_size, session->session_unacked_recv_window_bytes_); |
stream->Close(); |
- EXPECT_EQ(NULL, stream.get()); |
+ EXPECT_FALSE(stream); |
EXPECT_EQ(OK, delegate.WaitForClose()); |
EXPECT_EQ(initial_window_size, session->session_recv_window_size_); |
EXPECT_EQ(msg_data_size, session->session_unacked_recv_window_bytes_); |
+ |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// Send data back and forth but close the stream before its data frame |
@@ -3965,29 +3901,26 @@ TEST_P(SpdySessionTest, SessionFlowControlNoSendLeaks) { |
const int32 msg_data_size = 100; |
const std::string msg_data(msg_data_size, 'a'); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- |
- scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyPost( |
- kStreamUrl, 1, msg_data_size, MEDIUM, NULL, 0)); |
+ scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyPost( |
+ kStreamUrl, 1, msg_data_size, MEDIUM, nullptr, 0)); |
MockWrite writes[] = { |
- CreateMockWrite(*req, 0), |
+ CreateMockWrite(*req, 0), |
}; |
- scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> resp( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); |
MockRead reads[] = { |
- CreateMockRead(*resp, 1), |
- MockRead(ASYNC, 0, 2) // EOF |
+ MockRead(ASYNC, ERR_IO_PENDING, 1), |
+ CreateMockRead(*resp, 2), |
+ MockRead(ASYNC, 0, 3) // EOF |
}; |
// Create SpdySession and SpdyStream and send the request. |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
session_deps_.host_resolver->set_synchronous_mode(true); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -3996,7 +3929,7 @@ TEST_P(SpdySessionTest, SessionFlowControlNoSendLeaks) { |
base::WeakPtr<SpdyStream> stream = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, url, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(stream.get() != NULL); |
+ ASSERT_TRUE(stream.get() != nullptr); |
EXPECT_EQ(0u, stream->stream_id()); |
test::StreamDelegateSendImmediate delegate(stream, msg_data); |
@@ -4012,25 +3945,31 @@ TEST_P(SpdySessionTest, SessionFlowControlNoSendLeaks) { |
SpdySession::GetDefaultInitialWindowSize(GetParam()); |
EXPECT_EQ(initial_window_size, session->session_send_window_size_); |
- data.RunFor(1); |
+ // Write request. |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(initial_window_size, session->session_send_window_size_); |
- data.RunFor(1); |
- |
- EXPECT_TRUE(data.AllWriteDataConsumed()); |
- EXPECT_TRUE(data.AllReadDataConsumed()); |
+ // Read response, but do not run the message loop, so that the body is not |
+ // written to the socket. |
+ data.CompleteRead(); |
EXPECT_EQ(initial_window_size - msg_data_size, |
session->session_send_window_size_); |
// Closing the stream should increase the session's send window. |
stream->Close(); |
- EXPECT_EQ(NULL, stream.get()); |
+ EXPECT_FALSE(stream); |
EXPECT_EQ(initial_window_size, session->session_send_window_size_); |
EXPECT_EQ(OK, delegate.WaitForClose()); |
+ |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
+ |
+ EXPECT_TRUE(data.AllWriteDataConsumed()); |
+ EXPECT_TRUE(data.AllReadDataConsumed()); |
} |
// Send data back and forth; the send and receive windows should |
@@ -4044,11 +3983,8 @@ TEST_P(SpdySessionTest, SessionFlowControlEndToEnd) { |
const int32 msg_data_size = 100; |
const std::string msg_data(msg_data_size, 'a'); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- |
- scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyPost( |
- kStreamUrl, 1, msg_data_size, MEDIUM, NULL, 0)); |
+ scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyPost( |
+ kStreamUrl, 1, msg_data_size, MEDIUM, nullptr, 0)); |
scoped_ptr<SpdyFrame> msg( |
spdy_util_.ConstructSpdyBodyFrame( |
1, msg_data.data(), msg_data_size, false)); |
@@ -4057,7 +3993,8 @@ TEST_P(SpdySessionTest, SessionFlowControlEndToEnd) { |
CreateMockWrite(*msg, 2), |
}; |
- scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> resp( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); |
scoped_ptr<SpdyFrame> echo( |
spdy_util_.ConstructSpdyBodyFrame( |
1, msg_data.data(), msg_data_size, false)); |
@@ -4065,20 +4002,21 @@ TEST_P(SpdySessionTest, SessionFlowControlEndToEnd) { |
spdy_util_.ConstructSpdyWindowUpdate( |
kSessionFlowControlStreamId, msg_data_size)); |
MockRead reads[] = { |
- CreateMockRead(*resp, 1), |
- CreateMockRead(*echo, 3), |
- CreateMockRead(*window_update, 4), |
- MockRead(ASYNC, 0, 5) // EOF |
+ CreateMockRead(*resp, 1), |
+ MockRead(ASYNC, ERR_IO_PENDING, 3), |
+ CreateMockRead(*echo, 4), |
+ MockRead(ASYNC, ERR_IO_PENDING, 5), |
+ CreateMockRead(*window_update, 6), |
+ MockRead(ASYNC, ERR_IO_PENDING, 7), |
+ MockRead(ASYNC, 0, 8) // EOF |
}; |
// Create SpdySession and SpdyStream and send the request. |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
session_deps_.host_resolver->set_synchronous_mode(true); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -4087,7 +4025,7 @@ TEST_P(SpdySessionTest, SessionFlowControlEndToEnd) { |
base::WeakPtr<SpdyStream> stream = |
CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, |
session, url, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(stream.get() != NULL); |
+ ASSERT_TRUE(stream.get() != nullptr); |
EXPECT_EQ(0u, stream->stream_id()); |
test::StreamDelegateSendImmediate delegate(stream, msg_data); |
@@ -4105,27 +4043,17 @@ TEST_P(SpdySessionTest, SessionFlowControlEndToEnd) { |
EXPECT_EQ(initial_window_size, session->session_recv_window_size_); |
EXPECT_EQ(0, session->session_unacked_recv_window_bytes_); |
- data.RunFor(1); |
- |
- 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_); |
- |
- data.RunFor(1); |
- |
- EXPECT_EQ(initial_window_size - msg_data_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_); |
- |
- data.RunFor(1); |
+ // Send request and message. |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(initial_window_size - msg_data_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_); |
- data.RunFor(1); |
+ // Read echo. |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(initial_window_size - msg_data_size, |
session->session_send_window_size_); |
@@ -4133,16 +4061,15 @@ TEST_P(SpdySessionTest, SessionFlowControlEndToEnd) { |
session->session_recv_window_size_); |
EXPECT_EQ(0, session->session_unacked_recv_window_bytes_); |
- data.RunFor(1); |
+ // Read window update. |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(initial_window_size, session->session_send_window_size_); |
EXPECT_EQ(initial_window_size - msg_data_size, |
session->session_recv_window_size_); |
EXPECT_EQ(0, session->session_unacked_recv_window_bytes_); |
- EXPECT_TRUE(data.AllWriteDataConsumed()); |
- EXPECT_TRUE(data.AllReadDataConsumed()); |
- |
EXPECT_EQ(msg_data, delegate.TakeReceivedData()); |
// Draining the delegate's read queue should increase the session's |
@@ -4152,13 +4079,17 @@ TEST_P(SpdySessionTest, SessionFlowControlEndToEnd) { |
EXPECT_EQ(msg_data_size, session->session_unacked_recv_window_bytes_); |
stream->Close(); |
- EXPECT_EQ(NULL, stream.get()); |
+ EXPECT_FALSE(stream); |
EXPECT_EQ(OK, delegate.WaitForClose()); |
EXPECT_EQ(initial_window_size, session->session_send_window_size_); |
EXPECT_EQ(initial_window_size, session->session_recv_window_size_); |
EXPECT_EQ(msg_data_size, session->session_unacked_recv_window_bytes_); |
+ |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
// Given a stall function and an unstall function, runs a test to make |
@@ -4172,9 +4103,8 @@ void SpdySessionTest::RunResumeAfterUnstallTest( |
session_deps_.host_resolver->set_synchronous_mode(true); |
- scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyPost( |
- kStreamUrl, 1, kBodyDataSize, LOWEST, NULL, 0)); |
+ scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyPost( |
+ kStreamUrl, 1, kBodyDataSize, LOWEST, nullptr, 0)); |
scoped_ptr<SpdyFrame> body( |
spdy_util_.ConstructSpdyBodyFrame(1, kBodyData, kBodyDataSize, true)); |
MockWrite writes[] = { |
@@ -4183,22 +4113,17 @@ void SpdySessionTest::RunResumeAfterUnstallTest( |
}; |
scoped_ptr<SpdyFrame> resp( |
- spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); |
scoped_ptr<SpdyFrame> echo( |
spdy_util_.ConstructSpdyBodyFrame(1, kBodyData, kBodyDataSize, false)); |
MockRead reads[] = { |
- CreateMockRead(*resp, 2), |
- MockRead(ASYNC, 0, 0, 3), // EOF |
+ CreateMockRead(*resp, 2), MockRead(ASYNC, 0, 3) // EOF |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- data.set_connect_data(connect_data); |
- |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION, |
@@ -4207,7 +4132,7 @@ void SpdySessionTest::RunResumeAfterUnstallTest( |
base::WeakPtr<SpdyStream> stream = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(stream.get() != NULL); |
+ ASSERT_TRUE(stream.get() != nullptr); |
test::StreamDelegateWithBody delegate(stream, kBodyDataStringPiece); |
stream->SetDelegate(&delegate); |
@@ -4224,7 +4149,7 @@ void SpdySessionTest::RunResumeAfterUnstallTest( |
stall_function.Run(session.get(), stream.get()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_TRUE(stream->send_stalled_by_flow_control()); |
@@ -4232,13 +4157,12 @@ void SpdySessionTest::RunResumeAfterUnstallTest( |
EXPECT_FALSE(stream->send_stalled_by_flow_control()); |
- data.RunFor(3); |
- |
EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); |
EXPECT_TRUE(delegate.send_headers_completed()); |
EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status")); |
EXPECT_EQ(std::string(), delegate.TakeReceivedData()); |
+ EXPECT_FALSE(session); |
EXPECT_TRUE(data.AllWriteDataConsumed()); |
} |
@@ -4325,12 +4249,10 @@ TEST_P(SpdySessionTest, ResumeByPriorityAfterSendWindowSizeIncrease) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- scoped_ptr<SpdyFrame> req1( |
- spdy_util_.ConstructSpdyPost( |
- kStreamUrl, 1, kBodyDataSize, LOWEST, NULL, 0)); |
- scoped_ptr<SpdyFrame> req2( |
- spdy_util_.ConstructSpdyPost( |
- kStreamUrl, 3, kBodyDataSize, MEDIUM, NULL, 0)); |
+ scoped_ptr<SpdyFrame> req1(spdy_util_.ConstructSpdyPost( |
+ kStreamUrl, 1, kBodyDataSize, LOWEST, nullptr, 0)); |
+ scoped_ptr<SpdyFrame> req2(spdy_util_.ConstructSpdyPost( |
+ kStreamUrl, 3, kBodyDataSize, MEDIUM, nullptr, 0)); |
scoped_ptr<SpdyFrame> body1( |
spdy_util_.ConstructSpdyBodyFrame(1, kBodyData, kBodyDataSize, true)); |
scoped_ptr<SpdyFrame> body2( |
@@ -4342,22 +4264,20 @@ TEST_P(SpdySessionTest, ResumeByPriorityAfterSendWindowSizeIncrease) { |
CreateMockWrite(*body1, 3), |
}; |
- scoped_ptr<SpdyFrame> resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
- scoped_ptr<SpdyFrame> resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); |
+ scoped_ptr<SpdyFrame> resp1( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); |
+ scoped_ptr<SpdyFrame> resp2( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 3)); |
MockRead reads[] = { |
- CreateMockRead(*resp1, 4), |
- CreateMockRead(*resp2, 5), |
- MockRead(ASYNC, 0, 0, 6), // EOF |
+ CreateMockRead(*resp1, 4), |
+ CreateMockRead(*resp2, 5), |
+ MockRead(ASYNC, 0, 6) // EOF |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- data.set_connect_data(connect_data); |
- |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION, |
@@ -4366,7 +4286,7 @@ TEST_P(SpdySessionTest, ResumeByPriorityAfterSendWindowSizeIncrease) { |
base::WeakPtr<SpdyStream> stream1 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(stream1.get() != NULL); |
+ ASSERT_TRUE(stream1.get() != nullptr); |
test::StreamDelegateWithBody delegate1(stream1, kBodyDataStringPiece); |
stream1->SetDelegate(&delegate1); |
@@ -4376,7 +4296,7 @@ TEST_P(SpdySessionTest, ResumeByPriorityAfterSendWindowSizeIncrease) { |
base::WeakPtr<SpdyStream> stream2 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url, MEDIUM, BoundNetLog()); |
- ASSERT_TRUE(stream2.get() != NULL); |
+ ASSERT_TRUE(stream2.get() != nullptr); |
test::StreamDelegateWithBody delegate2(stream2, kBodyDataStringPiece); |
stream2->SetDelegate(&delegate2); |
@@ -4395,7 +4315,7 @@ TEST_P(SpdySessionTest, ResumeByPriorityAfterSendWindowSizeIncrease) { |
EXPECT_TRUE(stream1->HasUrlFromHeaders()); |
EXPECT_EQ(kStreamUrl, stream1->GetUrlFromHeaders().spec()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, stream1->stream_id()); |
EXPECT_TRUE(stream1->send_stalled_by_flow_control()); |
@@ -4406,7 +4326,7 @@ TEST_P(SpdySessionTest, ResumeByPriorityAfterSendWindowSizeIncrease) { |
EXPECT_TRUE(stream2->HasUrlFromHeaders()); |
EXPECT_EQ(kStreamUrl, stream2->GetUrlFromHeaders().spec()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(3u, stream2->stream_id()); |
EXPECT_TRUE(stream2->send_stalled_by_flow_control()); |
@@ -4416,7 +4336,7 @@ TEST_P(SpdySessionTest, ResumeByPriorityAfterSendWindowSizeIncrease) { |
EXPECT_TRUE(stream1->send_stalled_by_flow_control()); |
EXPECT_FALSE(stream2->send_stalled_by_flow_control()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_TRUE(stream1->send_stalled_by_flow_control()); |
EXPECT_FALSE(stream2->send_stalled_by_flow_control()); |
@@ -4427,7 +4347,7 @@ TEST_P(SpdySessionTest, ResumeByPriorityAfterSendWindowSizeIncrease) { |
EXPECT_FALSE(stream1->send_stalled_by_flow_control()); |
EXPECT_FALSE(stream2->send_stalled_by_flow_control()); |
- data.RunFor(4); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate1.WaitForClose()); |
EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate2.WaitForClose()); |
@@ -4440,7 +4360,9 @@ TEST_P(SpdySessionTest, ResumeByPriorityAfterSendWindowSizeIncrease) { |
EXPECT_EQ("200", delegate2.GetResponseHeaderValue(":status")); |
EXPECT_EQ(std::string(), delegate2.TakeReceivedData()); |
+ EXPECT_FALSE(session); |
EXPECT_TRUE(data.AllWriteDataConsumed()); |
+ EXPECT_TRUE(data.AllReadDataConsumed()); |
} |
// Delegate that closes a given stream after sending its body. |
@@ -4460,7 +4382,7 @@ class StreamClosingDelegate : public test::StreamDelegateWithBody { |
test::StreamDelegateWithBody::OnDataSent(); |
if (stream_to_close_.get()) { |
stream_to_close_->Close(); |
- EXPECT_EQ(NULL, stream_to_close_.get()); |
+ EXPECT_FALSE(stream_to_close_); |
} |
} |
@@ -4479,15 +4401,12 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedStreams) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- scoped_ptr<SpdyFrame> req1( |
- spdy_util_.ConstructSpdyPost( |
- kStreamUrl, 1, kBodyDataSize, LOWEST, NULL, 0)); |
- scoped_ptr<SpdyFrame> req2( |
- spdy_util_.ConstructSpdyPost( |
- kStreamUrl, 3, kBodyDataSize, LOWEST, NULL, 0)); |
- scoped_ptr<SpdyFrame> req3( |
- spdy_util_.ConstructSpdyPost( |
- kStreamUrl, 5, kBodyDataSize, LOWEST, NULL, 0)); |
+ scoped_ptr<SpdyFrame> req1(spdy_util_.ConstructSpdyPost( |
+ kStreamUrl, 1, kBodyDataSize, LOWEST, nullptr, 0)); |
+ scoped_ptr<SpdyFrame> req2(spdy_util_.ConstructSpdyPost( |
+ kStreamUrl, 3, kBodyDataSize, LOWEST, nullptr, 0)); |
+ scoped_ptr<SpdyFrame> req3(spdy_util_.ConstructSpdyPost( |
+ kStreamUrl, 5, kBodyDataSize, LOWEST, nullptr, 0)); |
scoped_ptr<SpdyFrame> body2( |
spdy_util_.ConstructSpdyBodyFrame(3, kBodyData, kBodyDataSize, true)); |
MockWrite writes[] = { |
@@ -4497,20 +4416,18 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedStreams) { |
CreateMockWrite(*body2, 3), |
}; |
- scoped_ptr<SpdyFrame> resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); |
+ scoped_ptr<SpdyFrame> resp2( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 3)); |
MockRead reads[] = { |
- CreateMockRead(*resp2, 4), |
- MockRead(ASYNC, 0, 0, 5), // EOF |
+ CreateMockRead(*resp2, 4), |
+ MockRead(ASYNC, ERR_IO_PENDING, 5), |
+ MockRead(ASYNC, 0, 6) // EOF |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- data.set_connect_data(connect_data); |
- |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION, |
@@ -4519,7 +4436,7 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedStreams) { |
base::WeakPtr<SpdyStream> stream1 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(stream1.get() != NULL); |
+ ASSERT_TRUE(stream1.get() != nullptr); |
test::StreamDelegateWithBody delegate1(stream1, kBodyDataStringPiece); |
stream1->SetDelegate(&delegate1); |
@@ -4529,7 +4446,7 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedStreams) { |
base::WeakPtr<SpdyStream> stream2 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(stream2.get() != NULL); |
+ ASSERT_TRUE(stream2.get() != nullptr); |
StreamClosingDelegate delegate2(stream2, kBodyDataStringPiece); |
stream2->SetDelegate(&delegate2); |
@@ -4539,7 +4456,7 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedStreams) { |
base::WeakPtr<SpdyStream> stream3 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(stream3.get() != NULL); |
+ ASSERT_TRUE(stream3.get() != nullptr); |
test::StreamDelegateWithBody delegate3(stream3, kBodyDataStringPiece); |
stream3->SetDelegate(&delegate3); |
@@ -4559,7 +4476,7 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedStreams) { |
EXPECT_TRUE(stream1->HasUrlFromHeaders()); |
EXPECT_EQ(kStreamUrl, stream1->GetUrlFromHeaders().spec()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, stream1->stream_id()); |
EXPECT_TRUE(stream1->send_stalled_by_flow_control()); |
@@ -4570,7 +4487,7 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedStreams) { |
EXPECT_TRUE(stream2->HasUrlFromHeaders()); |
EXPECT_EQ(kStreamUrl, stream2->GetUrlFromHeaders().spec()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(3u, stream2->stream_id()); |
EXPECT_TRUE(stream2->send_stalled_by_flow_control()); |
@@ -4581,7 +4498,7 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedStreams) { |
EXPECT_TRUE(stream3->HasUrlFromHeaders()); |
EXPECT_EQ(kStreamUrl, stream3->GetUrlFromHeaders().spec()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(5u, stream3->stream_id()); |
EXPECT_TRUE(stream3->send_stalled_by_flow_control()); |
@@ -4591,7 +4508,7 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedStreams) { |
// Close stream1 preemptively. |
session->CloseActiveStream(stream_id1, ERR_CONNECTION_CLOSED); |
- EXPECT_EQ(NULL, stream1.get()); |
+ EXPECT_FALSE(stream1); |
EXPECT_FALSE(session->IsStreamActive(stream_id1)); |
EXPECT_TRUE(session->IsStreamActive(stream_id2)); |
@@ -4601,16 +4518,18 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedStreams) { |
delegate2.set_stream_to_close(stream3); |
UnstallSessionSend(session.get(), kBodyDataSize); |
- data.RunFor(1); |
- EXPECT_EQ(NULL, stream3.get()); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(stream3); |
EXPECT_FALSE(stream2->send_stalled_by_flow_control()); |
EXPECT_FALSE(session->IsStreamActive(stream_id1)); |
EXPECT_TRUE(session->IsStreamActive(stream_id2)); |
EXPECT_FALSE(session->IsStreamActive(stream_id3)); |
- data.RunFor(2); |
- EXPECT_EQ(NULL, stream2.get()); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(stream2); |
+ EXPECT_FALSE(session); |
EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate1.WaitForClose()); |
EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate2.WaitForClose()); |
@@ -4641,12 +4560,10 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedSession) { |
session_deps_.host_resolver->set_synchronous_mode(true); |
- scoped_ptr<SpdyFrame> req1( |
- spdy_util_.ConstructSpdyPost( |
- kStreamUrl, 1, kBodyDataSize, LOWEST, NULL, 0)); |
- scoped_ptr<SpdyFrame> req2( |
- spdy_util_.ConstructSpdyPost( |
- kStreamUrl, 3, kBodyDataSize, LOWEST, NULL, 0)); |
+ scoped_ptr<SpdyFrame> req1(spdy_util_.ConstructSpdyPost( |
+ kStreamUrl, 1, kBodyDataSize, LOWEST, nullptr, 0)); |
+ scoped_ptr<SpdyFrame> req2(spdy_util_.ConstructSpdyPost( |
+ kStreamUrl, 3, kBodyDataSize, LOWEST, nullptr, 0)); |
scoped_ptr<SpdyFrame> body1( |
spdy_util_.ConstructSpdyBodyFrame(1, kBodyData, kBodyDataSize, false)); |
MockWrite writes[] = { |
@@ -4655,17 +4572,13 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedSession) { |
}; |
MockRead reads[] = { |
- MockRead(ASYNC, 0, 0, 2), // EOF |
+ MockRead(ASYNC, ERR_IO_PENDING, 2), MockRead(ASYNC, 0, 3) // EOF |
}; |
- DeterministicSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- data.set_connect_data(connect_data); |
- |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
EXPECT_EQ(SpdySession::FLOW_CONTROL_STREAM_AND_SESSION, |
@@ -4674,7 +4587,7 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedSession) { |
base::WeakPtr<SpdyStream> stream1 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(stream1.get() != NULL); |
+ ASSERT_TRUE(stream1.get() != nullptr); |
test::StreamDelegateWithBody delegate1(stream1, kBodyDataStringPiece); |
stream1->SetDelegate(&delegate1); |
@@ -4684,7 +4597,7 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedSession) { |
base::WeakPtr<SpdyStream> stream2 = |
CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, |
session, url, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(stream2.get() != NULL); |
+ ASSERT_TRUE(stream2.get() != nullptr); |
test::StreamDelegateWithBody delegate2(stream2, kBodyDataStringPiece); |
stream2->SetDelegate(&delegate2); |
@@ -4703,7 +4616,7 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedSession) { |
EXPECT_TRUE(stream1->HasUrlFromHeaders()); |
EXPECT_EQ(kStreamUrl, stream1->GetUrlFromHeaders().spec()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, stream1->stream_id()); |
EXPECT_TRUE(stream1->send_stalled_by_flow_control()); |
@@ -4714,7 +4627,7 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedSession) { |
EXPECT_TRUE(stream2->HasUrlFromHeaders()); |
EXPECT_EQ(kStreamUrl, stream2->GetUrlFromHeaders().spec()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(3u, stream2->stream_id()); |
EXPECT_TRUE(stream2->send_stalled_by_flow_control()); |
@@ -4726,8 +4639,9 @@ TEST_P(SpdySessionTest, SendWindowSizeIncreaseWithDeletedSession) { |
// Close the session (since we can't do it from within the delegate |
// method, since it's in the stream's loop). |
session->CloseSessionOnError(ERR_CONNECTION_CLOSED, "Closing session"); |
+ data.CompleteRead(); |
base::RunLoop().RunUntilIdle(); |
- EXPECT_TRUE(session == NULL); |
+ EXPECT_FALSE(session); |
EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
@@ -4747,31 +4661,29 @@ TEST_P(SpdySessionTest, GoAwayOnSessionFlowControlError) { |
if (GetParam() < kProtoSPDY31) |
return; |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- |
scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, LOWEST, true)); |
scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway( |
- 0, |
- GOAWAY_FLOW_CONTROL_ERROR, |
+ 0, GOAWAY_FLOW_CONTROL_ERROR, |
"delta_window_size is 6 in DecreaseRecvWindowSize, which is larger than " |
"the receive window size of 1")); |
MockWrite writes[] = { |
- CreateMockWrite(*req, 0), CreateMockWrite(*goaway, 3), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*goaway, 4), |
}; |
- scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
+ scoped_ptr<SpdyFrame> resp( |
+ spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp, 1), CreateMockRead(*body, 2), |
+ MockRead(ASYNC, ERR_IO_PENDING, 1), |
+ CreateMockRead(*resp, 2), |
+ CreateMockRead(*body, 3), |
}; |
- DeterministicSocketData data( |
- reads, arraysize(reads), writes, arraysize(writes)); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -4779,7 +4691,7 @@ TEST_P(SpdySessionTest, GoAwayOnSessionFlowControlError) { |
GURL url(kDefaultURL); |
base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously( |
SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream.get() != NULL); |
+ ASSERT_TRUE(spdy_stream.get() != nullptr); |
test::StreamDelegateDoNothing delegate(spdy_stream); |
spdy_stream->SetDelegate(&delegate); |
@@ -4787,18 +4699,19 @@ TEST_P(SpdySessionTest, GoAwayOnSessionFlowControlError) { |
spdy_util_.ConstructGetHeaderBlock(url.spec())); |
spdy_stream->SendRequestHeaders(headers.Pass(), NO_MORE_DATA_TO_SEND); |
- data.RunFor(1); // Write request. |
+ // Write request. |
+ base::RunLoop().RunUntilIdle(); |
// Put session on the edge of overflowing it's recv window. |
session->session_recv_window_size_ = 1; |
// Read response headers & body. Body overflows the session window, and a |
// goaway is written. |
- data.RunFor(3); |
- base::MessageLoop::current()->RunUntilIdle(); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(ERR_SPDY_FLOW_CONTROL_ERROR, delegate.WaitForClose()); |
- EXPECT_TRUE(session == NULL); |
+ EXPECT_FALSE(session); |
} |
TEST_P(SpdySessionTest, SplitHeaders) { |
@@ -4832,37 +4745,37 @@ TEST_P(SpdySessionTest, PushedStreamShouldNotCountToClientConcurrencyLimit) { |
scoped_ptr<SpdyFrame> settings_frame( |
spdy_util_.ConstructSpdySettings(new_settings)); |
scoped_ptr<SpdyFrame> pushed(spdy_util_.ConstructSpdyPush( |
- NULL, 0, 2, 1, "http://www.example.org/a.dat")); |
+ nullptr, 0, 2, 1, "http://www.example.org/a.dat")); |
MockRead reads[] = { |
- CreateMockRead(*settings_frame), CreateMockRead(*pushed, 3), |
- MockRead(ASYNC, 0, 4), |
+ CreateMockRead(*settings_frame, 0), |
+ MockRead(ASYNC, ERR_IO_PENDING, 3), |
+ CreateMockRead(*pushed, 4), |
+ MockRead(ASYNC, ERR_IO_PENDING, 5), |
+ MockRead(ASYNC, 0, 6), |
}; |
scoped_ptr<SpdyFrame> settings_ack(spdy_util_.ConstructSpdySettingsAck()); |
scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, LOWEST, true)); |
MockWrite writes[] = { |
CreateMockWrite(*settings_ack, 1), CreateMockWrite(*req, 2), |
}; |
- DeterministicSocketData data( |
- reads, arraysize(reads), writes, arraysize(writes)); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
// Read the settings frame. |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
GURL url1(kDefaultURL); |
base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously( |
SPDY_REQUEST_RESPONSE_STREAM, session, url1, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
test::StreamDelegateDoNothing delegate1(spdy_stream1); |
spdy_stream1->SetDelegate(&delegate1); |
@@ -4879,7 +4792,7 @@ TEST_P(SpdySessionTest, PushedStreamShouldNotCountToClientConcurrencyLimit) { |
// Run until 1st stream is activated. |
EXPECT_EQ(0u, delegate1.stream_id()); |
- data.RunFor(2); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, delegate1.stream_id()); |
EXPECT_EQ(1u, session->num_active_streams()); |
EXPECT_EQ(0u, session->num_created_streams()); |
@@ -4887,7 +4800,8 @@ TEST_P(SpdySessionTest, PushedStreamShouldNotCountToClientConcurrencyLimit) { |
EXPECT_EQ(0u, session->num_active_pushed_streams()); |
// Run until pushed stream is created. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(2u, session->num_active_streams()); |
EXPECT_EQ(0u, session->num_created_streams()); |
EXPECT_EQ(1u, session->num_pushed_streams()); |
@@ -4898,41 +4812,44 @@ TEST_P(SpdySessionTest, PushedStreamShouldNotCountToClientConcurrencyLimit) { |
// create streams on the client. |
base::WeakPtr<SpdyStream> spdy_stream2 = CreateStreamSynchronously( |
SPDY_REQUEST_RESPONSE_STREAM, session, url1, LOWEST, BoundNetLog()); |
- EXPECT_TRUE(spdy_stream2.get() != NULL); |
+ EXPECT_TRUE(spdy_stream2); |
EXPECT_EQ(2u, session->num_active_streams()); |
EXPECT_EQ(1u, session->num_created_streams()); |
EXPECT_EQ(1u, session->num_pushed_streams()); |
EXPECT_EQ(1u, session->num_active_pushed_streams()); |
// Read EOF. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
TEST_P(SpdySessionTest, RejectPushedStreamExceedingConcurrencyLimit) { |
scoped_ptr<SpdyFrame> push_a(spdy_util_.ConstructSpdyPush( |
- NULL, 0, 2, 1, "http://www.example.org/a.dat")); |
+ nullptr, 0, 2, 1, "http://www.example.org/a.dat")); |
scoped_ptr<SpdyFrame> push_b(spdy_util_.ConstructSpdyPush( |
- NULL, 0, 4, 1, "http://www.example.org/b.dat")); |
+ nullptr, 0, 4, 1, "http://www.example.org/b.dat")); |
MockRead reads[] = { |
- CreateMockRead(*push_a, 1), CreateMockRead(*push_b, 2), |
- MockRead(ASYNC, 0, 4), |
+ MockRead(ASYNC, ERR_IO_PENDING, 1), |
+ CreateMockRead(*push_a, 2), |
+ MockRead(ASYNC, ERR_IO_PENDING, 3), |
+ CreateMockRead(*push_b, 4), |
+ MockRead(ASYNC, ERR_IO_PENDING, 6), |
+ MockRead(ASYNC, 0, 7), |
}; |
scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, LOWEST, true)); |
scoped_ptr<SpdyFrame> rst( |
spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_REFUSED_STREAM)); |
MockWrite writes[] = { |
- CreateMockWrite(*req, 0), CreateMockWrite(*rst, 3), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*rst, 5), |
}; |
- DeterministicSocketData data( |
- reads, arraysize(reads), writes, arraysize(writes)); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -4941,7 +4858,7 @@ TEST_P(SpdySessionTest, RejectPushedStreamExceedingConcurrencyLimit) { |
GURL url1(kDefaultURL); |
base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously( |
SPDY_REQUEST_RESPONSE_STREAM, session, url1, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
test::StreamDelegateDoNothing delegate1(spdy_stream1); |
spdy_stream1->SetDelegate(&delegate1); |
@@ -4958,7 +4875,7 @@ TEST_P(SpdySessionTest, RejectPushedStreamExceedingConcurrencyLimit) { |
// Run until 1st stream is activated. |
EXPECT_EQ(0u, delegate1.stream_id()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, delegate1.stream_id()); |
EXPECT_EQ(1u, session->num_active_streams()); |
EXPECT_EQ(0u, session->num_created_streams()); |
@@ -4966,21 +4883,25 @@ TEST_P(SpdySessionTest, RejectPushedStreamExceedingConcurrencyLimit) { |
EXPECT_EQ(0u, session->num_active_pushed_streams()); |
// Run until pushed stream is created. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(2u, session->num_active_streams()); |
EXPECT_EQ(0u, session->num_created_streams()); |
EXPECT_EQ(1u, session->num_pushed_streams()); |
EXPECT_EQ(1u, session->num_active_pushed_streams()); |
// Reset incoming pushed stream. |
- data.RunFor(2); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(2u, session->num_active_streams()); |
EXPECT_EQ(0u, session->num_created_streams()); |
EXPECT_EQ(1u, session->num_pushed_streams()); |
EXPECT_EQ(1u, session->num_active_pushed_streams()); |
// Read EOF. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
TEST_P(SpdySessionTest, IgnoreReservedRemoteStreamsCount) { |
@@ -4989,34 +4910,37 @@ TEST_P(SpdySessionTest, IgnoreReservedRemoteStreamsCount) { |
return; |
scoped_ptr<SpdyFrame> push_a(spdy_util_.ConstructSpdyPush( |
- NULL, 0, 2, 1, "http://www.example.org/a.dat")); |
+ nullptr, 0, 2, 1, "http://www.example.org/a.dat")); |
scoped_ptr<SpdyHeaderBlock> push_headers(new SpdyHeaderBlock); |
spdy_util_.AddUrlToHeaderBlock("http://www.example.org/b.dat", |
push_headers.get()); |
scoped_ptr<SpdyFrame> push_b( |
spdy_util_.ConstructInitialSpdyPushFrame(push_headers.Pass(), 4, 1)); |
scoped_ptr<SpdyFrame> headers_b( |
- spdy_util_.ConstructSpdyPushHeaders(4, NULL, 0)); |
+ spdy_util_.ConstructSpdyPushHeaders(4, nullptr, 0)); |
MockRead reads[] = { |
- CreateMockRead(*push_a, 1), CreateMockRead(*push_b, 2), |
- CreateMockRead(*headers_b, 3), MockRead(ASYNC, 0, 5), |
+ MockRead(ASYNC, ERR_IO_PENDING, 1), |
+ CreateMockRead(*push_a, 2), |
+ MockRead(ASYNC, ERR_IO_PENDING, 3), |
+ CreateMockRead(*push_b, 4), |
+ MockRead(ASYNC, ERR_IO_PENDING, 5), |
+ CreateMockRead(*headers_b, 6), |
+ MockRead(ASYNC, ERR_IO_PENDING, 8), |
+ MockRead(ASYNC, 0, 9), |
}; |
scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, LOWEST, true)); |
scoped_ptr<SpdyFrame> rst( |
spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_REFUSED_STREAM)); |
MockWrite writes[] = { |
- CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*rst, 7), |
}; |
- DeterministicSocketData data( |
- reads, arraysize(reads), writes, arraysize(writes)); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -5025,7 +4949,7 @@ TEST_P(SpdySessionTest, IgnoreReservedRemoteStreamsCount) { |
GURL url1(kDefaultURL); |
base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously( |
SPDY_REQUEST_RESPONSE_STREAM, session, url1, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
test::StreamDelegateDoNothing delegate1(spdy_stream1); |
spdy_stream1->SetDelegate(&delegate1); |
@@ -5042,7 +4966,7 @@ TEST_P(SpdySessionTest, IgnoreReservedRemoteStreamsCount) { |
// Run until 1st stream is activated. |
EXPECT_EQ(0u, delegate1.stream_id()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, delegate1.stream_id()); |
EXPECT_EQ(1u, session->num_active_streams()); |
EXPECT_EQ(0u, session->num_created_streams()); |
@@ -5050,14 +4974,16 @@ TEST_P(SpdySessionTest, IgnoreReservedRemoteStreamsCount) { |
EXPECT_EQ(0u, session->num_active_pushed_streams()); |
// Run until pushed stream is created. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(2u, session->num_active_streams()); |
EXPECT_EQ(0u, session->num_created_streams()); |
EXPECT_EQ(1u, session->num_pushed_streams()); |
EXPECT_EQ(1u, session->num_active_pushed_streams()); |
// Accept promised stream. It should not count towards pushed stream limit. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(3u, session->num_active_streams()); |
EXPECT_EQ(0u, session->num_created_streams()); |
EXPECT_EQ(2u, session->num_pushed_streams()); |
@@ -5065,14 +4991,17 @@ TEST_P(SpdySessionTest, IgnoreReservedRemoteStreamsCount) { |
// Reset last pushed stream upon headers reception as it is going to be 2nd, |
// while we accept only one. |
- data.RunFor(2); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(2u, session->num_active_streams()); |
EXPECT_EQ(0u, session->num_created_streams()); |
EXPECT_EQ(1u, session->num_pushed_streams()); |
EXPECT_EQ(1u, session->num_active_pushed_streams()); |
// Read EOF. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_FALSE(session); |
} |
TEST_P(SpdySessionTest, CancelReservedStreamOnHeadersReceived) { |
@@ -5086,27 +5015,28 @@ TEST_P(SpdySessionTest, CancelReservedStreamOnHeadersReceived) { |
scoped_ptr<SpdyFrame> push_promise( |
spdy_util_.ConstructInitialSpdyPushFrame(push_headers.Pass(), 2, 1)); |
scoped_ptr<SpdyFrame> headers_frame( |
- spdy_util_.ConstructSpdyPushHeaders(2, NULL, 0)); |
+ spdy_util_.ConstructSpdyPushHeaders(2, nullptr, 0)); |
MockRead reads[] = { |
- CreateMockRead(*push_promise, 1), CreateMockRead(*headers_frame, 2), |
- MockRead(ASYNC, 0, 4), |
+ MockRead(ASYNC, ERR_IO_PENDING, 1), |
+ CreateMockRead(*push_promise, 2), |
+ MockRead(ASYNC, ERR_IO_PENDING, 3), |
+ CreateMockRead(*headers_frame, 4), |
+ MockRead(ASYNC, ERR_IO_PENDING, 6), |
+ MockRead(ASYNC, 0, 7), |
}; |
scoped_ptr<SpdyFrame> req( |
- spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
+ spdy_util_.ConstructSpdyGet(nullptr, 0, false, 1, LOWEST, true)); |
scoped_ptr<SpdyFrame> rst( |
spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_CANCEL)); |
MockWrite writes[] = { |
- CreateMockWrite(*req, 0), CreateMockWrite(*rst, 3), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*rst, 5), |
}; |
- DeterministicSocketData data( |
- reads, arraysize(reads), writes, arraysize(writes)); |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- data.set_connect_data(connect_data); |
- session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- CreateDeterministicNetworkSession(); |
+ CreateNetworkSession(); |
base::WeakPtr<SpdySession> session = |
CreateInsecureSpdySession(http_session_, key_, BoundNetLog()); |
@@ -5114,7 +5044,7 @@ TEST_P(SpdySessionTest, CancelReservedStreamOnHeadersReceived) { |
GURL url1(kDefaultURL); |
base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously( |
SPDY_REQUEST_RESPONSE_STREAM, session, url1, LOWEST, BoundNetLog()); |
- ASSERT_TRUE(spdy_stream1.get() != NULL); |
+ ASSERT_TRUE(spdy_stream1.get() != nullptr); |
EXPECT_EQ(0u, spdy_stream1->stream_id()); |
test::StreamDelegateDoNothing delegate1(spdy_stream1); |
spdy_stream1->SetDelegate(&delegate1); |
@@ -5131,7 +5061,7 @@ TEST_P(SpdySessionTest, CancelReservedStreamOnHeadersReceived) { |
// Run until 1st stream is activated. |
EXPECT_EQ(0u, delegate1.stream_id()); |
- data.RunFor(1); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, delegate1.stream_id()); |
EXPECT_EQ(1u, session->num_active_streams()); |
EXPECT_EQ(0u, session->num_created_streams()); |
@@ -5139,7 +5069,8 @@ TEST_P(SpdySessionTest, CancelReservedStreamOnHeadersReceived) { |
EXPECT_EQ(0u, session->num_active_pushed_streams()); |
// Run until pushed stream is created. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(2u, session->num_active_streams()); |
EXPECT_EQ(0u, session->num_created_streams()); |
EXPECT_EQ(1u, session->num_pushed_streams()); |
@@ -5149,20 +5080,24 @@ TEST_P(SpdySessionTest, CancelReservedStreamOnHeadersReceived) { |
int rv = |
session->GetPushStream(GURL(kPushedUrl), &pushed_stream, BoundNetLog()); |
ASSERT_EQ(OK, rv); |
- ASSERT_TRUE(pushed_stream.get() != NULL); |
+ ASSERT_TRUE(pushed_stream.get() != nullptr); |
test::StreamDelegateCloseOnHeaders delegate2(pushed_stream); |
pushed_stream->SetDelegate(&delegate2); |
// Receive headers for pushed stream. Delegate will cancel the stream, ensure |
// that all our counters are in consistent state. |
- data.RunFor(1); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1u, session->num_active_streams()); |
EXPECT_EQ(0u, session->num_created_streams()); |
EXPECT_EQ(0u, session->num_pushed_streams()); |
EXPECT_EQ(0u, session->num_active_pushed_streams()); |
// Read EOF. |
- data.RunFor(2); |
+ data.CompleteRead(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_TRUE(data.AllWriteDataConsumed()); |
+ EXPECT_TRUE(data.AllReadDataConsumed()); |
} |
TEST_P(SpdySessionTest, RejectInvalidUnknownFrames) { |
@@ -5172,10 +5107,7 @@ TEST_P(SpdySessionTest, RejectInvalidUnknownFrames) { |
MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
}; |
- StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
- |
- MockConnect connect_data(SYNCHRONOUS, OK); |
- data.set_connect_data(connect_data); |
+ StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
session_deps_.socket_factory->AddSocketDataProvider(&data); |
CreateNetworkSession(); |