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

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

Issue 17004011: drive: DriveIntegrationService owns ResourceMetadataStorage (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix a nit Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | 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"
13 #include "content/public/test/test_browser_thread_bundle.h"
12 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
13 #include "third_party/leveldatabase/src/include/leveldb/db.h" 15 #include "third_party/leveldatabase/src/include/leveldb/db.h"
14 16
15 namespace drive { 17 namespace drive {
18 namespace internal {
16 19
17 class ResourceMetadataStorageTest : public testing::Test { 20 class ResourceMetadataStorageTest : public testing::Test {
18 protected: 21 protected:
19 virtual void SetUp() OVERRIDE { 22 virtual void SetUp() OVERRIDE {
20 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 23 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
21 24
22 storage_.reset(new ResourceMetadataStorage(temp_dir_.path())); 25 storage_.reset(new ResourceMetadataStorage(
26 temp_dir_.path(), base::MessageLoopProxy::current()));
23 ASSERT_TRUE(storage_->Initialize()); 27 ASSERT_TRUE(storage_->Initialize());
24 } 28 }
25 29
26 virtual void TearDown() OVERRIDE {
27 }
28
29 // Overwrites |storage_|'s version. 30 // Overwrites |storage_|'s version.
30 void SetDBVersion(int version) { 31 void SetDBVersion(int version) {
31 ResourceMetadataHeader header; 32 ResourceMetadataHeader header;
32 ASSERT_TRUE(storage_->GetHeader(&header)); 33 ASSERT_TRUE(storage_->GetHeader(&header));
33 header.set_version(version); 34 header.set_version(version);
34 EXPECT_TRUE(storage_->PutHeader(header)); 35 EXPECT_TRUE(storage_->PutHeader(header));
35 } 36 }
36 37
37 bool CheckValidity() { 38 bool CheckValidity() {
38 return storage_->CheckValidity(); 39 return storage_->CheckValidity();
(...skipping 12 matching lines...) Expand all
51 52
52 // Removes a child entry. 53 // Removes a child entry.
53 void RemoveChild(const std::string& parent_resource_id, 54 void RemoveChild(const std::string& parent_resource_id,
54 const std::string& child_base_name) { 55 const std::string& child_base_name) {
55 storage_->resource_map_->Delete( 56 storage_->resource_map_->Delete(
56 leveldb::WriteOptions(), 57 leveldb::WriteOptions(),
57 ResourceMetadataStorage::GetChildEntryKey(parent_resource_id, 58 ResourceMetadataStorage::GetChildEntryKey(parent_resource_id,
58 child_base_name)); 59 child_base_name));
59 } 60 }
60 61
62 content::TestBrowserThreadBundle thread_bundle_;
61 base::ScopedTempDir temp_dir_; 63 base::ScopedTempDir temp_dir_;
62 scoped_ptr<ResourceMetadataStorage> storage_; 64 scoped_ptr<ResourceMetadataStorage,
65 test_util::DestroyHelperForTests> storage_;
63 }; 66 };
64 67
65 TEST_F(ResourceMetadataStorageTest, LargestChangestamp) { 68 TEST_F(ResourceMetadataStorageTest, LargestChangestamp) {
66 const int64 kLargestChangestamp = 1234567890; 69 const int64 kLargestChangestamp = 1234567890;
67 EXPECT_TRUE(storage_->SetLargestChangestamp(kLargestChangestamp)); 70 EXPECT_TRUE(storage_->SetLargestChangestamp(kLargestChangestamp));
68 EXPECT_EQ(kLargestChangestamp, storage_->GetLargestChangestamp()); 71 EXPECT_EQ(kLargestChangestamp, storage_->GetLargestChangestamp());
69 } 72 }
70 73
71 TEST_F(ResourceMetadataStorageTest, PutEntry) { 74 TEST_F(ResourceMetadataStorageTest, PutEntry) {
72 const std::string key1 = "abcdefg"; 75 const std::string key1 = "abcdefg";
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 ResourceEntry entry2; 304 ResourceEntry entry2;
302 entry2.set_resource_id(child_id1); 305 entry2.set_resource_id(child_id1);
303 entry2.set_parent_resource_id(parent_id1); 306 entry2.set_parent_resource_id(parent_id1);
304 entry2.set_base_name(child_name1); 307 entry2.set_base_name(child_name1);
305 308
306 // Put some data. 309 // Put some data.
307 EXPECT_TRUE(storage_->PutEntry(entry1)); 310 EXPECT_TRUE(storage_->PutEntry(entry1));
308 EXPECT_TRUE(storage_->PutEntry(entry2)); 311 EXPECT_TRUE(storage_->PutEntry(entry2));
309 312
310 // Close DB and reopen. 313 // Close DB and reopen.
311 storage_.reset(new ResourceMetadataStorage(temp_dir_.path())); 314 storage_.reset(new ResourceMetadataStorage(
315 temp_dir_.path(), base::MessageLoopProxy::current()));
312 ASSERT_TRUE(storage_->Initialize()); 316 ASSERT_TRUE(storage_->Initialize());
313 317
314 // Can read data. 318 // Can read data.
315 ResourceEntry result; 319 ResourceEntry result;
316 ASSERT_TRUE(storage_->GetEntry(parent_id1, &result)); 320 ASSERT_TRUE(storage_->GetEntry(parent_id1, &result));
317 EXPECT_EQ(parent_id1, result.resource_id()); 321 EXPECT_EQ(parent_id1, result.resource_id());
318 322
319 ASSERT_TRUE(storage_->GetEntry(child_id1, &result)); 323 ASSERT_TRUE(storage_->GetEntry(child_id1, &result));
320 EXPECT_EQ(child_id1, result.resource_id()); 324 EXPECT_EQ(child_id1, result.resource_id());
321 EXPECT_EQ(parent_id1, result.parent_resource_id()); 325 EXPECT_EQ(parent_id1, result.parent_resource_id());
(...skipping 10 matching lines...) Expand all
332 entry.set_resource_id(key1); 336 entry.set_resource_id(key1);
333 337
334 // Put some data. 338 // Put some data.
335 ResourceEntry result; 339 ResourceEntry result;
336 EXPECT_TRUE(storage_->SetLargestChangestamp(kLargestChangestamp)); 340 EXPECT_TRUE(storage_->SetLargestChangestamp(kLargestChangestamp));
337 EXPECT_TRUE(storage_->PutEntry(entry)); 341 EXPECT_TRUE(storage_->PutEntry(entry));
338 EXPECT_TRUE(storage_->GetEntry(key1, &result)); 342 EXPECT_TRUE(storage_->GetEntry(key1, &result));
339 343
340 // Set incompatible version and reopen DB. 344 // Set incompatible version and reopen DB.
341 SetDBVersion(ResourceMetadataStorage::kDBVersion - 1); 345 SetDBVersion(ResourceMetadataStorage::kDBVersion - 1);
342 storage_.reset(new ResourceMetadataStorage(temp_dir_.path())); 346 storage_.reset(new ResourceMetadataStorage(
347 temp_dir_.path(), base::MessageLoopProxy::current()));
343 ASSERT_TRUE(storage_->Initialize()); 348 ASSERT_TRUE(storage_->Initialize());
344 349
345 // Data is erased because of the incompatible version. 350 // Data is erased because of the incompatible version.
346 EXPECT_EQ(0, storage_->GetLargestChangestamp()); 351 EXPECT_EQ(0, storage_->GetLargestChangestamp());
347 EXPECT_FALSE(storage_->GetEntry(key1, &result)); 352 EXPECT_FALSE(storage_->GetEntry(key1, &result));
348 } 353 }
349 354
350 TEST_F(ResourceMetadataStorageTest, WrongPath) { 355 TEST_F(ResourceMetadataStorageTest, WrongPath) {
351 // Create a file. 356 // Create a file.
352 base::FilePath path; 357 base::FilePath path;
353 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), &path)); 358 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), &path));
354 359
355 storage_.reset(new ResourceMetadataStorage(path)); 360 storage_.reset(new ResourceMetadataStorage(
361 path, base::MessageLoopProxy::current()));
356 // Cannot initialize DB beacause the path does not point a directory. 362 // Cannot initialize DB beacause the path does not point a directory.
357 ASSERT_FALSE(storage_->Initialize()); 363 ASSERT_FALSE(storage_->Initialize());
358 } 364 }
359 365
360 TEST_F(ResourceMetadataStorageTest, CheckValidity) { 366 TEST_F(ResourceMetadataStorageTest, CheckValidity) {
361 const std::string key1 = "foo"; 367 const std::string key1 = "foo";
362 const std::string name1 = "hoge"; 368 const std::string name1 = "hoge";
363 const std::string key2 = "bar"; 369 const std::string key2 = "bar";
364 const std::string name2 = "fuga"; 370 const std::string name2 = "fuga";
365 const std::string key3 = "boo"; 371 const std::string key3 = "boo";
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 RemoveChild(key2, name3); 433 RemoveChild(key2, name3);
428 EXPECT_FALSE(CheckValidity()); 434 EXPECT_FALSE(CheckValidity());
429 EXPECT_TRUE(storage_->RemoveEntry(key3)); 435 EXPECT_TRUE(storage_->RemoveEntry(key3));
430 EXPECT_TRUE(CheckValidity()); 436 EXPECT_TRUE(CheckValidity());
431 437
432 // Remove key1. 438 // Remove key1.
433 EXPECT_TRUE(storage_->RemoveEntry(key1)); 439 EXPECT_TRUE(storage_->RemoveEntry(key1));
434 EXPECT_TRUE(CheckValidity()); 440 EXPECT_TRUE(CheckValidity());
435 } 441 }
436 442
443 } // namespace internal
437 } // namespace drive 444 } // namespace drive
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698