| 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/basictypes.h" |
| 6 #include "base/platform_thread.h" | 6 #include "base/platform_thread.h" |
| 7 #include "base/timer.h" | 7 #include "base/timer.h" |
| 8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "net/base/io_buffer.h" |
| 9 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
| 10 #include "net/disk_cache/disk_cache_test_base.h" | 11 #include "net/disk_cache/disk_cache_test_base.h" |
| 11 #include "net/disk_cache/disk_cache_test_util.h" | 12 #include "net/disk_cache/disk_cache_test_util.h" |
| 12 #include "net/disk_cache/entry_impl.h" | 13 #include "net/disk_cache/entry_impl.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
| 14 | 15 |
| 15 using base::Time; | 16 using base::Time; |
| 16 | 17 |
| 17 extern int g_cache_tests_max_id; | 18 extern int g_cache_tests_max_id; |
| 18 extern volatile int g_cache_tests_received; | 19 extern volatile int g_cache_tests_received; |
| 19 extern volatile bool g_cache_tests_error; | 20 extern volatile bool g_cache_tests_error; |
| 20 | 21 |
| 21 // Tests that can run with different types of caches. | 22 // Tests that can run with different types of caches. |
| 22 class DiskCacheEntryTest : public DiskCacheTestWithCache { | 23 class DiskCacheEntryTest : public DiskCacheTestWithCache { |
| 23 protected: | 24 protected: |
| 24 void InternalSyncIO(); | 25 void InternalSyncIO(); |
| 25 void InternalAsyncIO(); | 26 void InternalAsyncIO(); |
| 26 void ExternalSyncIO(); | 27 void ExternalSyncIO(); |
| 27 void ExternalAsyncIO(); | 28 void ExternalAsyncIO(); |
| 28 void StreamAccess(); | 29 void StreamAccess(); |
| 29 void GetKey(); | 30 void GetKey(); |
| 30 void GrowData(); | 31 void GrowData(); |
| 31 void TruncateData(); | 32 void TruncateData(); |
| 33 void ZeroLengthIO(); |
| 32 void ReuseEntry(int size); | 34 void ReuseEntry(int size); |
| 33 void InvalidData(); | 35 void InvalidData(); |
| 34 void DoomEntry(); | 36 void DoomEntry(); |
| 35 void DoomedEntry(); | 37 void DoomedEntry(); |
| 36 }; | 38 }; |
| 37 | 39 |
| 38 void DiskCacheEntryTest::InternalSyncIO() { | 40 void DiskCacheEntryTest::InternalSyncIO() { |
| 39 disk_cache::Entry *entry1 = NULL; | 41 disk_cache::Entry *entry1 = NULL; |
| 40 ASSERT_TRUE(cache_->CreateEntry("the first key", &entry1)); | 42 ASSERT_TRUE(cache_->CreateEntry("the first key", &entry1)); |
| 41 ASSERT_TRUE(NULL != entry1); | 43 ASSERT_TRUE(NULL != entry1); |
| 42 | 44 |
| 43 char buffer1[10]; | 45 const int kSize1 = 10; |
| 44 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 46 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize1); |
| 45 EXPECT_EQ(0, entry1->ReadData(0, 0, buffer1, sizeof(buffer1), NULL)); | 47 CacheTestFillBuffer(buffer1->data(), kSize1, false); |
| 46 base::strlcpy(buffer1, "the data", arraysize(buffer1)); | 48 EXPECT_EQ(0, entry1->ReadData(0, 0, buffer1, kSize1, NULL)); |
| 47 EXPECT_EQ(10, entry1->WriteData(0, 0, buffer1, sizeof(buffer1), NULL, false)); | 49 base::strlcpy(buffer1->data(), "the data", kSize1); |
| 48 memset(buffer1, 0, sizeof(buffer1)); | 50 EXPECT_EQ(10, entry1->WriteData(0, 0, buffer1, kSize1, NULL, false)); |
| 49 EXPECT_EQ(10, entry1->ReadData(0, 0, buffer1, sizeof(buffer1), NULL)); | 51 memset(buffer1->data(), 0, kSize1); |
| 50 EXPECT_STREQ("the data", buffer1); | 52 EXPECT_EQ(10, entry1->ReadData(0, 0, buffer1, kSize1, NULL)); |
| 53 EXPECT_STREQ("the data", buffer1->data()); |
| 51 | 54 |
| 52 char buffer2[5000]; | 55 const int kSize2 = 5000; |
| 53 char buffer3[10000] = {0}; | 56 const int kSize3 = 10000; |
| 54 CacheTestFillBuffer(buffer2, sizeof(buffer2), false); | 57 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize2); |
| 55 base::strlcpy(buffer2, "The really big data goes here", arraysize(buffer2)); | 58 scoped_refptr<net::IOBuffer> buffer3 = new net::IOBuffer(kSize3); |
| 56 EXPECT_EQ(5000, entry1->WriteData(1, 1500, buffer2, sizeof(buffer2), NULL, | 59 memset(buffer3->data(), 0, kSize3); |
| 57 false)); | 60 CacheTestFillBuffer(buffer2->data(), kSize2, false); |
| 58 memset(buffer2, 0, sizeof(buffer2)); | 61 base::strlcpy(buffer2->data(), "The really big data goes here", kSize2); |
| 59 EXPECT_EQ(4989, entry1->ReadData(1, 1511, buffer2, sizeof(buffer2), NULL)); | 62 EXPECT_EQ(5000, entry1->WriteData(1, 1500, buffer2, kSize2, NULL, false)); |
| 60 EXPECT_STREQ("big data goes here", buffer2); | 63 memset(buffer2->data(), 0, kSize2); |
| 61 EXPECT_EQ(5000, entry1->ReadData(1, 0, buffer2, sizeof(buffer2), NULL)); | 64 EXPECT_EQ(4989, entry1->ReadData(1, 1511, buffer2, kSize2, NULL)); |
| 62 EXPECT_EQ(0, memcmp(buffer2, buffer3, 1500)); | 65 EXPECT_STREQ("big data goes here", buffer2->data()); |
| 63 EXPECT_EQ(1500, entry1->ReadData(1, 5000, buffer2, sizeof(buffer2), NULL)); | 66 EXPECT_EQ(5000, entry1->ReadData(1, 0, buffer2, kSize2, NULL)); |
| 67 EXPECT_EQ(0, memcmp(buffer2->data(), buffer3->data(), 1500)); |
| 68 EXPECT_EQ(1500, entry1->ReadData(1, 5000, buffer2, kSize2, NULL)); |
| 64 | 69 |
| 65 EXPECT_EQ(0, entry1->ReadData(1, 6500, buffer2, sizeof(buffer2), NULL)); | 70 EXPECT_EQ(0, entry1->ReadData(1, 6500, buffer2, kSize2, NULL)); |
| 66 EXPECT_EQ(6500, entry1->ReadData(1, 0, buffer3, sizeof(buffer3), NULL)); | 71 EXPECT_EQ(6500, entry1->ReadData(1, 0, buffer3, kSize3, NULL)); |
| 67 EXPECT_EQ(8192, entry1->WriteData(1, 0, buffer3, 8192, NULL, false)); | 72 EXPECT_EQ(8192, entry1->WriteData(1, 0, buffer3, 8192, NULL, false)); |
| 68 EXPECT_EQ(8192, entry1->ReadData(1, 0, buffer3, sizeof(buffer3), NULL)); | 73 EXPECT_EQ(8192, entry1->ReadData(1, 0, buffer3, kSize3, NULL)); |
| 69 EXPECT_EQ(8192, entry1->GetDataSize(1)); | 74 EXPECT_EQ(8192, entry1->GetDataSize(1)); |
| 70 | 75 |
| 71 entry1->Doom(); | 76 entry1->Doom(); |
| 72 entry1->Close(); | 77 entry1->Close(); |
| 73 EXPECT_EQ(0, cache_->GetEntryCount()); | 78 EXPECT_EQ(0, cache_->GetEntryCount()); |
| 74 } | 79 } |
| 75 | 80 |
| 76 TEST_F(DiskCacheEntryTest, InternalSyncIO) { | 81 TEST_F(DiskCacheEntryTest, InternalSyncIO) { |
| 77 InitCache(); | 82 InitCache(); |
| 78 InternalSyncIO(); | 83 InternalSyncIO(); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 103 CallbackTest callback11(11, false); | 108 CallbackTest callback11(11, false); |
| 104 CallbackTest callback12(12, false); | 109 CallbackTest callback12(12, false); |
| 105 CallbackTest callback13(13, false); | 110 CallbackTest callback13(13, false); |
| 106 | 111 |
| 107 g_cache_tests_error = false; | 112 g_cache_tests_error = false; |
| 108 g_cache_tests_max_id = 0; | 113 g_cache_tests_max_id = 0; |
| 109 g_cache_tests_received = 0; | 114 g_cache_tests_received = 0; |
| 110 | 115 |
| 111 MessageLoopHelper helper; | 116 MessageLoopHelper helper; |
| 112 | 117 |
| 113 char buffer1[10]; | 118 const int kSize1 = 10; |
| 114 char buffer2[5000]; | 119 const int kSize2 = 5000; |
| 115 char buffer3[10000]; | 120 const int kSize3 = 10000; |
| 116 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 121 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize1); |
| 117 CacheTestFillBuffer(buffer2, sizeof(buffer2), false); | 122 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize2); |
| 118 CacheTestFillBuffer(buffer3, sizeof(buffer3), false); | 123 scoped_refptr<net::IOBuffer> buffer3 = new net::IOBuffer(kSize3); |
| 124 CacheTestFillBuffer(buffer1->data(), kSize1, false); |
| 125 CacheTestFillBuffer(buffer2->data(), kSize2, false); |
| 126 CacheTestFillBuffer(buffer3->data(), kSize3, false); |
| 119 | 127 |
| 120 EXPECT_EQ(0, entry1->ReadData(0, 0, buffer1, sizeof(buffer1), &callback1)); | 128 EXPECT_EQ(0, entry1->ReadData(0, 0, buffer1, kSize1, &callback1)); |
| 121 base::strlcpy(buffer1, "the data", arraysize(buffer1)); | 129 base::strlcpy(buffer1->data(), "the data", kSize1); |
| 122 int expected = 0; | 130 int expected = 0; |
| 123 int ret = entry1->WriteData(0, 0, buffer1, sizeof(buffer1), &callback2, | 131 int ret = entry1->WriteData(0, 0, buffer1, kSize1, &callback2, false); |
| 124 false); | |
| 125 EXPECT_TRUE(10 == ret || net::ERR_IO_PENDING == ret); | 132 EXPECT_TRUE(10 == ret || net::ERR_IO_PENDING == ret); |
| 126 if (net::ERR_IO_PENDING == ret) | 133 if (net::ERR_IO_PENDING == ret) |
| 127 expected++; | 134 expected++; |
| 128 | 135 |
| 129 memset(buffer2, 0, sizeof(buffer1)); | 136 memset(buffer2->data(), 0, kSize1); |
| 130 ret = entry1->ReadData(0, 0, buffer2, sizeof(buffer1), &callback3); | 137 ret = entry1->ReadData(0, 0, buffer2, kSize1, &callback3); |
| 131 EXPECT_TRUE(10 == ret || net::ERR_IO_PENDING == ret); | 138 EXPECT_TRUE(10 == ret || net::ERR_IO_PENDING == ret); |
| 132 if (net::ERR_IO_PENDING == ret) | 139 if (net::ERR_IO_PENDING == ret) |
| 133 expected++; | 140 expected++; |
| 134 | 141 |
| 135 g_cache_tests_max_id = 3; | 142 g_cache_tests_max_id = 3; |
| 136 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 143 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
| 137 EXPECT_STREQ("the data", buffer2); | 144 EXPECT_STREQ("the data", buffer2->data()); |
| 138 | 145 |
| 139 base::strlcpy(buffer2, "The really big data goes here", arraysize(buffer2)); | 146 base::strlcpy(buffer2->data(), "The really big data goes here", kSize2); |
| 140 ret = entry1->WriteData(1, 1500, buffer2, sizeof(buffer2), &callback4, false); | 147 ret = entry1->WriteData(1, 1500, buffer2, kSize2, &callback4, false); |
| 141 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); | 148 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); |
| 142 if (net::ERR_IO_PENDING == ret) | 149 if (net::ERR_IO_PENDING == ret) |
| 143 expected++; | 150 expected++; |
| 144 | 151 |
| 145 memset(buffer3, 0, sizeof(buffer2)); | 152 memset(buffer3->data(), 0, kSize2); |
| 146 ret = entry1->ReadData(1, 1511, buffer3, sizeof(buffer2), &callback5); | 153 ret = entry1->ReadData(1, 1511, buffer3, kSize2, &callback5); |
| 147 EXPECT_TRUE(4989 == ret || net::ERR_IO_PENDING == ret); | 154 EXPECT_TRUE(4989 == ret || net::ERR_IO_PENDING == ret); |
| 148 if (net::ERR_IO_PENDING == ret) | 155 if (net::ERR_IO_PENDING == ret) |
| 149 expected++; | 156 expected++; |
| 150 | 157 |
| 151 g_cache_tests_max_id = 5; | 158 g_cache_tests_max_id = 5; |
| 152 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 159 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
| 153 EXPECT_STREQ("big data goes here", buffer3); | 160 EXPECT_STREQ("big data goes here", buffer3->data()); |
| 154 ret = entry1->ReadData(1, 0, buffer2, sizeof(buffer2), &callback6); | 161 ret = entry1->ReadData(1, 0, buffer2, kSize2, &callback6); |
| 155 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); | 162 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); |
| 156 if (net::ERR_IO_PENDING == ret) | 163 if (net::ERR_IO_PENDING == ret) |
| 157 expected++; | 164 expected++; |
| 158 | 165 |
| 159 memset(buffer3, 0, sizeof(buffer3)); | 166 memset(buffer3->data(), 0, kSize3); |
| 160 | 167 |
| 161 g_cache_tests_max_id = 6; | 168 g_cache_tests_max_id = 6; |
| 162 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 169 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
| 163 EXPECT_EQ(0, memcmp(buffer2, buffer3, 1500)); | 170 EXPECT_EQ(0, memcmp(buffer2->data(), buffer3->data(), 1500)); |
| 164 ret = entry1->ReadData(1, 5000, buffer2, sizeof(buffer2), &callback7); | 171 ret = entry1->ReadData(1, 5000, buffer2, kSize2, &callback7); |
| 165 EXPECT_TRUE(1500 == ret || net::ERR_IO_PENDING == ret); | 172 EXPECT_TRUE(1500 == ret || net::ERR_IO_PENDING == ret); |
| 166 if (net::ERR_IO_PENDING == ret) | 173 if (net::ERR_IO_PENDING == ret) |
| 167 expected++; | 174 expected++; |
| 168 | 175 |
| 169 EXPECT_EQ(0, entry1->ReadData(1, 6500, buffer2, sizeof(buffer2), &callback8)); | 176 EXPECT_EQ(0, entry1->ReadData(1, 6500, buffer2, kSize2, &callback8)); |
| 170 ret = entry1->ReadData(1, 0, buffer3, sizeof(buffer3), &callback9); | 177 ret = entry1->ReadData(1, 0, buffer3, kSize3, &callback9); |
| 171 EXPECT_TRUE(6500 == ret || net::ERR_IO_PENDING == ret); | 178 EXPECT_TRUE(6500 == ret || net::ERR_IO_PENDING == ret); |
| 172 if (net::ERR_IO_PENDING == ret) | 179 if (net::ERR_IO_PENDING == ret) |
| 173 expected++; | 180 expected++; |
| 174 | 181 |
| 175 ret = entry1->WriteData(1, 0, buffer3, 8192, &callback10, false); | 182 ret = entry1->WriteData(1, 0, buffer3, 8192, &callback10, false); |
| 176 EXPECT_TRUE(8192 == ret || net::ERR_IO_PENDING == ret); | 183 EXPECT_TRUE(8192 == ret || net::ERR_IO_PENDING == ret); |
| 177 if (net::ERR_IO_PENDING == ret) | 184 if (net::ERR_IO_PENDING == ret) |
| 178 expected++; | 185 expected++; |
| 179 | 186 |
| 180 ret = entry1->ReadData(1, 0, buffer3, sizeof(buffer3), &callback11); | 187 ret = entry1->ReadData(1, 0, buffer3, kSize3, &callback11); |
| 181 EXPECT_TRUE(8192 == ret || net::ERR_IO_PENDING == ret); | 188 EXPECT_TRUE(8192 == ret || net::ERR_IO_PENDING == ret); |
| 182 if (net::ERR_IO_PENDING == ret) | 189 if (net::ERR_IO_PENDING == ret) |
| 183 expected++; | 190 expected++; |
| 184 | 191 |
| 185 EXPECT_EQ(8192, entry1->GetDataSize(1)); | 192 EXPECT_EQ(8192, entry1->GetDataSize(1)); |
| 186 | 193 |
| 187 ret = entry1->ReadData(0, 0, buffer1, sizeof(buffer1), &callback12); | 194 ret = entry1->ReadData(0, 0, buffer1, kSize1, &callback12); |
| 188 EXPECT_TRUE(10 == ret || net::ERR_IO_PENDING == ret); | 195 EXPECT_TRUE(10 == ret || net::ERR_IO_PENDING == ret); |
| 189 if (net::ERR_IO_PENDING == ret) | 196 if (net::ERR_IO_PENDING == ret) |
| 190 expected++; | 197 expected++; |
| 191 | 198 |
| 192 ret = entry1->ReadData(1, 0, buffer2, sizeof(buffer2), &callback13); | 199 ret = entry1->ReadData(1, 0, buffer2, kSize2, &callback13); |
| 193 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); | 200 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); |
| 194 if (net::ERR_IO_PENDING == ret) | 201 if (net::ERR_IO_PENDING == ret) |
| 195 expected++; | 202 expected++; |
| 196 | 203 |
| 197 g_cache_tests_max_id = 13; | 204 g_cache_tests_max_id = 13; |
| 198 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 205 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
| 199 | 206 |
| 200 EXPECT_FALSE(g_cache_tests_error); | 207 EXPECT_FALSE(g_cache_tests_error); |
| 201 EXPECT_EQ(expected, g_cache_tests_received); | 208 EXPECT_EQ(expected, g_cache_tests_received); |
| 202 | 209 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 213 TEST_F(DiskCacheEntryTest, MemoryOnlyInternalAsyncIO) { | 220 TEST_F(DiskCacheEntryTest, MemoryOnlyInternalAsyncIO) { |
| 214 SetMemoryOnlyMode(); | 221 SetMemoryOnlyMode(); |
| 215 InitCache(); | 222 InitCache(); |
| 216 InternalAsyncIO(); | 223 InternalAsyncIO(); |
| 217 } | 224 } |
| 218 | 225 |
| 219 void DiskCacheEntryTest::ExternalSyncIO() { | 226 void DiskCacheEntryTest::ExternalSyncIO() { |
| 220 disk_cache::Entry *entry1; | 227 disk_cache::Entry *entry1; |
| 221 ASSERT_TRUE(cache_->CreateEntry("the first key", &entry1)); | 228 ASSERT_TRUE(cache_->CreateEntry("the first key", &entry1)); |
| 222 | 229 |
| 223 char buffer1[17000], buffer2[25000]; | 230 const int kSize1 = 17000; |
| 224 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 231 const int kSize2 = 25000; |
| 225 CacheTestFillBuffer(buffer2, sizeof(buffer2), false); | 232 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize1); |
| 226 base::strlcpy(buffer1, "the data", arraysize(buffer1)); | 233 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize2); |
| 227 EXPECT_EQ(17000, entry1->WriteData(0, 0, buffer1, sizeof(buffer1), NULL, | 234 CacheTestFillBuffer(buffer1->data(), kSize1, false); |
| 228 false)); | 235 CacheTestFillBuffer(buffer2->data(), kSize2, false); |
| 229 memset(buffer1, 0, sizeof(buffer1)); | 236 base::strlcpy(buffer1->data(), "the data", kSize1); |
| 230 EXPECT_EQ(17000, entry1->ReadData(0, 0, buffer1, sizeof(buffer1), NULL)); | 237 EXPECT_EQ(17000, entry1->WriteData(0, 0, buffer1, kSize1, NULL, false)); |
| 231 EXPECT_STREQ("the data", buffer1); | 238 memset(buffer1->data(), 0, kSize1); |
| 239 EXPECT_EQ(17000, entry1->ReadData(0, 0, buffer1, kSize1, NULL)); |
| 240 EXPECT_STREQ("the data", buffer1->data()); |
| 232 | 241 |
| 233 base::strlcpy(buffer2, "The really big data goes here", arraysize(buffer2)); | 242 base::strlcpy(buffer2->data(), "The really big data goes here", kSize2); |
| 234 EXPECT_EQ(25000, entry1->WriteData(1, 10000, buffer2, sizeof(buffer2), NULL, | 243 EXPECT_EQ(25000, entry1->WriteData(1, 10000, buffer2, kSize2, NULL, false)); |
| 235 false)); | 244 memset(buffer2->data(), 0, kSize2); |
| 236 memset(buffer2, 0, sizeof(buffer2)); | 245 EXPECT_EQ(24989, entry1->ReadData(1, 10011, buffer2, kSize2, NULL)); |
| 237 EXPECT_EQ(24989, entry1->ReadData(1, 10011, buffer2, sizeof(buffer2), NULL)); | 246 EXPECT_STREQ("big data goes here", buffer2->data()); |
| 238 EXPECT_STREQ("big data goes here", buffer2); | 247 EXPECT_EQ(25000, entry1->ReadData(1, 0, buffer2, kSize2, NULL)); |
| 239 EXPECT_EQ(25000, entry1->ReadData(1, 0, buffer2, sizeof(buffer2), NULL)); | 248 EXPECT_EQ(0, memcmp(buffer2->data(), buffer2->data(), 10000)); |
| 240 EXPECT_EQ(0, memcmp(buffer2, buffer2, 10000)); | 249 EXPECT_EQ(5000, entry1->ReadData(1, 30000, buffer2, kSize2, NULL)); |
| 241 EXPECT_EQ(5000, entry1->ReadData(1, 30000, buffer2, sizeof(buffer2), NULL)); | |
| 242 | 250 |
| 243 EXPECT_EQ(0, entry1->ReadData(1, 35000, buffer2, sizeof(buffer2), NULL)); | 251 EXPECT_EQ(0, entry1->ReadData(1, 35000, buffer2, kSize2, NULL)); |
| 244 EXPECT_EQ(17000, entry1->ReadData(1, 0, buffer1, sizeof(buffer1), NULL)); | 252 EXPECT_EQ(17000, entry1->ReadData(1, 0, buffer1, kSize1, NULL)); |
| 245 EXPECT_EQ(17000, entry1->WriteData(1, 20000, buffer1, sizeof(buffer1), NULL, | 253 EXPECT_EQ(17000, entry1->WriteData(1, 20000, buffer1, kSize1, NULL, false)); |
| 246 false)); | |
| 247 EXPECT_EQ(37000, entry1->GetDataSize(1)); | 254 EXPECT_EQ(37000, entry1->GetDataSize(1)); |
| 248 | 255 |
| 249 entry1->Doom(); | 256 entry1->Doom(); |
| 250 entry1->Close(); | 257 entry1->Close(); |
| 251 EXPECT_EQ(0, cache_->GetEntryCount()); | 258 EXPECT_EQ(0, cache_->GetEntryCount()); |
| 252 } | 259 } |
| 253 | 260 |
| 254 TEST_F(DiskCacheEntryTest, ExternalSyncIO) { | 261 TEST_F(DiskCacheEntryTest, ExternalSyncIO) { |
| 255 InitCache(); | 262 InitCache(); |
| 256 ExternalSyncIO(); | 263 ExternalSyncIO(); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 277 CallbackTest callback8(8, false); | 284 CallbackTest callback8(8, false); |
| 278 CallbackTest callback9(9, false); | 285 CallbackTest callback9(9, false); |
| 279 | 286 |
| 280 g_cache_tests_error = false; | 287 g_cache_tests_error = false; |
| 281 g_cache_tests_max_id = 0; | 288 g_cache_tests_max_id = 0; |
| 282 g_cache_tests_received = 0; | 289 g_cache_tests_received = 0; |
| 283 int expected = 0; | 290 int expected = 0; |
| 284 | 291 |
| 285 MessageLoopHelper helper; | 292 MessageLoopHelper helper; |
| 286 | 293 |
| 287 char buffer1[17000], buffer2[25000], buffer3[25000]; | 294 const int kSize1 = 17000; |
| 288 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 295 const int kSize2 = 25000; |
| 289 CacheTestFillBuffer(buffer2, sizeof(buffer2), false); | 296 const int kSize3 = 25000; |
| 290 CacheTestFillBuffer(buffer3, sizeof(buffer3), false); | 297 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize1); |
| 291 base::strlcpy(buffer1, "the data", arraysize(buffer1)); | 298 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize2); |
| 292 int ret = entry1->WriteData(0, 0, buffer1, sizeof(buffer1), &callback1, | 299 scoped_refptr<net::IOBuffer> buffer3 = new net::IOBuffer(kSize3); |
| 293 false); | 300 CacheTestFillBuffer(buffer1->data(), kSize1, false); |
| 301 CacheTestFillBuffer(buffer2->data(), kSize2, false); |
| 302 CacheTestFillBuffer(buffer3->data(), kSize3, false); |
| 303 base::strlcpy(buffer1->data(), "the data", kSize1); |
| 304 int ret = entry1->WriteData(0, 0, buffer1, kSize1, &callback1, false); |
| 294 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); | 305 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); |
| 295 if (net::ERR_IO_PENDING == ret) | 306 if (net::ERR_IO_PENDING == ret) |
| 296 expected++; | 307 expected++; |
| 297 | 308 |
| 298 g_cache_tests_max_id = 1; | 309 g_cache_tests_max_id = 1; |
| 299 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 310 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
| 300 | 311 |
| 301 memset(buffer2, 0, sizeof(buffer1)); | 312 memset(buffer2->data(), 0, kSize1); |
| 302 ret = entry1->ReadData(0, 0, buffer2, sizeof(buffer1), &callback2); | 313 ret = entry1->ReadData(0, 0, buffer2, kSize1, &callback2); |
| 303 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); | 314 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); |
| 304 if (net::ERR_IO_PENDING == ret) | 315 if (net::ERR_IO_PENDING == ret) |
| 305 expected++; | 316 expected++; |
| 306 | 317 |
| 307 g_cache_tests_max_id = 2; | 318 g_cache_tests_max_id = 2; |
| 308 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 319 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
| 309 EXPECT_STREQ("the data", buffer1); | 320 EXPECT_STREQ("the data", buffer1->data()); |
| 310 | 321 |
| 311 base::strlcpy(buffer2, "The really big data goes here", arraysize(buffer2)); | 322 base::strlcpy(buffer2->data(), "The really big data goes here", kSize2); |
| 312 ret = entry1->WriteData(1, 10000, buffer2, sizeof(buffer2), &callback3, | 323 ret = entry1->WriteData(1, 10000, buffer2, kSize2, &callback3, false); |
| 313 false); | |
| 314 EXPECT_TRUE(25000 == ret || net::ERR_IO_PENDING == ret); | 324 EXPECT_TRUE(25000 == ret || net::ERR_IO_PENDING == ret); |
| 315 if (net::ERR_IO_PENDING == ret) | 325 if (net::ERR_IO_PENDING == ret) |
| 316 expected++; | 326 expected++; |
| 317 | 327 |
| 318 g_cache_tests_max_id = 3; | 328 g_cache_tests_max_id = 3; |
| 319 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 329 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
| 320 | 330 |
| 321 memset(buffer3, 0, sizeof(buffer3)); | 331 memset(buffer3->data(), 0, kSize3); |
| 322 ret = entry1->ReadData(1, 10011, buffer3, sizeof(buffer3), &callback4); | 332 ret = entry1->ReadData(1, 10011, buffer3, kSize3, &callback4); |
| 323 EXPECT_TRUE(24989 == ret || net::ERR_IO_PENDING == ret); | 333 EXPECT_TRUE(24989 == ret || net::ERR_IO_PENDING == ret); |
| 324 if (net::ERR_IO_PENDING == ret) | 334 if (net::ERR_IO_PENDING == ret) |
| 325 expected++; | 335 expected++; |
| 326 | 336 |
| 327 g_cache_tests_max_id = 4; | 337 g_cache_tests_max_id = 4; |
| 328 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 338 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
| 329 EXPECT_STREQ("big data goes here", buffer3); | 339 EXPECT_STREQ("big data goes here", buffer3->data()); |
| 330 ret = entry1->ReadData(1, 0, buffer2, sizeof(buffer2), &callback5); | 340 ret = entry1->ReadData(1, 0, buffer2, kSize2, &callback5); |
| 331 EXPECT_TRUE(25000 == ret || net::ERR_IO_PENDING == ret); | 341 EXPECT_TRUE(25000 == ret || net::ERR_IO_PENDING == ret); |
| 332 if (net::ERR_IO_PENDING == ret) | 342 if (net::ERR_IO_PENDING == ret) |
| 333 expected++; | 343 expected++; |
| 334 | 344 |
| 335 g_cache_tests_max_id = 5; | 345 g_cache_tests_max_id = 5; |
| 336 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 346 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
| 337 EXPECT_EQ(0, memcmp(buffer2, buffer2, 10000)); | 347 EXPECT_EQ(0, memcmp(buffer2->data(), buffer2->data(), 10000)); |
| 338 ret = entry1->ReadData(1, 30000, buffer2, sizeof(buffer2), &callback6); | 348 ret = entry1->ReadData(1, 30000, buffer2, kSize2, &callback6); |
| 339 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); | 349 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); |
| 340 if (net::ERR_IO_PENDING == ret) | 350 if (net::ERR_IO_PENDING == ret) |
| 341 expected++; | 351 expected++; |
| 342 | 352 |
| 343 EXPECT_EQ(0, entry1->ReadData(1, 35000, buffer2, sizeof(buffer2), | 353 EXPECT_EQ(0, entry1->ReadData(1, 35000, buffer2, kSize2, &callback7)); |
| 344 &callback7)); | 354 ret = entry1->ReadData(1, 0, buffer1, kSize1, &callback8); |
| 345 ret = entry1->ReadData(1, 0, buffer1, sizeof(buffer1), &callback8); | |
| 346 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); | 355 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); |
| 347 if (net::ERR_IO_PENDING == ret) | 356 if (net::ERR_IO_PENDING == ret) |
| 348 expected++; | 357 expected++; |
| 349 ret = entry1->WriteData(1, 20000, buffer1, sizeof(buffer1), &callback9, | 358 ret = entry1->WriteData(1, 20000, buffer1, kSize1, &callback9, false); |
| 350 false); | |
| 351 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); | 359 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); |
| 352 if (net::ERR_IO_PENDING == ret) | 360 if (net::ERR_IO_PENDING == ret) |
| 353 expected++; | 361 expected++; |
| 354 EXPECT_EQ(37000, entry1->GetDataSize(1)); | 362 EXPECT_EQ(37000, entry1->GetDataSize(1)); |
| 355 | 363 |
| 356 g_cache_tests_max_id = 9; | 364 g_cache_tests_max_id = 9; |
| 357 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 365 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
| 358 | 366 |
| 359 EXPECT_FALSE(g_cache_tests_error); | 367 EXPECT_FALSE(g_cache_tests_error); |
| 360 EXPECT_EQ(expected, g_cache_tests_received); | 368 EXPECT_EQ(expected, g_cache_tests_received); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 374 InitCache(); | 382 InitCache(); |
| 375 ExternalAsyncIO(); | 383 ExternalAsyncIO(); |
| 376 } | 384 } |
| 377 | 385 |
| 378 void DiskCacheEntryTest::StreamAccess() { | 386 void DiskCacheEntryTest::StreamAccess() { |
| 379 disk_cache::Entry *entry = NULL; | 387 disk_cache::Entry *entry = NULL; |
| 380 ASSERT_TRUE(cache_->CreateEntry("the first key", &entry)); | 388 ASSERT_TRUE(cache_->CreateEntry("the first key", &entry)); |
| 381 ASSERT_TRUE(NULL != entry); | 389 ASSERT_TRUE(NULL != entry); |
| 382 | 390 |
| 383 const int kBufferSize = 1024; | 391 const int kBufferSize = 1024; |
| 384 char buffer1[kBufferSize]; | 392 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kBufferSize); |
| 385 char buffer2[kBufferSize]; | 393 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kBufferSize); |
| 386 | 394 |
| 387 const int kNumStreams = 3; | 395 const int kNumStreams = 3; |
| 388 for (int i = 0; i < kNumStreams; i++) { | 396 for (int i = 0; i < kNumStreams; i++) { |
| 389 CacheTestFillBuffer(buffer1, kBufferSize, false); | 397 CacheTestFillBuffer(buffer1->data(), kBufferSize, false); |
| 390 EXPECT_EQ(kBufferSize, entry->WriteData(i, 0, buffer1, kBufferSize, NULL, | 398 EXPECT_EQ(kBufferSize, entry->WriteData(i, 0, buffer1, kBufferSize, NULL, |
| 391 false)); | 399 false)); |
| 392 memset(buffer2, 0, kBufferSize); | 400 memset(buffer2->data(), 0, kBufferSize); |
| 393 EXPECT_EQ(kBufferSize, entry->ReadData(i, 0, buffer2, kBufferSize, NULL)); | 401 EXPECT_EQ(kBufferSize, entry->ReadData(i, 0, buffer2, kBufferSize, NULL)); |
| 394 EXPECT_EQ(0, memcmp(buffer1, buffer2, kBufferSize)); | 402 EXPECT_EQ(0, memcmp(buffer1->data(), buffer2->data(), kBufferSize)); |
| 395 } | 403 } |
| 396 | 404 |
| 397 EXPECT_EQ(net::ERR_INVALID_ARGUMENT, | 405 EXPECT_EQ(net::ERR_INVALID_ARGUMENT, |
| 398 entry->ReadData(kNumStreams, 0, buffer1, kBufferSize, NULL)); | 406 entry->ReadData(kNumStreams, 0, buffer1, kBufferSize, NULL)); |
| 399 entry->Close(); | 407 entry->Close(); |
| 400 } | 408 } |
| 401 | 409 |
| 402 TEST_F(DiskCacheEntryTest, StreamAccess) { | 410 TEST_F(DiskCacheEntryTest, StreamAccess) { |
| 403 InitCache(); | 411 InitCache(); |
| 404 StreamAccess(); | 412 StreamAccess(); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 SetMemoryOnlyMode(); | 462 SetMemoryOnlyMode(); |
| 455 InitCache(); | 463 InitCache(); |
| 456 GetKey(); | 464 GetKey(); |
| 457 } | 465 } |
| 458 | 466 |
| 459 void DiskCacheEntryTest::GrowData() { | 467 void DiskCacheEntryTest::GrowData() { |
| 460 std::string key1("the first key"); | 468 std::string key1("the first key"); |
| 461 disk_cache::Entry *entry1, *entry2; | 469 disk_cache::Entry *entry1, *entry2; |
| 462 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); | 470 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
| 463 | 471 |
| 464 char buffer1[20000]; | 472 const int kSize = 20000; |
| 465 char buffer2[20000]; | 473 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize); |
| 466 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 474 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize); |
| 467 memset(buffer2, 0, sizeof(buffer2)); | 475 CacheTestFillBuffer(buffer1->data(), kSize, false); |
| 476 memset(buffer2->data(), 0, kSize); |
| 468 | 477 |
| 469 base::strlcpy(buffer1, "the data", arraysize(buffer1)); | 478 base::strlcpy(buffer1->data(), "the data", kSize); |
| 470 EXPECT_EQ(10, entry1->WriteData(0, 0, buffer1, 10, NULL, false)); | 479 EXPECT_EQ(10, entry1->WriteData(0, 0, buffer1, 10, NULL, false)); |
| 471 EXPECT_EQ(10, entry1->ReadData(0, 0, buffer2, 10, NULL)); | 480 EXPECT_EQ(10, entry1->ReadData(0, 0, buffer2, 10, NULL)); |
| 472 EXPECT_STREQ("the data", buffer2); | 481 EXPECT_STREQ("the data", buffer2->data()); |
| 473 EXPECT_EQ(10, entry1->GetDataSize(0)); | 482 EXPECT_EQ(10, entry1->GetDataSize(0)); |
| 474 | 483 |
| 475 EXPECT_EQ(2000, entry1->WriteData(0, 0, buffer1, 2000, NULL, false)); | 484 EXPECT_EQ(2000, entry1->WriteData(0, 0, buffer1, 2000, NULL, false)); |
| 476 EXPECT_EQ(2000, entry1->GetDataSize(0)); | 485 EXPECT_EQ(2000, entry1->GetDataSize(0)); |
| 477 EXPECT_EQ(2000, entry1->ReadData(0, 0, buffer2, 2000, NULL)); | 486 EXPECT_EQ(2000, entry1->ReadData(0, 0, buffer2, 2000, NULL)); |
| 478 EXPECT_TRUE(!memcmp(buffer1, buffer2, 2000)); | 487 EXPECT_TRUE(!memcmp(buffer1->data(), buffer2->data(), 2000)); |
| 479 | 488 |
| 480 EXPECT_EQ(20000, entry1->WriteData(0, 0, buffer1, sizeof(buffer1), NULL, | 489 EXPECT_EQ(20000, entry1->WriteData(0, 0, buffer1, kSize, NULL, false)); |
| 481 false)); | |
| 482 EXPECT_EQ(20000, entry1->GetDataSize(0)); | 490 EXPECT_EQ(20000, entry1->GetDataSize(0)); |
| 483 EXPECT_EQ(20000, entry1->ReadData(0, 0, buffer2, sizeof(buffer2), NULL)); | 491 EXPECT_EQ(20000, entry1->ReadData(0, 0, buffer2, kSize, NULL)); |
| 484 EXPECT_TRUE(!memcmp(buffer1, buffer2, sizeof(buffer1))); | 492 EXPECT_TRUE(!memcmp(buffer1->data(), buffer2->data(), kSize)); |
| 485 entry1->Close(); | 493 entry1->Close(); |
| 486 | 494 |
| 487 memset(buffer2, 0, sizeof(buffer2)); | 495 memset(buffer2->data(), 0, kSize); |
| 488 ASSERT_TRUE(cache_->CreateEntry("Second key", &entry2)); | 496 ASSERT_TRUE(cache_->CreateEntry("Second key", &entry2)); |
| 489 EXPECT_EQ(10, entry2->WriteData(0, 0, buffer1, 10, NULL, false)); | 497 EXPECT_EQ(10, entry2->WriteData(0, 0, buffer1, 10, NULL, false)); |
| 490 EXPECT_EQ(10, entry2->GetDataSize(0)); | 498 EXPECT_EQ(10, entry2->GetDataSize(0)); |
| 491 entry2->Close(); | 499 entry2->Close(); |
| 492 | 500 |
| 493 // Go from an internal address to a bigger block size. | 501 // Go from an internal address to a bigger block size. |
| 494 ASSERT_TRUE(cache_->OpenEntry("Second key", &entry2)); | 502 ASSERT_TRUE(cache_->OpenEntry("Second key", &entry2)); |
| 495 EXPECT_EQ(2000, entry2->WriteData(0, 0, buffer1, 2000, NULL, false)); | 503 EXPECT_EQ(2000, entry2->WriteData(0, 0, buffer1, 2000, NULL, false)); |
| 496 EXPECT_EQ(2000, entry2->GetDataSize(0)); | 504 EXPECT_EQ(2000, entry2->GetDataSize(0)); |
| 497 EXPECT_EQ(2000, entry2->ReadData(0, 0, buffer2, 2000, NULL)); | 505 EXPECT_EQ(2000, entry2->ReadData(0, 0, buffer2, 2000, NULL)); |
| 498 EXPECT_TRUE(!memcmp(buffer1, buffer2, 2000)); | 506 EXPECT_TRUE(!memcmp(buffer1->data(), buffer2->data(), 2000)); |
| 499 entry2->Close(); | 507 entry2->Close(); |
| 500 memset(buffer2, 0, sizeof(buffer2)); | 508 memset(buffer2->data(), 0, kSize); |
| 501 | 509 |
| 502 // Go from an internal address to an external one. | 510 // Go from an internal address to an external one. |
| 503 ASSERT_TRUE(cache_->OpenEntry("Second key", &entry2)); | 511 ASSERT_TRUE(cache_->OpenEntry("Second key", &entry2)); |
| 504 EXPECT_EQ(20000, entry2->WriteData(0, 0, buffer1, sizeof(buffer1), NULL, | 512 EXPECT_EQ(20000, entry2->WriteData(0, 0, buffer1, kSize, NULL, false)); |
| 505 false)); | |
| 506 EXPECT_EQ(20000, entry2->GetDataSize(0)); | 513 EXPECT_EQ(20000, entry2->GetDataSize(0)); |
| 507 EXPECT_EQ(20000, entry2->ReadData(0, 0, buffer2, sizeof(buffer2), NULL)); | 514 EXPECT_EQ(20000, entry2->ReadData(0, 0, buffer2, kSize, NULL)); |
| 508 EXPECT_TRUE(!memcmp(buffer1, buffer2, sizeof(buffer1))); | 515 EXPECT_TRUE(!memcmp(buffer1->data(), buffer2->data(), kSize)); |
| 509 entry2->Close(); | 516 entry2->Close(); |
| 510 } | 517 } |
| 511 | 518 |
| 512 TEST_F(DiskCacheEntryTest, GrowData) { | 519 TEST_F(DiskCacheEntryTest, GrowData) { |
| 513 InitCache(); | 520 InitCache(); |
| 514 GrowData(); | 521 GrowData(); |
| 515 } | 522 } |
| 516 | 523 |
| 517 TEST_F(DiskCacheEntryTest, MemoryOnlyGrowData) { | 524 TEST_F(DiskCacheEntryTest, MemoryOnlyGrowData) { |
| 518 SetMemoryOnlyMode(); | 525 SetMemoryOnlyMode(); |
| 519 InitCache(); | 526 InitCache(); |
| 520 GrowData(); | 527 GrowData(); |
| 521 } | 528 } |
| 522 | 529 |
| 523 void DiskCacheEntryTest::TruncateData() { | 530 void DiskCacheEntryTest::TruncateData() { |
| 524 std::string key1("the first key"); | 531 std::string key1("the first key"); |
| 525 disk_cache::Entry *entry1; | 532 disk_cache::Entry *entry1; |
| 526 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); | 533 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
| 527 | 534 |
| 528 char buffer1[20000]; | 535 const int kSize1 = 20000; |
| 529 char buffer2[20000]; | 536 const int kSize2 = 20000; |
| 537 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize1); |
| 538 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize2); |
| 530 | 539 |
| 531 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 540 CacheTestFillBuffer(buffer1->data(), kSize1, false); |
| 532 memset(buffer2, 0, sizeof(buffer2)); | 541 memset(buffer2->data(), 0, kSize2); |
| 533 | 542 |
| 534 // Simple truncation: | 543 // Simple truncation: |
| 535 EXPECT_EQ(200, entry1->WriteData(0, 0, buffer1, 200, NULL, false)); | 544 EXPECT_EQ(200, entry1->WriteData(0, 0, buffer1, 200, NULL, false)); |
| 536 EXPECT_EQ(200, entry1->GetDataSize(0)); | 545 EXPECT_EQ(200, entry1->GetDataSize(0)); |
| 537 EXPECT_EQ(100, entry1->WriteData(0, 0, buffer1, 100, NULL, false)); | 546 EXPECT_EQ(100, entry1->WriteData(0, 0, buffer1, 100, NULL, false)); |
| 538 EXPECT_EQ(200, entry1->GetDataSize(0)); | 547 EXPECT_EQ(200, entry1->GetDataSize(0)); |
| 539 EXPECT_EQ(100, entry1->WriteData(0, 0, buffer1, 100, NULL, true)); | 548 EXPECT_EQ(100, entry1->WriteData(0, 0, buffer1, 100, NULL, true)); |
| 540 EXPECT_EQ(100, entry1->GetDataSize(0)); | 549 EXPECT_EQ(100, entry1->GetDataSize(0)); |
| 541 EXPECT_EQ(0, entry1->WriteData(0, 50, buffer1, 0, NULL, true)); | 550 EXPECT_EQ(0, entry1->WriteData(0, 50, buffer1, 0, NULL, true)); |
| 542 EXPECT_EQ(50, entry1->GetDataSize(0)); | 551 EXPECT_EQ(50, entry1->GetDataSize(0)); |
| 543 EXPECT_EQ(0, entry1->WriteData(0, 0, buffer1, 0, NULL, true)); | 552 EXPECT_EQ(0, entry1->WriteData(0, 0, buffer1, 0, NULL, true)); |
| 544 EXPECT_EQ(0, entry1->GetDataSize(0)); | 553 EXPECT_EQ(0, entry1->GetDataSize(0)); |
| 545 entry1->Close(); | 554 entry1->Close(); |
| 546 ASSERT_TRUE(cache_->OpenEntry(key1, &entry1)); | 555 ASSERT_TRUE(cache_->OpenEntry(key1, &entry1)); |
| 547 | 556 |
| 548 // Go to an external file. | 557 // Go to an external file. |
| 549 EXPECT_EQ(20000, entry1->WriteData(0, 0, buffer1, 20000, NULL, true)); | 558 EXPECT_EQ(20000, entry1->WriteData(0, 0, buffer1, 20000, NULL, true)); |
| 550 EXPECT_EQ(20000, entry1->GetDataSize(0)); | 559 EXPECT_EQ(20000, entry1->GetDataSize(0)); |
| 551 EXPECT_EQ(20000, entry1->ReadData(0, 0, buffer2, 20000, NULL)); | 560 EXPECT_EQ(20000, entry1->ReadData(0, 0, buffer2, 20000, NULL)); |
| 552 EXPECT_TRUE(!memcmp(buffer1, buffer2, 20000)); | 561 EXPECT_TRUE(!memcmp(buffer1->data(), buffer2->data(), 20000)); |
| 553 memset(buffer2, 0, sizeof(buffer2)); | 562 memset(buffer2->data(), 0, kSize2); |
| 554 | 563 |
| 555 // External file truncation | 564 // External file truncation |
| 556 EXPECT_EQ(18000, entry1->WriteData(0, 0, buffer1, 18000, NULL, false)); | 565 EXPECT_EQ(18000, entry1->WriteData(0, 0, buffer1, 18000, NULL, false)); |
| 557 EXPECT_EQ(20000, entry1->GetDataSize(0)); | 566 EXPECT_EQ(20000, entry1->GetDataSize(0)); |
| 558 EXPECT_EQ(18000, entry1->WriteData(0, 0, buffer1, 18000, NULL, true)); | 567 EXPECT_EQ(18000, entry1->WriteData(0, 0, buffer1, 18000, NULL, true)); |
| 559 EXPECT_EQ(18000, entry1->GetDataSize(0)); | 568 EXPECT_EQ(18000, entry1->GetDataSize(0)); |
| 560 EXPECT_EQ(0, entry1->WriteData(0, 17500, buffer1, 0, NULL, true)); | 569 EXPECT_EQ(0, entry1->WriteData(0, 17500, buffer1, 0, NULL, true)); |
| 561 EXPECT_EQ(17500, entry1->GetDataSize(0)); | 570 EXPECT_EQ(17500, entry1->GetDataSize(0)); |
| 562 | 571 |
| 563 // And back to an internal block. | 572 // And back to an internal block. |
| 564 EXPECT_EQ(600, entry1->WriteData(0, 1000, buffer1, 600, NULL, true)); | 573 EXPECT_EQ(600, entry1->WriteData(0, 1000, buffer1, 600, NULL, true)); |
| 565 EXPECT_EQ(1600, entry1->GetDataSize(0)); | 574 EXPECT_EQ(1600, entry1->GetDataSize(0)); |
| 566 EXPECT_EQ(600, entry1->ReadData(0, 1000, buffer2, 600, NULL)); | 575 EXPECT_EQ(600, entry1->ReadData(0, 1000, buffer2, 600, NULL)); |
| 567 EXPECT_TRUE(!memcmp(buffer1, buffer2, 600)); | 576 EXPECT_TRUE(!memcmp(buffer1->data(), buffer2->data(), 600)); |
| 568 EXPECT_EQ(1000, entry1->ReadData(0, 0, buffer2, 1000, NULL)); | 577 EXPECT_EQ(1000, entry1->ReadData(0, 0, buffer2, 1000, NULL)); |
| 569 EXPECT_TRUE(!memcmp(buffer1, buffer2, 1000)) << "Preserves previous data"; | 578 EXPECT_TRUE(!memcmp(buffer1->data(), buffer2->data(), 1000)) << |
| 579 "Preserves previous data"; |
| 570 | 580 |
| 571 // Go from external file to zero length. | 581 // Go from external file to zero length. |
| 572 EXPECT_EQ(20000, entry1->WriteData(0, 0, buffer1, 20000, NULL, true)); | 582 EXPECT_EQ(20000, entry1->WriteData(0, 0, buffer1, 20000, NULL, true)); |
| 573 EXPECT_EQ(20000, entry1->GetDataSize(0)); | 583 EXPECT_EQ(20000, entry1->GetDataSize(0)); |
| 574 EXPECT_EQ(0, entry1->WriteData(0, 0, buffer1, 0, NULL, true)); | 584 EXPECT_EQ(0, entry1->WriteData(0, 0, buffer1, 0, NULL, true)); |
| 575 EXPECT_EQ(0, entry1->GetDataSize(0)); | 585 EXPECT_EQ(0, entry1->GetDataSize(0)); |
| 576 | 586 |
| 577 entry1->Close(); | 587 entry1->Close(); |
| 578 } | 588 } |
| 579 | 589 |
| 580 TEST_F(DiskCacheEntryTest, TruncateData) { | 590 TEST_F(DiskCacheEntryTest, TruncateData) { |
| 581 InitCache(); | 591 InitCache(); |
| 582 TruncateData(); | 592 TruncateData(); |
| 583 | 593 |
| 584 // We generate asynchronous IO that is not really tracked until completion | 594 // We generate asynchronous IO that is not really tracked until completion |
| 585 // so we just wait here before running the next test. | 595 // so we just wait here before running the next test. |
| 586 MessageLoopHelper helper; | 596 MessageLoopHelper helper; |
| 587 helper.WaitUntilCacheIoFinished(1); | 597 helper.WaitUntilCacheIoFinished(1); |
| 588 } | 598 } |
| 589 | 599 |
| 590 TEST_F(DiskCacheEntryTest, MemoryOnlyTruncateData) { | 600 TEST_F(DiskCacheEntryTest, MemoryOnlyTruncateData) { |
| 591 SetMemoryOnlyMode(); | 601 SetMemoryOnlyMode(); |
| 592 InitCache(); | 602 InitCache(); |
| 593 TruncateData(); | 603 TruncateData(); |
| 594 } | 604 } |
| 595 | 605 |
| 606 void DiskCacheEntryTest::ZeroLengthIO() { |
| 607 std::string key1("the first key"); |
| 608 disk_cache::Entry *entry1; |
| 609 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
| 610 |
| 611 EXPECT_EQ(0, entry1->ReadData(0, 0, NULL, 0, NULL)); |
| 612 EXPECT_EQ(0, entry1->WriteData(0, 0, NULL, 0, NULL, false)); |
| 613 |
| 614 // This write should extend the entry. |
| 615 EXPECT_EQ(0, entry1->WriteData(0, 1000, NULL, 0, NULL, false)); |
| 616 EXPECT_EQ(0, entry1->ReadData(0, 500, NULL, 0, NULL)); |
| 617 EXPECT_EQ(0, entry1->ReadData(0, 2000, NULL, 0, NULL)); |
| 618 EXPECT_EQ(1000, entry1->GetDataSize(0)); |
| 619 entry1->Close(); |
| 620 } |
| 621 |
| 622 TEST_F(DiskCacheEntryTest, ZeroLengthIO) { |
| 623 InitCache(); |
| 624 ZeroLengthIO(); |
| 625 } |
| 626 |
| 627 TEST_F(DiskCacheEntryTest, MemoryOnlyZeroLengthIO) { |
| 628 SetMemoryOnlyMode(); |
| 629 InitCache(); |
| 630 ZeroLengthIO(); |
| 631 } |
| 632 |
| 596 // Write more than the total cache capacity but to a single entry. |size| is the | 633 // Write more than the total cache capacity but to a single entry. |size| is the |
| 597 // amount of bytes to write each time. | 634 // amount of bytes to write each time. |
| 598 void DiskCacheEntryTest::ReuseEntry(int size) { | 635 void DiskCacheEntryTest::ReuseEntry(int size) { |
| 599 std::string key1("the first key"); | 636 std::string key1("the first key"); |
| 600 disk_cache::Entry *entry; | 637 disk_cache::Entry *entry; |
| 601 ASSERT_TRUE(cache_->CreateEntry(key1, &entry)); | 638 ASSERT_TRUE(cache_->CreateEntry(key1, &entry)); |
| 602 | 639 |
| 603 entry->Close(); | 640 entry->Close(); |
| 604 std::string key2("the second key"); | 641 std::string key2("the second key"); |
| 605 ASSERT_TRUE(cache_->CreateEntry(key2, &entry)); | 642 ASSERT_TRUE(cache_->CreateEntry(key2, &entry)); |
| 606 | 643 |
| 607 scoped_array<char> buffer(new char[size]); | 644 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(size); |
| 608 CacheTestFillBuffer(buffer.get(), size, false); | 645 CacheTestFillBuffer(buffer->data(), size, false); |
| 609 | 646 |
| 610 for (int i = 0; i < 15; i++) { | 647 for (int i = 0; i < 15; i++) { |
| 611 EXPECT_EQ(0, entry->WriteData(0, 0, buffer.get(), 0, NULL, true)); | 648 EXPECT_EQ(0, entry->WriteData(0, 0, buffer, 0, NULL, true)); |
| 612 EXPECT_EQ(size, entry->WriteData(0, 0, buffer.get(), size, NULL, false)); | 649 EXPECT_EQ(size, entry->WriteData(0, 0, buffer, size, NULL, false)); |
| 613 entry->Close(); | 650 entry->Close(); |
| 614 ASSERT_TRUE(cache_->OpenEntry(key2, &entry)); | 651 ASSERT_TRUE(cache_->OpenEntry(key2, &entry)); |
| 615 } | 652 } |
| 616 | 653 |
| 617 entry->Close(); | 654 entry->Close(); |
| 618 ASSERT_TRUE(cache_->OpenEntry(key1, &entry)) << "have not evicted this entry"; | 655 ASSERT_TRUE(cache_->OpenEntry(key1, &entry)) << "have not evicted this entry"; |
| 619 entry->Close(); | 656 entry->Close(); |
| 620 } | 657 } |
| 621 | 658 |
| 622 TEST_F(DiskCacheEntryTest, ReuseExternalEntry) { | 659 TEST_F(DiskCacheEntryTest, ReuseExternalEntry) { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 648 InitCache(); | 685 InitCache(); |
| 649 ReuseEntry(10 * 1024); | 686 ReuseEntry(10 * 1024); |
| 650 } | 687 } |
| 651 | 688 |
| 652 // Reading somewhere that was not written should return zeros. | 689 // Reading somewhere that was not written should return zeros. |
| 653 void DiskCacheEntryTest::InvalidData() { | 690 void DiskCacheEntryTest::InvalidData() { |
| 654 std::string key1("the first key"); | 691 std::string key1("the first key"); |
| 655 disk_cache::Entry *entry1; | 692 disk_cache::Entry *entry1; |
| 656 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); | 693 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
| 657 | 694 |
| 658 char buffer1[20000]; | 695 const int kSize1 = 20000; |
| 659 char buffer2[20000]; | 696 const int kSize2 = 20000; |
| 660 char buffer3[20000]; | 697 const int kSize3 = 20000; |
| 698 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize1); |
| 699 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize2); |
| 700 scoped_refptr<net::IOBuffer> buffer3 = new net::IOBuffer(kSize3); |
| 661 | 701 |
| 662 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 702 CacheTestFillBuffer(buffer1->data(), kSize1, false); |
| 663 memset(buffer2, 0, sizeof(buffer2)); | 703 memset(buffer2->data(), 0, kSize2); |
| 664 | 704 |
| 665 // Simple data grow: | 705 // Simple data grow: |
| 666 EXPECT_EQ(200, entry1->WriteData(0, 400, buffer1, 200, NULL, false)); | 706 EXPECT_EQ(200, entry1->WriteData(0, 400, buffer1, 200, NULL, false)); |
| 667 EXPECT_EQ(600, entry1->GetDataSize(0)); | 707 EXPECT_EQ(600, entry1->GetDataSize(0)); |
| 668 EXPECT_EQ(100, entry1->ReadData(0, 300, buffer3, 100, NULL)); | 708 EXPECT_EQ(100, entry1->ReadData(0, 300, buffer3, 100, NULL)); |
| 669 EXPECT_TRUE(!memcmp(buffer3, buffer2, 100)); | 709 EXPECT_TRUE(!memcmp(buffer3->data(), buffer2->data(), 100)); |
| 670 entry1->Close(); | 710 entry1->Close(); |
| 671 ASSERT_TRUE(cache_->OpenEntry(key1, &entry1)); | 711 ASSERT_TRUE(cache_->OpenEntry(key1, &entry1)); |
| 672 | 712 |
| 673 // The entry is now on disk. Load it and extend it. | 713 // The entry is now on disk. Load it and extend it. |
| 674 EXPECT_EQ(200, entry1->WriteData(0, 800, buffer1, 200, NULL, false)); | 714 EXPECT_EQ(200, entry1->WriteData(0, 800, buffer1, 200, NULL, false)); |
| 675 EXPECT_EQ(1000, entry1->GetDataSize(0)); | 715 EXPECT_EQ(1000, entry1->GetDataSize(0)); |
| 676 EXPECT_EQ(100, entry1->ReadData(0, 700, buffer3, 100, NULL)); | 716 EXPECT_EQ(100, entry1->ReadData(0, 700, buffer3, 100, NULL)); |
| 677 EXPECT_TRUE(!memcmp(buffer3, buffer2, 100)); | 717 EXPECT_TRUE(!memcmp(buffer3->data(), buffer2->data(), 100)); |
| 678 entry1->Close(); | 718 entry1->Close(); |
| 679 ASSERT_TRUE(cache_->OpenEntry(key1, &entry1)); | 719 ASSERT_TRUE(cache_->OpenEntry(key1, &entry1)); |
| 680 | 720 |
| 681 // This time using truncate. | 721 // This time using truncate. |
| 682 EXPECT_EQ(200, entry1->WriteData(0, 1800, buffer1, 200, NULL, true)); | 722 EXPECT_EQ(200, entry1->WriteData(0, 1800, buffer1, 200, NULL, true)); |
| 683 EXPECT_EQ(2000, entry1->GetDataSize(0)); | 723 EXPECT_EQ(2000, entry1->GetDataSize(0)); |
| 684 EXPECT_EQ(100, entry1->ReadData(0, 1500, buffer3, 100, NULL)); | 724 EXPECT_EQ(100, entry1->ReadData(0, 1500, buffer3, 100, NULL)); |
| 685 EXPECT_TRUE(!memcmp(buffer3, buffer2, 100)); | 725 EXPECT_TRUE(!memcmp(buffer3->data(), buffer2->data(), 100)); |
| 686 | 726 |
| 687 // Go to an external file. | 727 // Go to an external file. |
| 688 EXPECT_EQ(200, entry1->WriteData(0, 19800, buffer1, 200, NULL, false)); | 728 EXPECT_EQ(200, entry1->WriteData(0, 19800, buffer1, 200, NULL, false)); |
| 689 EXPECT_EQ(20000, entry1->GetDataSize(0)); | 729 EXPECT_EQ(20000, entry1->GetDataSize(0)); |
| 690 EXPECT_EQ(4000, entry1->ReadData(0, 14000, buffer3, 4000, NULL)); | 730 EXPECT_EQ(4000, entry1->ReadData(0, 14000, buffer3, 4000, NULL)); |
| 691 EXPECT_TRUE(!memcmp(buffer3, buffer2, 4000)); | 731 EXPECT_TRUE(!memcmp(buffer3->data(), buffer2->data(), 4000)); |
| 692 | 732 |
| 693 // And back to an internal block. | 733 // And back to an internal block. |
| 694 EXPECT_EQ(600, entry1->WriteData(0, 1000, buffer1, 600, NULL, true)); | 734 EXPECT_EQ(600, entry1->WriteData(0, 1000, buffer1, 600, NULL, true)); |
| 695 EXPECT_EQ(1600, entry1->GetDataSize(0)); | 735 EXPECT_EQ(1600, entry1->GetDataSize(0)); |
| 696 EXPECT_EQ(600, entry1->ReadData(0, 1000, buffer3, 600, NULL)); | 736 EXPECT_EQ(600, entry1->ReadData(0, 1000, buffer3, 600, NULL)); |
| 697 EXPECT_TRUE(!memcmp(buffer3, buffer1, 600)); | 737 EXPECT_TRUE(!memcmp(buffer3->data(), buffer1->data(), 600)); |
| 698 | 738 |
| 699 // Extend it again. | 739 // Extend it again. |
| 700 EXPECT_EQ(600, entry1->WriteData(0, 2000, buffer1, 600, NULL, false)); | 740 EXPECT_EQ(600, entry1->WriteData(0, 2000, buffer1, 600, NULL, false)); |
| 701 EXPECT_EQ(2600, entry1->GetDataSize(0)); | 741 EXPECT_EQ(2600, entry1->GetDataSize(0)); |
| 702 EXPECT_EQ(200, entry1->ReadData(0, 1800, buffer3, 200, NULL)); | 742 EXPECT_EQ(200, entry1->ReadData(0, 1800, buffer3, 200, NULL)); |
| 703 EXPECT_TRUE(!memcmp(buffer3, buffer2, 200)); | 743 EXPECT_TRUE(!memcmp(buffer3->data(), buffer2->data(), 200)); |
| 704 | 744 |
| 705 // And again (with truncation flag). | 745 // And again (with truncation flag). |
| 706 EXPECT_EQ(600, entry1->WriteData(0, 3000, buffer1, 600, NULL, true)); | 746 EXPECT_EQ(600, entry1->WriteData(0, 3000, buffer1, 600, NULL, true)); |
| 707 EXPECT_EQ(3600, entry1->GetDataSize(0)); | 747 EXPECT_EQ(3600, entry1->GetDataSize(0)); |
| 708 EXPECT_EQ(200, entry1->ReadData(0, 2800, buffer3, 200, NULL)); | 748 EXPECT_EQ(200, entry1->ReadData(0, 2800, buffer3, 200, NULL)); |
| 709 EXPECT_TRUE(!memcmp(buffer3, buffer2, 200)); | 749 EXPECT_TRUE(!memcmp(buffer3->data(), buffer2->data(), 200)); |
| 710 | 750 |
| 711 entry1->Close(); | 751 entry1->Close(); |
| 712 } | 752 } |
| 713 | 753 |
| 714 TEST_F(DiskCacheEntryTest, InvalidData) { | 754 TEST_F(DiskCacheEntryTest, InvalidData) { |
| 715 InitCache(); | 755 InitCache(); |
| 716 InvalidData(); | 756 InvalidData(); |
| 717 } | 757 } |
| 718 | 758 |
| 719 TEST_F(DiskCacheEntryTest, MemoryOnlyInvalidData) { | 759 TEST_F(DiskCacheEntryTest, MemoryOnlyInvalidData) { |
| 720 SetMemoryOnlyMode(); | 760 SetMemoryOnlyMode(); |
| 721 InitCache(); | 761 InitCache(); |
| 722 InvalidData(); | 762 InvalidData(); |
| 723 } | 763 } |
| 724 | 764 |
| 725 void DiskCacheEntryTest::DoomEntry() { | 765 void DiskCacheEntryTest::DoomEntry() { |
| 726 std::string key1("the first key"); | 766 std::string key1("the first key"); |
| 727 disk_cache::Entry *entry1; | 767 disk_cache::Entry *entry1; |
| 728 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); | 768 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
| 729 entry1->Doom(); | 769 entry1->Doom(); |
| 730 entry1->Close(); | 770 entry1->Close(); |
| 731 | 771 |
| 732 char key_buffer[20000]; | 772 const int kSize = 20000; |
| 733 CacheTestFillBuffer(key_buffer, sizeof(key_buffer), true); | 773 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(kSize); |
| 734 key_buffer[19999] = '\0'; | 774 CacheTestFillBuffer(buffer->data(), kSize, true); |
| 775 buffer->data()[19999] = '\0'; |
| 735 | 776 |
| 736 key1 = key_buffer; | 777 key1 = buffer->data(); |
| 737 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); | 778 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
| 738 EXPECT_EQ(20000, entry1->WriteData(0, 0, key_buffer, 20000, NULL, false)); | 779 EXPECT_EQ(20000, entry1->WriteData(0, 0, buffer, kSize, NULL, false)); |
| 739 EXPECT_EQ(20000, entry1->WriteData(1, 0, key_buffer, 20000, NULL, false)); | 780 EXPECT_EQ(20000, entry1->WriteData(1, 0, buffer, kSize, NULL, false)); |
| 740 entry1->Doom(); | 781 entry1->Doom(); |
| 741 entry1->Close(); | 782 entry1->Close(); |
| 742 | 783 |
| 743 EXPECT_EQ(0, cache_->GetEntryCount()); | 784 EXPECT_EQ(0, cache_->GetEntryCount()); |
| 744 } | 785 } |
| 745 | 786 |
| 746 TEST_F(DiskCacheEntryTest, DoomEntry) { | 787 TEST_F(DiskCacheEntryTest, DoomEntry) { |
| 747 InitCache(); | 788 InitCache(); |
| 748 DoomEntry(); | 789 DoomEntry(); |
| 749 } | 790 } |
| 750 | 791 |
| 751 TEST_F(DiskCacheEntryTest, MemoryOnlyDoomEntry) { | 792 TEST_F(DiskCacheEntryTest, MemoryOnlyDoomEntry) { |
| 752 SetMemoryOnlyMode(); | 793 SetMemoryOnlyMode(); |
| 753 InitCache(); | 794 InitCache(); |
| 754 DoomEntry(); | 795 DoomEntry(); |
| 755 } | 796 } |
| 756 | 797 |
| 757 // Verify that basic operations work as expected with doomed entries. | 798 // Verify that basic operations work as expected with doomed entries. |
| 758 void DiskCacheEntryTest::DoomedEntry() { | 799 void DiskCacheEntryTest::DoomedEntry() { |
| 759 std::string key("the first key"); | 800 std::string key("the first key"); |
| 760 disk_cache::Entry *entry; | 801 disk_cache::Entry *entry; |
| 761 ASSERT_TRUE(cache_->CreateEntry(key, &entry)); | 802 ASSERT_TRUE(cache_->CreateEntry(key, &entry)); |
| 762 entry->Doom(); | 803 entry->Doom(); |
| 763 | 804 |
| 764 EXPECT_EQ(0, cache_->GetEntryCount()); | 805 EXPECT_EQ(0, cache_->GetEntryCount()); |
| 765 Time initial = Time::Now(); | 806 Time initial = Time::Now(); |
| 766 PlatformThread::Sleep(20); | 807 PlatformThread::Sleep(20); |
| 767 | 808 |
| 768 char buffer1[2000]; | 809 const int kSize1 = 2000; |
| 769 char buffer2[2000]; | 810 const int kSize2 = 2000; |
| 770 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 811 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize1); |
| 771 memset(buffer2, 0, sizeof(buffer2)); | 812 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize2); |
| 813 CacheTestFillBuffer(buffer1->data(), kSize1, false); |
| 814 memset(buffer2->data(), 0, kSize2); |
| 772 | 815 |
| 773 EXPECT_EQ(2000, entry->WriteData(0, 0, buffer1, 2000, NULL, false)); | 816 EXPECT_EQ(2000, entry->WriteData(0, 0, buffer1, 2000, NULL, false)); |
| 774 EXPECT_EQ(2000, entry->ReadData(0, 0, buffer2, 2000, NULL)); | 817 EXPECT_EQ(2000, entry->ReadData(0, 0, buffer2, 2000, NULL)); |
| 775 EXPECT_EQ(0, memcmp(buffer1, buffer2, sizeof(buffer1))); | 818 EXPECT_EQ(0, memcmp(buffer1->data(), buffer2->data(), kSize1)); |
| 776 EXPECT_TRUE(initial < entry->GetLastModified()); | 819 EXPECT_TRUE(initial < entry->GetLastModified()); |
| 777 EXPECT_TRUE(initial < entry->GetLastUsed()); | 820 EXPECT_TRUE(initial < entry->GetLastUsed()); |
| 778 | 821 |
| 779 entry->Close(); | 822 entry->Close(); |
| 780 } | 823 } |
| 781 | 824 |
| 782 TEST_F(DiskCacheEntryTest, DoomedEntry) { | 825 TEST_F(DiskCacheEntryTest, DoomedEntry) { |
| 783 InitCache(); | 826 InitCache(); |
| 784 DoomEntry(); | 827 DoomEntry(); |
| 785 } | 828 } |
| 786 | 829 |
| 787 TEST_F(DiskCacheEntryTest, MemoryOnlyDoomedEntry) { | 830 TEST_F(DiskCacheEntryTest, MemoryOnlyDoomedEntry) { |
| 788 SetMemoryOnlyMode(); | 831 SetMemoryOnlyMode(); |
| 789 InitCache(); | 832 InitCache(); |
| 790 DoomEntry(); | 833 DoomEntry(); |
| 791 } | 834 } |
| 792 | 835 |
| OLD | NEW |