Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/spdy/spdy_http_stream.h" | 5 #include "net/spdy/spdy_http_stream.h" |
| 6 #include "net/spdy/spdy_session.h" | 6 #include "net/spdy/spdy_session.h" |
| 7 #include "net/spdy/spdy_test_util.h" | 7 #include "net/spdy/spdy_test_util.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 | 9 |
| 10 namespace net { | 10 namespace net { |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 91 // This triggers read 3. The empty read causes the session to shut down. | 91 // This triggers read 3. The empty read causes the session to shut down. |
| 92 data()->CompleteRead(); | 92 data()->CompleteRead(); |
| 93 | 93 |
| 94 // Because we abandoned the stream, we don't expect to find a session in the | 94 // Because we abandoned the stream, we don't expect to find a session in the |
| 95 // pool anymore. | 95 // pool anymore. |
| 96 EXPECT_TRUE(!http_session_->spdy_session_pool()->HasSession(pair)); | 96 EXPECT_TRUE(!http_session_->spdy_session_pool()->HasSession(pair)); |
| 97 EXPECT_TRUE(data()->at_read_eof()); | 97 EXPECT_TRUE(data()->at_read_eof()); |
| 98 EXPECT_TRUE(data()->at_write_eof()); | 98 EXPECT_TRUE(data()->at_write_eof()); |
| 99 } | 99 } |
| 100 | 100 |
| 101 TEST_F(SpdyHttpStreamTest, SendChunkedPost) { | |
| 102 EnableCompression(false); | |
| 103 SpdySession::SetSSLMode(false); | |
| 104 | |
| 105 scoped_ptr<spdy::SpdyFrame> req(ConstructChunkedSpdyPost(NULL, 0)); | |
| 106 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, false)); | |
| 107 scoped_ptr<spdy::SpdyFrame> lastchunk(ConstructSpdyBodyFrame(1, NULL, 0, | |
| 108 true)); | |
| 109 MockWrite writes[] = { | |
| 110 CreateMockWrite(*req.get(), 1), | |
| 111 CreateMockWrite(*body, 2), // POST upload frame | |
| 112 CreateMockWrite(*lastchunk, 3), | |
| 113 }; | |
| 114 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyPostSynReply(NULL, 0)); | |
| 115 MockRead reads[] = { | |
| 116 CreateMockRead(*resp, 4), | |
| 117 CreateMockRead(*body, 5), | |
| 118 CreateMockRead(*lastchunk, 6), | |
| 119 MockRead(false, 0, 7) // EOF | |
| 120 }; | |
| 121 | |
| 122 HostPortPair host_port_pair("www.google.com", 80); | |
| 123 HostPortProxyPair pair(host_port_pair, ProxyServer::Direct()); | |
| 124 EXPECT_EQ(OK, InitSession(reads, arraysize(reads), writes, arraysize(writes), | |
| 125 host_port_pair)); | |
|
willchan no longer on Chromium
2011/03/02 18:44:40
host_port_pair must align with reads a la http://g
Satish
2011/03/03 13:50:10
Done.
| |
| 126 | |
| 127 HttpRequestInfo request; | |
| 128 request.method = "POST"; | |
| 129 request.url = GURL("http://www.google.com/"); | |
| 130 request.upload_data = new UploadData(); | |
| 131 request.upload_data->set_is_chunked(true); | |
| 132 request.upload_data->AppendChunk(kUploadData, kUploadDataSize); | |
| 133 request.upload_data->AppendChunk(NULL, 0); | |
| 134 TestCompletionCallback callback; | |
| 135 HttpResponseInfo response; | |
| 136 HttpRequestHeaders headers; | |
| 137 BoundNetLog net_log; | |
| 138 scoped_ptr<SpdyHttpStream> http_stream( | |
|
willchan no longer on Chromium
2011/03/02 18:44:40
How about just instantiating this on the stack? Is
Satish
2011/03/03 13:50:10
Done.
| |
| 139 new SpdyHttpStream(session_.get(), true)); | |
| 140 ASSERT_EQ( | |
| 141 OK, | |
| 142 http_stream->InitializeStream(&request, net_log, NULL)); | |
| 143 | |
| 144 UploadDataStream* upload_stream = | |
| 145 UploadDataStream::Create(request.upload_data, NULL); | |
| 146 EXPECT_EQ(ERR_IO_PENDING, http_stream->SendRequest( | |
| 147 headers, upload_stream, &response, &callback)); | |
| 148 EXPECT_TRUE(http_session_->spdy_session_pool()->HasSession(pair)); | |
| 149 | |
| 150 // This triggers the MockWrite and read 2 | |
| 151 callback.WaitForResult(); | |
| 152 | |
| 153 // This triggers read 3. The empty read causes the session to shut down. | |
| 154 data()->CompleteRead(); | |
| 155 MessageLoop::current()->RunAllPending(); | |
| 156 | |
| 157 // Because we abandoned the stream, we don't expect to find a session in the | |
| 158 // pool anymore. | |
| 159 EXPECT_TRUE(!http_session_->spdy_session_pool()->HasSession(pair)); | |
|
willchan no longer on Chromium
2011/03/02 18:44:40
This should be EXPECT_FALSE instead of EXPECT_TRUE
Satish
2011/03/03 13:50:10
Done.
| |
| 160 EXPECT_TRUE(data()->at_read_eof()); | |
| 161 EXPECT_TRUE(data()->at_write_eof()); | |
| 162 } | |
| 163 | |
| 101 // Test case for bug: http://code.google.com/p/chromium/issues/detail?id=50058 | 164 // Test case for bug: http://code.google.com/p/chromium/issues/detail?id=50058 |
| 102 TEST_F(SpdyHttpStreamTest, SpdyURLTest) { | 165 TEST_F(SpdyHttpStreamTest, SpdyURLTest) { |
| 103 EnableCompression(false); | 166 EnableCompression(false); |
| 104 SpdySession::SetSSLMode(false); | 167 SpdySession::SetSSLMode(false); |
| 105 | 168 |
| 106 const char * const full_url = "http://www.google.com/foo?query=what#anchor"; | 169 const char * const full_url = "http://www.google.com/foo?query=what#anchor"; |
| 107 const char * const base_url = "http://www.google.com/foo?query=what"; | 170 const char * const base_url = "http://www.google.com/foo?query=what"; |
| 108 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(base_url, false, 1, LOWEST)); | 171 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(base_url, false, 1, LOWEST)); |
| 109 MockWrite writes[] = { | 172 MockWrite writes[] = { |
| 110 CreateMockWrite(*req.get(), 1), | 173 CreateMockWrite(*req.get(), 1), |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 153 // pool anymore. | 216 // pool anymore. |
| 154 EXPECT_TRUE(!http_session_->spdy_session_pool()->HasSession(pair)); | 217 EXPECT_TRUE(!http_session_->spdy_session_pool()->HasSession(pair)); |
| 155 EXPECT_TRUE(data()->at_read_eof()); | 218 EXPECT_TRUE(data()->at_read_eof()); |
| 156 EXPECT_TRUE(data()->at_write_eof()); | 219 EXPECT_TRUE(data()->at_write_eof()); |
| 157 } | 220 } |
| 158 | 221 |
| 159 // TODO(willchan): Write a longer test for SpdyStream that exercises all | 222 // TODO(willchan): Write a longer test for SpdyStream that exercises all |
| 160 // methods. | 223 // methods. |
| 161 | 224 |
| 162 } // namespace net | 225 } // namespace net |
| OLD | NEW |