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 "chrome/browser/chromeos/drive/drive_cache.h" | 5 #include "chrome/browser/chromeos/drive/drive_cache.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
11 #include "base/message_loop.h" | 11 #include "base/message_loop.h" |
12 #include "base/path_service.h" | 12 #include "base/path_service.h" |
13 #include "base/threading/sequenced_worker_pool.h" | 13 #include "base/threading/sequenced_worker_pool.h" |
14 #include "chrome/browser/chromeos/drive/drive.pb.h" | 14 #include "chrome/browser/chromeos/drive/drive.pb.h" |
15 #include "chrome/browser/chromeos/drive/drive_file_system.h" | 15 #include "chrome/browser/chromeos/drive/drive_file_system.h" |
16 #include "chrome/browser/chromeos/drive/drive_file_system_util.h" | 16 #include "chrome/browser/chromeos/drive/drive_file_system_util.h" |
17 #include "chrome/browser/chromeos/drive/drive_test_util.h" | 17 #include "chrome/browser/chromeos/drive/drive_test_util.h" |
18 #include "chrome/browser/chromeos/drive/mock_drive_cache_observer.h" | 18 #include "chrome/browser/chromeos/drive/mock_drive_cache_observer.h" |
19 #include "chrome/common/chrome_paths.h" | 19 #include "chrome/common/chrome_paths.h" |
20 #include "chrome/test/base/testing_profile.h" | 20 #include "chrome/test/base/testing_profile.h" |
21 #include "content/public/test/test_browser_thread.h" | 21 #include "content/public/test/test_browser_thread.h" |
22 #include "testing/gmock/include/gmock/gmock.h" | 22 #include "testing/gmock/include/gmock/gmock.h" |
23 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
24 | 24 |
25 using ::testing::AtLeast; | 25 using ::testing::AtLeast; |
26 using ::testing::Return; | 26 using ::testing::Return; |
27 using ::testing::StrictMock; | 27 using ::testing::StrictMock; |
28 | 28 |
29 namespace gdata { | 29 namespace drive { |
30 namespace { | 30 namespace { |
31 | 31 |
32 const char kSymLinkToDevNull[] = "/dev/null"; | 32 const char kSymLinkToDevNull[] = "/dev/null"; |
33 | 33 |
34 struct InitialCacheResource { | 34 struct InitialCacheResource { |
35 const char* source_file; // Source file to be used for cache. | 35 const char* source_file; // Source file to be used for cache. |
36 const char* resource_id; // Resource id of cache file. | 36 const char* resource_id; // Resource id of cache file. |
37 const char* md5; // MD5 of cache file. | 37 const char* md5; // MD5 of cache file. |
38 int cache_state; // Cache state of cache file. | 38 int cache_state; // Cache state of cache file. |
39 const char* expected_file_extension; // Expected extension of cached file. | 39 const char* expected_file_extension; // Expected extension of cached file. |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 cache_ = DriveCache::CreateDriveCacheOnUIThread( | 156 cache_ = DriveCache::CreateDriveCacheOnUIThread( |
157 DriveCache::GetCacheRootPath(profile_.get()), blocking_task_runner_); | 157 DriveCache::GetCacheRootPath(profile_.get()), blocking_task_runner_); |
158 | 158 |
159 mock_cache_observer_.reset(new StrictMock<MockDriveCacheObserver>); | 159 mock_cache_observer_.reset(new StrictMock<MockDriveCacheObserver>); |
160 cache_->AddObserver(mock_cache_observer_.get()); | 160 cache_->AddObserver(mock_cache_observer_.get()); |
161 | 161 |
162 bool initialization_success = false; | 162 bool initialization_success = false; |
163 cache_->RequestInitializeOnUIThread( | 163 cache_->RequestInitializeOnUIThread( |
164 base::Bind(&test_util::CopyResultFromInitializeCacheCallback, | 164 base::Bind(&test_util::CopyResultFromInitializeCacheCallback, |
165 &initialization_success)); | 165 &initialization_success)); |
166 test_util::RunBlockingPoolTask(); | 166 gdata::test_util::RunBlockingPoolTask(); |
167 ASSERT_TRUE(initialization_success); | 167 ASSERT_TRUE(initialization_success); |
168 } | 168 } |
169 | 169 |
170 virtual void TearDown() OVERRIDE { | 170 virtual void TearDown() OVERRIDE { |
171 SetFreeDiskSpaceGetterForTesting(NULL); | 171 SetFreeDiskSpaceGetterForTesting(NULL); |
172 cache_->DestroyOnUIThread(); | 172 cache_->DestroyOnUIThread(); |
173 // The cache destruction requires to post a task to the blocking pool. | 173 // The cache destruction requires to post a task to the blocking pool. |
174 test_util::RunBlockingPoolTask(); | 174 gdata::test_util::RunBlockingPoolTask(); |
175 | 175 |
176 profile_.reset(NULL); | 176 profile_.reset(NULL); |
177 } | 177 } |
178 | 178 |
179 void PrepareForInitCacheTest() { | 179 void PrepareForInitCacheTest() { |
180 DVLOG(1) << "PrepareForInitCacheTest start"; | 180 DVLOG(1) << "PrepareForInitCacheTest start"; |
181 // Create drive cache sub directories. | 181 // Create drive cache sub directories. |
182 ASSERT_TRUE(file_util::CreateDirectory( | 182 ASSERT_TRUE(file_util::CreateDirectory( |
183 cache_->GetCacheDirectoryPath(DriveCache::CACHE_TYPE_PERSISTENT))); | 183 cache_->GetCacheDirectoryPath(DriveCache::CACHE_TYPE_PERSISTENT))); |
184 ASSERT_TRUE(file_util::CreateDirectory( | 184 ASSERT_TRUE(file_util::CreateDirectory( |
(...skipping 18 matching lines...) Expand all Loading... |
203 test_util::ToCacheEntry(resource.cache_state).is_dirty() ? | 203 test_util::ToCacheEntry(resource.cache_state).is_dirty() ? |
204 DriveCache::CACHE_TYPE_PERSISTENT : | 204 DriveCache::CACHE_TYPE_PERSISTENT : |
205 DriveCache::CACHE_TYPE_TMP, | 205 DriveCache::CACHE_TYPE_TMP, |
206 test_util::ToCacheEntry(resource.cache_state).is_dirty() ? | 206 test_util::ToCacheEntry(resource.cache_state).is_dirty() ? |
207 DriveCache::CACHED_FILE_LOCALLY_MODIFIED : | 207 DriveCache::CACHED_FILE_LOCALLY_MODIFIED : |
208 DriveCache::CACHED_FILE_FROM_SERVER); | 208 DriveCache::CACHED_FILE_FROM_SERVER); |
209 | 209 |
210 // Copy file from data dir to cache subdir, naming it per cache files | 210 // Copy file from data dir to cache subdir, naming it per cache files |
211 // convention. | 211 // convention. |
212 if (test_util::ToCacheEntry(resource.cache_state).is_present()) { | 212 if (test_util::ToCacheEntry(resource.cache_state).is_present()) { |
213 FilePath source_path = test_util::GetTestFilePath(resource.source_file); | 213 FilePath source_path = |
| 214 gdata::test_util::GetTestFilePath(resource.source_file); |
214 ASSERT_TRUE(file_util::CopyFile(source_path, dest_path)); | 215 ASSERT_TRUE(file_util::CopyFile(source_path, dest_path)); |
215 } else { | 216 } else { |
216 dest_path = FilePath(FILE_PATH_LITERAL(kSymLinkToDevNull)); | 217 dest_path = FilePath(FILE_PATH_LITERAL(kSymLinkToDevNull)); |
217 } | 218 } |
218 | 219 |
219 // Create symbolic link in pinned dir, naming it per cache files | 220 // Create symbolic link in pinned dir, naming it per cache files |
220 // convention. | 221 // convention. |
221 if (test_util::ToCacheEntry(resource.cache_state).is_pinned()) { | 222 if (test_util::ToCacheEntry(resource.cache_state).is_pinned()) { |
222 FilePath link_path = cache_->GetCacheFilePath( | 223 FilePath link_path = cache_->GetCacheFilePath( |
223 resource.resource_id, | 224 resource.resource_id, |
(...skipping 10 matching lines...) Expand all Loading... |
234 resource.resource_id, | 235 resource.resource_id, |
235 "", | 236 "", |
236 DriveCache::CACHE_TYPE_OUTGOING, | 237 DriveCache::CACHE_TYPE_OUTGOING, |
237 DriveCache::CACHED_FILE_FROM_SERVER); | 238 DriveCache::CACHED_FILE_FROM_SERVER); |
238 ASSERT_TRUE(file_util::CreateSymbolicLink(dest_path, link_path)); | 239 ASSERT_TRUE(file_util::CreateSymbolicLink(dest_path, link_path)); |
239 } | 240 } |
240 } | 241 } |
241 | 242 |
242 DVLOG(1) << "PrepareForInitCacheTest finished"; | 243 DVLOG(1) << "PrepareForInitCacheTest finished"; |
243 cache_->ForceRescanOnUIThreadForTesting(); | 244 cache_->ForceRescanOnUIThreadForTesting(); |
244 test_util::RunBlockingPoolTask(); | 245 gdata::test_util::RunBlockingPoolTask(); |
245 } | 246 } |
246 | 247 |
247 void TestInitializeCache() { | 248 void TestInitializeCache() { |
248 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(initial_cache_resources); ++i) { | 249 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(initial_cache_resources); ++i) { |
249 const struct InitialCacheResource& resource = initial_cache_resources[i]; | 250 const struct InitialCacheResource& resource = initial_cache_resources[i]; |
250 // Check cache file. | 251 // Check cache file. |
251 num_callback_invocations_ = 0; | 252 num_callback_invocations_ = 0; |
252 TestGetFileFromCacheByResourceIdAndMd5( | 253 TestGetFileFromCacheByResourceIdAndMd5( |
253 resource.resource_id, | 254 resource.resource_id, |
254 resource.md5, | 255 resource.md5, |
(...skipping 27 matching lines...) Expand all Loading... |
282 expected_file_extension_ = expected_file_extension; | 283 expected_file_extension_ = expected_file_extension; |
283 | 284 |
284 cache_->GetFileOnUIThread( | 285 cache_->GetFileOnUIThread( |
285 resource_id, | 286 resource_id, |
286 md5, | 287 md5, |
287 base::Bind(&DriveCacheTest::VerifyGetFromCache, | 288 base::Bind(&DriveCacheTest::VerifyGetFromCache, |
288 base::Unretained(this), | 289 base::Unretained(this), |
289 resource_id, | 290 resource_id, |
290 md5)); | 291 md5)); |
291 | 292 |
292 test_util::RunBlockingPoolTask(); | 293 gdata::test_util::RunBlockingPoolTask(); |
293 } | 294 } |
294 | 295 |
295 void TestStoreToCache( | 296 void TestStoreToCache( |
296 const std::string& resource_id, | 297 const std::string& resource_id, |
297 const std::string& md5, | 298 const std::string& md5, |
298 const FilePath& source_path, | 299 const FilePath& source_path, |
299 DriveFileError expected_error, | 300 DriveFileError expected_error, |
300 int expected_cache_state, | 301 int expected_cache_state, |
301 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { | 302 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { |
302 expected_error_ = expected_error; | 303 expected_error_ = expected_error; |
303 expected_cache_state_ = expected_cache_state; | 304 expected_cache_state_ = expected_cache_state; |
304 expected_sub_dir_type_ = expected_sub_dir_type; | 305 expected_sub_dir_type_ = expected_sub_dir_type; |
305 | 306 |
306 cache_->StoreOnUIThread( | 307 cache_->StoreOnUIThread( |
307 resource_id, md5, source_path, | 308 resource_id, md5, source_path, |
308 DriveCache::FILE_OPERATION_COPY, | 309 DriveCache::FILE_OPERATION_COPY, |
309 base::Bind(&DriveCacheTest::VerifyCacheFileState, | 310 base::Bind(&DriveCacheTest::VerifyCacheFileState, |
310 base::Unretained(this))); | 311 base::Unretained(this))); |
311 | 312 |
312 test_util::RunBlockingPoolTask(); | 313 gdata::test_util::RunBlockingPoolTask(); |
313 } | 314 } |
314 | 315 |
315 void VerifyGetFromCache(const std::string& resource_id, | 316 void VerifyGetFromCache(const std::string& resource_id, |
316 const std::string& md5, | 317 const std::string& md5, |
317 DriveFileError error, | 318 DriveFileError error, |
318 const FilePath& cache_file_path) { | 319 const FilePath& cache_file_path) { |
319 ++num_callback_invocations_; | 320 ++num_callback_invocations_; |
320 | 321 |
321 EXPECT_EQ(expected_error_, error); | 322 EXPECT_EQ(expected_error_, error); |
322 | 323 |
(...skipping 13 matching lines...) Expand all Loading... |
336 | 337 |
337 void TestRemoveFromCache(const std::string& resource_id, | 338 void TestRemoveFromCache(const std::string& resource_id, |
338 DriveFileError expected_error) { | 339 DriveFileError expected_error) { |
339 expected_error_ = expected_error; | 340 expected_error_ = expected_error; |
340 | 341 |
341 cache_->RemoveOnUIThread( | 342 cache_->RemoveOnUIThread( |
342 resource_id, | 343 resource_id, |
343 base::Bind(&DriveCacheTest::VerifyRemoveFromCache, | 344 base::Bind(&DriveCacheTest::VerifyRemoveFromCache, |
344 base::Unretained(this))); | 345 base::Unretained(this))); |
345 | 346 |
346 test_util::RunBlockingPoolTask(); | 347 gdata::test_util::RunBlockingPoolTask(); |
347 } | 348 } |
348 | 349 |
349 void VerifyRemoveFromCache(DriveFileError error, | 350 void VerifyRemoveFromCache(DriveFileError error, |
350 const std::string& resource_id, | 351 const std::string& resource_id, |
351 const std::string& md5) { | 352 const std::string& md5) { |
352 ++num_callback_invocations_; | 353 ++num_callback_invocations_; |
353 | 354 |
354 EXPECT_EQ(expected_error_, error); | 355 EXPECT_EQ(expected_error_, error); |
355 | 356 |
356 // Verify cache map. | 357 // Verify cache map. |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
449 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { | 450 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { |
450 expected_error_ = expected_error; | 451 expected_error_ = expected_error; |
451 expected_cache_state_ = expected_cache_state; | 452 expected_cache_state_ = expected_cache_state; |
452 expected_sub_dir_type_ = expected_sub_dir_type; | 453 expected_sub_dir_type_ = expected_sub_dir_type; |
453 | 454 |
454 cache_->PinOnUIThread( | 455 cache_->PinOnUIThread( |
455 resource_id, md5, | 456 resource_id, md5, |
456 base::Bind(&DriveCacheTest::VerifyCacheFileState, | 457 base::Bind(&DriveCacheTest::VerifyCacheFileState, |
457 base::Unretained(this))); | 458 base::Unretained(this))); |
458 | 459 |
459 test_util::RunBlockingPoolTask(); | 460 gdata::test_util::RunBlockingPoolTask(); |
460 } | 461 } |
461 | 462 |
462 void TestUnpin( | 463 void TestUnpin( |
463 const std::string& resource_id, | 464 const std::string& resource_id, |
464 const std::string& md5, | 465 const std::string& md5, |
465 DriveFileError expected_error, | 466 DriveFileError expected_error, |
466 int expected_cache_state, | 467 int expected_cache_state, |
467 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { | 468 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { |
468 expected_error_ = expected_error; | 469 expected_error_ = expected_error; |
469 expected_cache_state_ = expected_cache_state; | 470 expected_cache_state_ = expected_cache_state; |
470 expected_sub_dir_type_ = expected_sub_dir_type; | 471 expected_sub_dir_type_ = expected_sub_dir_type; |
471 | 472 |
472 cache_->UnpinOnUIThread( | 473 cache_->UnpinOnUIThread( |
473 resource_id, md5, | 474 resource_id, md5, |
474 base::Bind(&DriveCacheTest::VerifyCacheFileState, | 475 base::Bind(&DriveCacheTest::VerifyCacheFileState, |
475 base::Unretained(this))); | 476 base::Unretained(this))); |
476 | 477 |
477 test_util::RunBlockingPoolTask(); | 478 gdata::test_util::RunBlockingPoolTask(); |
478 } | 479 } |
479 | 480 |
480 void TestMarkDirty( | 481 void TestMarkDirty( |
481 const std::string& resource_id, | 482 const std::string& resource_id, |
482 const std::string& md5, | 483 const std::string& md5, |
483 DriveFileError expected_error, | 484 DriveFileError expected_error, |
484 int expected_cache_state, | 485 int expected_cache_state, |
485 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { | 486 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { |
486 expected_error_ = expected_error; | 487 expected_error_ = expected_error; |
487 expected_cache_state_ = expected_cache_state; | 488 expected_cache_state_ = expected_cache_state; |
488 expected_sub_dir_type_ = expected_sub_dir_type; | 489 expected_sub_dir_type_ = expected_sub_dir_type; |
489 expect_outgoing_symlink_ = false; | 490 expect_outgoing_symlink_ = false; |
490 | 491 |
491 cache_->MarkDirtyOnUIThread( | 492 cache_->MarkDirtyOnUIThread( |
492 resource_id, | 493 resource_id, |
493 md5, | 494 md5, |
494 base::Bind(&DriveCacheTest::VerifyMarkDirty, | 495 base::Bind(&DriveCacheTest::VerifyMarkDirty, |
495 base::Unretained(this), | 496 base::Unretained(this), |
496 resource_id, | 497 resource_id, |
497 md5)); | 498 md5)); |
498 | 499 |
499 test_util::RunBlockingPoolTask(); | 500 gdata::test_util::RunBlockingPoolTask(); |
500 } | 501 } |
501 | 502 |
502 void VerifyMarkDirty(const std::string& resource_id, | 503 void VerifyMarkDirty(const std::string& resource_id, |
503 const std::string& md5, | 504 const std::string& md5, |
504 DriveFileError error, | 505 DriveFileError error, |
505 const FilePath& cache_file_path) { | 506 const FilePath& cache_file_path) { |
506 VerifyCacheFileState(error, resource_id, md5); | 507 VerifyCacheFileState(error, resource_id, md5); |
507 | 508 |
508 // Verify filename of |cache_file_path|. | 509 // Verify filename of |cache_file_path|. |
509 if (error == DRIVE_FILE_OK) { | 510 if (error == DRIVE_FILE_OK) { |
(...skipping 16 matching lines...) Expand all Loading... |
526 expected_error_ = expected_error; | 527 expected_error_ = expected_error; |
527 expected_cache_state_ = expected_cache_state; | 528 expected_cache_state_ = expected_cache_state; |
528 expected_sub_dir_type_ = expected_sub_dir_type; | 529 expected_sub_dir_type_ = expected_sub_dir_type; |
529 expect_outgoing_symlink_ = true; | 530 expect_outgoing_symlink_ = true; |
530 | 531 |
531 cache_->CommitDirtyOnUIThread( | 532 cache_->CommitDirtyOnUIThread( |
532 resource_id, md5, | 533 resource_id, md5, |
533 base::Bind(&DriveCacheTest::VerifyCacheFileState, | 534 base::Bind(&DriveCacheTest::VerifyCacheFileState, |
534 base::Unretained(this))); | 535 base::Unretained(this))); |
535 | 536 |
536 test_util::RunBlockingPoolTask(); | 537 gdata::test_util::RunBlockingPoolTask(); |
537 } | 538 } |
538 | 539 |
539 void TestClearDirty( | 540 void TestClearDirty( |
540 const std::string& resource_id, | 541 const std::string& resource_id, |
541 const std::string& md5, | 542 const std::string& md5, |
542 DriveFileError expected_error, | 543 DriveFileError expected_error, |
543 int expected_cache_state, | 544 int expected_cache_state, |
544 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { | 545 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { |
545 expected_error_ = expected_error; | 546 expected_error_ = expected_error; |
546 expected_cache_state_ = expected_cache_state; | 547 expected_cache_state_ = expected_cache_state; |
547 expected_sub_dir_type_ = expected_sub_dir_type; | 548 expected_sub_dir_type_ = expected_sub_dir_type; |
548 expect_outgoing_symlink_ = false; | 549 expect_outgoing_symlink_ = false; |
549 | 550 |
550 cache_->ClearDirtyOnUIThread(resource_id, md5, | 551 cache_->ClearDirtyOnUIThread(resource_id, md5, |
551 base::Bind(&DriveCacheTest::VerifyCacheFileState, | 552 base::Bind(&DriveCacheTest::VerifyCacheFileState, |
552 base::Unretained(this))); | 553 base::Unretained(this))); |
553 | 554 |
554 test_util::RunBlockingPoolTask(); | 555 gdata::test_util::RunBlockingPoolTask(); |
555 } | 556 } |
556 | 557 |
557 void TestSetMountedState( | 558 void TestSetMountedState( |
558 const std::string& resource_id, | 559 const std::string& resource_id, |
559 const std::string& md5, | 560 const std::string& md5, |
560 const FilePath& file_path, | 561 const FilePath& file_path, |
561 bool to_mount, | 562 bool to_mount, |
562 DriveFileError expected_error, | 563 DriveFileError expected_error, |
563 int expected_cache_state, | 564 int expected_cache_state, |
564 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { | 565 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { |
565 expected_error_ = expected_error; | 566 expected_error_ = expected_error; |
566 expected_cache_state_ = expected_cache_state; | 567 expected_cache_state_ = expected_cache_state; |
567 expected_sub_dir_type_ = expected_sub_dir_type; | 568 expected_sub_dir_type_ = expected_sub_dir_type; |
568 expect_outgoing_symlink_ = false; | 569 expect_outgoing_symlink_ = false; |
569 | 570 |
570 cache_->SetMountedStateOnUIThread(file_path, to_mount, | 571 cache_->SetMountedStateOnUIThread(file_path, to_mount, |
571 base::Bind(&DriveCacheTest::VerifySetMountedState, | 572 base::Bind(&DriveCacheTest::VerifySetMountedState, |
572 base::Unretained(this), resource_id, md5, to_mount)); | 573 base::Unretained(this), resource_id, md5, to_mount)); |
573 | 574 |
574 test_util::RunBlockingPoolTask(); | 575 gdata::test_util::RunBlockingPoolTask(); |
575 } | 576 } |
576 | 577 |
577 void VerifySetMountedState(const std::string& resource_id, | 578 void VerifySetMountedState(const std::string& resource_id, |
578 const std::string& md5, | 579 const std::string& md5, |
579 bool to_mount, | 580 bool to_mount, |
580 DriveFileError error, | 581 DriveFileError error, |
581 const FilePath& file_path) { | 582 const FilePath& file_path) { |
582 ++num_callback_invocations_; | 583 ++num_callback_invocations_; |
583 EXPECT_TRUE(file_util::PathExists(file_path)); | 584 EXPECT_TRUE(file_util::PathExists(file_path)); |
584 EXPECT_TRUE(file_path == cache_->GetCacheFilePath( | 585 EXPECT_TRUE(file_path == cache_->GetCacheFilePath( |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
685 DriveCacheEntry* cache_entry) { | 686 DriveCacheEntry* cache_entry) { |
686 bool result = false; | 687 bool result = false; |
687 blocking_task_runner_->PostTask( | 688 blocking_task_runner_->PostTask( |
688 FROM_HERE, | 689 FROM_HERE, |
689 base::Bind(&DriveCacheTest::GetCacheEntryFromOriginThreadInternal, | 690 base::Bind(&DriveCacheTest::GetCacheEntryFromOriginThreadInternal, |
690 base::Unretained(this), | 691 base::Unretained(this), |
691 resource_id, | 692 resource_id, |
692 md5, | 693 md5, |
693 cache_entry, | 694 cache_entry, |
694 &result)); | 695 &result)); |
695 test_util::RunBlockingPoolTask(); | 696 gdata::test_util::RunBlockingPoolTask(); |
696 return result; | 697 return result; |
697 } | 698 } |
698 | 699 |
699 // Used to implement GetCacheEntry. | 700 // Used to implement GetCacheEntry. |
700 void GetCacheEntryFromOriginThreadInternal( | 701 void GetCacheEntryFromOriginThreadInternal( |
701 const std::string& resource_id, | 702 const std::string& resource_id, |
702 const std::string& md5, | 703 const std::string& md5, |
703 DriveCacheEntry* cache_entry, | 704 DriveCacheEntry* cache_entry, |
704 bool* result) { | 705 bool* result) { |
705 *result = cache_->GetCacheEntry(resource_id, md5, cache_entry); | 706 *result = cache_->GetCacheEntry(resource_id, md5, cache_entry); |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
810 | 811 |
811 TEST_F(DriveCacheTest, StoreToCacheSimple) { | 812 TEST_F(DriveCacheTest, StoreToCacheSimple) { |
812 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) | 813 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) |
813 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); | 814 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); |
814 | 815 |
815 std::string resource_id("pdf:1a2b"); | 816 std::string resource_id("pdf:1a2b"); |
816 std::string md5("abcdef0123456789"); | 817 std::string md5("abcdef0123456789"); |
817 | 818 |
818 // Store an existing file. | 819 // Store an existing file. |
819 TestStoreToCache(resource_id, md5, | 820 TestStoreToCache(resource_id, md5, |
820 test_util::GetTestFilePath("gdata/root_feed.json"), | 821 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
821 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, | 822 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, |
822 DriveCache::CACHE_TYPE_TMP); | 823 DriveCache::CACHE_TYPE_TMP); |
823 EXPECT_EQ(1, num_callback_invocations_); | 824 EXPECT_EQ(1, num_callback_invocations_); |
824 | 825 |
825 // Store a non-existent file to the same |resource_id| and |md5|. | 826 // Store a non-existent file to the same |resource_id| and |md5|. |
826 num_callback_invocations_ = 0; | 827 num_callback_invocations_ = 0; |
827 TestStoreToCache(resource_id, md5, FilePath("./non_existent.json"), | 828 TestStoreToCache(resource_id, md5, FilePath("./non_existent.json"), |
828 DRIVE_FILE_ERROR_FAILED, | 829 DRIVE_FILE_ERROR_FAILED, |
829 test_util::TEST_CACHE_STATE_PRESENT, | 830 test_util::TEST_CACHE_STATE_PRESENT, |
830 DriveCache::CACHE_TYPE_TMP); | 831 DriveCache::CACHE_TYPE_TMP); |
831 EXPECT_EQ(1, num_callback_invocations_); | 832 EXPECT_EQ(1, num_callback_invocations_); |
832 | 833 |
833 // Store a different existing file to the same |resource_id| but different | 834 // Store a different existing file to the same |resource_id| but different |
834 // |md5|. | 835 // |md5|. |
835 md5 = "new_md5"; | 836 md5 = "new_md5"; |
836 num_callback_invocations_ = 0; | 837 num_callback_invocations_ = 0; |
837 TestStoreToCache(resource_id, md5, | 838 TestStoreToCache(resource_id, md5, |
838 test_util::GetTestFilePath("gdata/subdir_feed.json"), | 839 gdata::test_util::GetTestFilePath("gdata/subdir_feed.json"), |
839 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, | 840 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, |
840 DriveCache::CACHE_TYPE_TMP); | 841 DriveCache::CACHE_TYPE_TMP); |
841 EXPECT_EQ(1, num_callback_invocations_); | 842 EXPECT_EQ(1, num_callback_invocations_); |
842 | 843 |
843 // Verify that there's only one file with name <resource_id>, i.e. previously | 844 // Verify that there's only one file with name <resource_id>, i.e. previously |
844 // cached file with the different md5 should be deleted. | 845 // cached file with the different md5 should be deleted. |
845 EXPECT_EQ(1U, CountCacheFiles(resource_id, md5)); | 846 EXPECT_EQ(1U, CountCacheFiles(resource_id, md5)); |
846 } | 847 } |
847 | 848 |
848 TEST_F(DriveCacheTest, GetFromCacheSimple) { | 849 TEST_F(DriveCacheTest, GetFromCacheSimple) { |
849 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) | 850 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) |
850 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); | 851 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); |
851 | 852 |
852 std::string resource_id("pdf:1a2b"); | 853 std::string resource_id("pdf:1a2b"); |
853 std::string md5("abcdef0123456789"); | 854 std::string md5("abcdef0123456789"); |
854 // First store a file to cache. | 855 // First store a file to cache. |
855 TestStoreToCache(resource_id, md5, | 856 TestStoreToCache(resource_id, md5, |
856 test_util::GetTestFilePath("gdata/root_feed.json"), | 857 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
857 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, | 858 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, |
858 DriveCache::CACHE_TYPE_TMP); | 859 DriveCache::CACHE_TYPE_TMP); |
859 | 860 |
860 // Then try to get the existing file from cache. | 861 // Then try to get the existing file from cache. |
861 num_callback_invocations_ = 0; | 862 num_callback_invocations_ = 0; |
862 TestGetFileFromCacheByResourceIdAndMd5( | 863 TestGetFileFromCacheByResourceIdAndMd5( |
863 resource_id, md5, DRIVE_FILE_OK, md5); | 864 resource_id, md5, DRIVE_FILE_OK, md5); |
864 EXPECT_EQ(1, num_callback_invocations_); | 865 EXPECT_EQ(1, num_callback_invocations_); |
865 | 866 |
866 // Get file from cache with same resource id as existing file but different | 867 // Get file from cache with same resource id as existing file but different |
(...skipping 14 matching lines...) Expand all Loading... |
881 | 882 |
882 TEST_F(DriveCacheTest, RemoveFromCacheSimple) { | 883 TEST_F(DriveCacheTest, RemoveFromCacheSimple) { |
883 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) | 884 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) |
884 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); | 885 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); |
885 | 886 |
886 // Use alphanumeric characters for resource id. | 887 // Use alphanumeric characters for resource id. |
887 std::string resource_id("pdf:1a2b"); | 888 std::string resource_id("pdf:1a2b"); |
888 std::string md5("abcdef0123456789"); | 889 std::string md5("abcdef0123456789"); |
889 // First store a file to cache. | 890 // First store a file to cache. |
890 TestStoreToCache(resource_id, md5, | 891 TestStoreToCache(resource_id, md5, |
891 test_util::GetTestFilePath("gdata/root_feed.json"), | 892 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
892 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, | 893 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, |
893 DriveCache::CACHE_TYPE_TMP); | 894 DriveCache::CACHE_TYPE_TMP); |
894 | 895 |
895 // Then try to remove existing file from cache. | 896 // Then try to remove existing file from cache. |
896 num_callback_invocations_ = 0; | 897 num_callback_invocations_ = 0; |
897 TestRemoveFromCache(resource_id, DRIVE_FILE_OK); | 898 TestRemoveFromCache(resource_id, DRIVE_FILE_OK); |
898 EXPECT_EQ(1, num_callback_invocations_); | 899 EXPECT_EQ(1, num_callback_invocations_); |
899 | 900 |
900 // Repeat using non-alphanumeric characters for resource id, including '.' | 901 // Repeat using non-alphanumeric characters for resource id, including '.' |
901 // which is an extension separator. | 902 // which is an extension separator. |
902 resource_id = "pdf:`~!@#$%^&*()-_=+[{|]}\\;',<.>/?"; | 903 resource_id = "pdf:`~!@#$%^&*()-_=+[{|]}\\;',<.>/?"; |
903 TestStoreToCache(resource_id, md5, | 904 TestStoreToCache(resource_id, md5, |
904 test_util::GetTestFilePath("gdata/root_feed.json"), | 905 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
905 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, | 906 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, |
906 DriveCache::CACHE_TYPE_TMP); | 907 DriveCache::CACHE_TYPE_TMP); |
907 | 908 |
908 num_callback_invocations_ = 0; | 909 num_callback_invocations_ = 0; |
909 TestRemoveFromCache(resource_id, DRIVE_FILE_OK); | 910 TestRemoveFromCache(resource_id, DRIVE_FILE_OK); |
910 EXPECT_EQ(1, num_callback_invocations_); | 911 EXPECT_EQ(1, num_callback_invocations_); |
911 } | 912 } |
912 | 913 |
913 TEST_F(DriveCacheTest, PinAndUnpin) { | 914 TEST_F(DriveCacheTest, PinAndUnpin) { |
914 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) | 915 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) |
915 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); | 916 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); |
916 | 917 |
917 std::string resource_id("pdf:1a2b"); | 918 std::string resource_id("pdf:1a2b"); |
918 std::string md5("abcdef0123456789"); | 919 std::string md5("abcdef0123456789"); |
919 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(2); | 920 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(2); |
920 EXPECT_CALL(*mock_cache_observer_, OnCacheUnpinned(resource_id, md5)) | 921 EXPECT_CALL(*mock_cache_observer_, OnCacheUnpinned(resource_id, md5)) |
921 .Times(1); | 922 .Times(1); |
922 | 923 |
923 // First store a file to cache. | 924 // First store a file to cache. |
924 TestStoreToCache(resource_id, md5, | 925 TestStoreToCache(resource_id, md5, |
925 test_util::GetTestFilePath("gdata/root_feed.json"), | 926 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
926 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, | 927 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, |
927 DriveCache::CACHE_TYPE_TMP); | 928 DriveCache::CACHE_TYPE_TMP); |
928 | 929 |
929 // Pin the existing file in cache. | 930 // Pin the existing file in cache. |
930 num_callback_invocations_ = 0; | 931 num_callback_invocations_ = 0; |
931 TestPin(resource_id, md5, DRIVE_FILE_OK, | 932 TestPin(resource_id, md5, DRIVE_FILE_OK, |
932 test_util::TEST_CACHE_STATE_PRESENT | | 933 test_util::TEST_CACHE_STATE_PRESENT | |
933 test_util::TEST_CACHE_STATE_PINNED | | 934 test_util::TEST_CACHE_STATE_PINNED | |
934 test_util::TEST_CACHE_STATE_PERSISTENT, | 935 test_util::TEST_CACHE_STATE_PERSISTENT, |
935 DriveCache::CACHE_TYPE_PERSISTENT); | 936 DriveCache::CACHE_TYPE_PERSISTENT); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
993 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); | 994 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); |
994 | 995 |
995 // Pin a non-existent file. | 996 // Pin a non-existent file. |
996 TestPin(resource_id, md5, DRIVE_FILE_OK, | 997 TestPin(resource_id, md5, DRIVE_FILE_OK, |
997 test_util::TEST_CACHE_STATE_PINNED, | 998 test_util::TEST_CACHE_STATE_PINNED, |
998 DriveCache::CACHE_TYPE_TMP); | 999 DriveCache::CACHE_TYPE_TMP); |
999 | 1000 |
1000 // Store an existing file to a previously pinned file. | 1001 // Store an existing file to a previously pinned file. |
1001 num_callback_invocations_ = 0; | 1002 num_callback_invocations_ = 0; |
1002 TestStoreToCache(resource_id, md5, | 1003 TestStoreToCache(resource_id, md5, |
1003 test_util::GetTestFilePath("gdata/root_feed.json"), | 1004 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
1004 DRIVE_FILE_OK, | 1005 DRIVE_FILE_OK, |
1005 test_util::TEST_CACHE_STATE_PRESENT | | 1006 test_util::TEST_CACHE_STATE_PRESENT | |
1006 test_util::TEST_CACHE_STATE_PINNED | | 1007 test_util::TEST_CACHE_STATE_PINNED | |
1007 test_util::TEST_CACHE_STATE_PERSISTENT, | 1008 test_util::TEST_CACHE_STATE_PERSISTENT, |
1008 DriveCache::CACHE_TYPE_PERSISTENT); | 1009 DriveCache::CACHE_TYPE_PERSISTENT); |
1009 EXPECT_EQ(1, num_callback_invocations_); | 1010 EXPECT_EQ(1, num_callback_invocations_); |
1010 | 1011 |
1011 // Store a non-existent file to a previously pinned and stored file. | 1012 // Store a non-existent file to a previously pinned and stored file. |
1012 num_callback_invocations_ = 0; | 1013 num_callback_invocations_ = 0; |
1013 TestStoreToCache(resource_id, md5, FilePath("./non_existent.json"), | 1014 TestStoreToCache(resource_id, md5, FilePath("./non_existent.json"), |
(...skipping 19 matching lines...) Expand all Loading... |
1033 DriveCache::CACHE_TYPE_TMP); | 1034 DriveCache::CACHE_TYPE_TMP); |
1034 | 1035 |
1035 // Get the non-existent pinned file from cache. | 1036 // Get the non-existent pinned file from cache. |
1036 num_callback_invocations_ = 0; | 1037 num_callback_invocations_ = 0; |
1037 TestGetFileFromCacheByResourceIdAndMd5( | 1038 TestGetFileFromCacheByResourceIdAndMd5( |
1038 resource_id, md5, DRIVE_FILE_ERROR_NOT_FOUND, md5); | 1039 resource_id, md5, DRIVE_FILE_ERROR_NOT_FOUND, md5); |
1039 EXPECT_EQ(1, num_callback_invocations_); | 1040 EXPECT_EQ(1, num_callback_invocations_); |
1040 | 1041 |
1041 // Store an existing file to the previously pinned non-existent file. | 1042 // Store an existing file to the previously pinned non-existent file. |
1042 TestStoreToCache(resource_id, md5, | 1043 TestStoreToCache(resource_id, md5, |
1043 test_util::GetTestFilePath("gdata/root_feed.json"), | 1044 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
1044 DRIVE_FILE_OK, | 1045 DRIVE_FILE_OK, |
1045 test_util::TEST_CACHE_STATE_PRESENT | | 1046 test_util::TEST_CACHE_STATE_PRESENT | |
1046 test_util::TEST_CACHE_STATE_PINNED | | 1047 test_util::TEST_CACHE_STATE_PINNED | |
1047 test_util::TEST_CACHE_STATE_PERSISTENT, | 1048 test_util::TEST_CACHE_STATE_PERSISTENT, |
1048 DriveCache::CACHE_TYPE_PERSISTENT); | 1049 DriveCache::CACHE_TYPE_PERSISTENT); |
1049 | 1050 |
1050 // Get the previously pinned and stored file from cache. | 1051 // Get the previously pinned and stored file from cache. |
1051 num_callback_invocations_ = 0; | 1052 num_callback_invocations_ = 0; |
1052 TestGetFileFromCacheByResourceIdAndMd5( | 1053 TestGetFileFromCacheByResourceIdAndMd5( |
1053 resource_id, md5, DRIVE_FILE_OK, md5); | 1054 resource_id, md5, DRIVE_FILE_OK, md5); |
1054 EXPECT_EQ(1, num_callback_invocations_); | 1055 EXPECT_EQ(1, num_callback_invocations_); |
1055 } | 1056 } |
1056 | 1057 |
1057 TEST_F(DriveCacheTest, RemoveFromCachePinned) { | 1058 TEST_F(DriveCacheTest, RemoveFromCachePinned) { |
1058 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) | 1059 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) |
1059 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); | 1060 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); |
1060 | 1061 |
1061 // Use alphanumeric characters for resource_id. | 1062 // Use alphanumeric characters for resource_id. |
1062 std::string resource_id("pdf:1a2b"); | 1063 std::string resource_id("pdf:1a2b"); |
1063 std::string md5("abcdef0123456789"); | 1064 std::string md5("abcdef0123456789"); |
1064 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); | 1065 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); |
1065 | 1066 |
1066 // Store a file to cache, and pin it. | 1067 // Store a file to cache, and pin it. |
1067 TestStoreToCache(resource_id, md5, | 1068 TestStoreToCache(resource_id, md5, |
1068 test_util::GetTestFilePath("gdata/root_feed.json"), | 1069 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
1069 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, | 1070 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, |
1070 DriveCache::CACHE_TYPE_TMP); | 1071 DriveCache::CACHE_TYPE_TMP); |
1071 TestPin(resource_id, md5, DRIVE_FILE_OK, | 1072 TestPin(resource_id, md5, DRIVE_FILE_OK, |
1072 test_util::TEST_CACHE_STATE_PRESENT | | 1073 test_util::TEST_CACHE_STATE_PRESENT | |
1073 test_util::TEST_CACHE_STATE_PINNED | | 1074 test_util::TEST_CACHE_STATE_PINNED | |
1074 test_util::TEST_CACHE_STATE_PERSISTENT, | 1075 test_util::TEST_CACHE_STATE_PERSISTENT, |
1075 DriveCache::CACHE_TYPE_PERSISTENT); | 1076 DriveCache::CACHE_TYPE_PERSISTENT); |
1076 | 1077 |
1077 // Remove |resource_id| from cache. | 1078 // Remove |resource_id| from cache. |
1078 num_callback_invocations_ = 0; | 1079 num_callback_invocations_ = 0; |
1079 TestRemoveFromCache(resource_id, DRIVE_FILE_OK); | 1080 TestRemoveFromCache(resource_id, DRIVE_FILE_OK); |
1080 EXPECT_EQ(1, num_callback_invocations_); | 1081 EXPECT_EQ(1, num_callback_invocations_); |
1081 | 1082 |
1082 // Repeat using non-alphanumeric characters for resource id, including '.' | 1083 // Repeat using non-alphanumeric characters for resource id, including '.' |
1083 // which is an extension separator. | 1084 // which is an extension separator. |
1084 resource_id = "pdf:`~!@#$%^&*()-_=+[{|]}\\;',<.>/?"; | 1085 resource_id = "pdf:`~!@#$%^&*()-_=+[{|]}\\;',<.>/?"; |
1085 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); | 1086 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); |
1086 | 1087 |
1087 TestStoreToCache(resource_id, md5, | 1088 TestStoreToCache(resource_id, md5, |
1088 test_util::GetTestFilePath("gdata/root_feed.json"), | 1089 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
1089 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, | 1090 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, |
1090 DriveCache::CACHE_TYPE_TMP); | 1091 DriveCache::CACHE_TYPE_TMP); |
1091 TestPin(resource_id, md5, DRIVE_FILE_OK, | 1092 TestPin(resource_id, md5, DRIVE_FILE_OK, |
1092 test_util::TEST_CACHE_STATE_PRESENT | | 1093 test_util::TEST_CACHE_STATE_PRESENT | |
1093 test_util::TEST_CACHE_STATE_PINNED | | 1094 test_util::TEST_CACHE_STATE_PINNED | |
1094 test_util::TEST_CACHE_STATE_PERSISTENT, | 1095 test_util::TEST_CACHE_STATE_PERSISTENT, |
1095 DriveCache::CACHE_TYPE_PERSISTENT); | 1096 DriveCache::CACHE_TYPE_PERSISTENT); |
1096 | 1097 |
1097 num_callback_invocations_ = 0; | 1098 num_callback_invocations_ = 0; |
1098 TestRemoveFromCache(resource_id, DRIVE_FILE_OK); | 1099 TestRemoveFromCache(resource_id, DRIVE_FILE_OK); |
1099 EXPECT_EQ(1, num_callback_invocations_); | 1100 EXPECT_EQ(1, num_callback_invocations_); |
1100 } | 1101 } |
1101 | 1102 |
1102 TEST_F(DriveCacheTest, DirtyCacheSimple) { | 1103 TEST_F(DriveCacheTest, DirtyCacheSimple) { |
1103 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) | 1104 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) |
1104 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); | 1105 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); |
1105 | 1106 |
1106 std::string resource_id("pdf:1a2b"); | 1107 std::string resource_id("pdf:1a2b"); |
1107 std::string md5("abcdef0123456789"); | 1108 std::string md5("abcdef0123456789"); |
1108 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(resource_id)).Times(1); | 1109 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(resource_id)).Times(1); |
1109 | 1110 |
1110 // First store a file to cache. | 1111 // First store a file to cache. |
1111 TestStoreToCache(resource_id, md5, | 1112 TestStoreToCache(resource_id, md5, |
1112 test_util::GetTestFilePath("gdata/root_feed.json"), | 1113 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
1113 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, | 1114 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, |
1114 DriveCache::CACHE_TYPE_TMP); | 1115 DriveCache::CACHE_TYPE_TMP); |
1115 | 1116 |
1116 // Mark the file dirty. | 1117 // Mark the file dirty. |
1117 num_callback_invocations_ = 0; | 1118 num_callback_invocations_ = 0; |
1118 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK, | 1119 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK, |
1119 test_util::TEST_CACHE_STATE_PRESENT | | 1120 test_util::TEST_CACHE_STATE_PRESENT | |
1120 test_util::TEST_CACHE_STATE_DIRTY | | 1121 test_util::TEST_CACHE_STATE_DIRTY | |
1121 test_util::TEST_CACHE_STATE_PERSISTENT, | 1122 test_util::TEST_CACHE_STATE_PERSISTENT, |
1122 DriveCache::CACHE_TYPE_PERSISTENT); | 1123 DriveCache::CACHE_TYPE_PERSISTENT); |
(...skipping 20 matching lines...) Expand all Loading... |
1143 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) | 1144 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) |
1144 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); | 1145 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); |
1145 | 1146 |
1146 std::string resource_id("pdf:1a2b"); | 1147 std::string resource_id("pdf:1a2b"); |
1147 std::string md5("abcdef0123456789"); | 1148 std::string md5("abcdef0123456789"); |
1148 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); | 1149 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); |
1149 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(resource_id)).Times(1); | 1150 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(resource_id)).Times(1); |
1150 | 1151 |
1151 // First store a file to cache and pin it. | 1152 // First store a file to cache and pin it. |
1152 TestStoreToCache(resource_id, md5, | 1153 TestStoreToCache(resource_id, md5, |
1153 test_util::GetTestFilePath("gdata/root_feed.json"), | 1154 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
1154 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, | 1155 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, |
1155 DriveCache::CACHE_TYPE_TMP); | 1156 DriveCache::CACHE_TYPE_TMP); |
1156 TestPin(resource_id, md5, DRIVE_FILE_OK, | 1157 TestPin(resource_id, md5, DRIVE_FILE_OK, |
1157 test_util::TEST_CACHE_STATE_PRESENT | | 1158 test_util::TEST_CACHE_STATE_PRESENT | |
1158 test_util::TEST_CACHE_STATE_PINNED | | 1159 test_util::TEST_CACHE_STATE_PINNED | |
1159 test_util::TEST_CACHE_STATE_PERSISTENT, | 1160 test_util::TEST_CACHE_STATE_PERSISTENT, |
1160 DriveCache::CACHE_TYPE_PERSISTENT); | 1161 DriveCache::CACHE_TYPE_PERSISTENT); |
1161 | 1162 |
1162 // Mark the file dirty. | 1163 // Mark the file dirty. |
1163 num_callback_invocations_ = 0; | 1164 num_callback_invocations_ = 0; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1195 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); | 1196 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); |
1196 | 1197 |
1197 std::string resource_id("pdf:1a2b"); | 1198 std::string resource_id("pdf:1a2b"); |
1198 std::string md5("abcdef0123456789"); | 1199 std::string md5("abcdef0123456789"); |
1199 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); | 1200 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); |
1200 EXPECT_CALL(*mock_cache_observer_, OnCacheUnpinned(resource_id, md5)) | 1201 EXPECT_CALL(*mock_cache_observer_, OnCacheUnpinned(resource_id, md5)) |
1201 .Times(1); | 1202 .Times(1); |
1202 | 1203 |
1203 // First store a file to cache and mark it as dirty. | 1204 // First store a file to cache and mark it as dirty. |
1204 TestStoreToCache(resource_id, md5, | 1205 TestStoreToCache(resource_id, md5, |
1205 test_util::GetTestFilePath("gdata/root_feed.json"), | 1206 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
1206 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, | 1207 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, |
1207 DriveCache::CACHE_TYPE_TMP); | 1208 DriveCache::CACHE_TYPE_TMP); |
1208 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK, | 1209 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK, |
1209 test_util::TEST_CACHE_STATE_PRESENT | | 1210 test_util::TEST_CACHE_STATE_PRESENT | |
1210 test_util::TEST_CACHE_STATE_DIRTY | | 1211 test_util::TEST_CACHE_STATE_DIRTY | |
1211 test_util::TEST_CACHE_STATE_PERSISTENT, | 1212 test_util::TEST_CACHE_STATE_PERSISTENT, |
1212 DriveCache::CACHE_TYPE_PERSISTENT); | 1213 DriveCache::CACHE_TYPE_PERSISTENT); |
1213 | 1214 |
1214 // Verifies dirty file exists. | 1215 // Verifies dirty file exists. |
1215 FilePath dirty_path = GetCacheFilePath( | 1216 FilePath dirty_path = GetCacheFilePath( |
(...skipping 28 matching lines...) Expand all Loading... |
1244 TEST_F(DriveCacheTest, DirtyCacheRepetitive) { | 1245 TEST_F(DriveCacheTest, DirtyCacheRepetitive) { |
1245 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) | 1246 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) |
1246 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); | 1247 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); |
1247 | 1248 |
1248 std::string resource_id("pdf:1a2b"); | 1249 std::string resource_id("pdf:1a2b"); |
1249 std::string md5("abcdef0123456789"); | 1250 std::string md5("abcdef0123456789"); |
1250 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(resource_id)).Times(3); | 1251 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(resource_id)).Times(3); |
1251 | 1252 |
1252 // First store a file to cache. | 1253 // First store a file to cache. |
1253 TestStoreToCache(resource_id, md5, | 1254 TestStoreToCache(resource_id, md5, |
1254 test_util::GetTestFilePath("gdata/root_feed.json"), | 1255 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
1255 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, | 1256 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, |
1256 DriveCache::CACHE_TYPE_TMP); | 1257 DriveCache::CACHE_TYPE_TMP); |
1257 | 1258 |
1258 // Mark the file dirty. | 1259 // Mark the file dirty. |
1259 num_callback_invocations_ = 0; | 1260 num_callback_invocations_ = 0; |
1260 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK, | 1261 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK, |
1261 test_util::TEST_CACHE_STATE_PRESENT | | 1262 test_util::TEST_CACHE_STATE_PRESENT | |
1262 test_util::TEST_CACHE_STATE_DIRTY | | 1263 test_util::TEST_CACHE_STATE_DIRTY | |
1263 test_util::TEST_CACHE_STATE_PERSISTENT, | 1264 test_util::TEST_CACHE_STATE_PERSISTENT, |
1264 DriveCache::CACHE_TYPE_PERSISTENT); | 1265 DriveCache::CACHE_TYPE_PERSISTENT); |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1348 | 1349 |
1349 // Clear dirty state of a non-existent file. | 1350 // Clear dirty state of a non-existent file. |
1350 num_callback_invocations_ = 0; | 1351 num_callback_invocations_ = 0; |
1351 TestClearDirty(resource_id, md5, DRIVE_FILE_ERROR_NOT_FOUND, | 1352 TestClearDirty(resource_id, md5, DRIVE_FILE_ERROR_NOT_FOUND, |
1352 test_util::TEST_CACHE_STATE_NONE, | 1353 test_util::TEST_CACHE_STATE_NONE, |
1353 DriveCache::CACHE_TYPE_TMP); | 1354 DriveCache::CACHE_TYPE_TMP); |
1354 EXPECT_EQ(1, num_callback_invocations_); | 1355 EXPECT_EQ(1, num_callback_invocations_); |
1355 | 1356 |
1356 // Store a file to cache. | 1357 // Store a file to cache. |
1357 TestStoreToCache(resource_id, md5, | 1358 TestStoreToCache(resource_id, md5, |
1358 test_util::GetTestFilePath("gdata/root_feed.json"), | 1359 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
1359 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, | 1360 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, |
1360 DriveCache::CACHE_TYPE_TMP); | 1361 DriveCache::CACHE_TYPE_TMP); |
1361 | 1362 |
1362 // Commit a non-dirty existing file dirty. | 1363 // Commit a non-dirty existing file dirty. |
1363 num_callback_invocations_ = 0; | 1364 num_callback_invocations_ = 0; |
1364 TestCommitDirty(resource_id, md5, DRIVE_FILE_ERROR_INVALID_OPERATION, | 1365 TestCommitDirty(resource_id, md5, DRIVE_FILE_ERROR_INVALID_OPERATION, |
1365 test_util::TEST_CACHE_STATE_PRESENT, | 1366 test_util::TEST_CACHE_STATE_PRESENT, |
1366 DriveCache::CACHE_TYPE_TMP); | 1367 DriveCache::CACHE_TYPE_TMP); |
1367 EXPECT_EQ(1, num_callback_invocations_); | 1368 EXPECT_EQ(1, num_callback_invocations_); |
1368 | 1369 |
1369 // Clear dirty state of a non-dirty existing file. | 1370 // Clear dirty state of a non-dirty existing file. |
1370 num_callback_invocations_ = 0; | 1371 num_callback_invocations_ = 0; |
1371 TestClearDirty(resource_id, md5, DRIVE_FILE_ERROR_INVALID_OPERATION, | 1372 TestClearDirty(resource_id, md5, DRIVE_FILE_ERROR_INVALID_OPERATION, |
1372 test_util::TEST_CACHE_STATE_PRESENT, | 1373 test_util::TEST_CACHE_STATE_PRESENT, |
1373 DriveCache::CACHE_TYPE_TMP); | 1374 DriveCache::CACHE_TYPE_TMP); |
1374 EXPECT_EQ(1, num_callback_invocations_); | 1375 EXPECT_EQ(1, num_callback_invocations_); |
1375 | 1376 |
1376 // Mark an existing file dirty, then store a new file to the same resource id | 1377 // Mark an existing file dirty, then store a new file to the same resource id |
1377 // but different md5, which should fail. | 1378 // but different md5, which should fail. |
1378 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK, | 1379 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK, |
1379 test_util::TEST_CACHE_STATE_PRESENT | | 1380 test_util::TEST_CACHE_STATE_PRESENT | |
1380 test_util::TEST_CACHE_STATE_DIRTY | | 1381 test_util::TEST_CACHE_STATE_DIRTY | |
1381 test_util::TEST_CACHE_STATE_PERSISTENT, | 1382 test_util::TEST_CACHE_STATE_PERSISTENT, |
1382 DriveCache::CACHE_TYPE_PERSISTENT); | 1383 DriveCache::CACHE_TYPE_PERSISTENT); |
1383 num_callback_invocations_ = 0; | 1384 num_callback_invocations_ = 0; |
1384 md5 = "new_md5"; | 1385 md5 = "new_md5"; |
1385 TestStoreToCache(resource_id, md5, | 1386 TestStoreToCache(resource_id, md5, |
1386 test_util::GetTestFilePath("gdata/subdir_feed.json"), | 1387 gdata::test_util::GetTestFilePath("gdata/subdir_feed.json"), |
1387 DRIVE_FILE_ERROR_IN_USE, | 1388 DRIVE_FILE_ERROR_IN_USE, |
1388 test_util::TEST_CACHE_STATE_PRESENT | | 1389 test_util::TEST_CACHE_STATE_PRESENT | |
1389 test_util::TEST_CACHE_STATE_DIRTY | | 1390 test_util::TEST_CACHE_STATE_DIRTY | |
1390 test_util::TEST_CACHE_STATE_PERSISTENT, | 1391 test_util::TEST_CACHE_STATE_PERSISTENT, |
1391 DriveCache::CACHE_TYPE_PERSISTENT); | 1392 DriveCache::CACHE_TYPE_PERSISTENT); |
1392 EXPECT_EQ(1, num_callback_invocations_); | 1393 EXPECT_EQ(1, num_callback_invocations_); |
1393 } | 1394 } |
1394 | 1395 |
1395 TEST_F(DriveCacheTest, RemoveFromDirtyCache) { | 1396 TEST_F(DriveCacheTest, RemoveFromDirtyCache) { |
1396 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) | 1397 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) |
1397 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); | 1398 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); |
1398 | 1399 |
1399 std::string resource_id("pdf:1a2b"); | 1400 std::string resource_id("pdf:1a2b"); |
1400 std::string md5("abcdef0123456789"); | 1401 std::string md5("abcdef0123456789"); |
1401 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); | 1402 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); |
1402 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(resource_id)).Times(1); | 1403 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(resource_id)).Times(1); |
1403 | 1404 |
1404 // Store a file to cache, pin it, mark it dirty and commit it. | 1405 // Store a file to cache, pin it, mark it dirty and commit it. |
1405 TestStoreToCache(resource_id, md5, | 1406 TestStoreToCache(resource_id, md5, |
1406 test_util::GetTestFilePath("gdata/root_feed.json"), | 1407 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
1407 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, | 1408 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, |
1408 DriveCache::CACHE_TYPE_TMP); | 1409 DriveCache::CACHE_TYPE_TMP); |
1409 TestPin(resource_id, md5, DRIVE_FILE_OK, | 1410 TestPin(resource_id, md5, DRIVE_FILE_OK, |
1410 test_util::TEST_CACHE_STATE_PRESENT | | 1411 test_util::TEST_CACHE_STATE_PRESENT | |
1411 test_util::TEST_CACHE_STATE_PINNED | | 1412 test_util::TEST_CACHE_STATE_PINNED | |
1412 test_util::TEST_CACHE_STATE_PERSISTENT, | 1413 test_util::TEST_CACHE_STATE_PERSISTENT, |
1413 DriveCache::CACHE_TYPE_PERSISTENT); | 1414 DriveCache::CACHE_TYPE_PERSISTENT); |
1414 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK, | 1415 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK, |
1415 test_util::TEST_CACHE_STATE_PRESENT | | 1416 test_util::TEST_CACHE_STATE_PRESENT | |
1416 test_util::TEST_CACHE_STATE_PINNED | | 1417 test_util::TEST_CACHE_STATE_PINNED | |
(...skipping 17 matching lines...) Expand all Loading... |
1434 TEST_F(DriveCacheTest, MountUnmount) { | 1435 TEST_F(DriveCacheTest, MountUnmount) { |
1435 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) | 1436 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) |
1436 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); | 1437 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); |
1437 | 1438 |
1438 FilePath file_path; | 1439 FilePath file_path; |
1439 std::string resource_id("pdf:1a2b"); | 1440 std::string resource_id("pdf:1a2b"); |
1440 std::string md5("abcdef0123456789"); | 1441 std::string md5("abcdef0123456789"); |
1441 | 1442 |
1442 // First store a file to cache in the tmp subdir. | 1443 // First store a file to cache in the tmp subdir. |
1443 TestStoreToCache(resource_id, md5, | 1444 TestStoreToCache(resource_id, md5, |
1444 test_util::GetTestFilePath("gdata/root_feed.json"), | 1445 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
1445 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, | 1446 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, |
1446 DriveCache::CACHE_TYPE_TMP); | 1447 DriveCache::CACHE_TYPE_TMP); |
1447 | 1448 |
1448 // Mark the file mounted. | 1449 // Mark the file mounted. |
1449 num_callback_invocations_ = 0; | 1450 num_callback_invocations_ = 0; |
1450 file_path = cache_->GetCacheFilePath(resource_id, md5, | 1451 file_path = cache_->GetCacheFilePath(resource_id, md5, |
1451 DriveCache::CACHE_TYPE_TMP, | 1452 DriveCache::CACHE_TYPE_TMP, |
1452 DriveCache::CACHED_FILE_FROM_SERVER); | 1453 DriveCache::CACHED_FILE_FROM_SERVER); |
1453 TestSetMountedState(resource_id, md5, file_path, true, | 1454 TestSetMountedState(resource_id, md5, file_path, true, |
1454 DRIVE_FILE_OK, | 1455 DRIVE_FILE_OK, |
(...skipping 23 matching lines...) Expand all Loading... |
1478 EXPECT_EQ(1, num_callback_invocations_); | 1479 EXPECT_EQ(1, num_callback_invocations_); |
1479 } | 1480 } |
1480 | 1481 |
1481 TEST_F(DriveCacheTest, GetResourceIdsOfBacklogOnUIThread) { | 1482 TEST_F(DriveCacheTest, GetResourceIdsOfBacklogOnUIThread) { |
1482 PrepareForInitCacheTest(); | 1483 PrepareForInitCacheTest(); |
1483 | 1484 |
1484 std::vector<std::string> to_fetch; | 1485 std::vector<std::string> to_fetch; |
1485 std::vector<std::string> to_upload; | 1486 std::vector<std::string> to_upload; |
1486 cache_->GetResourceIdsOfBacklogOnUIThread( | 1487 cache_->GetResourceIdsOfBacklogOnUIThread( |
1487 base::Bind(&OnGetResourceIdsOfBacklog, &to_fetch, &to_upload)); | 1488 base::Bind(&OnGetResourceIdsOfBacklog, &to_fetch, &to_upload)); |
1488 test_util::RunBlockingPoolTask(); | 1489 gdata::test_util::RunBlockingPoolTask(); |
1489 | 1490 |
1490 sort(to_fetch.begin(), to_fetch.end()); | 1491 sort(to_fetch.begin(), to_fetch.end()); |
1491 ASSERT_EQ(1U, to_fetch.size()); | 1492 ASSERT_EQ(1U, to_fetch.size()); |
1492 EXPECT_EQ("pinned:non-existent", to_fetch[0]); | 1493 EXPECT_EQ("pinned:non-existent", to_fetch[0]); |
1493 | 1494 |
1494 sort(to_upload.begin(), to_upload.end()); | 1495 sort(to_upload.begin(), to_upload.end()); |
1495 ASSERT_EQ(2U, to_upload.size()); | 1496 ASSERT_EQ(2U, to_upload.size()); |
1496 EXPECT_EQ("dirty:existing", to_upload[0]); | 1497 EXPECT_EQ("dirty:existing", to_upload[0]); |
1497 EXPECT_EQ("dirty_and_pinned:existing", to_upload[1]); | 1498 EXPECT_EQ("dirty_and_pinned:existing", to_upload[1]); |
1498 } | 1499 } |
1499 | 1500 |
1500 TEST_F(DriveCacheTest, GetResourceIdsOfExistingPinnedFilesOnUIThread) { | 1501 TEST_F(DriveCacheTest, GetResourceIdsOfExistingPinnedFilesOnUIThread) { |
1501 PrepareForInitCacheTest(); | 1502 PrepareForInitCacheTest(); |
1502 | 1503 |
1503 std::vector<std::string> resource_ids; | 1504 std::vector<std::string> resource_ids; |
1504 cache_->GetResourceIdsOfExistingPinnedFilesOnUIThread( | 1505 cache_->GetResourceIdsOfExistingPinnedFilesOnUIThread( |
1505 base::Bind(&OnGetResourceIds, &resource_ids)); | 1506 base::Bind(&OnGetResourceIds, &resource_ids)); |
1506 test_util::RunBlockingPoolTask(); | 1507 gdata::test_util::RunBlockingPoolTask(); |
1507 | 1508 |
1508 sort(resource_ids.begin(), resource_ids.end()); | 1509 sort(resource_ids.begin(), resource_ids.end()); |
1509 ASSERT_EQ(2U, resource_ids.size()); | 1510 ASSERT_EQ(2U, resource_ids.size()); |
1510 EXPECT_EQ("dirty_and_pinned:existing", resource_ids[0]); | 1511 EXPECT_EQ("dirty_and_pinned:existing", resource_ids[0]); |
1511 EXPECT_EQ("pinned:existing", resource_ids[1]); | 1512 EXPECT_EQ("pinned:existing", resource_ids[1]); |
1512 } | 1513 } |
1513 | 1514 |
1514 TEST_F(DriveCacheTest, GetResourceIdsOfAllFilesOnUIThread) { | 1515 TEST_F(DriveCacheTest, GetResourceIdsOfAllFilesOnUIThread) { |
1515 PrepareForInitCacheTest(); | 1516 PrepareForInitCacheTest(); |
1516 | 1517 |
1517 std::vector<std::string> resource_ids; | 1518 std::vector<std::string> resource_ids; |
1518 cache_->GetResourceIdsOfAllFilesOnUIThread( | 1519 cache_->GetResourceIdsOfAllFilesOnUIThread( |
1519 base::Bind(&OnGetResourceIds, &resource_ids)); | 1520 base::Bind(&OnGetResourceIds, &resource_ids)); |
1520 test_util::RunBlockingPoolTask(); | 1521 gdata::test_util::RunBlockingPoolTask(); |
1521 | 1522 |
1522 sort(resource_ids.begin(), resource_ids.end()); | 1523 sort(resource_ids.begin(), resource_ids.end()); |
1523 ASSERT_EQ(6U, resource_ids.size()); | 1524 ASSERT_EQ(6U, resource_ids.size()); |
1524 EXPECT_EQ("dirty:existing", resource_ids[0]); | 1525 EXPECT_EQ("dirty:existing", resource_ids[0]); |
1525 EXPECT_EQ("dirty_and_pinned:existing", resource_ids[1]); | 1526 EXPECT_EQ("dirty_and_pinned:existing", resource_ids[1]); |
1526 EXPECT_EQ("pinned:existing", resource_ids[2]); | 1527 EXPECT_EQ("pinned:existing", resource_ids[2]); |
1527 EXPECT_EQ("pinned:non-existent", resource_ids[3]); | 1528 EXPECT_EQ("pinned:non-existent", resource_ids[3]); |
1528 EXPECT_EQ("tmp:`~!@#$%^&*()-_=+[{|]}\\;',<.>/?", resource_ids[4]); | 1529 EXPECT_EQ("tmp:`~!@#$%^&*()-_=+[{|]}\\;',<.>/?", resource_ids[4]); |
1529 EXPECT_EQ("tmp:resource_id", resource_ids[5]); | 1530 EXPECT_EQ("tmp:resource_id", resource_ids[5]); |
1530 } | 1531 } |
1531 | 1532 |
1532 | 1533 |
1533 TEST_F(DriveCacheTest, ClearAllOnUIThread) { | 1534 TEST_F(DriveCacheTest, ClearAllOnUIThread) { |
1534 PrepareForInitCacheTest(); | 1535 PrepareForInitCacheTest(); |
1535 | 1536 |
1536 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) | 1537 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) |
1537 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); | 1538 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); |
1538 | 1539 |
1539 std::string resource_id("pdf:1a2b"); | 1540 std::string resource_id("pdf:1a2b"); |
1540 std::string md5("abcdef0123456789"); | 1541 std::string md5("abcdef0123456789"); |
1541 | 1542 |
1542 // Store an existing file. | 1543 // Store an existing file. |
1543 TestStoreToCache(resource_id, md5, | 1544 TestStoreToCache(resource_id, md5, |
1544 test_util::GetTestFilePath("gdata/root_feed.json"), | 1545 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
1545 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, | 1546 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, |
1546 DriveCache::CACHE_TYPE_TMP); | 1547 DriveCache::CACHE_TYPE_TMP); |
1547 EXPECT_EQ(1, num_callback_invocations_); | 1548 EXPECT_EQ(1, num_callback_invocations_); |
1548 | 1549 |
1549 // Verify that there's only one cached file. | 1550 // Verify that there's only one cached file. |
1550 EXPECT_EQ(1U, CountCacheFiles(resource_id, md5)); | 1551 EXPECT_EQ(1U, CountCacheFiles(resource_id, md5)); |
1551 | 1552 |
1552 // Clear cache. | 1553 // Clear cache. |
1553 DriveFileError error = DRIVE_FILE_OK; | 1554 DriveFileError error = DRIVE_FILE_OK; |
1554 FilePath file_path; | 1555 FilePath file_path; |
1555 cache_->ClearAllOnUIThread(base::Bind(&OnClearAll, | 1556 cache_->ClearAllOnUIThread(base::Bind(&OnClearAll, |
1556 &error, | 1557 &error, |
1557 &file_path)); | 1558 &file_path)); |
1558 test_util::RunBlockingPoolTask(); | 1559 gdata::test_util::RunBlockingPoolTask(); |
1559 EXPECT_EQ(DRIVE_FILE_OK, error); | 1560 EXPECT_EQ(DRIVE_FILE_OK, error); |
1560 | 1561 |
1561 // Verify that all the cache is removed. | 1562 // Verify that all the cache is removed. |
1562 VerifyRemoveFromCache(error, resource_id, md5); | 1563 VerifyRemoveFromCache(error, resource_id, md5); |
1563 EXPECT_EQ(0U, CountCacheFiles(resource_id, md5)); | 1564 EXPECT_EQ(0U, CountCacheFiles(resource_id, md5)); |
1564 } | 1565 } |
1565 | 1566 |
1566 TEST_F(DriveCacheTest, StoreToCacheNoSpace) { | 1567 TEST_F(DriveCacheTest, StoreToCacheNoSpace) { |
1567 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) | 1568 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) |
1568 .Times(AtLeast(1)).WillRepeatedly(Return(0)); | 1569 .Times(AtLeast(1)).WillRepeatedly(Return(0)); |
1569 | 1570 |
1570 std::string resource_id("pdf:1a2b"); | 1571 std::string resource_id("pdf:1a2b"); |
1571 std::string md5("abcdef0123456789"); | 1572 std::string md5("abcdef0123456789"); |
1572 | 1573 |
1573 // Try to store an existing file. | 1574 // Try to store an existing file. |
1574 TestStoreToCache(resource_id, md5, | 1575 TestStoreToCache(resource_id, md5, |
1575 test_util::GetTestFilePath("gdata/root_feed.json"), | 1576 gdata::test_util::GetTestFilePath("gdata/root_feed.json"), |
1576 DRIVE_FILE_ERROR_NO_SPACE, | 1577 DRIVE_FILE_ERROR_NO_SPACE, |
1577 test_util::TEST_CACHE_STATE_NONE, | 1578 test_util::TEST_CACHE_STATE_NONE, |
1578 DriveCache::CACHE_TYPE_TMP); | 1579 DriveCache::CACHE_TYPE_TMP); |
1579 EXPECT_EQ(1, num_callback_invocations_); | 1580 EXPECT_EQ(1, num_callback_invocations_); |
1580 | 1581 |
1581 // Verify that there's no files added. | 1582 // Verify that there's no files added. |
1582 EXPECT_EQ(0U, CountCacheFiles(resource_id, md5)); | 1583 EXPECT_EQ(0U, CountCacheFiles(resource_id, md5)); |
1583 } | 1584 } |
1584 | 1585 |
1585 // Don't use TEST_F, as we don't want SetUp() and TearDown() for this test. | 1586 // Don't use TEST_F, as we don't want SetUp() and TearDown() for this test. |
1586 TEST(DriveCacheExtraTest, InitializationFailure) { | 1587 TEST(DriveCacheExtraTest, InitializationFailure) { |
1587 MessageLoopForUI message_loop; | 1588 MessageLoopForUI message_loop; |
1588 content::TestBrowserThread ui_thread(content::BrowserThread::UI, | 1589 content::TestBrowserThread ui_thread(content::BrowserThread::UI, |
1589 &message_loop); | 1590 &message_loop); |
1590 | 1591 |
1591 scoped_refptr<base::SequencedWorkerPool> pool = | 1592 scoped_refptr<base::SequencedWorkerPool> pool = |
1592 content::BrowserThread::GetBlockingPool(); | 1593 content::BrowserThread::GetBlockingPool(); |
1593 | 1594 |
1594 // Set the cache root to a non existent path, so the initialization fails. | 1595 // Set the cache root to a non existent path, so the initialization fails. |
1595 DriveCache* cache = DriveCache::CreateDriveCacheOnUIThread( | 1596 DriveCache* cache = DriveCache::CreateDriveCacheOnUIThread( |
1596 FilePath::FromUTF8Unsafe("/somewhere/nonexistent/blah/blah"), | 1597 FilePath::FromUTF8Unsafe("/somewhere/nonexistent/blah/blah"), |
1597 pool->GetSequencedTaskRunner(pool->GetSequenceToken())); | 1598 pool->GetSequencedTaskRunner(pool->GetSequenceToken())); |
1598 | 1599 |
1599 bool success = false; | 1600 bool success = false; |
1600 cache->RequestInitializeOnUIThread( | 1601 cache->RequestInitializeOnUIThread( |
1601 base::Bind(&test_util::CopyResultFromInitializeCacheCallback, | 1602 base::Bind(&test_util::CopyResultFromInitializeCacheCallback, |
1602 &success)); | 1603 &success)); |
1603 test_util::RunBlockingPoolTask(); | 1604 gdata::test_util::RunBlockingPoolTask(); |
1604 EXPECT_FALSE(success); | 1605 EXPECT_FALSE(success); |
1605 | 1606 |
1606 cache->DestroyOnUIThread(); | 1607 cache->DestroyOnUIThread(); |
1607 test_util::RunBlockingPoolTask(); | 1608 gdata::test_util::RunBlockingPoolTask(); |
1608 } | 1609 } |
1609 | 1610 |
1610 } // namespace gdata | 1611 } // namespace drive |
OLD | NEW |