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..0c029e9a1dfc82a77a685d9a1ce24335d7bcebba 100644 |
--- a/net/spdy/spdy_http_stream_unittest.cc |
+++ b/net/spdy/spdy_http_stream_unittest.cc |
@@ -93,7 +93,64 @@ 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) { |
willchan no longer on Chromium
2011/03/03 19:47:48
Please add a test where you have multiple chunks.
|
+ EnableCompression(false); |
+ SpdySession::SetSSLMode(false); |
+ |
+ scoped_ptr<spdy::SpdyFrame> req(ConstructChunkedSpdyPost(NULL, 0)); |
+ scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
+ MockWrite writes[] = { |
+ CreateMockWrite(*req.get(), 1), |
+ CreateMockWrite(*body, 2), // POST upload frame |
+ }; |
+ scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyPostSynReply(NULL, 0)); |
+ MockRead reads[] = { |
+ CreateMockRead(*resp, 3), |
+ CreateMockRead(*body, 4), |
+ MockRead(false, 0, 5) // 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, 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 +208,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()); |
} |