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

Side by Side Diff: chrome/browser/chromeos/drive/file_cache_unittest.cc

Issue 18948004: drive: Remove MD5 argument from FileCache::MarkDirty (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 5 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 | Annotate | Revision Log
OLDNEW
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/file_cache.h" 5 #include "chrome/browser/chromeos/drive/file_cache.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 193
194 FileError error = FILE_ERROR_OK; 194 FileError error = FILE_ERROR_OK;
195 cache_->UnpinOnUIThread( 195 cache_->UnpinOnUIThread(
196 resource_id, 196 resource_id,
197 google_apis::test_util::CreateCopyResultCallback(&error)); 197 google_apis::test_util::CreateCopyResultCallback(&error));
198 test_util::RunBlockingPoolTask(); 198 test_util::RunBlockingPoolTask();
199 VerifyCacheFileState(error, resource_id, std::string()); 199 VerifyCacheFileState(error, resource_id, std::string());
200 } 200 }
201 201
202 void TestMarkDirty(const std::string& resource_id, 202 void TestMarkDirty(const std::string& resource_id,
203 const std::string& md5,
204 FileError expected_error, 203 FileError expected_error,
205 int expected_cache_state) { 204 int expected_cache_state) {
206 expected_error_ = expected_error; 205 expected_error_ = expected_error;
207 expected_cache_state_ = expected_cache_state; 206 expected_cache_state_ = expected_cache_state;
208 207
209 FileError error = FILE_ERROR_OK; 208 FileError error = FILE_ERROR_OK;
210 cache_->MarkDirtyOnUIThread( 209 cache_->MarkDirtyOnUIThread(
211 resource_id, md5, 210 resource_id,
212 google_apis::test_util::CreateCopyResultCallback(&error)); 211 google_apis::test_util::CreateCopyResultCallback(&error));
213 test_util::RunBlockingPoolTask(); 212 test_util::RunBlockingPoolTask();
214 213
215 VerifyCacheFileState(error, resource_id, md5); 214 VerifyCacheFileState(error, resource_id, std::string());
216 215
217 // Verify filename. 216 // Verify filename.
218 if (error == FILE_ERROR_OK) { 217 if (error == FILE_ERROR_OK) {
219 base::FilePath cache_file_path; 218 base::FilePath cache_file_path;
220 cache_->GetFileOnUIThread( 219 cache_->GetFileOnUIThread(
221 resource_id, md5, 220 resource_id, std::string(),
222 google_apis::test_util::CreateCopyResultCallback( 221 google_apis::test_util::CreateCopyResultCallback(
223 &error, &cache_file_path)); 222 &error, &cache_file_path));
224 test_util::RunBlockingPoolTask(); 223 test_util::RunBlockingPoolTask();
225 224
226 EXPECT_EQ(FILE_ERROR_OK, error); 225 EXPECT_EQ(FILE_ERROR_OK, error);
227 EXPECT_EQ(util::EscapeCacheFileName(resource_id), 226 EXPECT_EQ(util::EscapeCacheFileName(resource_id),
228 cache_file_path.BaseName().AsUTF8Unsafe()); 227 cache_file_path.BaseName().AsUTF8Unsafe());
229 } 228 }
230 } 229 }
231 230
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 546
548 TEST_F(FileCacheTestOnUIThread, DirtyCacheSimple) { 547 TEST_F(FileCacheTestOnUIThread, DirtyCacheSimple) {
549 std::string resource_id("pdf:1a2b"); 548 std::string resource_id("pdf:1a2b");
550 std::string md5("abcdef0123456789"); 549 std::string md5("abcdef0123456789");
551 550
552 // First store a file to cache. 551 // First store a file to cache.
553 TestStoreToCache(resource_id, md5, dummy_file_path_, 552 TestStoreToCache(resource_id, md5, dummy_file_path_,
554 FILE_ERROR_OK, TEST_CACHE_STATE_PRESENT); 553 FILE_ERROR_OK, TEST_CACHE_STATE_PRESENT);
555 554
556 // Mark the file dirty. 555 // Mark the file dirty.
557 TestMarkDirty(resource_id, md5, FILE_ERROR_OK, 556 TestMarkDirty(resource_id, FILE_ERROR_OK,
558 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_DIRTY); 557 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_DIRTY);
559 558
560 // Clear dirty state of the file. 559 // Clear dirty state of the file.
561 TestClearDirty(resource_id, md5, FILE_ERROR_OK, TEST_CACHE_STATE_PRESENT); 560 TestClearDirty(resource_id, md5, FILE_ERROR_OK, TEST_CACHE_STATE_PRESENT);
562 } 561 }
563 562
564 TEST_F(FileCacheTestOnUIThread, DirtyCachePinned) { 563 TEST_F(FileCacheTestOnUIThread, DirtyCachePinned) {
565 std::string resource_id("pdf:1a2b"); 564 std::string resource_id("pdf:1a2b");
566 std::string md5("abcdef0123456789"); 565 std::string md5("abcdef0123456789");
567 566
568 // First store a file to cache and pin it. 567 // First store a file to cache and pin it.
569 TestStoreToCache(resource_id, md5, dummy_file_path_, 568 TestStoreToCache(resource_id, md5, dummy_file_path_,
570 FILE_ERROR_OK, TEST_CACHE_STATE_PRESENT); 569 FILE_ERROR_OK, TEST_CACHE_STATE_PRESENT);
571 TestPin(resource_id, FILE_ERROR_OK, 570 TestPin(resource_id, FILE_ERROR_OK,
572 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_PINNED); 571 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_PINNED);
573 572
574 // Mark the file dirty. 573 // Mark the file dirty.
575 TestMarkDirty(resource_id, md5, FILE_ERROR_OK, 574 TestMarkDirty(resource_id, FILE_ERROR_OK,
576 TEST_CACHE_STATE_PRESENT | 575 TEST_CACHE_STATE_PRESENT |
577 TEST_CACHE_STATE_DIRTY | 576 TEST_CACHE_STATE_DIRTY |
578 TEST_CACHE_STATE_PINNED); 577 TEST_CACHE_STATE_PINNED);
579 578
580 // Clear dirty state of the file. 579 // Clear dirty state of the file.
581 TestClearDirty(resource_id, md5, FILE_ERROR_OK, 580 TestClearDirty(resource_id, md5, FILE_ERROR_OK,
582 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_PINNED); 581 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_PINNED);
583 } 582 }
584 583
585 TEST_F(FileCacheTestOnUIThread, PinAndUnpinDirtyCache) { 584 TEST_F(FileCacheTestOnUIThread, PinAndUnpinDirtyCache) {
586 std::string resource_id("pdf:1a2b"); 585 std::string resource_id("pdf:1a2b");
587 std::string md5("abcdef0123456789"); 586 std::string md5("abcdef0123456789");
588 587
589 // First store a file to cache and mark it as dirty. 588 // First store a file to cache and mark it as dirty.
590 TestStoreToCache(resource_id, md5, dummy_file_path_, 589 TestStoreToCache(resource_id, md5, dummy_file_path_,
591 FILE_ERROR_OK, TEST_CACHE_STATE_PRESENT); 590 FILE_ERROR_OK, TEST_CACHE_STATE_PRESENT);
592 TestMarkDirty(resource_id, md5, FILE_ERROR_OK, 591 TestMarkDirty(resource_id, FILE_ERROR_OK,
593 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_DIRTY); 592 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_DIRTY);
594 593
595 // Verifies dirty file exists. 594 // Verifies dirty file exists.
596 base::FilePath dirty_path; 595 base::FilePath dirty_path;
597 FileError error = FILE_ERROR_FAILED; 596 FileError error = FILE_ERROR_FAILED;
598 cache_->GetFileOnUIThread( 597 cache_->GetFileOnUIThread(
599 resource_id, md5, 598 resource_id, md5,
600 google_apis::test_util::CreateCopyResultCallback(&error, &dirty_path)); 599 google_apis::test_util::CreateCopyResultCallback(&error, &dirty_path));
601 test_util::RunBlockingPoolTask(); 600 test_util::RunBlockingPoolTask();
602 EXPECT_EQ(FILE_ERROR_OK, error); 601 EXPECT_EQ(FILE_ERROR_OK, error);
(...skipping 18 matching lines...) Expand all
621 620
622 TEST_F(FileCacheTestOnUIThread, DirtyCacheRepetitive) { 621 TEST_F(FileCacheTestOnUIThread, DirtyCacheRepetitive) {
623 std::string resource_id("pdf:1a2b"); 622 std::string resource_id("pdf:1a2b");
624 std::string md5("abcdef0123456789"); 623 std::string md5("abcdef0123456789");
625 624
626 // First store a file to cache. 625 // First store a file to cache.
627 TestStoreToCache(resource_id, md5, dummy_file_path_, 626 TestStoreToCache(resource_id, md5, dummy_file_path_,
628 FILE_ERROR_OK, TEST_CACHE_STATE_PRESENT); 627 FILE_ERROR_OK, TEST_CACHE_STATE_PRESENT);
629 628
630 // Mark the file dirty. 629 // Mark the file dirty.
631 TestMarkDirty(resource_id, md5, FILE_ERROR_OK, 630 TestMarkDirty(resource_id, FILE_ERROR_OK,
632 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_DIRTY); 631 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_DIRTY);
633 632
634 // Again, mark the file dirty. Nothing should change. 633 // Again, mark the file dirty. Nothing should change.
635 TestMarkDirty(resource_id, md5, FILE_ERROR_OK, 634 TestMarkDirty(resource_id, FILE_ERROR_OK,
636 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_DIRTY); 635 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_DIRTY);
637 636
638 // Clear dirty state of the file. 637 // Clear dirty state of the file.
639 TestClearDirty(resource_id, md5, FILE_ERROR_OK, TEST_CACHE_STATE_PRESENT); 638 TestClearDirty(resource_id, md5, FILE_ERROR_OK, TEST_CACHE_STATE_PRESENT);
640 639
641 // Again, clear dirty state of the file, which is no longer dirty. 640 // Again, clear dirty state of the file, which is no longer dirty.
642 TestClearDirty(resource_id, md5, FILE_ERROR_INVALID_OPERATION, 641 TestClearDirty(resource_id, md5, FILE_ERROR_INVALID_OPERATION,
643 TEST_CACHE_STATE_PRESENT); 642 TEST_CACHE_STATE_PRESENT);
644 } 643 }
645 644
646 TEST_F(FileCacheTestOnUIThread, DirtyCacheInvalid) { 645 TEST_F(FileCacheTestOnUIThread, DirtyCacheInvalid) {
647 std::string resource_id("pdf:1a2b"); 646 std::string resource_id("pdf:1a2b");
648 std::string md5("abcdef0123456789"); 647 std::string md5("abcdef0123456789");
649 648
650 // Mark a non-existent file dirty. 649 // Mark a non-existent file dirty.
651 TestMarkDirty(resource_id, md5, FILE_ERROR_NOT_FOUND, TEST_CACHE_STATE_NONE); 650 TestMarkDirty(resource_id, FILE_ERROR_NOT_FOUND, TEST_CACHE_STATE_NONE);
652 651
653 // Clear dirty state of a non-existent file. 652 // Clear dirty state of a non-existent file.
654 TestClearDirty(resource_id, md5, FILE_ERROR_NOT_FOUND, TEST_CACHE_STATE_NONE); 653 TestClearDirty(resource_id, md5, FILE_ERROR_NOT_FOUND, TEST_CACHE_STATE_NONE);
655 654
656 // Store a file to cache. 655 // Store a file to cache.
657 TestStoreToCache(resource_id, md5, dummy_file_path_, 656 TestStoreToCache(resource_id, md5, dummy_file_path_,
658 FILE_ERROR_OK, TEST_CACHE_STATE_PRESENT); 657 FILE_ERROR_OK, TEST_CACHE_STATE_PRESENT);
659 658
660 // Clear dirty state of a non-dirty existing file. 659 // Clear dirty state of a non-dirty existing file.
661 TestClearDirty(resource_id, md5, FILE_ERROR_INVALID_OPERATION, 660 TestClearDirty(resource_id, md5, FILE_ERROR_INVALID_OPERATION,
662 TEST_CACHE_STATE_PRESENT); 661 TEST_CACHE_STATE_PRESENT);
663 662
664 // Mark an existing file dirty, then store a new file to the same resource id 663 // Mark an existing file dirty, then store a new file to the same resource id
665 // but different md5, which should fail. 664 // but different md5, which should fail.
666 TestMarkDirty(resource_id, md5, FILE_ERROR_OK, 665 TestMarkDirty(resource_id, FILE_ERROR_OK,
667 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_DIRTY); 666 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_DIRTY);
668 md5 = "new_md5"; 667 md5 = "new_md5";
669 TestStoreToCache(resource_id, md5, dummy_file_path_, 668 TestStoreToCache(resource_id, md5, dummy_file_path_,
670 FILE_ERROR_IN_USE, 669 FILE_ERROR_IN_USE,
671 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_DIRTY); 670 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_DIRTY);
672 } 671 }
673 672
674 TEST_F(FileCacheTestOnUIThread, RemoveFromDirtyCache) { 673 TEST_F(FileCacheTestOnUIThread, RemoveFromDirtyCache) {
675 std::string resource_id("pdf:1a2b"); 674 std::string resource_id("pdf:1a2b");
676 std::string md5("abcdef0123456789"); 675 std::string md5("abcdef0123456789");
677 676
678 // Store a file to cache, pin it, mark it dirty and commit it. 677 // Store a file to cache, pin it, mark it dirty and commit it.
679 TestStoreToCache(resource_id, md5, dummy_file_path_, 678 TestStoreToCache(resource_id, md5, dummy_file_path_,
680 FILE_ERROR_OK, TEST_CACHE_STATE_PRESENT); 679 FILE_ERROR_OK, TEST_CACHE_STATE_PRESENT);
681 TestPin(resource_id, FILE_ERROR_OK, 680 TestPin(resource_id, FILE_ERROR_OK,
682 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_PINNED); 681 TEST_CACHE_STATE_PRESENT | TEST_CACHE_STATE_PINNED);
683 TestMarkDirty(resource_id, md5, FILE_ERROR_OK, 682 TestMarkDirty(resource_id, FILE_ERROR_OK,
684 TEST_CACHE_STATE_PRESENT | 683 TEST_CACHE_STATE_PRESENT |
685 TEST_CACHE_STATE_PINNED | 684 TEST_CACHE_STATE_PINNED |
686 TEST_CACHE_STATE_DIRTY); 685 TEST_CACHE_STATE_DIRTY);
687 686
688 // Try to remove the file. Dirty caches can be removed at the level of 687 // Try to remove the file. Dirty caches can be removed at the level of
689 // FileCache::Remove. Upper layer cache clearance functions like 688 // FileCache::Remove. Upper layer cache clearance functions like
690 // FreeDiskSpaceIfNeededFor() and RemoveStaleCacheFiles() takes care of 689 // FreeDiskSpaceIfNeededFor() and RemoveStaleCacheFiles() takes care of
691 // securing dirty files. 690 // securing dirty files.
692 TestRemoveFromCache(resource_id, FILE_ERROR_OK); 691 TestRemoveFromCache(resource_id, FILE_ERROR_OK);
693 } 692 }
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
998 &contents)); 997 &contents));
999 EXPECT_EQ("koo", contents); 998 EXPECT_EQ("koo", contents);
1000 contents.clear(); 999 contents.clear();
1001 EXPECT_TRUE(file_util::ReadFileToString(file_directory.AppendASCII("id_kyu"), 1000 EXPECT_TRUE(file_util::ReadFileToString(file_directory.AppendASCII("id_kyu"),
1002 &contents)); 1001 &contents));
1003 EXPECT_EQ("kyu", contents); 1002 EXPECT_EQ("kyu", contents);
1004 } 1003 }
1005 1004
1006 } // namespace internal 1005 } // namespace internal
1007 } // namespace drive 1006 } // namespace drive
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/drive/file_cache.cc ('k') | chrome/browser/chromeos/drive/file_system/copy_operation.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698