| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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/platform_thread.h" | 6 #include "base/platform_thread.h" |
| 6 #include "base/timer.h" | 7 #include "base/timer.h" |
| 7 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 8 #include "net/base/net_errors.h" | 9 #include "net/base/net_errors.h" |
| 9 #include "net/disk_cache/disk_cache_test_base.h" | 10 #include "net/disk_cache/disk_cache_test_base.h" |
| 10 #include "net/disk_cache/disk_cache_test_util.h" | 11 #include "net/disk_cache/disk_cache_test_util.h" |
| 11 #include "net/disk_cache/entry_impl.h" | 12 #include "net/disk_cache/entry_impl.h" |
| 12 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 13 | 14 |
| 14 using base::Time; | 15 using base::Time; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 35 }; | 36 }; |
| 36 | 37 |
| 37 void DiskCacheEntryTest::InternalSyncIO() { | 38 void DiskCacheEntryTest::InternalSyncIO() { |
| 38 disk_cache::Entry *entry1 = NULL; | 39 disk_cache::Entry *entry1 = NULL; |
| 39 ASSERT_TRUE(cache_->CreateEntry("the first key", &entry1)); | 40 ASSERT_TRUE(cache_->CreateEntry("the first key", &entry1)); |
| 40 ASSERT_TRUE(NULL != entry1); | 41 ASSERT_TRUE(NULL != entry1); |
| 41 | 42 |
| 42 char buffer1[10]; | 43 char buffer1[10]; |
| 43 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 44 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); |
| 44 EXPECT_EQ(0, entry1->ReadData(0, 0, buffer1, sizeof(buffer1), NULL)); | 45 EXPECT_EQ(0, entry1->ReadData(0, 0, buffer1, sizeof(buffer1), NULL)); |
| 45 base::strlcpy(buffer1, "the data", sizeof(buffer1)); | 46 base::strlcpy(buffer1, "the data", arraysize(buffer1)); |
| 46 EXPECT_EQ(10, entry1->WriteData(0, 0, buffer1, sizeof(buffer1), NULL, false)); | 47 EXPECT_EQ(10, entry1->WriteData(0, 0, buffer1, sizeof(buffer1), NULL, false)); |
| 47 memset(buffer1, 0, sizeof(buffer1)); | 48 memset(buffer1, 0, sizeof(buffer1)); |
| 48 EXPECT_EQ(10, entry1->ReadData(0, 0, buffer1, sizeof(buffer1), NULL)); | 49 EXPECT_EQ(10, entry1->ReadData(0, 0, buffer1, sizeof(buffer1), NULL)); |
| 49 EXPECT_STREQ("the data", buffer1); | 50 EXPECT_STREQ("the data", buffer1); |
| 50 | 51 |
| 51 char buffer2[5000]; | 52 char buffer2[5000]; |
| 52 char buffer3[10000] = {0}; | 53 char buffer3[10000] = {0}; |
| 53 CacheTestFillBuffer(buffer2, sizeof(buffer2), false); | 54 CacheTestFillBuffer(buffer2, sizeof(buffer2), false); |
| 54 base::strlcpy(buffer2, "The really big data goes here", sizeof(buffer2)); | 55 base::strlcpy(buffer2, "The really big data goes here", arraysize(buffer2)); |
| 55 EXPECT_EQ(5000, entry1->WriteData(1, 1500, buffer2, sizeof(buffer2), NULL, | 56 EXPECT_EQ(5000, entry1->WriteData(1, 1500, buffer2, sizeof(buffer2), NULL, |
| 56 false)); | 57 false)); |
| 57 memset(buffer2, 0, sizeof(buffer2)); | 58 memset(buffer2, 0, sizeof(buffer2)); |
| 58 EXPECT_EQ(4989, entry1->ReadData(1, 1511, buffer2, sizeof(buffer2), NULL)); | 59 EXPECT_EQ(4989, entry1->ReadData(1, 1511, buffer2, sizeof(buffer2), NULL)); |
| 59 EXPECT_STREQ("big data goes here", buffer2); | 60 EXPECT_STREQ("big data goes here", buffer2); |
| 60 EXPECT_EQ(5000, entry1->ReadData(1, 0, buffer2, sizeof(buffer2), NULL)); | 61 EXPECT_EQ(5000, entry1->ReadData(1, 0, buffer2, sizeof(buffer2), NULL)); |
| 61 EXPECT_EQ(0, memcmp(buffer2, buffer3, 1500)); | 62 EXPECT_EQ(0, memcmp(buffer2, buffer3, 1500)); |
| 62 EXPECT_EQ(1500, entry1->ReadData(1, 5000, buffer2, sizeof(buffer2), NULL)); | 63 EXPECT_EQ(1500, entry1->ReadData(1, 5000, buffer2, sizeof(buffer2), NULL)); |
| 63 | 64 |
| 64 EXPECT_EQ(0, entry1->ReadData(1, 6500, buffer2, sizeof(buffer2), NULL)); | 65 EXPECT_EQ(0, entry1->ReadData(1, 6500, buffer2, sizeof(buffer2), NULL)); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 MessageLoopHelper helper; | 111 MessageLoopHelper helper; |
| 111 | 112 |
| 112 char buffer1[10]; | 113 char buffer1[10]; |
| 113 char buffer2[5000]; | 114 char buffer2[5000]; |
| 114 char buffer3[10000]; | 115 char buffer3[10000]; |
| 115 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 116 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); |
| 116 CacheTestFillBuffer(buffer2, sizeof(buffer2), false); | 117 CacheTestFillBuffer(buffer2, sizeof(buffer2), false); |
| 117 CacheTestFillBuffer(buffer3, sizeof(buffer3), false); | 118 CacheTestFillBuffer(buffer3, sizeof(buffer3), false); |
| 118 | 119 |
| 119 EXPECT_EQ(0, entry1->ReadData(0, 0, buffer1, sizeof(buffer1), &callback1)); | 120 EXPECT_EQ(0, entry1->ReadData(0, 0, buffer1, sizeof(buffer1), &callback1)); |
| 120 base::strlcpy(buffer1, "the data", sizeof(buffer1)); | 121 base::strlcpy(buffer1, "the data", arraysize(buffer1)); |
| 121 int expected = 0; | 122 int expected = 0; |
| 122 int ret = entry1->WriteData(0, 0, buffer1, sizeof(buffer1), &callback2, | 123 int ret = entry1->WriteData(0, 0, buffer1, sizeof(buffer1), &callback2, |
| 123 false); | 124 false); |
| 124 EXPECT_TRUE(10 == ret || net::ERR_IO_PENDING == ret); | 125 EXPECT_TRUE(10 == ret || net::ERR_IO_PENDING == ret); |
| 125 if (net::ERR_IO_PENDING == ret) | 126 if (net::ERR_IO_PENDING == ret) |
| 126 expected++; | 127 expected++; |
| 127 | 128 |
| 128 memset(buffer2, 0, sizeof(buffer1)); | 129 memset(buffer2, 0, sizeof(buffer1)); |
| 129 ret = entry1->ReadData(0, 0, buffer2, sizeof(buffer1), &callback3); | 130 ret = entry1->ReadData(0, 0, buffer2, sizeof(buffer1), &callback3); |
| 130 EXPECT_TRUE(10 == ret || net::ERR_IO_PENDING == ret); | 131 EXPECT_TRUE(10 == ret || net::ERR_IO_PENDING == ret); |
| 131 if (net::ERR_IO_PENDING == ret) | 132 if (net::ERR_IO_PENDING == ret) |
| 132 expected++; | 133 expected++; |
| 133 | 134 |
| 134 g_cache_tests_max_id = 3; | 135 g_cache_tests_max_id = 3; |
| 135 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 136 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
| 136 EXPECT_STREQ("the data", buffer2); | 137 EXPECT_STREQ("the data", buffer2); |
| 137 | 138 |
| 138 base::strlcpy(buffer2, "The really big data goes here", sizeof(buffer2)); | 139 base::strlcpy(buffer2, "The really big data goes here", arraysize(buffer2)); |
| 139 ret = entry1->WriteData(1, 1500, buffer2, sizeof(buffer2), &callback4, false); | 140 ret = entry1->WriteData(1, 1500, buffer2, sizeof(buffer2), &callback4, false); |
| 140 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); | 141 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); |
| 141 if (net::ERR_IO_PENDING == ret) | 142 if (net::ERR_IO_PENDING == ret) |
| 142 expected++; | 143 expected++; |
| 143 | 144 |
| 144 memset(buffer3, 0, sizeof(buffer2)); | 145 memset(buffer3, 0, sizeof(buffer2)); |
| 145 ret = entry1->ReadData(1, 1511, buffer3, sizeof(buffer2), &callback5); | 146 ret = entry1->ReadData(1, 1511, buffer3, sizeof(buffer2), &callback5); |
| 146 EXPECT_TRUE(4989 == ret || net::ERR_IO_PENDING == ret); | 147 EXPECT_TRUE(4989 == ret || net::ERR_IO_PENDING == ret); |
| 147 if (net::ERR_IO_PENDING == ret) | 148 if (net::ERR_IO_PENDING == ret) |
| 148 expected++; | 149 expected++; |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 InternalAsyncIO(); | 216 InternalAsyncIO(); |
| 216 } | 217 } |
| 217 | 218 |
| 218 void DiskCacheEntryTest::ExternalSyncIO() { | 219 void DiskCacheEntryTest::ExternalSyncIO() { |
| 219 disk_cache::Entry *entry1; | 220 disk_cache::Entry *entry1; |
| 220 ASSERT_TRUE(cache_->CreateEntry("the first key", &entry1)); | 221 ASSERT_TRUE(cache_->CreateEntry("the first key", &entry1)); |
| 221 | 222 |
| 222 char buffer1[17000], buffer2[25000]; | 223 char buffer1[17000], buffer2[25000]; |
| 223 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 224 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); |
| 224 CacheTestFillBuffer(buffer2, sizeof(buffer2), false); | 225 CacheTestFillBuffer(buffer2, sizeof(buffer2), false); |
| 225 base::strlcpy(buffer1, "the data", sizeof(buffer1)); | 226 base::strlcpy(buffer1, "the data", arraysize(buffer1)); |
| 226 EXPECT_EQ(17000, entry1->WriteData(0, 0, buffer1, sizeof(buffer1), NULL, | 227 EXPECT_EQ(17000, entry1->WriteData(0, 0, buffer1, sizeof(buffer1), NULL, |
| 227 false)); | 228 false)); |
| 228 memset(buffer1, 0, sizeof(buffer1)); | 229 memset(buffer1, 0, sizeof(buffer1)); |
| 229 EXPECT_EQ(17000, entry1->ReadData(0, 0, buffer1, sizeof(buffer1), NULL)); | 230 EXPECT_EQ(17000, entry1->ReadData(0, 0, buffer1, sizeof(buffer1), NULL)); |
| 230 EXPECT_STREQ("the data", buffer1); | 231 EXPECT_STREQ("the data", buffer1); |
| 231 | 232 |
| 232 base::strlcpy(buffer2, "The really big data goes here", sizeof(buffer2)); | 233 base::strlcpy(buffer2, "The really big data goes here", arraysize(buffer2)); |
| 233 EXPECT_EQ(25000, entry1->WriteData(1, 10000, buffer2, sizeof(buffer2), NULL, | 234 EXPECT_EQ(25000, entry1->WriteData(1, 10000, buffer2, sizeof(buffer2), NULL, |
| 234 false)); | 235 false)); |
| 235 memset(buffer2, 0, sizeof(buffer2)); | 236 memset(buffer2, 0, sizeof(buffer2)); |
| 236 EXPECT_EQ(24989, entry1->ReadData(1, 10011, buffer2, sizeof(buffer2), NULL)); | 237 EXPECT_EQ(24989, entry1->ReadData(1, 10011, buffer2, sizeof(buffer2), NULL)); |
| 237 EXPECT_STREQ("big data goes here", buffer2); | 238 EXPECT_STREQ("big data goes here", buffer2); |
| 238 EXPECT_EQ(25000, entry1->ReadData(1, 0, buffer2, sizeof(buffer2), NULL)); | 239 EXPECT_EQ(25000, entry1->ReadData(1, 0, buffer2, sizeof(buffer2), NULL)); |
| 239 EXPECT_EQ(0, memcmp(buffer2, buffer2, 10000)); | 240 EXPECT_EQ(0, memcmp(buffer2, buffer2, 10000)); |
| 240 EXPECT_EQ(5000, entry1->ReadData(1, 30000, buffer2, sizeof(buffer2), NULL)); | 241 EXPECT_EQ(5000, entry1->ReadData(1, 30000, buffer2, sizeof(buffer2), NULL)); |
| 241 | 242 |
| 242 EXPECT_EQ(0, entry1->ReadData(1, 35000, buffer2, sizeof(buffer2), NULL)); | 243 EXPECT_EQ(0, entry1->ReadData(1, 35000, buffer2, sizeof(buffer2), NULL)); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 g_cache_tests_max_id = 0; | 281 g_cache_tests_max_id = 0; |
| 281 g_cache_tests_received = 0; | 282 g_cache_tests_received = 0; |
| 282 int expected = 0; | 283 int expected = 0; |
| 283 | 284 |
| 284 MessageLoopHelper helper; | 285 MessageLoopHelper helper; |
| 285 | 286 |
| 286 char buffer1[17000], buffer2[25000], buffer3[25000]; | 287 char buffer1[17000], buffer2[25000], buffer3[25000]; |
| 287 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 288 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); |
| 288 CacheTestFillBuffer(buffer2, sizeof(buffer2), false); | 289 CacheTestFillBuffer(buffer2, sizeof(buffer2), false); |
| 289 CacheTestFillBuffer(buffer3, sizeof(buffer3), false); | 290 CacheTestFillBuffer(buffer3, sizeof(buffer3), false); |
| 290 base::strlcpy(buffer1, "the data", sizeof(buffer1)); | 291 base::strlcpy(buffer1, "the data", arraysize(buffer1)); |
| 291 int ret = entry1->WriteData(0, 0, buffer1, sizeof(buffer1), &callback1, | 292 int ret = entry1->WriteData(0, 0, buffer1, sizeof(buffer1), &callback1, |
| 292 false); | 293 false); |
| 293 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); | 294 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); |
| 294 if (net::ERR_IO_PENDING == ret) | 295 if (net::ERR_IO_PENDING == ret) |
| 295 expected++; | 296 expected++; |
| 296 | 297 |
| 297 g_cache_tests_max_id = 1; | 298 g_cache_tests_max_id = 1; |
| 298 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 299 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
| 299 | 300 |
| 300 memset(buffer2, 0, sizeof(buffer1)); | 301 memset(buffer2, 0, sizeof(buffer1)); |
| 301 ret = entry1->ReadData(0, 0, buffer2, sizeof(buffer1), &callback2); | 302 ret = entry1->ReadData(0, 0, buffer2, sizeof(buffer1), &callback2); |
| 302 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); | 303 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); |
| 303 if (net::ERR_IO_PENDING == ret) | 304 if (net::ERR_IO_PENDING == ret) |
| 304 expected++; | 305 expected++; |
| 305 | 306 |
| 306 g_cache_tests_max_id = 2; | 307 g_cache_tests_max_id = 2; |
| 307 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 308 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
| 308 EXPECT_STREQ("the data", buffer1); | 309 EXPECT_STREQ("the data", buffer1); |
| 309 | 310 |
| 310 base::strlcpy(buffer2, "The really big data goes here", sizeof(buffer2)); | 311 base::strlcpy(buffer2, "The really big data goes here", arraysize(buffer2)); |
| 311 ret = entry1->WriteData(1, 10000, buffer2, sizeof(buffer2), &callback3, | 312 ret = entry1->WriteData(1, 10000, buffer2, sizeof(buffer2), &callback3, |
| 312 false); | 313 false); |
| 313 EXPECT_TRUE(25000 == ret || net::ERR_IO_PENDING == ret); | 314 EXPECT_TRUE(25000 == ret || net::ERR_IO_PENDING == ret); |
| 314 if (net::ERR_IO_PENDING == ret) | 315 if (net::ERR_IO_PENDING == ret) |
| 315 expected++; | 316 expected++; |
| 316 | 317 |
| 317 g_cache_tests_max_id = 3; | 318 g_cache_tests_max_id = 3; |
| 318 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 319 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
| 319 | 320 |
| 320 memset(buffer3, 0, sizeof(buffer3)); | 321 memset(buffer3, 0, sizeof(buffer3)); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 458 void DiskCacheEntryTest::GrowData() { | 459 void DiskCacheEntryTest::GrowData() { |
| 459 std::string key1("the first key"); | 460 std::string key1("the first key"); |
| 460 disk_cache::Entry *entry1, *entry2; | 461 disk_cache::Entry *entry1, *entry2; |
| 461 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); | 462 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
| 462 | 463 |
| 463 char buffer1[20000]; | 464 char buffer1[20000]; |
| 464 char buffer2[20000]; | 465 char buffer2[20000]; |
| 465 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 466 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); |
| 466 memset(buffer2, 0, sizeof(buffer2)); | 467 memset(buffer2, 0, sizeof(buffer2)); |
| 467 | 468 |
| 468 base::strlcpy(buffer1, "the data", sizeof(buffer1)); | 469 base::strlcpy(buffer1, "the data", arraysize(buffer1)); |
| 469 EXPECT_EQ(10, entry1->WriteData(0, 0, buffer1, 10, NULL, false)); | 470 EXPECT_EQ(10, entry1->WriteData(0, 0, buffer1, 10, NULL, false)); |
| 470 EXPECT_EQ(10, entry1->ReadData(0, 0, buffer2, 10, NULL)); | 471 EXPECT_EQ(10, entry1->ReadData(0, 0, buffer2, 10, NULL)); |
| 471 EXPECT_STREQ("the data", buffer2); | 472 EXPECT_STREQ("the data", buffer2); |
| 472 EXPECT_EQ(10, entry1->GetDataSize(0)); | 473 EXPECT_EQ(10, entry1->GetDataSize(0)); |
| 473 | 474 |
| 474 EXPECT_EQ(2000, entry1->WriteData(0, 0, buffer1, 2000, NULL, false)); | 475 EXPECT_EQ(2000, entry1->WriteData(0, 0, buffer1, 2000, NULL, false)); |
| 475 EXPECT_EQ(2000, entry1->GetDataSize(0)); | 476 EXPECT_EQ(2000, entry1->GetDataSize(0)); |
| 476 EXPECT_EQ(2000, entry1->ReadData(0, 0, buffer2, 2000, NULL)); | 477 EXPECT_EQ(2000, entry1->ReadData(0, 0, buffer2, 2000, NULL)); |
| 477 EXPECT_TRUE(!memcmp(buffer1, buffer2, 2000)); | 478 EXPECT_TRUE(!memcmp(buffer1, buffer2, 2000)); |
| 478 | 479 |
| (...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 782 InitCache(); | 783 InitCache(); |
| 783 DoomEntry(); | 784 DoomEntry(); |
| 784 } | 785 } |
| 785 | 786 |
| 786 TEST_F(DiskCacheEntryTest, MemoryOnlyDoomedEntry) { | 787 TEST_F(DiskCacheEntryTest, MemoryOnlyDoomedEntry) { |
| 787 SetMemoryOnlyMode(); | 788 SetMemoryOnlyMode(); |
| 788 InitCache(); | 789 InitCache(); |
| 789 DoomEntry(); | 790 DoomEntry(); |
| 790 } | 791 } |
| 791 | 792 |
| OLD | NEW |