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

Unified Diff: net/disk_cache/backend_unittest.cc

Issue 542733002: Remove void** from disk_cache interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: more more explicit constructor Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: net/disk_cache/backend_unittest.cc
diff --git a/net/disk_cache/backend_unittest.cc b/net/disk_cache/backend_unittest.cc
index 9adcc733be7b2e6f34cb8dbbe3d2520684266e9a..d1ff4e9e4857ee502ec4aaf6c182da666a51da3d 100644
--- a/net/disk_cache/backend_unittest.cc
+++ b/net/disk_cache/backend_unittest.cc
@@ -82,7 +82,7 @@ class DiskCacheBackendTest : public DiskCacheTestWithCache {
bool CreateSetOfRandomEntries(std::set<std::string>* key_pool);
bool EnumerateAndMatchKeys(int max_to_open,
- void** iter,
+ disk_cache::Backend::Iterator* iter,
std::set<std::string>* keys_to_match,
size_t* count);
@@ -258,7 +258,7 @@ bool DiskCacheBackendTest::CreateSetOfRandomEntries(
// OpenNextEntry stops returning net::OK.
bool DiskCacheBackendTest::EnumerateAndMatchKeys(
int max_to_open,
- void** iter,
+ disk_cache::Backend::Iterator* iter,
std::set<std::string>* keys_to_match,
size_t* count) {
disk_cache::Entry* entry;
@@ -1239,7 +1239,7 @@ void DiskCacheBackendTest::BackendEnumerations() {
Time final = Time::Now();
disk_cache::Entry* entry;
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
int count = 0;
Time last_modified[kNumEntries];
Time last_used[kNumEntries];
@@ -1257,7 +1257,7 @@ void DiskCacheBackendTest::BackendEnumerations() {
};
EXPECT_EQ(kNumEntries, count);
- iter = NULL;
+ iter.reset();
count = 0;
// The previous enumeration should not have changed the timestamps.
while (OpenNextEntry(&iter, &entry) == net::OK) {
@@ -1311,7 +1311,7 @@ void DiskCacheBackendTest::BackendEnumerations2() {
// Make sure that the timestamp is not the same.
AddDelay();
ASSERT_EQ(net::OK, OpenEntry(second, &entry1));
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry2));
EXPECT_EQ(entry2->GetKey(), second);
@@ -1323,7 +1323,7 @@ void DiskCacheBackendTest::BackendEnumerations2() {
ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry2));
EXPECT_EQ(entry2->GetKey(), first);
entry2->Close();
- cache_->EndEnumeration(&iter);
+ iter.reset();
// Modify the oldest entry and get the newest element.
ASSERT_EQ(net::OK, OpenEntry(first, &entry1));
@@ -1338,7 +1338,6 @@ void DiskCacheBackendTest::BackendEnumerations2() {
entry1->Close();
entry2->Close();
- cache_->EndEnumeration(&iter);
}
TEST_F(DiskCacheBackendTest, Enumerations2) {
@@ -1393,11 +1392,10 @@ TEST_F(DiskCacheBackendTest, ShaderCacheEnumerationReadData) {
EXPECT_EQ(kSize, ReadData(entry1, 0, 0, buffer1.get(), kSize));
entry1->Close();
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry2));
EXPECT_EQ(entry2->GetKey(), second);
entry2->Close();
- cache_->EndEnumeration(&iter);
}
#if !defined(LEAK_SANITIZER)
@@ -1426,7 +1424,7 @@ void DiskCacheBackendTest::BackendInvalidEntryEnumeration() {
SimulateCrash();
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
int count = 0;
while (OpenNextEntry(&iter, &entry) == net::OK) {
ASSERT_TRUE(NULL != entry);
@@ -1468,8 +1466,7 @@ void DiskCacheBackendTest::BackendFixEnumerators() {
EXPECT_EQ(kNumEntries, cache_->GetEntryCount());
disk_cache::Entry *entry1, *entry2;
- void* iter1 = NULL;
- void* iter2 = NULL;
+ disk_cache::Backend::Iterator iter1, iter2;
ASSERT_EQ(net::OK, OpenNextEntry(&iter1, &entry1));
ASSERT_TRUE(NULL != entry1);
entry1->Close();
@@ -1501,9 +1498,6 @@ void DiskCacheBackendTest::BackendFixEnumerators() {
ASSERT_EQ(net::OK, OpenNextEntry(&iter2, &entry2));
ASSERT_TRUE(NULL != entry2);
entry2->Close();
-
- cache_->EndEnumeration(&iter1);
- cache_->EndEnumeration(&iter2);
}
TEST_F(DiskCacheBackendTest, FixEnumerators) {
@@ -2029,7 +2023,7 @@ void DiskCacheBackendTest::BackendInvalidEntry3() {
InitCache();
disk_cache::Entry* entry;
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
while (OpenNextEntry(&iter, &entry) == net::OK) {
entry->Close();
}
@@ -2174,7 +2168,7 @@ void DiskCacheBackendTest::BackendInvalidEntry7() {
EXPECT_EQ(1, cache_->GetEntryCount());
// We should delete the cache. The list still has a corrupt node.
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry));
FlushQueueForTest();
EXPECT_EQ(0, cache_->GetEntryCount());
@@ -2218,7 +2212,7 @@ void DiskCacheBackendTest::BackendInvalidEntry8() {
EXPECT_EQ(1, cache_->GetEntryCount());
// We should not delete the cache.
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry));
entry->Close();
EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry));
@@ -2268,7 +2262,7 @@ void DiskCacheBackendTest::BackendInvalidEntry9(bool eviction) {
} else {
// We should detect the problem through the list, but we should not delete
// the entry, just fail the iteration.
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry));
// Now a full iteration will work, and return one entry.
@@ -2345,7 +2339,7 @@ void DiskCacheBackendTest::BackendInvalidEntry10(bool eviction) {
// Detection order: third -> second -> first.
// We should detect the problem through the list, but we should not delete
// the entry.
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry));
entry->Close();
ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry));
@@ -2412,7 +2406,7 @@ void DiskCacheBackendTest::BackendInvalidEntry11(bool eviction) {
// Detection order: third -> second.
// We should detect the problem through the list, but we should not delete
// the entry, just fail the iteration.
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry));
entry->Close();
EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry));
@@ -2500,7 +2494,7 @@ TEST_F(DiskCacheBackendTest, NewEvictionInvalidRankings2) {
// If the LRU is corrupt, we delete the cache.
void DiskCacheBackendTest::BackendInvalidRankings() {
disk_cache::Entry* entry;
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry));
entry->Close();
EXPECT_EQ(2, cache_->GetEntryCount());
@@ -2545,7 +2539,7 @@ TEST_F(DiskCacheBackendTest, NewEvictionInvalidRankingsFailure) {
// If the LRU is corrupt and we have open entries, we disable the cache.
void DiskCacheBackendTest::BackendDisable() {
disk_cache::Entry *entry1, *entry2;
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry1));
EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry2));
@@ -2596,7 +2590,7 @@ void DiskCacheBackendTest::BackendDisable2() {
EXPECT_EQ(8, cache_->GetEntryCount());
disk_cache::Entry* entry;
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
int count = 0;
while (OpenNextEntry(&iter, &entry) == net::OK) {
ASSERT_TRUE(NULL != entry);
@@ -2644,7 +2638,7 @@ TEST_F(DiskCacheBackendTest, NewEvictionDisableFailure2) {
// If the index size changes when we disable the cache, we should not crash.
void DiskCacheBackendTest::BackendDisable3() {
disk_cache::Entry *entry1, *entry2;
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
EXPECT_EQ(2, cache_->GetEntryCount());
ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry1));
entry1->Close();
@@ -2678,7 +2672,7 @@ TEST_F(DiskCacheBackendTest, NewEvictionDisableSuccess3) {
// If we disable the cache, already open entries should work as far as possible.
void DiskCacheBackendTest::BackendDisable4() {
disk_cache::Entry *entry1, *entry2, *entry3, *entry4;
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry1));
char key2[2000];
@@ -3419,16 +3413,16 @@ TEST_F(DiskCacheBackendTest, SimpleCacheEnumerationBasics) {
// Check that enumeration returns all entries.
std::set<std::string> keys_to_match(key_pool);
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
size_t count = 0;
ASSERT_TRUE(EnumerateAndMatchKeys(-1, &iter, &keys_to_match, &count));
- cache_->EndEnumeration(&iter);
+ iter.reset();
EXPECT_EQ(key_pool.size(), count);
EXPECT_TRUE(keys_to_match.empty());
// Check that opening entries does not affect enumeration.
keys_to_match = key_pool;
- iter = NULL;
+ iter.reset();
count = 0;
disk_cache::Entry* entry_opened_before;
ASSERT_EQ(net::OK, OpenEntry(*(key_pool.begin()), &entry_opened_before));
@@ -3441,7 +3435,7 @@ TEST_F(DiskCacheBackendTest, SimpleCacheEnumerationBasics) {
ASSERT_EQ(net::OK,
OpenEntry(*(keys_to_match.begin()), &entry_opened_middle));
ASSERT_TRUE(EnumerateAndMatchKeys(-1, &iter, &keys_to_match, &count));
- cache_->EndEnumeration(&iter);
+ iter.reset();
entry_opened_before->Close();
entry_opened_middle->Close();
@@ -3459,7 +3453,7 @@ TEST_F(DiskCacheBackendTest, SimpleCacheEnumerationWhileDoomed) {
// Check that enumeration returns all entries but the doomed one.
std::set<std::string> keys_to_match(key_pool);
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
size_t count = 0;
ASSERT_TRUE(EnumerateAndMatchKeys(key_pool.size()/2,
&iter,
@@ -3471,7 +3465,7 @@ TEST_F(DiskCacheBackendTest, SimpleCacheEnumerationWhileDoomed) {
keys_to_match.erase(key_to_delete);
key_pool.erase(key_to_delete);
ASSERT_TRUE(EnumerateAndMatchKeys(-1, &iter, &keys_to_match, &count));
- cache_->EndEnumeration(&iter);
+ iter.reset();
EXPECT_EQ(key_pool.size(), count);
EXPECT_TRUE(keys_to_match.empty());
@@ -3507,13 +3501,31 @@ TEST_F(DiskCacheBackendTest, SimpleCacheEnumerationCorruption) {
// Check that enumeration returns all entries but the corrupt one.
std::set<std::string> keys_to_match(key_pool);
- void* iter = NULL;
+ disk_cache::Backend::Iterator iter;
size_t count = 0;
ASSERT_TRUE(EnumerateAndMatchKeys(-1, &iter, &keys_to_match, &count));
- cache_->EndEnumeration(&iter);
+ iter.reset();
EXPECT_EQ(key_pool.size(), count);
EXPECT_TRUE(keys_to_match.empty());
}
+// Tests that enumerations don't leak memory when the backend is destructed
+// mid-enumeration.
+TEST_F(DiskCacheBackendTest, SimpleCacheEnumerationDestruction) {
+ SetSimpleCacheMode();
+ InitCache();
+ std::set<std::string> key_pool;
+ ASSERT_TRUE(CreateSetOfRandomEntries(&key_pool));
+
+ disk_cache::Backend::Iterator iter;
+ disk_cache::Entry* entry = NULL;
+ ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry));
+ EXPECT_TRUE(entry);
+ disk_cache::ScopedEntryPtr entry_closer(entry);
+
+ cache_.reset();
+ // This test passes if we don't leak memory.
+}
+
#endif // defined(OS_POSIX)

Powered by Google App Engine
This is Rietveld 408576698