Index: net/spdy/spdy_network_transaction_unittest.cc |
diff --git a/net/spdy/spdy_network_transaction_unittest.cc b/net/spdy/spdy_network_transaction_unittest.cc |
index b75405bba3dffce33aff60976e544fc14a3356f1..802bae6d64d02ae9dea28e1ab35ba83cbc9bfdec 100644 |
--- a/net/spdy/spdy_network_transaction_unittest.cc |
+++ b/net/spdy/spdy_network_transaction_unittest.cc |
@@ -268,16 +268,9 @@ class SpdyNetworkTransactionTest |
// should end with an empty read, and that read needs to be processed to |
// ensure proper deletion of the spdy_session_pool. |
void VerifyDataConsumed() { |
- for (DataVector::iterator it = data_vector_.begin(); |
- it != data_vector_.end(); ++it) { |
- EXPECT_TRUE((*it)->at_read_eof()) << "Read count: " |
- << (*it)->read_count() |
- << " Read index: " |
- << (*it)->read_index(); |
- EXPECT_TRUE((*it)->at_write_eof()) << "Write count: " |
- << (*it)->write_count() |
- << " Write index: " |
- << (*it)->write_index(); |
+ for (const SocketDataProvider* provider : data_vector_) { |
+ EXPECT_TRUE(provider->AllReadDataConsumed()); |
+ EXPECT_TRUE(provider->AllWriteDataConsumed()); |
} |
} |
@@ -285,20 +278,13 @@ class SpdyNetworkTransactionTest |
// processed. In that case we want to explicitly ensure that the reads were |
// not processed. |
void VerifyDataNotConsumed() { |
- for (DataVector::iterator it = data_vector_.begin(); |
- it != data_vector_.end(); ++it) { |
- EXPECT_TRUE(!(*it)->at_read_eof()) << "Read count: " |
- << (*it)->read_count() |
- << " Read index: " |
- << (*it)->read_index(); |
- EXPECT_TRUE(!(*it)->at_write_eof()) << "Write count: " |
- << (*it)->write_count() |
- << " Write index: " |
- << (*it)->write_index(); |
+ for (const SocketDataProvider* provider : data_vector_) { |
+ EXPECT_FALSE(provider->AllReadDataConsumed()); |
+ EXPECT_FALSE(provider->AllWriteDataConsumed()); |
} |
} |
- void RunToCompletion(StaticSocketDataProvider* data) { |
+ void RunToCompletion(SocketDataProvider* data) { |
RunPreTestSetup(); |
AddData(data); |
RunDefaultTest(); |
@@ -306,7 +292,7 @@ class SpdyNetworkTransactionTest |
} |
void RunToCompletionWithSSLData( |
- StaticSocketDataProvider* data, |
+ SocketDataProvider* data, |
scoped_ptr<SSLSocketDataProvider> ssl_provider) { |
RunPreTestSetup(); |
AddDataWithSSLSocketDataProvider(data, ssl_provider.Pass()); |
@@ -314,7 +300,7 @@ class SpdyNetworkTransactionTest |
VerifyDataConsumed(); |
} |
- void AddData(StaticSocketDataProvider* data) { |
+ void AddData(SocketDataProvider* data) { |
scoped_ptr<SSLSocketDataProvider> ssl_provider( |
new SSLSocketDataProvider(ASYNC, OK)); |
ssl_provider->cert = |
@@ -323,7 +309,7 @@ class SpdyNetworkTransactionTest |
} |
void AddDataWithSSLSocketDataProvider( |
- StaticSocketDataProvider* data, |
+ SocketDataProvider* data, |
scoped_ptr<SSLSocketDataProvider> ssl_provider) { |
DCHECK(!deterministic_); |
data_vector_.push_back(data); |
@@ -391,16 +377,16 @@ class SpdyNetworkTransactionTest |
} |
private: |
- typedef std::vector<StaticSocketDataProvider*> DataVector; |
+ typedef std::vector<SocketDataProvider*> DataVector; |
typedef ScopedVector<SSLSocketDataProvider> SSLVector; |
- typedef ScopedVector<StaticSocketDataProvider> AlternateVector; |
+ typedef ScopedVector<SocketDataProvider> AlternateVector; |
typedef ScopedVector<DeterministicSocketData> AlternateDeterministicVector; |
HttpRequestInfo request_; |
RequestPriority priority_; |
scoped_ptr<SpdySessionDependencies> session_deps_; |
scoped_refptr<HttpNetworkSession> session_; |
TransactionHelperResult output_; |
- scoped_ptr<StaticSocketDataProvider> first_transaction_; |
+ scoped_ptr<SocketDataProvider> first_transaction_; |
SSLVector ssl_vector_; |
TestCompletionCallback callback_; |
scoped_ptr<HttpNetworkTransaction> trans_; |
@@ -567,7 +553,7 @@ class SpdyNetworkTransactionTest |
// to skip over data destined for other transactions while we consume |
// the data for |trans|. |
int ReadResult(HttpNetworkTransaction* trans, |
- StaticSocketDataProvider* data, |
+ SocketDataProvider* data, |
std::string* result) { |
const int kSize = 3000; |
@@ -577,12 +563,6 @@ class SpdyNetworkTransactionTest |
while (true) { |
int rv = trans->Read(buf.get(), kSize, callback.callback()); |
if (rv == ERR_IO_PENDING) { |
- // Multiple transactions may be in the data set. Keep pulling off |
- // reads until we complete our callback. |
- while (!callback.have_result()) { |
- data->CompleteRead(); |
- base::RunLoop().RunUntilIdle(); |
- } |
rv = callback.WaitForResult(); |
} else if (rv <= 0) { |
break; |
@@ -610,7 +590,7 @@ class SpdyNetworkTransactionTest |
EXPECT_EQ(0u, spdy_session->num_unclaimed_pushed_streams()); |
} |
- void RunServerPushTest(OrderedSocketData* data, |
+ void RunServerPushTest(SequencedSocketData* data, |
HttpResponseInfo* response, |
HttpResponseInfo* push_response, |
const std::string& expected) { |
@@ -751,18 +731,17 @@ TEST_P(SpdyNetworkTransactionTest, Get) { |
// Construct the request. |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
- MockWrite writes[] = { CreateMockWrite(*req) }; |
+ MockWrite writes[] = {CreateMockWrite(*req, 0)}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*body, 2), |
+ MockRead(ASYNC, 0, 3) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -778,7 +757,7 @@ TEST_P(SpdyNetworkTransactionTest, GetAtEachPriority) { |
// Construct the request. |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, p, true)); |
- MockWrite writes[] = { CreateMockWrite(*req) }; |
+ MockWrite writes[] = {CreateMockWrite(*req, 0)}; |
SpdyPriority spdy_prio = 0; |
EXPECT_TRUE(GetSpdyPriority(spdy_util_.spdy_version(), *req, &spdy_prio)); |
@@ -828,13 +807,13 @@ TEST_P(SpdyNetworkTransactionTest, GetAtEachPriority) { |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*body, 2), |
+ MockRead(ASYNC, 0, 3) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, |
+ arraysize(writes)); |
HttpRequestInfo http_req = CreateGetRequest(); |
NormalSpdyTransactionHelper helper(http_req, p, BoundNetLog(), |
@@ -877,27 +856,26 @@ TEST_P(SpdyNetworkTransactionTest, ThreeGets) { |
scoped_ptr<SpdyFrame> fbody3(spdy_util_.ConstructSpdyBodyFrame(5, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*req2), |
- CreateMockWrite(*req3), |
+ CreateMockWrite(*req, 0), |
+ CreateMockWrite(*req2, 3), |
+ CreateMockWrite(*req3, 6), |
}; |
MockRead reads[] = { |
- CreateMockRead(*resp, 1), |
- CreateMockRead(*body), |
- CreateMockRead(*resp2, 4), |
- CreateMockRead(*body2), |
- CreateMockRead(*resp3, 7), |
- CreateMockRead(*body3), |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*body, 2), |
+ CreateMockRead(*resp2, 4), |
+ CreateMockRead(*body2, 5), |
+ CreateMockRead(*resp3, 7), |
+ CreateMockRead(*body3, 8), |
- CreateMockRead(*fbody), |
- CreateMockRead(*fbody2), |
- CreateMockRead(*fbody3), |
+ CreateMockRead(*fbody, 9), |
+ CreateMockRead(*fbody2, 10), |
+ CreateMockRead(*fbody3, 11), |
- MockRead(ASYNC, 0, 0), // EOF |
+ MockRead(ASYNC, 0, 12), // EOF |
}; |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- OrderedSocketData data_placeholder(NULL, 0, NULL, 0); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ SequencedSocketData data_placeholder(NULL, 0, NULL, 0); |
BoundNetLog log; |
TransactionHelperResult out; |
@@ -968,23 +946,21 @@ TEST_P(SpdyNetworkTransactionTest, TwoGetsLateBinding) { |
scoped_ptr<SpdyFrame> fbody2(spdy_util_.ConstructSpdyBodyFrame(3, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*req2), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*req2, 3), |
}; |
MockRead reads[] = { |
- CreateMockRead(*resp, 1), |
- CreateMockRead(*body), |
- CreateMockRead(*resp2, 4), |
- CreateMockRead(*body2), |
- CreateMockRead(*fbody), |
- CreateMockRead(*fbody2), |
- MockRead(ASYNC, 0, 0), // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*body, 2), |
+ CreateMockRead(*resp2, 4), |
+ CreateMockRead(*body2, 5), |
+ CreateMockRead(*fbody, 6), |
+ CreateMockRead(*fbody2, 7), |
+ MockRead(ASYNC, 0, 8), // EOF |
}; |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
- OrderedSocketData data_placeholder(NULL, 0, NULL, 0); |
+ SequencedSocketData data_placeholder(NULL, 0, NULL, 0); |
data_placeholder.set_connect_data(never_finishing_connect); |
BoundNetLog log; |
@@ -1055,24 +1031,23 @@ TEST_P(SpdyNetworkTransactionTest, TwoGetsLateBindingFromPreconnect) { |
scoped_ptr<SpdyFrame> fbody2(spdy_util_.ConstructSpdyBodyFrame(3, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*req2), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*req2, 3), |
}; |
MockRead reads[] = { |
- CreateMockRead(*resp, 1), |
- CreateMockRead(*body), |
- CreateMockRead(*resp2, 4), |
- CreateMockRead(*body2), |
- CreateMockRead(*fbody), |
- CreateMockRead(*fbody2), |
- MockRead(ASYNC, 0, 0), // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*body, 2), |
+ CreateMockRead(*resp2, 4), |
+ CreateMockRead(*body2, 5), |
+ CreateMockRead(*fbody, 6), |
+ CreateMockRead(*fbody2, 7), |
+ MockRead(ASYNC, 0, 8), // EOF |
}; |
- OrderedSocketData preconnect_data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData preconnect_data(reads, arraysize(reads), writes, |
+ arraysize(writes)); |
MockConnect never_finishing_connect(ASYNC, ERR_IO_PENDING); |
- OrderedSocketData data_placeholder(NULL, 0, NULL, 0); |
+ SequencedSocketData data_placeholder(NULL, 0, NULL, 0); |
data_placeholder.set_connect_data(never_finishing_connect); |
BoundNetLog log; |
@@ -1174,29 +1149,28 @@ TEST_P(SpdyNetworkTransactionTest, ThreeGetsWithMaxConcurrent) { |
scoped_ptr<SpdyFrame> settings_ack(spdy_util_.ConstructSpdySettingsAck()); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*settings_ack, 2), |
- CreateMockWrite(*req2), |
- CreateMockWrite(*req3), |
+ CreateMockWrite(*req, 0), |
+ CreateMockWrite(*settings_ack, 5), |
+ CreateMockWrite(*req2, 6), |
+ CreateMockWrite(*req3, 10), |
}; |
MockRead reads[] = { |
- CreateMockRead(*settings_frame, 1), |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- CreateMockRead(*fbody), |
- CreateMockRead(*resp2, 8), |
- CreateMockRead(*body2), |
- CreateMockRead(*fbody2), |
- CreateMockRead(*resp3, 13), |
- CreateMockRead(*body3), |
- CreateMockRead(*fbody3), |
+ CreateMockRead(*settings_frame, 1), |
+ CreateMockRead(*resp, 2), |
+ CreateMockRead(*body, 3), |
+ CreateMockRead(*fbody, 4), |
+ CreateMockRead(*resp2, 7), |
+ CreateMockRead(*body2, 8), |
+ CreateMockRead(*fbody2, 9), |
+ CreateMockRead(*resp3, 11), |
+ CreateMockRead(*body3, 12), |
+ CreateMockRead(*fbody3, 13), |
- MockRead(ASYNC, 0, 0), // EOF |
+ MockRead(ASYNC, 0, 14), // EOF |
}; |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
BoundNetLog log; |
TransactionHelperResult out; |
@@ -1233,7 +1207,6 @@ TEST_P(SpdyNetworkTransactionTest, ThreeGetsWithMaxConcurrent) { |
ASSERT_EQ(out.rv, ERR_IO_PENDING); |
out.rv = callback2.WaitForResult(); |
ASSERT_EQ(OK, out.rv); |
- EXPECT_EQ(7U, data.read_index()); // i.e. the third trans was queued |
out.rv = callback3.WaitForResult(); |
ASSERT_EQ(OK, out.rv); |
@@ -1307,39 +1280,40 @@ TEST_P(SpdyNetworkTransactionTest, FourGetsWithMaxConcurrentPriority) { |
scoped_ptr<SpdyFrame> settings_frame( |
spdy_util_.ConstructSpdySettings(settings)); |
scoped_ptr<SpdyFrame> settings_ack(spdy_util_.ConstructSpdySettingsAck()); |
- |
- MockWrite writes[] = { CreateMockWrite(*req), |
- CreateMockWrite(*settings_ack, 2), |
- CreateMockWrite(*req2), |
- CreateMockWrite(*req4), |
- CreateMockWrite(*req3), |
+ MockWrite writes[] = { |
+ CreateMockWrite(*req, 0), |
+ CreateMockWrite(*settings_ack, 5), |
+ // By making these synchronous, it guarantees that they are not *started* |
+ // before their sequence number, which in turn verifies that only a single |
+ // request is in-flight at a time. |
+ CreateMockWrite(*req2, 6, SYNCHRONOUS), |
+ CreateMockWrite(*req4, 10, SYNCHRONOUS), |
+ CreateMockWrite(*req3, 13, SYNCHRONOUS), |
}; |
MockRead reads[] = { |
- CreateMockRead(*settings_frame, 1), |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- CreateMockRead(*fbody), |
- CreateMockRead(*resp2, 8), |
- CreateMockRead(*body2), |
- CreateMockRead(*fbody2), |
- CreateMockRead(*resp4, 14), |
- CreateMockRead(*fbody4), |
- CreateMockRead(*resp3, 17), |
- CreateMockRead(*body3), |
- CreateMockRead(*fbody3), |
- |
- MockRead(ASYNC, 0, 0), // EOF |
- }; |
- |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- |
+ CreateMockRead(*settings_frame, 1), |
+ CreateMockRead(*resp, 2), |
+ CreateMockRead(*body, 3), |
+ CreateMockRead(*fbody, 4), |
+ CreateMockRead(*resp2, 7), |
+ CreateMockRead(*body2, 8), |
+ CreateMockRead(*fbody2, 9), |
+ CreateMockRead(*resp4, 11), |
+ CreateMockRead(*fbody4, 12), |
+ CreateMockRead(*resp3, 14), |
+ CreateMockRead(*body3, 15), |
+ CreateMockRead(*fbody3, 16), |
+ |
+ MockRead(ASYNC, 0, 17), // EOF |
+ }; |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
BoundNetLog log; |
TransactionHelperResult out; |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunPreTestSetup(); |
helper.AddData(&data); |
+ |
scoped_ptr<HttpNetworkTransaction> trans1( |
new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); |
scoped_ptr<HttpNetworkTransaction> trans2( |
@@ -1374,7 +1348,6 @@ TEST_P(SpdyNetworkTransactionTest, FourGetsWithMaxConcurrentPriority) { |
out.rv = callback2.WaitForResult(); |
ASSERT_EQ(OK, out.rv); |
- EXPECT_EQ(data.read_index(), 7U); // i.e. the third & fourth trans queued |
out.rv = callback3.WaitForResult(); |
ASSERT_EQ(OK, out.rv); |
@@ -1421,7 +1394,7 @@ TEST_P(SpdyNetworkTransactionTest, FourGetsWithMaxConcurrentPriority) { |
} |
// Similar to ThreeGetsMaxConcurrrent above, however, this test |
-// deletes a session in the middle of the transaction to insure |
+// deletes a session in the middle of the transaction to ensure |
// that we properly remove pendingcreatestream objects from |
// the spdy_session |
TEST_P(SpdyNetworkTransactionTest, ThreeGetsWithMaxConcurrentDelete) { |
@@ -1447,23 +1420,22 @@ TEST_P(SpdyNetworkTransactionTest, ThreeGetsWithMaxConcurrentDelete) { |
scoped_ptr<SpdyFrame> settings_ack(spdy_util_.ConstructSpdySettingsAck()); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*settings_ack, 2), |
- CreateMockWrite(*req2), |
+ CreateMockWrite(*req, 0), |
+ CreateMockWrite(*settings_ack, 5), |
+ CreateMockWrite(*req2, 6), |
}; |
MockRead reads[] = { |
- CreateMockRead(*settings_frame, 1), |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- CreateMockRead(*fbody), |
- CreateMockRead(*resp2, 8), |
- CreateMockRead(*body2), |
- CreateMockRead(*fbody2), |
- MockRead(ASYNC, 0, 0), // EOF |
+ CreateMockRead(*settings_frame, 1), |
+ CreateMockRead(*resp, 2), |
+ CreateMockRead(*body, 3), |
+ CreateMockRead(*fbody, 4), |
+ CreateMockRead(*resp2, 7), |
+ CreateMockRead(*body2, 8), |
+ CreateMockRead(*fbody2, 9), |
+ MockRead(ASYNC, 0, 10), // EOF |
}; |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
BoundNetLog log; |
TransactionHelperResult out; |
@@ -1500,8 +1472,6 @@ TEST_P(SpdyNetworkTransactionTest, ThreeGetsWithMaxConcurrentDelete) { |
out.rv = callback2.WaitForResult(); |
ASSERT_EQ(OK, out.rv); |
- EXPECT_EQ(8U, data.read_index()); |
- |
const HttpResponseInfo* response1 = trans1->GetResponseInfo(); |
ASSERT_TRUE(response1 != NULL); |
EXPECT_TRUE(response1->headers.get() != NULL); |
@@ -1579,22 +1549,21 @@ TEST_P(SpdyNetworkTransactionTest, ThreeGetsWithMaxConcurrentSocketClose) { |
scoped_ptr<SpdyFrame> settings_ack(spdy_util_.ConstructSpdySettingsAck()); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*settings_ack, 2), |
- CreateMockWrite(*req2), |
+ CreateMockWrite(*req, 0), |
+ CreateMockWrite(*settings_ack, 5), |
+ CreateMockWrite(*req2, 6), |
}; |
MockRead reads[] = { |
- CreateMockRead(*settings_frame, 1), |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- CreateMockRead(*fin_body), |
- CreateMockRead(*resp2, 8), |
- MockRead(ASYNC, ERR_CONNECTION_RESET, 0), // Abort! |
+ CreateMockRead(*settings_frame, 1), |
+ CreateMockRead(*resp, 2), |
+ CreateMockRead(*body, 3), |
+ CreateMockRead(*fin_body, 4), |
+ CreateMockRead(*resp2, 7), |
+ MockRead(ASYNC, ERR_CONNECTION_RESET, 8), // Abort! |
}; |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- OrderedSocketData data_placeholder(NULL, 0, NULL, 0); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ SequencedSocketData data_placeholder(NULL, 0, NULL, 0); |
BoundNetLog log; |
TransactionHelperResult out; |
@@ -1632,8 +1601,6 @@ TEST_P(SpdyNetworkTransactionTest, ThreeGetsWithMaxConcurrentSocketClose) { |
out.rv = callback3.WaitForResult(); |
ASSERT_EQ(ERR_ABORTED, out.rv); |
- EXPECT_EQ(6U, data.read_index()); |
- |
const HttpResponseInfo* response1 = trans1.GetResponseInfo(); |
ASSERT_TRUE(response1 != NULL); |
EXPECT_TRUE(response1->headers.get() != NULL); |
@@ -1665,19 +1632,18 @@ TEST_P(SpdyNetworkTransactionTest, Put) { |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdySyn(1, *put_headers, LOWEST, false, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
+ CreateMockWrite(*req, 0), |
}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*body, 2), |
+ MockRead(ASYNC, 0, 3) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(request, DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -1699,19 +1665,18 @@ TEST_P(SpdyNetworkTransactionTest, Head) { |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdySyn(1, *head_headers, LOWEST, false, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
+ CreateMockWrite(*req, 0), |
}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*body, 2), |
+ MockRead(ASYNC, 0, 3) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(request, DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -1727,19 +1692,17 @@ TEST_P(SpdyNetworkTransactionTest, Post) { |
GetDefaultUrl(), 1, kUploadDataSize, LOWEST, NULL, 0)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*body), // POST upload frame |
+ CreateMockWrite(*req, 0), CreateMockWrite(*body, 1), // POST upload frame |
}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyPostSynReply(NULL, 0)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 2), |
+ CreateMockRead(*body, 3), |
+ MockRead(ASYNC, 0, 4) // EOF |
}; |
- DelayedSocketData data(2, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreatePostRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -1755,19 +1718,17 @@ TEST_P(SpdyNetworkTransactionTest, FilePost) { |
GetDefaultUrl(), 1, kUploadDataSize, LOWEST, NULL, 0)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*body), // POST upload frame |
+ CreateMockWrite(*req, 0), CreateMockWrite(*body, 1), // POST upload frame |
}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyPostSynReply(NULL, 0)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 2), |
+ CreateMockRead(*body, 3), |
+ MockRead(ASYNC, 0, 4) // EOF |
}; |
- DelayedSocketData data(2, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateFilePostRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -1780,13 +1741,13 @@ TEST_P(SpdyNetworkTransactionTest, FilePost) { |
// Test that a POST with a unreadable file fails. |
TEST_P(SpdyNetworkTransactionTest, UnreadableFilePost) { |
MockWrite writes[] = { |
- MockWrite(ASYNC, 0, 0) // EOF |
+ MockWrite(ASYNC, 0, 0) // EOF |
}; |
MockRead reads[] = { |
- MockRead(ASYNC, 0, 0) // EOF |
+ MockRead(ASYNC, 0, 1) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateUnreadableFilePostRequest(), |
DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
@@ -1805,19 +1766,17 @@ TEST_P(SpdyNetworkTransactionTest, ComplexPost) { |
GetDefaultUrl(), 1, kUploadDataSize, LOWEST, NULL, 0)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*body), // POST upload frame |
+ CreateMockWrite(*req, 0), CreateMockWrite(*body, 1), // POST upload frame |
}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyPostSynReply(NULL, 0)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 2), |
+ CreateMockRead(*body, 3), |
+ MockRead(ASYNC, 0, 4) // EOF |
}; |
- DelayedSocketData data(2, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateComplexPostRequest(), |
DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
@@ -1833,19 +1792,17 @@ TEST_P(SpdyNetworkTransactionTest, ChunkedPost) { |
scoped_ptr<SpdyFrame> req(spdy_util_.ConstructChunkedSpdyPost(NULL, 0)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*body), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*body, 1), |
}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyPostSynReply(NULL, 0)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 2), |
+ CreateMockRead(*body, 3), |
+ MockRead(ASYNC, 0, 4) // EOF |
}; |
- DelayedSocketData data(2, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateChunkedPostRequest(), |
DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
@@ -1870,23 +1827,22 @@ TEST_P(SpdyNetworkTransactionTest, DelayedChunkedPost) { |
scoped_ptr<SpdyFrame> chunk2(spdy_util_.ConstructSpdyBodyFrame(1, false)); |
scoped_ptr<SpdyFrame> chunk3(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*chunk1), |
- CreateMockWrite(*chunk2), |
- CreateMockWrite(*chunk3), |
+ CreateMockWrite(*req, 0), |
+ CreateMockWrite(*chunk1, 1), |
+ CreateMockWrite(*chunk2, 2), |
+ CreateMockWrite(*chunk3, 3), |
}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyPostSynReply(NULL, 0)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*chunk1), |
- CreateMockRead(*chunk2), |
- CreateMockRead(*chunk3), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 4), |
+ CreateMockRead(*chunk1, 5), |
+ CreateMockRead(*chunk2, 6), |
+ CreateMockRead(*chunk3, 7), |
+ MockRead(ASYNC, 0, 8) // EOF |
}; |
- DelayedSocketData data(4, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateChunkedPostRequest(), |
DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
@@ -1934,19 +1890,18 @@ TEST_P(SpdyNetworkTransactionTest, NullPost) { |
spdy_util_.ConstructSpdySyn(1, *req_block, LOWEST, false, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
+ CreateMockWrite(*req, 0), |
}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyPostSynReply(NULL, 0)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*body, 2), |
+ MockRead(ASYNC, 0, 3) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(request, DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
@@ -1978,18 +1933,18 @@ TEST_P(SpdyNetworkTransactionTest, EmptyPost) { |
spdy_util_.ConstructSpdySyn(1, *req_block, LOWEST, false, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
+ CreateMockWrite(*req, 0), |
}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyPostSynReply(NULL, 0)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*body, 2), |
+ MockRead(ASYNC, 0, 3) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(request, DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
@@ -2092,11 +2047,17 @@ TEST_P(SpdyNetworkTransactionTest, SocketWriteReturnsZero) { |
TEST_P(SpdyNetworkTransactionTest, ResponseWithoutSynReply) { |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*body, 1), MockRead(ASYNC, 0, 3) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), NULL, 0); |
+ scoped_ptr<SpdyFrame> req( |
+ spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
+ scoped_ptr<SpdyFrame> rst( |
+ spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); |
+ MockWrite writes[] = { |
+ CreateMockWrite(*req, 0), CreateMockWrite(*rst, 2), |
+ }; |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -2112,21 +2073,19 @@ TEST_P(SpdyNetworkTransactionTest, ResponseWithTwoSynReplies) { |
scoped_ptr<SpdyFrame> rst( |
spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*rst), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4), |
}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*resp, 2), |
+ CreateMockRead(*body, 3), |
+ MockRead(ASYNC, 0, 5) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
@@ -2159,8 +2118,7 @@ TEST_P(SpdyNetworkTransactionTest, ResetReplyWithTransferEncoding) { |
scoped_ptr<SpdyFrame> rst( |
spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*rst), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*rst, 2), |
}; |
const char* const headers[] = { |
@@ -2171,13 +2129,12 @@ TEST_P(SpdyNetworkTransactionTest, ResetReplyWithTransferEncoding) { |
scoped_ptr<SpdyFrame> body( |
spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*body, 3), |
+ MockRead(ASYNC, 0, 4) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -2195,8 +2152,7 @@ TEST_P(SpdyNetworkTransactionTest, ResetPushWithTransferEncoding) { |
scoped_ptr<SpdyFrame> rst( |
spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*rst), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4), |
}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
@@ -2208,14 +2164,13 @@ TEST_P(SpdyNetworkTransactionTest, ResetPushWithTransferEncoding) { |
GetDefaultUrlWithPath("/1").c_str())); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*push), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*push, 2), |
+ CreateMockRead(*body, 3), |
+ MockRead(ASYNC, 0, 5) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -2316,8 +2271,8 @@ TEST_P(SpdyNetworkTransactionTest, CancelledTransactionSendRst) { |
TEST_P(SpdyNetworkTransactionTest, StartTransactionOnReadCallback) { |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
- MockWrite writes[] = { CreateMockWrite(*req) }; |
- MockWrite writes2[] = { CreateMockWrite(*req) }; |
+ MockWrite writes[] = {CreateMockWrite(*req)}; |
+ MockWrite writes2[] = {CreateMockWrite(*req, 0)}; |
// The indicated length of this frame is longer than its actual length. When |
// the session receives an empty frame after this one, it shuts down the |
@@ -2338,14 +2293,13 @@ TEST_P(SpdyNetworkTransactionTest, StartTransactionOnReadCallback) { |
MockRead(ASYNC, 0, 0, 6), // EOF |
}; |
MockRead reads2[] = { |
- CreateMockRead(*resp, 2), |
- MockRead(ASYNC, 0, 0, 3), // EOF |
+ CreateMockRead(*resp, 1), MockRead(ASYNC, 0, 0, 2), // EOF |
}; |
OrderedSocketData data(reads, arraysize(reads), |
writes, arraysize(writes)); |
- DelayedSocketData data2(1, reads2, arraysize(reads2), |
- writes2, arraysize(writes2)); |
+ SequencedSocketData data2(reads2, arraysize(reads2), writes2, |
+ arraysize(writes2)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
@@ -2458,10 +2412,9 @@ TEST_P(SpdyNetworkTransactionTest, DISABLED_RedirectGetRequest) { |
CreateMockRead(*body2, 3), |
MockRead(ASYNC, 0, 0, 4) // EOF |
}; |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- OrderedSocketData data2(reads2, arraysize(reads2), |
- writes2, arraysize(writes2)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ SequencedSocketData data2(reads2, arraysize(reads2), writes2, |
+ arraysize(writes2)); |
// TODO(erikchen): Make test support SPDYSSL, SPDYNPN |
TestDelegate d; |
@@ -2541,10 +2494,9 @@ TEST_P(SpdyNetworkTransactionTest, DISABLED_RedirectServerPush) { |
CreateMockRead(*body2, 3), |
MockRead(ASYNC, 0, 0, 5) // EOF |
}; |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
- OrderedSocketData data2(reads2, arraysize(reads2), |
- writes2, arraysize(writes2)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
+ SequencedSocketData data2(reads2, arraysize(reads2), writes2, |
+ arraysize(writes2)); |
// TODO(erikchen): Make test support SPDYSSL, SPDYNPN |
TestDelegate d; |
@@ -2581,12 +2533,10 @@ TEST_P(SpdyNetworkTransactionTest, DISABLED_RedirectServerPush) { |
std::string contents2("hello!"); |
EXPECT_EQ(contents2, d2.data_received()); |
} |
- data.CompleteRead(); |
- data2.CompleteRead(); |
- EXPECT_TRUE(data.at_read_eof()); |
- EXPECT_TRUE(data.at_write_eof()); |
- EXPECT_TRUE(data2.at_read_eof()); |
- EXPECT_TRUE(data2.at_write_eof()); |
+ EXPECT_TRUE(data.AllReadDataConsumed()); |
+ EXPECT_TRUE(data.AllWriteDataConsumed()); |
+ EXPECT_TRUE(data2.AllReadDataConsumed()); |
+ EXPECT_TRUE(data2.AllWriteDataConsumed()); |
} |
TEST_P(SpdyNetworkTransactionTest, ServerPushSingleDataFrame) { |
@@ -2595,7 +2545,7 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushSingleDataFrame) { |
scoped_ptr<SpdyFrame> stream1_body( |
spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*stream1_syn, 1), |
+ CreateMockWrite(*stream1_syn, 0), |
}; |
scoped_ptr<SpdyFrame> |
@@ -2607,18 +2557,17 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushSingleDataFrame) { |
spdy_util_.ConstructSpdyBodyFrame( |
2, kPushedData, strlen(kPushedData), true)); |
MockRead reads[] = { |
- CreateMockRead(*stream1_reply, 2), |
- CreateMockRead(*stream2_syn, 3), |
- CreateMockRead(*stream1_body, 4, SYNCHRONOUS), |
- CreateMockRead(*stream2_body, 5), |
- MockRead(ASYNC, ERR_IO_PENDING, 6), // Force a pause |
+ CreateMockRead(*stream1_reply, 1), |
+ CreateMockRead(*stream2_syn, 2), |
+ CreateMockRead(*stream1_body, 3, SYNCHRONOUS), |
+ CreateMockRead(*stream2_body, 4), |
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a pause |
}; |
HttpResponseInfo response; |
HttpResponseInfo response2; |
std::string expected_push_result("pushed"); |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
RunServerPushTest(&data, |
&response, |
&response2, |
@@ -2639,7 +2588,7 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushBeforeSynReply) { |
scoped_ptr<SpdyFrame> stream1_body( |
spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*stream1_syn, 1), |
+ CreateMockWrite(*stream1_syn, 0), |
}; |
scoped_ptr<SpdyFrame> |
@@ -2651,18 +2600,17 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushBeforeSynReply) { |
spdy_util_.ConstructSpdyBodyFrame( |
2, kPushedData, strlen(kPushedData), true)); |
MockRead reads[] = { |
- CreateMockRead(*stream2_syn, 2), |
- CreateMockRead(*stream1_reply, 3), |
- CreateMockRead(*stream1_body, 4, SYNCHRONOUS), |
- CreateMockRead(*stream2_body, 5), |
- MockRead(ASYNC, ERR_IO_PENDING, 6), // Force a pause |
+ CreateMockRead(*stream2_syn, 1), |
+ CreateMockRead(*stream1_reply, 2), |
+ CreateMockRead(*stream1_body, 3, SYNCHRONOUS), |
+ CreateMockRead(*stream2_body, 4), |
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a pause |
}; |
HttpResponseInfo response; |
HttpResponseInfo response2; |
std::string expected_push_result("pushed"); |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
RunServerPushTest(&data, |
&response, |
&response2, |
@@ -2680,7 +2628,9 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushBeforeSynReply) { |
TEST_P(SpdyNetworkTransactionTest, ServerPushSingleDataFrame2) { |
scoped_ptr<SpdyFrame> stream1_syn( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
- MockWrite writes[] = { CreateMockWrite(*stream1_syn, 1), }; |
+ MockWrite writes[] = { |
+ CreateMockWrite(*stream1_syn, 0), |
+ }; |
scoped_ptr<SpdyFrame> |
stream1_reply(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
@@ -2693,18 +2643,17 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushSingleDataFrame2) { |
scoped_ptr<SpdyFrame> |
stream1_body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*stream1_reply, 2), |
- CreateMockRead(*stream2_syn, 3), |
- CreateMockRead(*stream2_body, 4), |
- CreateMockRead(*stream1_body, 5, SYNCHRONOUS), |
- MockRead(ASYNC, ERR_IO_PENDING, 6), // Force a pause |
+ CreateMockRead(*stream1_reply, 1), |
+ CreateMockRead(*stream2_syn, 2), |
+ CreateMockRead(*stream2_body, 3), |
+ CreateMockRead(*stream1_body, 4, SYNCHRONOUS), |
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a pause |
}; |
HttpResponseInfo response; |
HttpResponseInfo response2; |
std::string expected_push_result("pushed"); |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
RunServerPushTest(&data, |
&response, |
&response2, |
@@ -2725,7 +2674,7 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushServerAborted) { |
scoped_ptr<SpdyFrame> stream1_body( |
spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*stream1_syn, 1), |
+ CreateMockWrite(*stream1_syn, 0), |
}; |
scoped_ptr<SpdyFrame> |
@@ -2735,15 +2684,14 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushServerAborted) { |
scoped_ptr<SpdyFrame> stream2_rst( |
spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); |
MockRead reads[] = { |
- CreateMockRead(*stream1_reply, 2), |
- CreateMockRead(*stream2_syn, 3), |
- CreateMockRead(*stream2_rst, 4), |
- CreateMockRead(*stream1_body, 5, SYNCHRONOUS), |
- MockRead(ASYNC, ERR_IO_PENDING, 6), // Force a pause |
+ CreateMockRead(*stream1_reply, 1), |
+ CreateMockRead(*stream2_syn, 2), |
+ CreateMockRead(*stream2_rst, 3), |
+ CreateMockRead(*stream1_body, 4, SYNCHRONOUS), |
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a pause |
}; |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
@@ -2761,14 +2709,8 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushServerAborted) { |
EXPECT_EQ(OK, rv); |
// Verify that we consumed all test data. |
- EXPECT_TRUE(data.at_read_eof()) << "Read count: " |
- << data.read_count() |
- << " Read index: " |
- << data.read_index(); |
- EXPECT_TRUE(data.at_write_eof()) << "Write count: " |
- << data.write_count() |
- << " Write index: " |
- << data.write_index(); |
+ EXPECT_TRUE(data.AllReadDataConsumed()); |
+ EXPECT_TRUE(data.AllWriteDataConsumed()); |
// Verify the SYN_REPLY. |
HttpResponseInfo response = *trans->GetResponseInfo(); |
@@ -2786,8 +2728,7 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushDuplicate) { |
scoped_ptr<SpdyFrame> stream3_rst( |
spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_PROTOCOL_ERROR)); |
MockWrite writes[] = { |
- CreateMockWrite(*stream1_syn, 1), |
- CreateMockWrite(*stream3_rst, 5), |
+ CreateMockWrite(*stream1_syn, 0), CreateMockWrite(*stream3_rst, 4), |
}; |
scoped_ptr<SpdyFrame> |
@@ -2801,19 +2742,18 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushDuplicate) { |
scoped_ptr<SpdyFrame> stream3_syn(spdy_util_.ConstructSpdyPush( |
NULL, 0, 4, 1, GetDefaultUrlWithPath("/foo.dat").c_str())); |
MockRead reads[] = { |
- CreateMockRead(*stream1_reply, 2), |
- CreateMockRead(*stream2_syn, 3), |
- CreateMockRead(*stream3_syn, 4), |
- CreateMockRead(*stream1_body, 6, SYNCHRONOUS), |
- CreateMockRead(*stream2_body, 7), |
- MockRead(ASYNC, ERR_IO_PENDING, 8), // Force a pause |
+ CreateMockRead(*stream1_reply, 1), |
+ CreateMockRead(*stream2_syn, 2), |
+ CreateMockRead(*stream3_syn, 3), |
+ CreateMockRead(*stream1_body, 5), |
+ CreateMockRead(*stream2_body, 6), |
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 7), // Force a pause |
}; |
HttpResponseInfo response; |
HttpResponseInfo response2; |
std::string expected_push_result("pushed"); |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
RunServerPushTest(&data, |
&response, |
&response2, |
@@ -2834,7 +2774,7 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushMultipleDataFrame) { |
scoped_ptr<SpdyFrame> stream1_body( |
spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*stream1_syn, 1), |
+ CreateMockWrite(*stream1_syn, 0), |
}; |
scoped_ptr<SpdyFrame> |
@@ -2857,21 +2797,20 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushMultipleDataFrame) { |
new SpdyFrame(stream2_body_base->data() + 3 * kChunkSize, |
stream2_body_base->size() - 3 * kChunkSize, false)); |
MockRead reads[] = { |
- CreateMockRead(*stream1_reply, 2), |
- CreateMockRead(*stream2_syn, 3), |
- CreateMockRead(*stream2_body1, 4), |
- CreateMockRead(*stream2_body2, 5), |
- CreateMockRead(*stream2_body3, 6), |
- CreateMockRead(*stream2_body4, 7), |
- CreateMockRead(*stream1_body, 8, SYNCHRONOUS), |
- MockRead(ASYNC, ERR_IO_PENDING, 9), // Force a pause |
+ CreateMockRead(*stream1_reply, 1), |
+ CreateMockRead(*stream2_syn, 2), |
+ CreateMockRead(*stream2_body1, 3), |
+ CreateMockRead(*stream2_body2, 4), |
+ CreateMockRead(*stream2_body3, 5), |
+ CreateMockRead(*stream2_body4, 6), |
+ CreateMockRead(*stream1_body, 7, SYNCHRONOUS), |
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 8), // Force a pause |
}; |
HttpResponseInfo response; |
HttpResponseInfo response2; |
std::string expected_push_result("pushed my darling hello my baby"); |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
RunServerPushTest(&data, &response, &response2, kPushedData); |
// Verify the SYN_REPLY. |
@@ -2889,7 +2828,7 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushMultipleDataFrameInterrupted) { |
scoped_ptr<SpdyFrame> stream1_body( |
spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*stream1_syn, 1), |
+ CreateMockWrite(*stream1_syn, 0), |
}; |
scoped_ptr<SpdyFrame> |
@@ -2912,21 +2851,19 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushMultipleDataFrameInterrupted) { |
new SpdyFrame(stream2_body_base->data() + 3 * kChunkSize, |
stream2_body_base->size() - 3 * kChunkSize, false)); |
MockRead reads[] = { |
- CreateMockRead(*stream1_reply, 2), |
- CreateMockRead(*stream2_syn, 3), |
- CreateMockRead(*stream2_body1, 4), |
- CreateMockRead(*stream2_body2, 5), |
- MockRead(ASYNC, ERR_IO_PENDING, 6), // Force a pause |
- CreateMockRead(*stream2_body3, 7), |
- CreateMockRead(*stream2_body4, 8), |
- CreateMockRead(*stream1_body.get(), 9, SYNCHRONOUS), |
- MockRead(ASYNC, ERR_IO_PENDING, 10) // Force a pause. |
+ CreateMockRead(*stream1_reply, 1), |
+ CreateMockRead(*stream2_syn, 2), |
+ CreateMockRead(*stream2_body1, 3), |
+ CreateMockRead(*stream2_body2, 4), |
+ CreateMockRead(*stream2_body3, 5), |
+ CreateMockRead(*stream2_body4, 6), |
+ CreateMockRead(*stream1_body.get(), 7, SYNCHRONOUS), |
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 8) // Force a pause. |
}; |
HttpResponseInfo response; |
HttpResponseInfo response2; |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
RunServerPushTest(&data, &response, &response2, kPushedData); |
// Verify the SYN_REPLY. |
@@ -2952,8 +2889,7 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushInvalidAssociatedStreamID0) { |
scoped_ptr<SpdyFrame> stream2_rst( |
spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); |
MockWrite writes[] = { |
- CreateMockWrite(*stream1_syn, 1), |
- CreateMockWrite(*stream2_rst, 4), |
+ CreateMockWrite(*stream1_syn, 0), CreateMockWrite(*stream2_rst, 3), |
}; |
scoped_ptr<SpdyFrame> |
@@ -2961,14 +2897,13 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushInvalidAssociatedStreamID0) { |
scoped_ptr<SpdyFrame> stream2_syn(spdy_util_.ConstructSpdyPush( |
NULL, 0, 2, 0, GetDefaultUrlWithPath("/foo.dat").c_str())); |
MockRead reads[] = { |
- CreateMockRead(*stream1_reply, 2), |
- CreateMockRead(*stream2_syn, 3), |
- CreateMockRead(*stream1_body, 4), |
- MockRead(ASYNC, ERR_IO_PENDING, 5) // Force a pause |
+ CreateMockRead(*stream1_reply, 1), |
+ CreateMockRead(*stream2_syn, 2), |
+ CreateMockRead(*stream1_body, 4), |
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5) // Force a pause |
}; |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
@@ -2986,14 +2921,8 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushInvalidAssociatedStreamID0) { |
EXPECT_EQ(OK, rv); |
// Verify that we consumed all test data. |
- EXPECT_TRUE(data.at_read_eof()) << "Read count: " |
- << data.read_count() |
- << " Read index: " |
- << data.read_index(); |
- EXPECT_TRUE(data.at_write_eof()) << "Write count: " |
- << data.write_count() |
- << " Write index: " |
- << data.write_index(); |
+ EXPECT_TRUE(data.AllReadDataConsumed()); |
+ EXPECT_TRUE(data.AllWriteDataConsumed()); |
// Verify the SYN_REPLY. |
HttpResponseInfo response = *trans->GetResponseInfo(); |
@@ -3009,8 +2938,7 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushInvalidAssociatedStreamID9) { |
scoped_ptr<SpdyFrame> stream2_rst( |
spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_INVALID_STREAM)); |
MockWrite writes[] = { |
- CreateMockWrite(*stream1_syn, 1), |
- CreateMockWrite(*stream2_rst, 4), |
+ CreateMockWrite(*stream1_syn, 0), CreateMockWrite(*stream2_rst, 3), |
}; |
scoped_ptr<SpdyFrame> |
@@ -3018,14 +2946,13 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushInvalidAssociatedStreamID9) { |
scoped_ptr<SpdyFrame> stream2_syn(spdy_util_.ConstructSpdyPush( |
NULL, 0, 2, 9, GetDefaultUrlWithPath("/foo.dat").c_str())); |
MockRead reads[] = { |
- CreateMockRead(*stream1_reply, 2), |
- CreateMockRead(*stream2_syn, 3), |
- CreateMockRead(*stream1_body, 4), |
- MockRead(ASYNC, ERR_IO_PENDING, 5), // Force a pause |
+ CreateMockRead(*stream1_reply, 1), |
+ CreateMockRead(*stream2_syn, 2), |
+ CreateMockRead(*stream1_body, 4), |
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a pause |
}; |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
@@ -3043,14 +2970,8 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushInvalidAssociatedStreamID9) { |
EXPECT_EQ(OK, rv); |
// Verify that we consumed all test data. |
- EXPECT_TRUE(data.at_read_eof()) << "Read count: " |
- << data.read_count() |
- << " Read index: " |
- << data.read_index(); |
- EXPECT_TRUE(data.at_write_eof()) << "Write count: " |
- << data.write_count() |
- << " Write index: " |
- << data.write_index(); |
+ EXPECT_TRUE(data.AllReadDataConsumed()); |
+ EXPECT_TRUE(data.AllWriteDataConsumed()); |
// Verify the SYN_REPLY. |
HttpResponseInfo response = *trans->GetResponseInfo(); |
@@ -3066,8 +2987,7 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushNoURL) { |
scoped_ptr<SpdyFrame> stream2_rst( |
spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); |
MockWrite writes[] = { |
- CreateMockWrite(*stream1_syn, 1), |
- CreateMockWrite(*stream2_rst, 4), |
+ CreateMockWrite(*stream1_syn, 0), CreateMockWrite(*stream2_rst, 3), |
}; |
scoped_ptr<SpdyFrame> |
@@ -3079,14 +2999,13 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushNoURL) { |
scoped_ptr<SpdyFrame> stream2_syn(spdy_util_.ConstructInitialSpdyPushFrame( |
incomplete_headers.Pass(), 2, 1)); |
MockRead reads[] = { |
- CreateMockRead(*stream1_reply, 2), |
- CreateMockRead(*stream2_syn, 3), |
- CreateMockRead(*stream1_body, 4), |
- MockRead(ASYNC, ERR_IO_PENDING, 5) // Force a pause |
+ CreateMockRead(*stream1_reply, 1), |
+ CreateMockRead(*stream2_syn, 2), |
+ CreateMockRead(*stream1_body, 4), |
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5) // Force a pause |
}; |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
@@ -3102,15 +3021,10 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushNoURL) { |
EXPECT_EQ(ERR_IO_PENDING, rv); |
rv = callback.WaitForResult(); |
EXPECT_EQ(OK, rv); |
+ |
// Verify that we consumed all test data. |
- EXPECT_TRUE(data.at_read_eof()) << "Read count: " |
- << data.read_count() |
- << " Read index: " |
- << data.read_index(); |
- EXPECT_TRUE(data.at_write_eof()) << "Write count: " |
- << data.write_count() |
- << " Write index: " |
- << data.write_index(); |
+ EXPECT_TRUE(data.AllReadDataConsumed()); |
+ EXPECT_TRUE(data.AllWriteDataConsumed()); |
// Verify the SYN_REPLY. |
HttpResponseInfo response = *trans->GetResponseInfo(); |
@@ -3168,7 +3082,7 @@ TEST_P(SpdyNetworkTransactionTest, SynReplyHeaders) { |
for (size_t i = 0; i < arraysize(test_cases); ++i) { |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
- MockWrite writes[] = { CreateMockWrite(*req) }; |
+ MockWrite writes[] = {CreateMockWrite(*req, 0)}; |
scoped_ptr<SpdyFrame> resp( |
spdy_util_.ConstructSpdyGetSynReply(test_cases[i].extra_headers, |
@@ -3176,13 +3090,13 @@ TEST_P(SpdyNetworkTransactionTest, SynReplyHeaders) { |
1)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*body, 2), |
+ MockRead(ASYNC, 0, 3) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, |
+ arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -3286,7 +3200,7 @@ TEST_P(SpdyNetworkTransactionTest, SynReplyHeadersVary) { |
false, 1, LOWEST, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*frame_req), |
+ CreateMockWrite(*frame_req, 0), |
}; |
// Construct the reply. |
@@ -3299,9 +3213,9 @@ TEST_P(SpdyNetworkTransactionTest, SynReplyHeadersVary) { |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*frame_reply), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*frame_reply, 1), |
+ CreateMockRead(*body, 2), |
+ MockRead(ASYNC, 0, 3) // EOF |
}; |
// Attach the headers to the request. |
@@ -3314,8 +3228,8 @@ TEST_P(SpdyNetworkTransactionTest, SynReplyHeadersVary) { |
request.extra_headers.SetHeader(header_key, header_value); |
} |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, |
+ arraysize(writes)); |
NormalSpdyTransactionHelper helper(request, DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -3380,8 +3294,7 @@ TEST_P(SpdyNetworkTransactionTest, InvalidSynReply) { |
scoped_ptr<SpdyFrame> rst( |
spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*rst), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*rst, 2), |
}; |
// Construct the reply. |
@@ -3390,12 +3303,11 @@ TEST_P(SpdyNetworkTransactionTest, InvalidSynReply) { |
test_cases[i].headers, test_cases[i].num_headers, &reply_headers); |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyReply(1, reply_headers)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 1), MockRead(ASYNC, 0, 3) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, |
+ arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -3436,19 +3348,18 @@ TEST_P(SpdyNetworkTransactionTest, CorruptFrameSessionError) { |
scoped_ptr<SpdyFrame> rst( |
spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*rst), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*rst, 3), |
}; |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- MockRead(ASYNC, test_cases[i].syn_reply->data(), wrong_size), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ MockRead(ASYNC, test_cases[i].syn_reply->data(), wrong_size, 1), |
+ CreateMockRead(*body, 2), |
+ MockRead(ASYNC, 0, 4) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, |
+ arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -3477,16 +3388,15 @@ TEST_P(SpdyNetworkTransactionTest, CorruptFrameSessionErrorSpdy4) { |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway( |
0, GOAWAY_COMPRESSION_ERROR, "Framer error: 5 (DECOMPRESS_FAILURE).")); |
- MockWrite writes[] = {CreateMockWrite(*req), CreateMockWrite(*goaway)}; |
+ MockWrite writes[] = {CreateMockWrite(*req, 0), CreateMockWrite(*goaway, 2)}; |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- MockRead(ASYNC, syn_reply_wrong_length->data(), |
- syn_reply_wrong_length->size() - 4), |
+ MockRead(ASYNC, syn_reply_wrong_length->data(), |
+ syn_reply_wrong_length->size() - 4, 1), |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -3503,14 +3413,14 @@ TEST_P(SpdyNetworkTransactionTest, GoAwayOnDecompressionFailure) { |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway( |
0, GOAWAY_COMPRESSION_ERROR, "Framer error: 5 (DECOMPRESS_FAILURE).")); |
- MockWrite writes[] = {CreateMockWrite(*req), CreateMockWrite(*goaway)}; |
+ MockWrite writes[] = {CreateMockWrite(*req, 0), CreateMockWrite(*goaway, 2)}; |
// Read HEADERS with corrupted payload. |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
memset(resp->data() + 12, 0xff, resp->size() - 12); |
- MockRead reads[] = {CreateMockRead(*resp)}; |
+ MockRead reads[] = {CreateMockRead(*resp, 1)}; |
- DelayedSocketData data(1, reads, arraysize(reads), writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper( |
CreateGetRequest(), DEFAULT_PRIORITY, BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -3523,7 +3433,7 @@ TEST_P(SpdyNetworkTransactionTest, GoAwayOnFrameSizeError) { |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway( |
0, GOAWAY_PROTOCOL_ERROR, "Framer error: 1 (INVALID_CONTROL_FRAME).")); |
- MockWrite writes[] = {CreateMockWrite(*req), CreateMockWrite(*goaway)}; |
+ MockWrite writes[] = {CreateMockWrite(*req, 0), CreateMockWrite(*goaway, 2)}; |
// Read WINDOW_UPDATE with incorrectly-sized payload. |
// TODO(jgraettinger): SpdyFramer signals this as an INVALID_CONTROL_FRAME, |
@@ -3533,9 +3443,9 @@ TEST_P(SpdyNetworkTransactionTest, GoAwayOnFrameSizeError) { |
test::SetFrameLength(bad_window_update.get(), |
bad_window_update->size() - 1, |
spdy_util_.spdy_version()); |
- MockRead reads[] = {CreateMockRead(*bad_window_update)}; |
+ MockRead reads[] = {CreateMockRead(*bad_window_update, 1)}; |
- DelayedSocketData data(1, reads, arraysize(reads), writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper( |
CreateGetRequest(), DEFAULT_PRIORITY, BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -3584,17 +3494,19 @@ TEST_P(SpdyNetworkTransactionTest, PartialWrite) { |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
const int kChunks = 5; |
scoped_ptr<MockWrite[]> writes(ChopWriteFrame(*req.get(), kChunks)); |
+ for (int i = 0; i < kChunks; ++i) { |
+ writes[i].sequence_number = i; |
+ } |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, kChunks), |
+ CreateMockRead(*body, kChunks + 1), |
+ MockRead(ASYNC, 0, kChunks + 2) // EOF |
}; |
- DelayedSocketData data(kChunks, reads, arraysize(reads), |
- writes.get(), kChunks); |
+ SequencedSocketData data(reads, arraysize(reads), writes.get(), kChunks); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -3615,16 +3527,16 @@ TEST_P(SpdyNetworkTransactionTest, DecompressFailureOnSynReply) { |
spdy_util_.ConstructSpdyGet(NULL, 0, true, 1, LOWEST, true)); |
scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway( |
0, GOAWAY_COMPRESSION_ERROR, "Framer error: 5 (DECOMPRESS_FAILURE).")); |
- MockWrite writes[] = {CreateMockWrite(*compressed), CreateMockWrite(*goaway)}; |
+ MockWrite writes[] = {CreateMockWrite(*compressed, 0), |
+ CreateMockWrite(*goaway, 2)}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
+ CreateMockRead(*resp, 1), |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
SpdySessionDependencies* session_deps = |
CreateSpdySessionDependencies(GetParam()); |
session_deps->enable_compression = true; |
@@ -3643,20 +3555,19 @@ TEST_P(SpdyNetworkTransactionTest, NetLog) { |
}; |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet(kExtraHeaders, 1, false, 1, LOWEST, true)); |
- MockWrite writes[] = { CreateMockWrite(*req) }; |
+ MockWrite writes[] = {CreateMockWrite(*req, 0)}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*body, 2), |
+ MockRead(ASYNC, 0, 3) // EOF |
}; |
BoundTestNetLog log; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequestWithUserAgent(), |
DEFAULT_PRIORITY, |
log.bound(), GetParam(), NULL); |
@@ -3735,7 +3646,7 @@ TEST_P(SpdyNetworkTransactionTest, BufferFull) { |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
- MockWrite writes[] = { CreateMockWrite(*req) }; |
+ MockWrite writes[] = {CreateMockWrite(*req, 0)}; |
// 2 data frames in a single read. |
scoped_ptr<SpdyFrame> data_frame_1( |
@@ -3924,7 +3835,7 @@ TEST_P(SpdyNetworkTransactionTest, BufferedAll) { |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
- MockWrite writes[] = { CreateMockWrite(*req) }; |
+ MockWrite writes[] = {CreateMockWrite(*req, 0)}; |
// 5 data frames in a single read. |
scoped_ptr<SpdyFrame> reply(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
@@ -3940,12 +3851,11 @@ TEST_P(SpdyNetworkTransactionTest, BufferedAll) { |
combined_frames, arraysize(combined_frames)); |
MockRead reads[] = { |
- MockRead(ASYNC, combined_frames, combined_frames_len), |
- MockRead(ASYNC, 0, 0) // EOF |
+ MockRead(ASYNC, combined_frames, combined_frames_len, 1), |
+ MockRead(ASYNC, 0, 2) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
@@ -4198,7 +4108,7 @@ TEST_P(SpdyNetworkTransactionTest, SettingsSaved) { |
// Construct the request. |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
- MockWrite writes[] = { CreateMockWrite(*req) }; |
+ MockWrite writes[] = {CreateMockWrite(*req, 0)}; |
// Construct the reply. |
scoped_ptr<SpdyHeaderBlock> reply_headers(new SpdyHeaderBlock()); |
@@ -4231,14 +4141,13 @@ TEST_P(SpdyNetworkTransactionTest, SettingsSaved) { |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*reply), |
- CreateMockRead(*body), |
- CreateMockRead(*settings_frame), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*reply, 1), |
+ CreateMockRead(*body, 2), |
+ CreateMockRead(*settings_frame, 3), |
+ MockRead(ASYNC, 0, 4) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
helper.AddData(&data); |
helper.RunDefaultTest(); |
helper.VerifyDataConsumed(); |
@@ -4409,15 +4318,14 @@ TEST_P(SpdyNetworkTransactionTest, SettingsPlayback) { |
TEST_P(SpdyNetworkTransactionTest, GoAwayWithActiveStream) { |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
- MockWrite writes[] = { CreateMockWrite(*req) }; |
+ MockWrite writes[] = {CreateMockWrite(*req, 0)}; |
scoped_ptr<SpdyFrame> go_away(spdy_util_.ConstructSpdyGoAway()); |
MockRead reads[] = { |
- CreateMockRead(*go_away), |
+ CreateMockRead(*go_away, 1), |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.AddData(&data); |
@@ -4429,16 +4337,14 @@ TEST_P(SpdyNetworkTransactionTest, GoAwayWithActiveStream) { |
TEST_P(SpdyNetworkTransactionTest, CloseWithActiveStream) { |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
- MockWrite writes[] = { CreateMockWrite(*req) }; |
+ MockWrite writes[] = {CreateMockWrite(*req, 0)}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- MockRead(SYNCHRONOUS, 0, 0) // EOF |
+ CreateMockRead(*resp, 1), MockRead(SYNCHRONOUS, 0, 2) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
BoundNetLog log; |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
log, GetParam(), NULL); |
@@ -4476,9 +4382,9 @@ TEST_P(SpdyNetworkTransactionTest, HTTP11RequiredError) { |
scoped_ptr<SpdyFrame> go_away(spdy_util_.ConstructSpdyGoAway( |
0, GOAWAY_HTTP_1_1_REQUIRED, "Try again using HTTP/1.1 please.")); |
MockRead reads[] = { |
- CreateMockRead(*go_away), |
+ CreateMockRead(*go_away, 0), |
}; |
- DelayedSocketData data(0, reads, arraysize(reads), nullptr, 0); |
+ SequencedSocketData data(reads, arraysize(reads), nullptr, 0); |
helper.RunToCompletion(&data); |
TransactionHelperResult out = helper.output(); |
@@ -4512,12 +4418,12 @@ TEST_P(SpdyNetworkTransactionTest, HTTP11RequiredRetry) { |
scoped_ptr<SpdyHeaderBlock> headers(spdy_util_.ConstructGetHeaderBlock(url)); |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdySyn(1, *headers, LOWEST, false, true)); |
- MockWrite writes0[] = {CreateMockWrite(*req)}; |
+ MockWrite writes0[] = {CreateMockWrite(*req, 0)}; |
scoped_ptr<SpdyFrame> go_away(spdy_util_.ConstructSpdyGoAway( |
0, GOAWAY_HTTP_1_1_REQUIRED, "Try again using HTTP/1.1 please.")); |
- MockRead reads0[] = {CreateMockRead(*go_away)}; |
- DelayedSocketData data0(1, reads0, arraysize(reads0), writes0, |
- arraysize(writes0)); |
+ MockRead reads0[] = {CreateMockRead(*go_away, 1)}; |
+ SequencedSocketData data0(reads0, arraysize(reads0), writes0, |
+ arraysize(writes0)); |
scoped_ptr<SSLSocketDataProvider> ssl_provider0( |
new SSLSocketDataProvider(ASYNC, OK)); |
@@ -4531,16 +4437,16 @@ TEST_P(SpdyNetworkTransactionTest, HTTP11RequiredRetry) { |
helper.AddDataWithSSLSocketDataProvider(&data0, ssl_provider0.Pass()); |
// Second socket: falling back to HTTP/1.1. |
- MockWrite writes1[] = {MockWrite( |
- "GET / HTTP/1.1\r\n" |
- "Host: www.example.org\r\n" |
- "Connection: keep-alive\r\n\r\n")}; |
- MockRead reads1[] = {MockRead( |
- "HTTP/1.1 200 OK\r\n" |
- "Content-Length: 5\r\n\r\n" |
- "hello")}; |
- DelayedSocketData data1(1, reads1, arraysize(reads1), writes1, |
- arraysize(writes1)); |
+ MockWrite writes1[] = {MockWrite(ASYNC, 0, |
+ "GET / HTTP/1.1\r\n" |
+ "Host: www.example.org\r\n" |
+ "Connection: keep-alive\r\n\r\n")}; |
+ MockRead reads1[] = {MockRead(ASYNC, 1, |
+ "HTTP/1.1 200 OK\r\n" |
+ "Content-Length: 5\r\n\r\n" |
+ "hello")}; |
+ SequencedSocketData data1(reads1, arraysize(reads1), writes1, |
+ arraysize(writes1)); |
scoped_ptr<SSLSocketDataProvider> ssl_provider1( |
new SSLSocketDataProvider(ASYNC, OK)); |
@@ -4603,12 +4509,12 @@ TEST_P(SpdyNetworkTransactionTest, HTTP11RequiredProxyRetry) { |
// First socket: HTTP/2 CONNECT rejected with HTTP_1_1_REQUIRED. |
scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyConnect( |
nullptr, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); |
- MockWrite writes0[] = {CreateMockWrite(*req)}; |
+ MockWrite writes0[] = {CreateMockWrite(*req, 0)}; |
scoped_ptr<SpdyFrame> go_away(spdy_util_.ConstructSpdyGoAway( |
0, GOAWAY_HTTP_1_1_REQUIRED, "Try again using HTTP/1.1 please.")); |
- MockRead reads0[] = {CreateMockRead(*go_away)}; |
- DelayedSocketData data0(1, reads0, arraysize(reads0), writes0, |
- arraysize(writes0)); |
+ MockRead reads0[] = {CreateMockRead(*go_away, 1)}; |
+ SequencedSocketData data0(reads0, arraysize(reads0), writes0, |
+ arraysize(writes0)); |
scoped_ptr<SSLSocketDataProvider> ssl_provider0( |
new SSLSocketDataProvider(ASYNC, OK)); |
@@ -4623,25 +4529,25 @@ TEST_P(SpdyNetworkTransactionTest, HTTP11RequiredProxyRetry) { |
// Second socket: retry using HTTP/1.1. |
MockWrite writes1[] = { |
- MockWrite(ASYNC, 1, |
+ MockWrite(ASYNC, 0, |
"CONNECT www.example.org:443 HTTP/1.1\r\n" |
"Host: www.example.org\r\n" |
"Proxy-Connection: keep-alive\r\n\r\n"), |
- MockWrite(ASYNC, 3, |
+ MockWrite(ASYNC, 2, |
"GET / HTTP/1.1\r\n" |
"Host: www.example.org\r\n" |
"Connection: keep-alive\r\n\r\n"), |
}; |
MockRead reads1[] = { |
- MockRead(ASYNC, 2, "HTTP/1.1 200 OK\r\n\r\n"), |
- MockRead(ASYNC, 4, |
+ MockRead(ASYNC, 1, "HTTP/1.1 200 OK\r\n\r\n"), |
+ MockRead(ASYNC, 3, |
"HTTP/1.1 200 OK\r\n" |
"Content-Length: 5\r\n\r\n" |
"hello"), |
}; |
- DelayedSocketData data1(1, reads1, arraysize(reads1), writes1, |
- arraysize(writes1)); |
+ SequencedSocketData data1(reads1, arraysize(reads1), writes1, |
+ arraysize(writes1)); |
scoped_ptr<SSLSocketDataProvider> ssl_provider1( |
new SSLSocketDataProvider(ASYNC, OK)); |
@@ -4715,7 +4621,7 @@ TEST_P(SpdyNetworkTransactionTest, ProxyConnect) { |
CreateMockRead(*body.get(), 4), |
MockRead(ASYNC, 0, 0, 5), |
}; |
- scoped_ptr<OrderedSocketData> data(new OrderedSocketData( |
+ scoped_ptr<SequencedSocketData> data(new SequencedSocketData( |
reads, arraysize(reads), writes, arraysize(writes))); |
helper.AddData(data.get()); |
@@ -4765,19 +4671,17 @@ TEST_P(SpdyNetworkTransactionTest, DirectConnectProxyReconnect) { |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*req, 1), |
+ CreateMockWrite(*req, 0), |
}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp, 2), |
- CreateMockRead(*body, 3), |
- MockRead(ASYNC, ERR_IO_PENDING, 4), // Force a pause |
- MockRead(ASYNC, 0, 5) // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*body, 2), |
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3), // Force a pause |
}; |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
helper.AddData(&data); |
HttpNetworkTransaction* trans = helper.trans(); |
@@ -4832,7 +4736,7 @@ TEST_P(SpdyNetworkTransactionTest, DirectConnectProxyReconnect) { |
MockRead(ASYNC, 0, 5) // EOF |
}; |
- scoped_ptr<OrderedSocketData> data_proxy(new OrderedSocketData( |
+ scoped_ptr<SequencedSocketData> data_proxy(new SequencedSocketData( |
reads2, arraysize(reads2), writes2, arraysize(writes2))); |
// Create another request to www.example.org, but this time through a proxy. |
@@ -4872,7 +4776,6 @@ TEST_P(SpdyNetworkTransactionTest, DirectConnectProxyReconnect) { |
ASSERT_EQ(OK, ReadTransaction(trans_proxy, &response_data)); |
EXPECT_EQ("hello!", response_data); |
- data.CompleteRead(); |
helper_proxy.VerifyDataConsumed(); |
} |
@@ -4884,16 +4787,16 @@ TEST_P(SpdyNetworkTransactionTest, VerifyRetryOnConnectionReset) { |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, ERR_IO_PENDING), |
- MockRead(ASYNC, ERR_CONNECTION_RESET), |
+ CreateMockRead(*resp, 0), |
+ CreateMockRead(*body, 1), |
+ MockRead(ASYNC, ERR_IO_PENDING, 2), |
+ MockRead(ASYNC, ERR_CONNECTION_RESET, 3), |
}; |
MockRead reads2[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 0), |
+ CreateMockRead(*body, 1), |
+ MockRead(ASYNC, 0, 2) // EOF |
}; |
// This test has a couple of variants. |
@@ -4962,18 +4865,18 @@ TEST_P(SpdyNetworkTransactionTest, SpdyOnOffToggle) { |
HttpStreamFactory::set_spdy_enabled(true); |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
- MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
+ MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead spdy_reads[] = { |
- CreateMockRead(*resp), |
- CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*body, 2), |
+ MockRead(ASYNC, 0, 3) // EOF |
}; |
- DelayedSocketData data(1, spdy_reads, arraysize(spdy_reads), |
- spdy_writes, arraysize(spdy_writes)); |
+ SequencedSocketData data(spdy_reads, arraysize(spdy_reads), spdy_writes, |
+ arraysize(spdy_writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -4983,12 +4886,20 @@ TEST_P(SpdyNetworkTransactionTest, SpdyOnOffToggle) { |
EXPECT_EQ("hello!", out.response_data); |
HttpStreamFactory::set_spdy_enabled(false); |
+ MockWrite http_writes[] = { |
+ MockWrite(SYNCHRONOUS, 0, |
+ "GET / HTTP/1.1\r\n" |
+ "Host: www.example.org\r\n" |
+ "Connection: keep-alive\r\n\r\n"), |
+ }; |
+ |
MockRead http_reads[] = { |
- MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
- MockRead("hello from http"), |
- MockRead(SYNCHRONOUS, OK), |
+ MockRead(SYNCHRONOUS, 1, "HTTP/1.1 200 OK\r\n\r\n"), |
+ MockRead(SYNCHRONOUS, 2, "hello from http"), |
+ MockRead(SYNCHRONOUS, OK, 3), |
}; |
- DelayedSocketData data2(1, http_reads, arraysize(http_reads), NULL, 0); |
+ SequencedSocketData data2(http_reads, arraysize(http_reads), http_writes, |
+ arraysize(http_writes)); |
NormalSpdyTransactionHelper helper2(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper2.SetSpdyDisabled(); |
@@ -5017,8 +4928,7 @@ TEST_P(SpdyNetworkTransactionTest, SpdyBasicAuth) { |
arraysize(kExtraAuthorizationHeaders) / 2, |
false, 3, LOWEST, true)); |
MockWrite spdy_writes[] = { |
- CreateMockWrite(*req_get, 1), |
- CreateMockWrite(*req_get_authorization, 4), |
+ CreateMockWrite(*req_get, 0), CreateMockWrite(*req_get_authorization, 3), |
}; |
// The first response is a 401 authentication challenge, and the second |
@@ -5040,15 +4950,15 @@ TEST_P(SpdyNetworkTransactionTest, SpdyBasicAuth) { |
spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); |
scoped_ptr<SpdyFrame> body_data(spdy_util_.ConstructSpdyBodyFrame(3, true)); |
MockRead spdy_reads[] = { |
- CreateMockRead(*resp_authentication, 2), |
- CreateMockRead(*body_authentication, 3), |
- CreateMockRead(*resp_data, 5), |
- CreateMockRead(*body_data, 6), |
- MockRead(ASYNC, 0, 7), |
+ CreateMockRead(*resp_authentication, 1), |
+ CreateMockRead(*body_authentication, 2), |
+ CreateMockRead(*resp_data, 4), |
+ CreateMockRead(*body_data, 5), |
+ MockRead(ASYNC, 0, 6), |
}; |
- OrderedSocketData data(spdy_reads, arraysize(spdy_reads), |
- spdy_writes, arraysize(spdy_writes)); |
+ SequencedSocketData data(spdy_reads, arraysize(spdy_reads), spdy_writes, |
+ arraysize(spdy_writes)); |
HttpRequestInfo request(CreateGetRequest()); |
BoundNetLog net_log; |
NormalSpdyTransactionHelper helper(request, DEFAULT_PRIORITY, |
@@ -5099,7 +5009,7 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushWithHeaders) { |
scoped_ptr<SpdyFrame> stream1_body( |
spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*stream1_syn, 1), |
+ CreateMockWrite(*stream1_syn, 0), |
}; |
scoped_ptr<SpdyHeaderBlock> initial_headers(new SpdyHeaderBlock()); |
@@ -5128,19 +5038,18 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushWithHeaders) { |
spdy_util_.ConstructSpdyBodyFrame( |
2, kPushedData, strlen(kPushedData), true)); |
MockRead reads[] = { |
- CreateMockRead(*stream1_reply, 2), |
- CreateMockRead(*stream2_syn, 3), |
- CreateMockRead(*stream2_headers, 4), |
- CreateMockRead(*stream1_body, 5, SYNCHRONOUS), |
- CreateMockRead(*stream2_body, 5), |
- MockRead(ASYNC, ERR_IO_PENDING, 7), // Force a pause |
+ CreateMockRead(*stream1_reply, 1), |
+ CreateMockRead(*stream2_syn, 2), |
+ CreateMockRead(*stream2_headers, 3), |
+ CreateMockRead(*stream1_body, 4, SYNCHRONOUS), |
+ CreateMockRead(*stream2_body, 5), |
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 6), // Force a pause |
}; |
HttpResponseInfo response; |
HttpResponseInfo response2; |
std::string expected_push_result("pushed"); |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
RunServerPushTest(&data, |
&response, |
&response2, |
@@ -5526,7 +5435,7 @@ TEST_P(SpdyNetworkTransactionTest, SynReplyWithHeaders) { |
scoped_ptr<SpdyFrame> rst( |
spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), CreateMockWrite(*rst), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4), |
}; |
scoped_ptr<SpdyFrame> stream1_reply( |
@@ -5545,14 +5454,13 @@ TEST_P(SpdyNetworkTransactionTest, SynReplyWithHeaders) { |
scoped_ptr<SpdyFrame> stream1_body( |
spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*stream1_reply), |
- CreateMockRead(*stream1_headers), |
- CreateMockRead(*stream1_body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*stream1_reply, 1), |
+ CreateMockRead(*stream1_headers, 2), |
+ CreateMockRead(*stream1_body, 3), |
+ MockRead(ASYNC, 0, 5) // EOF |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -5566,8 +5474,7 @@ TEST_P(SpdyNetworkTransactionTest, SynReplyWithLateHeaders) { |
scoped_ptr<SpdyFrame> rst( |
spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); |
MockWrite writes[] = { |
- CreateMockWrite(*req), |
- CreateMockWrite(*rst), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4), |
}; |
scoped_ptr<SpdyFrame> stream1_reply( |
@@ -5588,11 +5495,11 @@ TEST_P(SpdyNetworkTransactionTest, SynReplyWithLateHeaders) { |
scoped_ptr<SpdyFrame> stream1_body2( |
spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*stream1_reply), |
- CreateMockRead(*stream1_body), |
- CreateMockRead(*stream1_headers), |
- CreateMockRead(*stream1_body2), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*stream1_reply, 1), |
+ CreateMockRead(*stream1_body, 2), |
+ CreateMockRead(*stream1_headers, 3), |
+ CreateMockRead(*stream1_body2, 5), |
+ MockRead(ASYNC, 0, 6) // EOF |
}; |
DelayedSocketData data(1, reads, arraysize(reads), |
@@ -5644,8 +5551,7 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushCrossOriginCorrectness) { |
scoped_ptr<SpdyFrame> push_rst( |
spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); |
MockWrite writes[] = { |
- CreateMockWrite(*stream1_syn, 1), |
- CreateMockWrite(*push_rst, 4), |
+ CreateMockWrite(*stream1_syn, 0), CreateMockWrite(*push_rst, 3), |
}; |
scoped_ptr<SpdyFrame> |
@@ -5664,16 +5570,16 @@ TEST_P(SpdyNetworkTransactionTest, ServerPushCrossOriginCorrectness) { |
spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_CANCEL)); |
MockRead reads[] = { |
- CreateMockRead(*stream1_reply, 2), |
- CreateMockRead(*stream2_syn, 3), |
- CreateMockRead(*stream1_body, 5, SYNCHRONOUS), |
- CreateMockRead(*stream2_body, 6), |
- MockRead(ASYNC, ERR_IO_PENDING, 7), // Force a pause |
+ CreateMockRead(*stream1_reply, 1), |
+ CreateMockRead(*stream2_syn, 2), |
+ CreateMockRead(*stream1_body, 4), |
+ CreateMockRead(*stream2_body, 5), |
+ MockRead(SYNCHRONOUS, ERR_IO_PENDING, 6), // Force a pause |
}; |
HttpResponseInfo response; |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, |
+ arraysize(writes)); |
HttpRequestInfo request; |
request.method = "GET"; |
@@ -5727,8 +5633,7 @@ TEST_P(SpdyNetworkTransactionTest, RetryAfterRefused) { |
scoped_ptr<SpdyFrame> req2( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 3, LOWEST, true)); |
MockWrite writes[] = { |
- CreateMockWrite(*req, 1), |
- CreateMockWrite(*req2, 3), |
+ CreateMockWrite(*req, 0), CreateMockWrite(*req2, 2), |
}; |
scoped_ptr<SpdyFrame> refused( |
@@ -5736,14 +5641,13 @@ TEST_P(SpdyNetworkTransactionTest, RetryAfterRefused) { |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(3, true)); |
MockRead reads[] = { |
- CreateMockRead(*refused, 2), |
- CreateMockRead(*resp, 4), |
- CreateMockRead(*body, 5), |
- MockRead(ASYNC, 0, 6) // EOF |
+ CreateMockRead(*refused, 1), |
+ CreateMockRead(*resp, 3), |
+ CreateMockRead(*body, 4), |
+ MockRead(ASYNC, 0, 5) // EOF |
}; |
- OrderedSocketData data(reads, arraysize(reads), |
- writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
BoundNetLog(), GetParam(), NULL); |
@@ -5761,14 +5665,8 @@ TEST_P(SpdyNetworkTransactionTest, RetryAfterRefused) { |
EXPECT_EQ(OK, rv); |
// Verify that we consumed all test data. |
- EXPECT_TRUE(data.at_read_eof()) << "Read count: " |
- << data.read_count() |
- << " Read index: " |
- << data.read_index(); |
- EXPECT_TRUE(data.at_write_eof()) << "Write count: " |
- << data.write_count() |
- << " Write index: " |
- << data.write_index(); |
+ EXPECT_TRUE(data.AllReadDataConsumed()); |
+ EXPECT_TRUE(data.AllWriteDataConsumed()); |
// Verify the SYN_REPLY. |
HttpResponseInfo response = *trans->GetResponseInfo(); |
@@ -6551,7 +6449,7 @@ TEST_P(SpdyNetworkTransactionTest, GoAwayOnOddPushStreamId) { |
CreateMockWrite(*req, 0), CreateMockWrite(*goaway, 2), |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper( |
CreateGetRequest(), DEFAULT_PRIORITY, BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -6585,7 +6483,7 @@ TEST_P(SpdyNetworkTransactionTest, |
CreateMockWrite(*req, 0), CreateMockWrite(*goaway, 3), |
}; |
- DelayedSocketData data(1, reads, arraysize(reads), writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
NormalSpdyTransactionHelper helper( |
CreateGetRequest(), DEFAULT_PRIORITY, BoundNetLog(), GetParam(), NULL); |
helper.RunToCompletion(&data); |
@@ -6600,17 +6498,18 @@ class SpdyNetworkTransactionNoTLSUsageCheckTest |
// Construct the request. |
scoped_ptr<SpdyFrame> req( |
spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
- MockWrite writes[] = {CreateMockWrite(*req)}; |
+ MockWrite writes[] = {CreateMockWrite(*req, 0)}; |
scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
MockRead reads[] = { |
- CreateMockRead(*resp), CreateMockRead(*body), |
- MockRead(ASYNC, 0, 0) // EOF |
+ CreateMockRead(*resp, 1), |
+ CreateMockRead(*body, 2), |
+ MockRead(ASYNC, 0, 3) // EOF |
}; |
- DelayedSocketData data( |
- 1, reads, arraysize(reads), writes, arraysize(writes)); |
+ SequencedSocketData data(reads, arraysize(reads), writes, |
+ arraysize(writes)); |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("https://www.example.org/"); |
@@ -6662,7 +6561,7 @@ class SpdyNetworkTransactionTLSUsageCheckTest |
spdy_util_.ConstructSpdyGoAway(0, GOAWAY_INADEQUATE_SECURITY, "")); |
MockWrite writes[] = {CreateMockWrite(*goaway)}; |
- DelayedSocketData data(1, NULL, 0, writes, arraysize(writes)); |
+ StaticSocketDataProvider data(NULL, 0, writes, arraysize(writes)); |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("https://www.example.org/"); |