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

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

Issue 8832006: Reverts a commit that caused ASAN failures, and 2 dependent commits. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years 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_cache.cc ('k') | net/http/mock_http_cache.h » ('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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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_cache.h" 5 #include "net/http/http_cache.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/scoped_vector.h" 8 #include "base/memory/scoped_vector.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
11 #include "base/stringprintf.h" 11 #include "base/stringprintf.h"
12 #include "net/base/cache_type.h" 12 #include "net/base/cache_type.h"
13 #include "net/base/cert_status_flags.h" 13 #include "net/base/cert_status_flags.h"
14 #include "net/base/completion_callback.h"
15 #include "net/base/host_port_pair.h" 14 #include "net/base/host_port_pair.h"
16 #include "net/base/load_flags.h" 15 #include "net/base/load_flags.h"
17 #include "net/base/net_errors.h" 16 #include "net/base/net_errors.h"
18 #include "net/base/net_log_unittest.h" 17 #include "net/base/net_log_unittest.h"
19 #include "net/base/ssl_cert_request_info.h" 18 #include "net/base/ssl_cert_request_info.h"
20 #include "net/disk_cache/disk_cache.h" 19 #include "net/disk_cache/disk_cache.h"
21 #include "net/http/http_byte_range.h" 20 #include "net/http/http_byte_range.h"
22 #include "net/http/http_request_headers.h" 21 #include "net/http/http_request_headers.h"
23 #include "net/http/http_request_info.h" 22 #include "net/http/http_request_info.h"
24 #include "net/http/http_response_headers.h" 23 #include "net/http/http_response_headers.h"
25 #include "net/http/http_response_info.h" 24 #include "net/http/http_response_info.h"
26 #include "net/http/http_transaction.h" 25 #include "net/http/http_transaction.h"
27 #include "net/http/http_transaction_unittest.h" 26 #include "net/http/http_transaction_unittest.h"
28 #include "net/http/http_util.h" 27 #include "net/http/http_util.h"
29 #include "net/http/mock_http_cache.h" 28 #include "net/http/mock_http_cache.h"
30 #include "testing/gtest/include/gtest/gtest.h" 29 #include "testing/gtest/include/gtest/gtest.h"
31 30
32 using base::Time; 31 using base::Time;
33 32
34 namespace { 33 namespace {
35 34
36 class DeleteCacheCompletionCallback : public TestCompletionCallbackBase { 35 class DeleteCacheOldCompletionCallback : public TestOldCompletionCallback {
37 public: 36 public:
38 explicit DeleteCacheCompletionCallback(MockHttpCache* cache) 37 explicit DeleteCacheOldCompletionCallback(MockHttpCache* cache)
39 : cache_(cache), 38 : cache_(cache) {}
40 ALLOW_THIS_IN_INITIALIZER_LIST(callback_( 39
41 base::Bind(&DeleteCacheCompletionCallback::OnComplete, 40 virtual void RunWithParams(const Tuple1<int>& params) {
42 base::Unretained(this)))) { 41 delete cache_;
42 TestOldCompletionCallback::RunWithParams(params);
43 } 43 }
44 44
45 const net::CompletionCallback& callback() const { return callback_; }
46
47 private: 45 private:
48 void OnComplete(int result) {
49 delete cache_;
50 SetResult(result);
51 }
52
53 MockHttpCache* cache_; 46 MockHttpCache* cache_;
54 const net::CompletionCallback callback_;
55
56 DISALLOW_COPY_AND_ASSIGN(DeleteCacheCompletionCallback);
57 }; 47 };
58 48
59 //----------------------------------------------------------------------------- 49 //-----------------------------------------------------------------------------
60 // helpers 50 // helpers
61 51
62 void ReadAndVerifyTransaction(net::HttpTransaction* trans, 52 void ReadAndVerifyTransaction(net::HttpTransaction* trans,
63 const MockTransaction& trans_info) { 53 const MockTransaction& trans_info) {
64 std::string content; 54 std::string content;
65 int rv = ReadTransaction(trans, &content); 55 int rv = ReadTransaction(trans, &content);
66 56
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 scoped_ptr<net::HttpTransaction> trans; 388 scoped_ptr<net::HttpTransaction> trans;
399 int rv = cache.http_cache()->CreateTransaction(&trans); 389 int rv = cache.http_cache()->CreateTransaction(&trans);
400 EXPECT_EQ(net::OK, rv); 390 EXPECT_EQ(net::OK, rv);
401 ASSERT_TRUE(trans.get()); 391 ASSERT_TRUE(trans.get());
402 } 392 }
403 393
404 TEST(HttpCache, GetBackend) { 394 TEST(HttpCache, GetBackend) {
405 MockHttpCache cache(net::HttpCache::DefaultBackend::InMemory(0)); 395 MockHttpCache cache(net::HttpCache::DefaultBackend::InMemory(0));
406 396
407 disk_cache::Backend* backend; 397 disk_cache::Backend* backend;
408 net::TestCompletionCallback cb; 398 TestOldCompletionCallback cb;
409 // This will lazily initialize the backend. 399 // This will lazily initialize the backend.
410 int rv = cache.http_cache()->GetBackend(&backend, cb.callback()); 400 int rv = cache.http_cache()->GetBackend(&backend, &cb);
411 EXPECT_EQ(net::OK, cb.GetResult(rv)); 401 EXPECT_EQ(net::OK, cb.GetResult(rv));
412 } 402 }
413 403
414 TEST(HttpCache, SimpleGET) { 404 TEST(HttpCache, SimpleGET) {
415 MockHttpCache cache; 405 MockHttpCache cache;
416 406
417 // write to the cache 407 // write to the cache
418 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); 408 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction);
419 409
420 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 410 EXPECT_EQ(1, cache.network_layer()->transaction_count());
(...skipping 1047 matching lines...) Expand 10 before | Expand all | Expand 10 after
1468 *backend = NULL; 1458 *backend = NULL;
1469 callback->Run(net::ERR_ABORTED); 1459 callback->Run(net::ERR_ABORTED);
1470 } 1460 }
1471 1461
1472 // Tests that we can delete the cache while creating the backend, from within 1462 // Tests that we can delete the cache while creating the backend, from within
1473 // one of the callbacks. 1463 // one of the callbacks.
1474 TEST(HttpCache, DeleteCacheWaitingForBackend2) { 1464 TEST(HttpCache, DeleteCacheWaitingForBackend2) {
1475 MockBlockingBackendFactory* factory = new MockBlockingBackendFactory(); 1465 MockBlockingBackendFactory* factory = new MockBlockingBackendFactory();
1476 MockHttpCache* cache = new MockHttpCache(factory); 1466 MockHttpCache* cache = new MockHttpCache(factory);
1477 1467
1478 DeleteCacheCompletionCallback cb(cache); 1468 DeleteCacheOldCompletionCallback cb(cache);
1479 disk_cache::Backend* backend; 1469 disk_cache::Backend* backend;
1480 int rv = cache->http_cache()->GetBackend(&backend, cb.callback()); 1470 int rv = cache->http_cache()->GetBackend(&backend, &cb);
1481 EXPECT_EQ(net::ERR_IO_PENDING, rv); 1471 EXPECT_EQ(net::ERR_IO_PENDING, rv);
1482 1472
1483 // Now let's queue a regular transaction 1473 // Now let's queue a regular transaction
1484 MockHttpRequest request(kSimpleGET_Transaction); 1474 MockHttpRequest request(kSimpleGET_Transaction);
1485 1475
1486 scoped_ptr<Context> c(new Context()); 1476 scoped_ptr<Context> c(new Context());
1487 c->result = cache->http_cache()->CreateTransaction(&c->trans); 1477 c->result = cache->http_cache()->CreateTransaction(&c->trans);
1488 EXPECT_EQ(net::OK, c->result); 1478 EXPECT_EQ(net::OK, c->result);
1489 1479
1490 c->trans->Start(&request, &c->callback, net::BoundNetLog()); 1480 c->trans->Start(&request, &c->callback, net::BoundNetLog());
1491 1481
1492 // And another direct backend request. 1482 // And another direct backend request.
1493 net::TestCompletionCallback cb2; 1483 TestOldCompletionCallback cb2;
1494 rv = cache->http_cache()->GetBackend(&backend, cb2.callback()); 1484 rv = cache->http_cache()->GetBackend(&backend, &cb2);
1495 EXPECT_EQ(net::ERR_IO_PENDING, rv); 1485 EXPECT_EQ(net::ERR_IO_PENDING, rv);
1496 1486
1497 // Just to make sure that everything is still pending. 1487 // Just to make sure that everything is still pending.
1498 MessageLoop::current()->RunAllPending(); 1488 MessageLoop::current()->RunAllPending();
1499 1489
1500 // The request should be queued. 1490 // The request should be queued.
1501 EXPECT_FALSE(c->callback.have_result()); 1491 EXPECT_FALSE(c->callback.have_result());
1502 1492
1503 // Generate the callback. 1493 // Generate the callback.
1504 factory->FinishCreation(); 1494 factory->FinishCreation();
(...skipping 3158 matching lines...) Expand 10 before | Expand all | Expand 10 after
4663 4653
4664 // Verify that the entry is marked as incomplete. 4654 // Verify that the entry is marked as incomplete.
4665 disk_cache::Entry* entry; 4655 disk_cache::Entry* entry;
4666 ASSERT_TRUE(cache.OpenBackendEntry(kSimpleGET_Transaction.url, &entry)); 4656 ASSERT_TRUE(cache.OpenBackendEntry(kSimpleGET_Transaction.url, &entry));
4667 net::HttpResponseInfo response; 4657 net::HttpResponseInfo response;
4668 bool truncated = false; 4658 bool truncated = false;
4669 EXPECT_TRUE(MockHttpCache::ReadResponseInfo(entry, &response, &truncated)); 4659 EXPECT_TRUE(MockHttpCache::ReadResponseInfo(entry, &response, &truncated));
4670 EXPECT_TRUE(truncated); 4660 EXPECT_TRUE(truncated);
4671 entry->Close(); 4661 entry->Close();
4672 } 4662 }
OLDNEW
« no previous file with comments | « net/http/http_cache.cc ('k') | net/http/mock_http_cache.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698