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

Side by Side Diff: Source/core/fetch/MemoryCacheTest.cpp

Issue 346263003: Don't use the empty string as an url in MemoryCacheTest. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@kurlcrash_20140603
Patch Set: Created 6 years, 6 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 unified diff | Download patch
« no previous file with comments | « Source/core/fetch/MemoryCache.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013, Google Inc. All rights reserved. 2 * Copyright (c) 2013, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 TEST_F(MemoryCacheTest, VeryLargeResourceAccounting) 116 TEST_F(MemoryCacheTest, VeryLargeResourceAccounting)
117 { 117 {
118 const size_t sizeMax = ~static_cast<size_t>(0); 118 const size_t sizeMax = ~static_cast<size_t>(0);
119 const size_t totalCapacity = sizeMax / 4; 119 const size_t totalCapacity = sizeMax / 4;
120 const size_t minDeadCapacity = sizeMax / 16; 120 const size_t minDeadCapacity = sizeMax / 16;
121 const size_t maxDeadCapacity = sizeMax / 8; 121 const size_t maxDeadCapacity = sizeMax / 8;
122 const size_t resourceSize1 = sizeMax / 16; 122 const size_t resourceSize1 = sizeMax / 16;
123 const size_t resourceSize2 = sizeMax / 20; 123 const size_t resourceSize2 = sizeMax / 20;
124 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity ); 124 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity );
125 ResourcePtr<FakeResource> cachedResource = 125 ResourcePtr<FakeResource> cachedResource =
126 new FakeResource(ResourceRequest(""), Resource::Raw); 126 new FakeResource(ResourceRequest("http://test/resource"), Resource::Raw) ;
127 cachedResource->fakeEncodedSize(resourceSize1); 127 cachedResource->fakeEncodedSize(resourceSize1);
128 128
129 ASSERT_EQ(0u, memoryCache()->deadSize()); 129 ASSERT_EQ(0u, memoryCache()->deadSize());
130 ASSERT_EQ(0u, memoryCache()->liveSize()); 130 ASSERT_EQ(0u, memoryCache()->liveSize());
131 memoryCache()->add(cachedResource.get()); 131 memoryCache()->add(cachedResource.get());
132 ASSERT_EQ(cachedResource->size(), memoryCache()->deadSize()); 132 ASSERT_EQ(cachedResource->size(), memoryCache()->deadSize());
133 ASSERT_EQ(0u, memoryCache()->liveSize()); 133 ASSERT_EQ(0u, memoryCache()->liveSize());
134 134
135 MockImageResourceClient client; 135 MockImageResourceClient client;
136 cachedResource->addClient(&client); 136 cachedResource->addClient(&client);
(...skipping 10 matching lines...) Expand all
147 TEST_F(MemoryCacheTest, DeadResourceEviction) 147 TEST_F(MemoryCacheTest, DeadResourceEviction)
148 { 148 {
149 memoryCache()->setDelayBeforeLiveDecodedPrune(0); 149 memoryCache()->setDelayBeforeLiveDecodedPrune(0);
150 memoryCache()->setMaxPruneDeferralDelay(0); 150 memoryCache()->setMaxPruneDeferralDelay(0);
151 const unsigned totalCapacity = 1000000; 151 const unsigned totalCapacity = 1000000;
152 const unsigned minDeadCapacity = 0; 152 const unsigned minDeadCapacity = 0;
153 const unsigned maxDeadCapacity = 0; 153 const unsigned maxDeadCapacity = 0;
154 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity ); 154 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity );
155 155
156 Resource* cachedResource = 156 Resource* cachedResource =
157 new Resource(ResourceRequest(""), Resource::Raw); 157 new Resource(ResourceRequest("http://test/resource"), Resource::Raw);
158 const char data[5] = "abcd"; 158 const char data[5] = "abcd";
159 cachedResource->appendData(data, 3); 159 cachedResource->appendData(data, 3);
160 // The resource size has to be nonzero for this test to be meaningful, but 160 // The resource size has to be nonzero for this test to be meaningful, but
161 // we do not rely on it having any particular value. 161 // we do not rely on it having any particular value.
162 ASSERT_GT(cachedResource->size(), 0u); 162 ASSERT_GT(cachedResource->size(), 0u);
163 163
164 ASSERT_EQ(0u, memoryCache()->deadSize()); 164 ASSERT_EQ(0u, memoryCache()->deadSize());
165 ASSERT_EQ(0u, memoryCache()->liveSize()); 165 ASSERT_EQ(0u, memoryCache()->liveSize());
166 166
167 memoryCache()->add(cachedResource); 167 memoryCache()->add(cachedResource);
(...skipping 12 matching lines...) Expand all
180 memoryCache()->setDelayBeforeLiveDecodedPrune(0); 180 memoryCache()->setDelayBeforeLiveDecodedPrune(0);
181 const unsigned totalCapacity = 1; 181 const unsigned totalCapacity = 1;
182 const unsigned minDeadCapacity = 0; 182 const unsigned minDeadCapacity = 0;
183 const unsigned maxDeadCapacity = 0; 183 const unsigned maxDeadCapacity = 0;
184 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity ); 184 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity );
185 const char data[6] = "abcde"; 185 const char data[6] = "abcde";
186 Resource* cachedDeadResource = 186 Resource* cachedDeadResource =
187 new Resource(ResourceRequest("hhtp://foo"), Resource::Raw); 187 new Resource(ResourceRequest("hhtp://foo"), Resource::Raw);
188 cachedDeadResource->appendData(data, 3); 188 cachedDeadResource->appendData(data, 3);
189 ResourcePtr<Resource> cachedLiveResource = 189 ResourcePtr<Resource> cachedLiveResource =
190 new FakeDecodedResource(ResourceRequest(""), Resource::Raw); 190 new FakeDecodedResource(ResourceRequest("http://test/resource"), Resourc e::Raw);
191 MockImageResourceClient client; 191 MockImageResourceClient client;
192 cachedLiveResource->addClient(&client); 192 cachedLiveResource->addClient(&client);
193 cachedLiveResource->appendData(data, 4); 193 cachedLiveResource->appendData(data, 4);
194 194
195 class Task1 : public blink::WebThread::Task { 195 class Task1 : public blink::WebThread::Task {
196 public: 196 public:
197 Task1(const ResourcePtr<Resource>& live, Resource* dead) 197 Task1(const ResourcePtr<Resource>& live, Resource* dead)
198 : m_live(live) 198 : m_live(live)
199 , m_dead(dead) 199 , m_dead(dead)
200 { } 200 { }
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 // the total dead resource size is more than double the dead resource capacity. 255 // the total dead resource size is more than double the dead resource capacity.
256 TEST_F(MemoryCacheTest, ClientRemoval) 256 TEST_F(MemoryCacheTest, ClientRemoval)
257 { 257 {
258 const char data[6] = "abcde"; 258 const char data[6] = "abcde";
259 ResourcePtr<Resource> resource1 = 259 ResourcePtr<Resource> resource1 =
260 new FakeDecodedResource(ResourceRequest("http://foo.com"), Resource::Raw ); 260 new FakeDecodedResource(ResourceRequest("http://foo.com"), Resource::Raw );
261 MockImageResourceClient client1; 261 MockImageResourceClient client1;
262 resource1->addClient(&client1); 262 resource1->addClient(&client1);
263 resource1->appendData(data, 4); 263 resource1->appendData(data, 4);
264 ResourcePtr<Resource> resource2 = 264 ResourcePtr<Resource> resource2 =
265 new FakeDecodedResource(ResourceRequest(""), Resource::Raw); 265 new FakeDecodedResource(ResourceRequest("http://test/resource"), Resourc e::Raw);
266 MockImageResourceClient client2; 266 MockImageResourceClient client2;
267 resource2->addClient(&client2); 267 resource2->addClient(&client2);
268 resource2->appendData(data, 4); 268 resource2->appendData(data, 4);
269 269
270 const unsigned minDeadCapacity = 0; 270 const unsigned minDeadCapacity = 0;
271 const unsigned maxDeadCapacity = ((resource1->size() + resource2->size()) / 2) - 1; 271 const unsigned maxDeadCapacity = ((resource1->size() + resource2->size()) / 2) - 1;
272 const unsigned totalCapacity = maxDeadCapacity; 272 const unsigned totalCapacity = maxDeadCapacity;
273 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity ); 273 memoryCache()->setCapacities(minDeadCapacity, maxDeadCapacity, totalCapacity );
274 memoryCache()->add(resource1.get()); 274 memoryCache()->add(resource1.get());
275 memoryCache()->add(resource2.get()); 275 memoryCache()->add(resource2.get());
(...skipping 28 matching lines...) Expand all
304 304
305 // Verifies that CachedResources are evicted from the decode cache 305 // Verifies that CachedResources are evicted from the decode cache
306 // according to their DecodeCachePriority. 306 // according to their DecodeCachePriority.
307 TEST_F(MemoryCacheTest, DecodeCacheOrder) 307 TEST_F(MemoryCacheTest, DecodeCacheOrder)
308 { 308 {
309 memoryCache()->setDelayBeforeLiveDecodedPrune(0); 309 memoryCache()->setDelayBeforeLiveDecodedPrune(0);
310 memoryCache()->setMaxPruneDeferralDelay(0); 310 memoryCache()->setMaxPruneDeferralDelay(0);
311 ResourcePtr<FakeDecodedResource> cachedImageLowPriority = 311 ResourcePtr<FakeDecodedResource> cachedImageLowPriority =
312 new FakeDecodedResource(ResourceRequest("http://foo.com"), Resource::Raw ); 312 new FakeDecodedResource(ResourceRequest("http://foo.com"), Resource::Raw );
313 ResourcePtr<FakeDecodedResource> cachedImageHighPriority = 313 ResourcePtr<FakeDecodedResource> cachedImageHighPriority =
314 new FakeDecodedResource(ResourceRequest(""), Resource::Raw); 314 new FakeDecodedResource(ResourceRequest("http://test/resource"), Resourc e::Raw);
315 315
316 MockImageResourceClient clientLowPriority; 316 MockImageResourceClient clientLowPriority;
317 MockImageResourceClient clientHighPriority; 317 MockImageResourceClient clientHighPriority;
318 cachedImageLowPriority->addClient(&clientLowPriority); 318 cachedImageLowPriority->addClient(&clientLowPriority);
319 cachedImageHighPriority->addClient(&clientHighPriority); 319 cachedImageHighPriority->addClient(&clientHighPriority);
320 320
321 const char data[5] = "abcd"; 321 const char data[5] = "abcd";
322 cachedImageLowPriority->appendData(data, 1); 322 cachedImageLowPriority->appendData(data, 1);
323 cachedImageHighPriority->appendData(data, 4); 323 cachedImageHighPriority->appendData(data, 4);
324 const unsigned lowPrioritySize = cachedImageLowPriority->size(); 324 const unsigned lowPrioritySize = cachedImageLowPriority->size();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 363
364 // Should prune the HighPriority item. 364 // Should prune the HighPriority item.
365 memoryCache()->setCapacities(memoryCache()->minDeadCapacity(), memoryCache() ->liveSize() - 10, memoryCache()->liveSize() - 10); 365 memoryCache()->setCapacities(memoryCache()->minDeadCapacity(), memoryCache() ->liveSize() - 10, memoryCache()->liveSize() - 10);
366 memoryCache()->prune(); 366 memoryCache()->prune();
367 ASSERT_EQ(memoryCache()->deadSize(), 0u); 367 ASSERT_EQ(memoryCache()->deadSize(), 0u);
368 ASSERT_EQ(memoryCache()->liveSize(), totalSize - lowPriorityMockDecodeSize - highPriorityMockDecodeSize); 368 ASSERT_EQ(memoryCache()->liveSize(), totalSize - lowPriorityMockDecodeSize - highPriorityMockDecodeSize);
369 } 369 }
370 370
371 TEST_F(MemoryCacheTest, MultipleReplace) 371 TEST_F(MemoryCacheTest, MultipleReplace)
372 { 372 {
373 ResourcePtr<FakeResource> resource1 = new FakeResource(ResourceRequest(""), Resource::Raw); 373 ResourcePtr<FakeResource> resource1 = new FakeResource(ResourceRequest("http ://test/resource"), Resource::Raw);
374 memoryCache()->add(resource1.get()); 374 memoryCache()->add(resource1.get());
375 375
376 ResourcePtr<FakeResource> resource2 = new FakeResource(ResourceRequest(""), Resource::Raw); 376 ResourcePtr<FakeResource> resource2 = new FakeResource(ResourceRequest("http ://test/resource"), Resource::Raw);
377 memoryCache()->replace(resource2.get(), resource1.get()); 377 memoryCache()->replace(resource2.get(), resource1.get());
378 EXPECT_TRUE(memoryCache()->contains(resource2.get())); 378 EXPECT_TRUE(memoryCache()->contains(resource2.get()));
379 EXPECT_FALSE(memoryCache()->contains(resource1.get())); 379 EXPECT_FALSE(memoryCache()->contains(resource1.get()));
380 380
381 ResourcePtr<FakeResource> resource3 = new FakeResource(ResourceRequest(""), Resource::Raw); 381 ResourcePtr<FakeResource> resource3 = new FakeResource(ResourceRequest("http ://test/resource"), Resource::Raw);
382 memoryCache()->replace(resource3.get(), resource2.get()); 382 memoryCache()->replace(resource3.get(), resource2.get());
383 EXPECT_TRUE(memoryCache()->contains(resource3.get())); 383 EXPECT_TRUE(memoryCache()->contains(resource3.get()));
384 EXPECT_FALSE(memoryCache()->contains(resource2.get())); 384 EXPECT_FALSE(memoryCache()->contains(resource2.get()));
385 } 385 }
386 386
387 TEST_F(MemoryCacheTest, RemoveDuringRevalidation) 387 TEST_F(MemoryCacheTest, RemoveDuringRevalidation)
388 { 388 {
389 ResourcePtr<FakeResource> resource1 = new FakeResource(ResourceRequest(""), Resource::Raw); 389 ResourcePtr<FakeResource> resource1 = new FakeResource(ResourceRequest("http ://test/resource"), Resource::Raw);
390 memoryCache()->add(resource1.get()); 390 memoryCache()->add(resource1.get());
391 391
392 ResourcePtr<FakeResource> resource2 = new FakeResource(ResourceRequest(""), Resource::Raw); 392 ResourcePtr<FakeResource> resource2 = new FakeResource(ResourceRequest("http ://test/resource"), Resource::Raw);
393 memoryCache()->remove(resource1.get()); 393 memoryCache()->remove(resource1.get());
394 memoryCache()->add(resource2.get()); 394 memoryCache()->add(resource2.get());
395 EXPECT_TRUE(memoryCache()->contains(resource2.get())); 395 EXPECT_TRUE(memoryCache()->contains(resource2.get()));
396 EXPECT_FALSE(memoryCache()->contains(resource1.get())); 396 EXPECT_FALSE(memoryCache()->contains(resource1.get()));
397 397
398 ResourcePtr<FakeResource> resource3 = new FakeResource(ResourceRequest(""), Resource::Raw); 398 ResourcePtr<FakeResource> resource3 = new FakeResource(ResourceRequest("http ://test/resource"), Resource::Raw);
399 memoryCache()->remove(resource2.get()); 399 memoryCache()->remove(resource2.get());
400 memoryCache()->add(resource3.get()); 400 memoryCache()->add(resource3.get());
401 EXPECT_TRUE(memoryCache()->contains(resource3.get())); 401 EXPECT_TRUE(memoryCache()->contains(resource3.get()));
402 EXPECT_FALSE(memoryCache()->contains(resource2.get())); 402 EXPECT_FALSE(memoryCache()->contains(resource2.get()));
403 403
404 memoryCache()->replace(resource1.get(), resource2.get()); 404 memoryCache()->replace(resource1.get(), resource2.get());
405 EXPECT_TRUE(memoryCache()->contains(resource1.get())); 405 EXPECT_TRUE(memoryCache()->contains(resource1.get()));
406 EXPECT_FALSE(memoryCache()->contains(resource2.get())); 406 EXPECT_FALSE(memoryCache()->contains(resource2.get()));
407 EXPECT_FALSE(memoryCache()->contains(resource3.get())); 407 EXPECT_FALSE(memoryCache()->contains(resource3.get()));
408 } 408 }
409 409
410 } // namespace 410 } // namespace
OLDNEW
« no previous file with comments | « Source/core/fetch/MemoryCache.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698