| Index: net/spdy/spdy_http_stream_unittest.cc
|
| diff --git a/net/spdy/spdy_http_stream_unittest.cc b/net/spdy/spdy_http_stream_unittest.cc
|
| index 1688871d38440ecc706871e74e3bf6dc068c707f..bee345a5ab5b68919a16a282b672e2a5783fddf0 100644
|
| --- a/net/spdy/spdy_http_stream_unittest.cc
|
| +++ b/net/spdy/spdy_http_stream_unittest.cc
|
| @@ -93,7 +93,69 @@ TEST_F(SpdyHttpStreamTest, SendRequest) {
|
|
|
| // Because we abandoned the stream, we don't expect to find a session in the
|
| // pool anymore.
|
| - EXPECT_TRUE(!http_session_->spdy_session_pool()->HasSession(pair));
|
| + EXPECT_FALSE(http_session_->spdy_session_pool()->HasSession(pair));
|
| + EXPECT_TRUE(data()->at_read_eof());
|
| + EXPECT_TRUE(data()->at_write_eof());
|
| +}
|
| +
|
| +TEST_F(SpdyHttpStreamTest, SendChunkedPost) {
|
| + EnableCompression(false);
|
| + SpdySession::SetSSLMode(false);
|
| + UploadDataStream::set_merge_chunks(false);
|
| +
|
| + scoped_ptr<spdy::SpdyFrame> req(ConstructChunkedSpdyPost(NULL, 0));
|
| + scoped_ptr<spdy::SpdyFrame> chunk1(ConstructSpdyBodyFrame(1, false));
|
| + scoped_ptr<spdy::SpdyFrame> chunk2(ConstructSpdyBodyFrame(1, true));
|
| + MockWrite writes[] = {
|
| + CreateMockWrite(*req.get(), 1),
|
| + CreateMockWrite(*chunk1, 2), // POST upload frames
|
| + CreateMockWrite(*chunk2, 3),
|
| + };
|
| + scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyPostSynReply(NULL, 0));
|
| + MockRead reads[] = {
|
| + CreateMockRead(*resp, 4),
|
| + CreateMockRead(*chunk1, 5),
|
| + CreateMockRead(*chunk2, 5),
|
| + MockRead(false, 0, 6) // EOF
|
| + };
|
| +
|
| + HostPortPair host_port_pair("www.google.com", 80);
|
| + HostPortProxyPair pair(host_port_pair, ProxyServer::Direct());
|
| + EXPECT_EQ(OK, InitSession(reads, arraysize(reads), writes, arraysize(writes),
|
| + host_port_pair));
|
| +
|
| + HttpRequestInfo request;
|
| + request.method = "POST";
|
| + request.url = GURL("http://www.google.com/");
|
| + request.upload_data = new UploadData();
|
| + request.upload_data->set_is_chunked(true);
|
| + request.upload_data->AppendChunk(kUploadData, kUploadDataSize, false);
|
| + request.upload_data->AppendChunk(kUploadData, kUploadDataSize, true);
|
| + TestCompletionCallback callback;
|
| + HttpResponseInfo response;
|
| + HttpRequestHeaders headers;
|
| + BoundNetLog net_log;
|
| + SpdyHttpStream http_stream(session_.get(), true);
|
| + ASSERT_EQ(
|
| + OK,
|
| + http_stream.InitializeStream(&request, net_log, NULL));
|
| +
|
| + UploadDataStream* upload_stream =
|
| + UploadDataStream::Create(request.upload_data, NULL);
|
| + EXPECT_EQ(ERR_IO_PENDING, http_stream.SendRequest(
|
| + headers, upload_stream, &response, &callback));
|
| + EXPECT_TRUE(http_session_->spdy_session_pool()->HasSession(pair));
|
| +
|
| + // This triggers the MockWrite and read 2
|
| + callback.WaitForResult();
|
| +
|
| + // This triggers read 3. The empty read causes the session to shut down.
|
| + data()->CompleteRead();
|
| + MessageLoop::current()->RunAllPending();
|
| +
|
| + // Because we abandoned the stream, we don't expect to find a session in the
|
| + // pool anymore.
|
| + EXPECT_FALSE(http_session_->spdy_session_pool()->HasSession(pair));
|
| EXPECT_TRUE(data()->at_read_eof());
|
| EXPECT_TRUE(data()->at_write_eof());
|
| }
|
| @@ -151,7 +213,7 @@ TEST_F(SpdyHttpStreamTest, SpdyURLTest) {
|
|
|
| // Because we abandoned the stream, we don't expect to find a session in the
|
| // pool anymore.
|
| - EXPECT_TRUE(!http_session_->spdy_session_pool()->HasSession(pair));
|
| + EXPECT_FALSE(http_session_->spdy_session_pool()->HasSession(pair));
|
| EXPECT_TRUE(data()->at_read_eof());
|
| EXPECT_TRUE(data()->at_write_eof());
|
| }
|
|
|