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

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

Issue 445473002: Remove ResourceIdCanonicalizer from DriveServiceInterface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/resource_metadata_storage.h" 5 #include "chrome/browser/chromeos/drive/resource_metadata_storage.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/files/scoped_temp_dir.h" 10 #include "base/files/scoped_temp_dir.h"
11 #include "chrome/browser/chromeos/drive/drive.pb.h" 11 #include "chrome/browser/chromeos/drive/drive.pb.h"
12 #include "chrome/browser/chromeos/drive/test_util.h" 12 #include "chrome/browser/chromeos/drive/test_util.h"
13 #include "chrome/browser/drive/drive_api_util.h"
14 #include "content/public/test/test_browser_thread_bundle.h" 13 #include "content/public/test/test_browser_thread_bundle.h"
15 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
16 #include "third_party/leveldatabase/src/include/leveldb/db.h" 15 #include "third_party/leveldatabase/src/include/leveldb/db.h"
17 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" 16 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h"
18 17
19 namespace drive { 18 namespace drive {
20 namespace internal { 19 namespace internal {
21 20
22 class ResourceMetadataStorageTest : public testing::Test { 21 class ResourceMetadataStorageTest : public testing::Test {
23 protected: 22 protected:
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 batch.Put("file:abcd", serialized_entry); 301 batch.Put("file:abcd", serialized_entry);
303 302
304 FileCacheEntry cache_entry; 303 FileCacheEntry cache_entry;
305 EXPECT_TRUE(cache_entry.SerializeToString(&serialized_entry)); 304 EXPECT_TRUE(cache_entry.SerializeToString(&serialized_entry));
306 batch.Put(std::string("file:abcd") + '\0' + "CACHE", serialized_entry); 305 batch.Put(std::string("file:abcd") + '\0' + "CACHE", serialized_entry);
307 306
308 EXPECT_TRUE(resource_map()->Write(leveldb::WriteOptions(), &batch).ok()); 307 EXPECT_TRUE(resource_map()->Write(leveldb::WriteOptions(), &batch).ok());
309 308
310 // Upgrade and reopen. 309 // Upgrade and reopen.
311 storage_.reset(); 310 storage_.reset();
312 EXPECT_TRUE(ResourceMetadataStorage::UpgradeOldDB( 311 EXPECT_TRUE(ResourceMetadataStorage::UpgradeOldDB(temp_dir_.path()));
313 temp_dir_.path(), base::Bind(&util::CanonicalizeResourceId)));
314 storage_.reset(new ResourceMetadataStorage( 312 storage_.reset(new ResourceMetadataStorage(
315 temp_dir_.path(), base::MessageLoopProxy::current().get())); 313 temp_dir_.path(), base::MessageLoopProxy::current().get()));
316 ASSERT_TRUE(storage_->Initialize()); 314 ASSERT_TRUE(storage_->Initialize());
317 315
318 // Resource-ID-to-local-ID mapping is added. 316 // Resource-ID-to-local-ID mapping is added.
319 std::string id; 317 std::string id;
320 EXPECT_EQ(FILE_ERROR_OK, 318 EXPECT_EQ(FILE_ERROR_OK,
321 storage_->GetIdByResourceId("abcd", &id)); // "file:" is dropped. 319 storage_->GetIdByResourceId("abcd", &id)); // "file:" is dropped.
322 320
323 // Data is erased, except cache entries. 321 // Data is erased, except cache entries.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 FileCacheEntry cache_entry; 353 FileCacheEntry cache_entry;
356 EXPECT_TRUE(cache_entry.SerializeToString(&serialized_entry)); 354 EXPECT_TRUE(cache_entry.SerializeToString(&serialized_entry));
357 batch.Put(local_id + '\0' + "CACHE", serialized_entry); 355 batch.Put(local_id + '\0' + "CACHE", serialized_entry);
358 356
359 batch.Put('\0' + std::string("ID") + '\0' + resource_id, local_id); 357 batch.Put('\0' + std::string("ID") + '\0' + resource_id, local_id);
360 358
361 EXPECT_TRUE(resource_map()->Write(leveldb::WriteOptions(), &batch).ok()); 359 EXPECT_TRUE(resource_map()->Write(leveldb::WriteOptions(), &batch).ok());
362 360
363 // Upgrade and reopen. 361 // Upgrade and reopen.
364 storage_.reset(); 362 storage_.reset();
365 EXPECT_TRUE(ResourceMetadataStorage::UpgradeOldDB( 363 EXPECT_TRUE(ResourceMetadataStorage::UpgradeOldDB(temp_dir_.path()));
366 temp_dir_.path(), base::Bind(&util::CanonicalizeResourceId)));
367 storage_.reset(new ResourceMetadataStorage( 364 storage_.reset(new ResourceMetadataStorage(
368 temp_dir_.path(), base::MessageLoopProxy::current().get())); 365 temp_dir_.path(), base::MessageLoopProxy::current().get()));
369 ASSERT_TRUE(storage_->Initialize()); 366 ASSERT_TRUE(storage_->Initialize());
370 367
371 // Data is erased, except cache and id mapping entries. 368 // Data is erased, except cache and id mapping entries.
372 std::string id; 369 std::string id;
373 EXPECT_EQ(FILE_ERROR_OK, storage_->GetIdByResourceId(resource_id, &id)); 370 EXPECT_EQ(FILE_ERROR_OK, storage_->GetIdByResourceId(resource_id, &id));
374 EXPECT_EQ(local_id, id); 371 EXPECT_EQ(local_id, id);
375 int64 largest_changestamp = 0; 372 int64 largest_changestamp = 0;
376 EXPECT_EQ(FILE_ERROR_OK, 373 EXPECT_EQ(FILE_ERROR_OK,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 // Put another cache entry which is not accompanied by a ResourceEntry. 414 // Put another cache entry which is not accompanied by a ResourceEntry.
418 cache_entry.set_md5(md5_2); 415 cache_entry.set_md5(md5_2);
419 EXPECT_TRUE(cache_entry.SerializeToString(&serialized_entry)); 416 EXPECT_TRUE(cache_entry.SerializeToString(&serialized_entry));
420 batch.Put(local_id2 + '\0' + "CACHE", serialized_entry); 417 batch.Put(local_id2 + '\0' + "CACHE", serialized_entry);
421 batch.Put('\0' + std::string("ID") + '\0' + resource_id2, local_id2); 418 batch.Put('\0' + std::string("ID") + '\0' + resource_id2, local_id2);
422 419
423 EXPECT_TRUE(resource_map()->Write(leveldb::WriteOptions(), &batch).ok()); 420 EXPECT_TRUE(resource_map()->Write(leveldb::WriteOptions(), &batch).ok());
424 421
425 // Upgrade and reopen. 422 // Upgrade and reopen.
426 storage_.reset(); 423 storage_.reset();
427 EXPECT_TRUE(ResourceMetadataStorage::UpgradeOldDB( 424 EXPECT_TRUE(ResourceMetadataStorage::UpgradeOldDB(temp_dir_.path()));
428 temp_dir_.path(), base::Bind(&util::CanonicalizeResourceId)));
429 storage_.reset(new ResourceMetadataStorage( 425 storage_.reset(new ResourceMetadataStorage(
430 temp_dir_.path(), base::MessageLoopProxy::current().get())); 426 temp_dir_.path(), base::MessageLoopProxy::current().get()));
431 ASSERT_TRUE(storage_->Initialize()); 427 ASSERT_TRUE(storage_->Initialize());
432 428
433 // No data is lost. 429 // No data is lost.
434 int64 largest_changestamp = 0; 430 int64 largest_changestamp = 0;
435 EXPECT_EQ(FILE_ERROR_OK, 431 EXPECT_EQ(FILE_ERROR_OK,
436 storage_->GetLargestChangestamp(&largest_changestamp)); 432 storage_->GetLargestChangestamp(&largest_changestamp));
437 EXPECT_EQ(kLargestChangestamp, largest_changestamp); 433 EXPECT_EQ(kLargestChangestamp, largest_changestamp);
438 434
(...skipping 17 matching lines...) Expand all
456 // Put some data. 452 // Put some data.
457 EXPECT_EQ(FILE_ERROR_OK, 453 EXPECT_EQ(FILE_ERROR_OK,
458 storage_->SetLargestChangestamp(kLargestChangestamp)); 454 storage_->SetLargestChangestamp(kLargestChangestamp));
459 ResourceEntry entry; 455 ResourceEntry entry;
460 entry.set_local_id(key1); 456 entry.set_local_id(key1);
461 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry)); 457 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry));
462 458
463 // Set newer version, upgrade and reopen DB. 459 // Set newer version, upgrade and reopen DB.
464 SetDBVersion(ResourceMetadataStorage::kDBVersion + 1); 460 SetDBVersion(ResourceMetadataStorage::kDBVersion + 1);
465 storage_.reset(); 461 storage_.reset();
466 EXPECT_FALSE(ResourceMetadataStorage::UpgradeOldDB( 462 EXPECT_FALSE(ResourceMetadataStorage::UpgradeOldDB(temp_dir_.path()));
467 temp_dir_.path(), base::Bind(&util::CanonicalizeResourceId)));
468 storage_.reset(new ResourceMetadataStorage( 463 storage_.reset(new ResourceMetadataStorage(
469 temp_dir_.path(), base::MessageLoopProxy::current().get())); 464 temp_dir_.path(), base::MessageLoopProxy::current().get()));
470 ASSERT_TRUE(storage_->Initialize()); 465 ASSERT_TRUE(storage_->Initialize());
471 466
472 // Data is erased because of the incompatible version. 467 // Data is erased because of the incompatible version.
473 int64 largest_changestamp = 0; 468 int64 largest_changestamp = 0;
474 EXPECT_EQ(FILE_ERROR_OK, 469 EXPECT_EQ(FILE_ERROR_OK,
475 storage_->GetLargestChangestamp(&largest_changestamp)); 470 storage_->GetLargestChangestamp(&largest_changestamp));
476 EXPECT_EQ(0, largest_changestamp); 471 EXPECT_EQ(0, largest_changestamp);
477 EXPECT_EQ(FILE_ERROR_NOT_FOUND, storage_->GetEntry(key1, &entry)); 472 EXPECT_EQ(FILE_ERROR_NOT_FOUND, storage_->GetEntry(key1, &entry));
(...skipping 12 matching lines...) Expand all
490 batch.Put("id1", serialized_entry); 485 batch.Put("id1", serialized_entry);
491 batch.Put('\0' + std::string("ID") + '\0' + "resource_id1", "id1"); 486 batch.Put('\0' + std::string("ID") + '\0' + "resource_id1", "id1");
492 487
493 // Put an ID entry without any corresponding entries. 488 // Put an ID entry without any corresponding entries.
494 batch.Put('\0' + std::string("ID") + '\0' + "resource_id2", "id3"); 489 batch.Put('\0' + std::string("ID") + '\0' + "resource_id2", "id3");
495 490
496 EXPECT_TRUE(resource_map()->Write(leveldb::WriteOptions(), &batch).ok()); 491 EXPECT_TRUE(resource_map()->Write(leveldb::WriteOptions(), &batch).ok());
497 492
498 // Upgrade and reopen. 493 // Upgrade and reopen.
499 storage_.reset(); 494 storage_.reset();
500 EXPECT_TRUE(ResourceMetadataStorage::UpgradeOldDB( 495 EXPECT_TRUE(ResourceMetadataStorage::UpgradeOldDB(temp_dir_.path()));
501 temp_dir_.path(), base::Bind(&util::CanonicalizeResourceId)));
502 storage_.reset(new ResourceMetadataStorage( 496 storage_.reset(new ResourceMetadataStorage(
503 temp_dir_.path(), base::MessageLoopProxy::current().get())); 497 temp_dir_.path(), base::MessageLoopProxy::current().get()));
504 ASSERT_TRUE(storage_->Initialize()); 498 ASSERT_TRUE(storage_->Initialize());
505 499
506 // Only the unused entry is deleted. 500 // Only the unused entry is deleted.
507 std::string id; 501 std::string id;
508 EXPECT_EQ(FILE_ERROR_OK, storage_->GetIdByResourceId("resource_id1", &id)); 502 EXPECT_EQ(FILE_ERROR_OK, storage_->GetIdByResourceId("resource_id1", &id));
509 EXPECT_EQ("id1", id); 503 EXPECT_EQ("id1", id);
510 EXPECT_EQ(FILE_ERROR_NOT_FOUND, 504 EXPECT_EQ(FILE_ERROR_NOT_FOUND,
511 storage_->GetIdByResourceId("resource_id2", &id)); 505 storage_->GetIdByResourceId("resource_id2", &id));
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 EXPECT_EQ(FILE_ERROR_OK, storage_->RemoveEntry(key3)); 622 EXPECT_EQ(FILE_ERROR_OK, storage_->RemoveEntry(key3));
629 EXPECT_TRUE(CheckValidity()); 623 EXPECT_TRUE(CheckValidity());
630 624
631 // Remove key1. 625 // Remove key1.
632 EXPECT_EQ(FILE_ERROR_OK, storage_->RemoveEntry(key1)); 626 EXPECT_EQ(FILE_ERROR_OK, storage_->RemoveEntry(key1));
633 EXPECT_TRUE(CheckValidity()); 627 EXPECT_TRUE(CheckValidity());
634 } 628 }
635 629
636 } // namespace internal 630 } // namespace internal
637 } // namespace drive 631 } // namespace drive
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/drive/resource_metadata_storage.cc ('k') | chrome/browser/drive/drive_api_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698