| Index: net/http/http_pipelined_network_transaction_unittest.cc
|
| diff --git a/net/http/http_pipelined_network_transaction_unittest.cc b/net/http/http_pipelined_network_transaction_unittest.cc
|
| index 65794daa31bc8679c2cb5f4f8d550cf9a1ae1e9f..4949e225a0cc8c4cc6a584c82c2f116914678939 100644
|
| --- a/net/http/http_pipelined_network_transaction_unittest.cc
|
| +++ b/net/http/http_pipelined_network_transaction_unittest.cc
|
| @@ -860,6 +860,70 @@ TEST_F(HttpPipelinedNetworkTransactionTest, ForcedPipelineEvictionIsFatal) {
|
| EXPECT_EQ(ERR_PIPELINE_EVICTION, two_callback.WaitForResult());
|
| }
|
|
|
| +TEST_F(HttpPipelinedNetworkTransactionTest, ForcedPipelineOrder) {
|
| + Initialize(true);
|
| +
|
| + MockWrite writes[] = {
|
| + MockWrite(ASYNC, 0,
|
| + "GET /one.html HTTP/1.1\r\n"
|
| + "Host: localhost\r\n"
|
| + "Connection: keep-alive\r\n\r\n"
|
| + "GET /two.html HTTP/1.1\r\n"
|
| + "Host: localhost\r\n"
|
| + "Connection: keep-alive\r\n\r\n"
|
| + "GET /three.html HTTP/1.1\r\n"
|
| + "Host: localhost\r\n"
|
| + "Connection: keep-alive\r\n\r\n"
|
| + "GET /four.html HTTP/1.1\r\n"
|
| + "Host: localhost\r\n"
|
| + "Connection: keep-alive\r\n\r\n"
|
| + ),
|
| + };
|
| + MockRead reads[] = {
|
| + MockRead(ASYNC, ERR_FAILED, 1),
|
| + };
|
| + scoped_refptr<DeterministicSocketData> data(new DeterministicSocketData(
|
| + reads, arraysize(reads), writes, arraysize(writes)));
|
| + data->set_connect_data(MockConnect(ASYNC, OK));
|
| + factory_.AddSocketDataProvider(data);
|
| +
|
| + scoped_ptr<HttpNetworkTransaction> one_transaction(
|
| + new HttpNetworkTransaction(session_.get()));
|
| + TestCompletionCallback one_callback;
|
| + EXPECT_EQ(ERR_IO_PENDING,
|
| + one_transaction->Start(GetRequestInfo("one.html"),
|
| + one_callback.callback(), BoundNetLog()));
|
| +
|
| + scoped_ptr<HttpNetworkTransaction> two_transaction(
|
| + new HttpNetworkTransaction(session_.get()));
|
| + TestCompletionCallback two_callback;
|
| + EXPECT_EQ(ERR_IO_PENDING,
|
| + two_transaction->Start(GetRequestInfo("two.html"),
|
| + two_callback.callback(), BoundNetLog()));
|
| +
|
| + scoped_ptr<HttpNetworkTransaction> three_transaction(
|
| + new HttpNetworkTransaction(session_.get()));
|
| + TestCompletionCallback three_callback;
|
| + EXPECT_EQ(ERR_IO_PENDING,
|
| + three_transaction->Start(GetRequestInfo("three.html"),
|
| + three_callback.callback(), BoundNetLog()));
|
| +
|
| + scoped_ptr<HttpNetworkTransaction> four_transaction(
|
| + new HttpNetworkTransaction(session_.get()));
|
| + TestCompletionCallback four_callback;
|
| + EXPECT_EQ(ERR_IO_PENDING,
|
| + four_transaction->Start(GetRequestInfo("four.html"),
|
| + four_callback.callback(), BoundNetLog()));
|
| +
|
| + data->RunFor(3);
|
| + EXPECT_EQ(ERR_FAILED, one_callback.WaitForResult());
|
| + one_transaction.reset();
|
| + EXPECT_EQ(ERR_PIPELINE_EVICTION, two_callback.WaitForResult());
|
| + two_transaction.reset();
|
| + EXPECT_EQ(ERR_PIPELINE_EVICTION, three_callback.WaitForResult());
|
| + three_transaction.reset();
|
| + EXPECT_EQ(ERR_PIPELINE_EVICTION, four_callback.WaitForResult());
|
| +}
|
| } // anonymous namespace
|
|
|
| } // namespace net
|
|
|