Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(325)

Side by Side Diff: net/http/http_response_body_drainer_unittest.cc

Issue 15829004: Update net/ to use scoped_refptr<T>::get() rather than implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: license twerk Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/http/http_response_body_drainer.cc ('k') | net/http/http_response_headers_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/http/http_response_body_drainer.h" 5 #include "net/http/http_response_body_drainer.h"
6 6
7 #include <cstring> 7 #include <cstring>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 std::memset(buf->data(), 1, buf_len); 190 std::memset(buf->data(), 1, buf_len);
191 } 191 }
192 num_chunks_--; 192 num_chunks_--;
193 if (!num_chunks_) 193 if (!num_chunks_)
194 is_complete_ = true; 194 is_complete_ = true;
195 195
196 return buf_len; 196 return buf_len;
197 } 197 }
198 198
199 void MockHttpStream::CompleteRead() { 199 void MockHttpStream::CompleteRead() {
200 int result = ReadResponseBodyImpl(user_buf_, buf_len_); 200 int result = ReadResponseBodyImpl(user_buf_.get(), buf_len_);
201 user_buf_ = NULL; 201 user_buf_ = NULL;
202 CompletionCallback callback = callback_; 202 CompletionCallback callback = callback_;
203 callback_.Reset(); 203 callback_.Reset();
204 callback.Run(result); 204 callback.Run(result);
205 } 205 }
206 206
207 class HttpResponseBodyDrainerTest : public testing::Test { 207 class HttpResponseBodyDrainerTest : public testing::Test {
208 protected: 208 protected:
209 HttpResponseBodyDrainerTest() 209 HttpResponseBodyDrainerTest()
210 : proxy_service_(ProxyService::CreateDirect()), 210 : proxy_service_(ProxyService::CreateDirect()),
211 ssl_config_service_(new SSLConfigServiceDefaults), 211 ssl_config_service_(new SSLConfigServiceDefaults),
212 http_server_properties_(new HttpServerPropertiesImpl), 212 http_server_properties_(new HttpServerPropertiesImpl),
213 session_(CreateNetworkSession()), 213 session_(CreateNetworkSession()),
214 mock_stream_(new MockHttpStream(&result_waiter_)), 214 mock_stream_(new MockHttpStream(&result_waiter_)),
215 drainer_(new HttpResponseBodyDrainer(mock_stream_)) {} 215 drainer_(new HttpResponseBodyDrainer(mock_stream_)) {}
216 216
217 virtual ~HttpResponseBodyDrainerTest() {} 217 virtual ~HttpResponseBodyDrainerTest() {}
218 218
219 HttpNetworkSession* CreateNetworkSession() const { 219 HttpNetworkSession* CreateNetworkSession() const {
220 HttpNetworkSession::Params params; 220 HttpNetworkSession::Params params;
221 params.proxy_service = proxy_service_.get(); 221 params.proxy_service = proxy_service_.get();
222 params.ssl_config_service = ssl_config_service_; 222 params.ssl_config_service = ssl_config_service_.get();
223 params.http_server_properties = http_server_properties_.get(); 223 params.http_server_properties = http_server_properties_.get();
224 return new HttpNetworkSession(params); 224 return new HttpNetworkSession(params);
225 } 225 }
226 226
227 scoped_ptr<ProxyService> proxy_service_; 227 scoped_ptr<ProxyService> proxy_service_;
228 scoped_refptr<SSLConfigService> ssl_config_service_; 228 scoped_refptr<SSLConfigService> ssl_config_service_;
229 scoped_ptr<HttpServerPropertiesImpl> http_server_properties_; 229 scoped_ptr<HttpServerPropertiesImpl> http_server_properties_;
230 const scoped_refptr<HttpNetworkSession> session_; 230 const scoped_refptr<HttpNetworkSession> session_;
231 CloseResultWaiter result_waiter_; 231 CloseResultWaiter result_waiter_;
232 MockHttpStream* const mock_stream_; // Owned by |drainer_|. 232 MockHttpStream* const mock_stream_; // Owned by |drainer_|.
233 HttpResponseBodyDrainer* const drainer_; // Deletes itself. 233 HttpResponseBodyDrainer* const drainer_; // Deletes itself.
234 }; 234 };
235 235
236 TEST_F(HttpResponseBodyDrainerTest, DrainBodySyncSingleOK) { 236 TEST_F(HttpResponseBodyDrainerTest, DrainBodySyncSingleOK) {
237 mock_stream_->set_num_chunks(1); 237 mock_stream_->set_num_chunks(1);
238 mock_stream_->set_sync(); 238 mock_stream_->set_sync();
239 drainer_->Start(session_); 239 drainer_->Start(session_.get());
240 EXPECT_FALSE(result_waiter_.WaitForResult()); 240 EXPECT_FALSE(result_waiter_.WaitForResult());
241 } 241 }
242 242
243 TEST_F(HttpResponseBodyDrainerTest, DrainBodySyncOK) { 243 TEST_F(HttpResponseBodyDrainerTest, DrainBodySyncOK) {
244 mock_stream_->set_num_chunks(3); 244 mock_stream_->set_num_chunks(3);
245 mock_stream_->set_sync(); 245 mock_stream_->set_sync();
246 drainer_->Start(session_); 246 drainer_->Start(session_.get());
247 EXPECT_FALSE(result_waiter_.WaitForResult()); 247 EXPECT_FALSE(result_waiter_.WaitForResult());
248 } 248 }
249 249
250 TEST_F(HttpResponseBodyDrainerTest, DrainBodyAsyncOK) { 250 TEST_F(HttpResponseBodyDrainerTest, DrainBodyAsyncOK) {
251 mock_stream_->set_num_chunks(3); 251 mock_stream_->set_num_chunks(3);
252 drainer_->Start(session_); 252 drainer_->Start(session_.get());
253 EXPECT_FALSE(result_waiter_.WaitForResult()); 253 EXPECT_FALSE(result_waiter_.WaitForResult());
254 } 254 }
255 255
256 // Test the case when the final chunk is 0 bytes. This can happen when 256 // Test the case when the final chunk is 0 bytes. This can happen when
257 // the final 0-byte chunk of a chunk-encoded http response is read in a last 257 // the final 0-byte chunk of a chunk-encoded http response is read in a last
258 // call to ReadResponseBody, after all data were returned from HttpStream. 258 // call to ReadResponseBody, after all data were returned from HttpStream.
259 TEST_F(HttpResponseBodyDrainerTest, DrainBodyAsyncEmptyChunk) { 259 TEST_F(HttpResponseBodyDrainerTest, DrainBodyAsyncEmptyChunk) {
260 mock_stream_->set_num_chunks(4); 260 mock_stream_->set_num_chunks(4);
261 mock_stream_->set_is_last_chunk_zero_size(); 261 mock_stream_->set_is_last_chunk_zero_size();
262 drainer_->Start(session_); 262 drainer_->Start(session_.get());
263 EXPECT_FALSE(result_waiter_.WaitForResult()); 263 EXPECT_FALSE(result_waiter_.WaitForResult());
264 } 264 }
265 265
266 TEST_F(HttpResponseBodyDrainerTest, DrainBodySyncEmptyChunk) { 266 TEST_F(HttpResponseBodyDrainerTest, DrainBodySyncEmptyChunk) {
267 mock_stream_->set_num_chunks(4); 267 mock_stream_->set_num_chunks(4);
268 mock_stream_->set_sync(); 268 mock_stream_->set_sync();
269 mock_stream_->set_is_last_chunk_zero_size(); 269 mock_stream_->set_is_last_chunk_zero_size();
270 drainer_->Start(session_); 270 drainer_->Start(session_.get());
271 EXPECT_FALSE(result_waiter_.WaitForResult()); 271 EXPECT_FALSE(result_waiter_.WaitForResult());
272 } 272 }
273 273
274 TEST_F(HttpResponseBodyDrainerTest, DrainBodySizeEqualsDrainBuffer) { 274 TEST_F(HttpResponseBodyDrainerTest, DrainBodySizeEqualsDrainBuffer) {
275 mock_stream_->set_num_chunks( 275 mock_stream_->set_num_chunks(
276 HttpResponseBodyDrainer::kDrainBodyBufferSize / kMagicChunkSize); 276 HttpResponseBodyDrainer::kDrainBodyBufferSize / kMagicChunkSize);
277 drainer_->Start(session_); 277 drainer_->Start(session_.get());
278 EXPECT_FALSE(result_waiter_.WaitForResult()); 278 EXPECT_FALSE(result_waiter_.WaitForResult());
279 } 279 }
280 280
281 TEST_F(HttpResponseBodyDrainerTest, DrainBodyTimeOut) { 281 TEST_F(HttpResponseBodyDrainerTest, DrainBodyTimeOut) {
282 mock_stream_->set_num_chunks(2); 282 mock_stream_->set_num_chunks(2);
283 mock_stream_->set_stall_reads_forever(); 283 mock_stream_->set_stall_reads_forever();
284 drainer_->Start(session_); 284 drainer_->Start(session_.get());
285 EXPECT_TRUE(result_waiter_.WaitForResult()); 285 EXPECT_TRUE(result_waiter_.WaitForResult());
286 } 286 }
287 287
288 TEST_F(HttpResponseBodyDrainerTest, CancelledBySession) { 288 TEST_F(HttpResponseBodyDrainerTest, CancelledBySession) {
289 mock_stream_->set_num_chunks(2); 289 mock_stream_->set_num_chunks(2);
290 mock_stream_->set_stall_reads_forever(); 290 mock_stream_->set_stall_reads_forever();
291 drainer_->Start(session_); 291 drainer_->Start(session_.get());
292 // HttpNetworkSession should delete |drainer_|. 292 // HttpNetworkSession should delete |drainer_|.
293 } 293 }
294 294
295 TEST_F(HttpResponseBodyDrainerTest, DrainBodyTooLarge) { 295 TEST_F(HttpResponseBodyDrainerTest, DrainBodyTooLarge) {
296 int too_many_chunks = 296 int too_many_chunks =
297 HttpResponseBodyDrainer::kDrainBodyBufferSize / kMagicChunkSize; 297 HttpResponseBodyDrainer::kDrainBodyBufferSize / kMagicChunkSize;
298 too_many_chunks += 1; // Now it's too large. 298 too_many_chunks += 1; // Now it's too large.
299 299
300 mock_stream_->set_num_chunks(too_many_chunks); 300 mock_stream_->set_num_chunks(too_many_chunks);
301 drainer_->Start(session_); 301 drainer_->Start(session_.get());
302 EXPECT_TRUE(result_waiter_.WaitForResult()); 302 EXPECT_TRUE(result_waiter_.WaitForResult());
303 } 303 }
304 304
305 TEST_F(HttpResponseBodyDrainerTest, StartBodyTooLarge) { 305 TEST_F(HttpResponseBodyDrainerTest, StartBodyTooLarge) {
306 int too_many_chunks = 306 int too_many_chunks =
307 HttpResponseBodyDrainer::kDrainBodyBufferSize / kMagicChunkSize; 307 HttpResponseBodyDrainer::kDrainBodyBufferSize / kMagicChunkSize;
308 too_many_chunks += 1; // Now it's too large. 308 too_many_chunks += 1; // Now it's too large.
309 309
310 mock_stream_->set_num_chunks(0); 310 mock_stream_->set_num_chunks(0);
311 drainer_->StartWithSize(session_, too_many_chunks * kMagicChunkSize); 311 drainer_->StartWithSize(session_.get(), too_many_chunks * kMagicChunkSize);
312 EXPECT_TRUE(result_waiter_.WaitForResult()); 312 EXPECT_TRUE(result_waiter_.WaitForResult());
313 } 313 }
314 314
315 TEST_F(HttpResponseBodyDrainerTest, StartWithNothingToDo) { 315 TEST_F(HttpResponseBodyDrainerTest, StartWithNothingToDo) {
316 mock_stream_->set_num_chunks(0); 316 mock_stream_->set_num_chunks(0);
317 drainer_->StartWithSize(session_, 0); 317 drainer_->StartWithSize(session_.get(), 0);
318 EXPECT_FALSE(result_waiter_.WaitForResult()); 318 EXPECT_FALSE(result_waiter_.WaitForResult());
319 } 319 }
320 320
321 } // namespace 321 } // namespace
322 322
323 } // namespace net 323 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_response_body_drainer.cc ('k') | net/http/http_response_headers_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698