OLD | NEW |
---|---|
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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/bind.h" | 6 #include "base/bind.h" |
7 #include "base/bind_helpers.h" | 7 #include "base/bind_helpers.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
(...skipping 2890 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2901 | 2901 |
2902 EXPECT_EQ(net::ERR_IO_PENDING, | 2902 EXPECT_EQ(net::ERR_IO_PENDING, |
2903 entry->ReadData(0, 0, buffer1.get(), kSize1, cb.callback())); | 2903 entry->ReadData(0, 0, buffer1.get(), kSize1, cb.callback())); |
2904 EXPECT_EQ(kSize1, cb.GetResult(net::ERR_IO_PENDING)); | 2904 EXPECT_EQ(kSize1, cb.GetResult(net::ERR_IO_PENDING)); |
2905 | 2905 |
2906 // Check that we are not leaking. | 2906 // Check that we are not leaking. |
2907 EXPECT_TRUE( | 2907 EXPECT_TRUE( |
2908 static_cast<disk_cache::SimpleEntryImpl*>(entry)->HasOneRef()); | 2908 static_cast<disk_cache::SimpleEntryImpl*>(entry)->HasOneRef()); |
2909 } | 2909 } |
2910 | 2910 |
2911 TEST_F(DiskCacheEntryTest, SimpleCacheOptimistic6) { | 2911 // TODO(gavinp): Fix this, perhaps by landing |
2912 // https://codereview.chromium.org/23823002/ | |
2913 TEST_F(DiskCacheEntryTest, DISABLED_SimpleCacheOptimistic6) { | |
2912 // Test sequence: | 2914 // Test sequence: |
2913 // Create, Write, Doom, Doom, Read, Doom, Close. | 2915 // Create, Write, Doom, Doom, Read, Doom, Close. |
2914 SetSimpleCacheMode(); | 2916 SetSimpleCacheMode(); |
2915 InitCache(); | 2917 InitCache(); |
2916 disk_cache::Entry* null = NULL; | 2918 disk_cache::Entry* null = NULL; |
2917 const char key[] = "the first key"; | 2919 const char key[] = "the first key"; |
2918 | 2920 |
2919 net::TestCompletionCallback cb; | 2921 net::TestCompletionCallback cb; |
2920 const int kSize1 = 10; | 2922 const int kSize1 = 10; |
2921 scoped_refptr<net::IOBuffer> buffer1(new net::IOBuffer(kSize1)); | 2923 scoped_refptr<net::IOBuffer> buffer1(new net::IOBuffer(kSize1)); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2992 net::TestCompletionCallback cb; | 2994 net::TestCompletionCallback cb; |
2993 const int kSize1 = 10; | 2995 const int kSize1 = 10; |
2994 scoped_refptr<net::IOBuffer> buffer1(new net::IOBuffer(kSize1)); | 2996 scoped_refptr<net::IOBuffer> buffer1(new net::IOBuffer(kSize1)); |
2995 CacheTestFillBuffer(buffer1->data(), kSize1, false); | 2997 CacheTestFillBuffer(buffer1->data(), kSize1, false); |
2996 disk_cache::Entry* entry = NULL; | 2998 disk_cache::Entry* entry = NULL; |
2997 | 2999 |
2998 ASSERT_EQ(net::OK, | 3000 ASSERT_EQ(net::OK, |
2999 cache_->CreateEntry(key, &entry, net::CompletionCallback())); | 3001 cache_->CreateEntry(key, &entry, net::CompletionCallback())); |
3000 EXPECT_NE(null, entry); | 3002 EXPECT_NE(null, entry); |
3001 | 3003 |
3002 cache_->DoomEntry(key, cb.callback()); | 3004 EXPECT_EQ(net::ERR_IO_PENDING, cache_->DoomEntry(key, cb.callback())); |
3003 EXPECT_EQ(net::OK, cb.GetResult(net::ERR_IO_PENDING)); | 3005 EXPECT_EQ(net::OK, cb.GetResult(net::ERR_IO_PENDING)); |
3004 | 3006 |
3005 EXPECT_EQ( | 3007 EXPECT_EQ( |
3006 kSize1, | 3008 kSize1, |
3007 entry->WriteData(0, 0, buffer1.get(), kSize1, cb.callback(), false)); | 3009 entry->WriteData(0, 0, buffer1.get(), kSize1, cb.callback(), false)); |
3008 | 3010 |
3009 entry->Close(); | 3011 entry->Close(); |
3010 | 3012 |
3011 // Finish running the pending tasks so that we fully complete the close | 3013 // Finish running the pending tasks so that we fully complete the close |
3012 // operation and destroy the entry object. | 3014 // operation and destroy the entry object. |
3013 base::MessageLoop::current()->RunUntilIdle(); | 3015 base::MessageLoop::current()->RunUntilIdle(); |
3014 | 3016 |
3015 for (int i = 0; i < disk_cache::kSimpleEntryFileCount; ++i) { | 3017 for (int i = 0; i < disk_cache::kSimpleEntryFileCount; ++i) { |
3016 base::FilePath entry_file_path = cache_path_.AppendASCII( | 3018 base::FilePath entry_file_path = cache_path_.AppendASCII( |
3017 disk_cache::simple_util::GetFilenameFromKeyAndIndex(key, i)); | 3019 disk_cache::simple_util::GetFilenameFromKeyAndIndex(key, i)); |
3018 base::PlatformFileInfo info; | 3020 base::PlatformFileInfo info; |
3019 EXPECT_FALSE(file_util::GetFileInfo(entry_file_path, &info)); | 3021 EXPECT_FALSE(file_util::GetFileInfo(entry_file_path, &info)); |
3020 } | 3022 } |
3021 } | 3023 } |
3022 | 3024 |
3025 TEST_F(DiskCacheEntryTest, SimpleCacheDoomCreateRace) { | |
3026 // This test runs as APP_CACHE to make operations more synchronous. Test | |
3027 // sequence: | |
3028 // Create, Doom, Create. | |
3029 SetCacheType(net::APP_CACHE); | |
3030 SetSimpleCacheMode(); | |
3031 InitCache(); | |
3032 disk_cache::Entry* null = NULL; | |
Deprecated (see juliatuttle)
2013/09/11 19:03:21
Is there a reason you're not just comparing direct
| |
3033 const char key[] = "the first key"; | |
3034 | |
3035 net::TestCompletionCallback create_callback; | |
3036 | |
3037 disk_cache::Entry* entry1 = NULL; | |
3038 ASSERT_EQ(net::OK, | |
3039 create_callback.GetResult( | |
3040 cache_->CreateEntry(key, &entry1, create_callback.callback()))); | |
3041 ScopedEntryPtr entry1_closer(entry1); | |
3042 EXPECT_NE(null, entry1); | |
3043 | |
3044 net::TestCompletionCallback doom_callback; | |
3045 EXPECT_EQ(net::ERR_IO_PENDING, | |
3046 cache_->DoomEntry(key, doom_callback.callback())); | |
3047 | |
3048 disk_cache::Entry* entry2 = NULL; | |
3049 ASSERT_EQ(net::OK, | |
3050 create_callback.GetResult( | |
3051 cache_->CreateEntry(key, &entry2, create_callback.callback()))); | |
3052 ScopedEntryPtr entry2_closer(entry2); | |
3053 EXPECT_EQ(net::OK, doom_callback.GetResult(net::ERR_IO_PENDING)); | |
3054 } | |
3055 | |
3023 // Checks that an optimistic Create would fail later on a racing Open. | 3056 // Checks that an optimistic Create would fail later on a racing Open. |
3024 TEST_F(DiskCacheEntryTest, SimpleCacheOptimisticCreateFailsOnOpen) { | 3057 TEST_F(DiskCacheEntryTest, SimpleCacheOptimisticCreateFailsOnOpen) { |
3025 SetSimpleCacheMode(); | 3058 SetSimpleCacheMode(); |
3026 InitCache(); | 3059 InitCache(); |
3027 | 3060 |
3028 // Create a corrupt file in place of a future entry. Optimistic create should | 3061 // Create a corrupt file in place of a future entry. Optimistic create should |
3029 // initially succeed, but realize later that creation failed. | 3062 // initially succeed, but realize later that creation failed. |
3030 const std::string key = "the key"; | 3063 const std::string key = "the key"; |
3031 net::TestCompletionCallback cb; | 3064 net::TestCompletionCallback cb; |
3032 disk_cache::Entry* entry = NULL; | 3065 disk_cache::Entry* entry = NULL; |
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3384 | 3417 |
3385 // Check that we are not leaking. | 3418 // Check that we are not leaking. |
3386 ASSERT_NE(entry, null); | 3419 ASSERT_NE(entry, null); |
3387 EXPECT_TRUE( | 3420 EXPECT_TRUE( |
3388 static_cast<disk_cache::SimpleEntryImpl*>(entry)->HasOneRef()); | 3421 static_cast<disk_cache::SimpleEntryImpl*>(entry)->HasOneRef()); |
3389 entry->Close(); | 3422 entry->Close(); |
3390 entry = NULL; | 3423 entry = NULL; |
3391 } | 3424 } |
3392 | 3425 |
3393 #endif // defined(OS_POSIX) | 3426 #endif // defined(OS_POSIX) |
OLD | NEW |