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

Side by Side Diff: chrome/browser/sync_file_system/drive/metadata_db_migration_util_unittest.cc

Issue 15808002: SyncFS: Convert WAPI ResourceID to DriveAPI FileID (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix more 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/sync_file_system/drive/metadata_db_migration_util.h"
6
7 #include "base/files/scoped_temp_dir.h"
8 #include "base/string_util.h"
9 #include "base/strings/string_number_conversions.h"
10 #include "chrome/browser/sync_file_system/drive_metadata_store.h"
11 #include "googleurl/src/gurl.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "third_party/leveldatabase/src/include/leveldb/db.h"
14 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h"
15 #include "webkit/common/fileapi/file_system_util.h"
16 #include "webkit/fileapi/syncable/syncable_file_system_util.h"
17
18 #define FPL FILE_PATH_LITERAL
19
20 namespace sync_file_system {
21 namespace drive {
22
23 TEST(DriveMetadataDBMigrationUtilTest, AddWapiFilePrefix) {
24 EXPECT_EQ("file:xxx", AddWapiFilePrefix("xxx"));
25 EXPECT_EQ("file:yyy", AddWapiFilePrefix("file:yyy"));
26 EXPECT_EQ("folder:zzz", AddWapiFilePrefix("folder:zzz"));
27 }
28
29 TEST(DriveMetadataDBMigrationUtilTest, AddWapiFolderPrefix) {
30 EXPECT_EQ("folder:xxx", AddWapiFolderPrefix("xxx"));
31 EXPECT_EQ("file:yyy", AddWapiFolderPrefix("file:yyy"));
32 EXPECT_EQ("folder:zzz", AddWapiFolderPrefix("folder:zzz"));
33 }
34
35 TEST(DriveMetadataDBMigrationUtilTest, AddWapiIdPrefix) {
36 DriveMetadata_ResourceType type_file =
37 DriveMetadata_ResourceType_RESOURCE_TYPE_FILE;
38 DriveMetadata_ResourceType type_folder =
39 DriveMetadata_ResourceType_RESOURCE_TYPE_FOLDER;
40
41 EXPECT_EQ("file:xxx", AddWapiIdPrefix("xxx", type_file));
42 EXPECT_EQ("folder:xxx", AddWapiIdPrefix("xxx", type_folder));
43 EXPECT_EQ("file:yyy", AddWapiIdPrefix("file:yyy", type_file));
44 EXPECT_EQ("file:yyy", AddWapiIdPrefix("file:yyy", type_folder));
45 EXPECT_EQ("folder:zzz", AddWapiIdPrefix("folder:zzz", type_file));
46 EXPECT_EQ("folder:zzz", AddWapiIdPrefix("folder:zzz", type_folder));
47 }
48
49 TEST(DriveMetadataDBMigrationUtilTest, RemoveWapiIdPrefix) {
50 EXPECT_EQ("xxx", RemoveWapiIdPrefix("xxx"));
51 EXPECT_EQ("yyy", RemoveWapiIdPrefix("file:yyy"));
52 EXPECT_EQ("zzz", RemoveWapiIdPrefix("folder:zzz"));
kinuko 2013/05/28 15:09:20 nit: should we also test something like "foo:xxx"
nhiroki 2013/05/29 04:10:18 Done.
53 }
54
55 TEST(DriveMetadataDBMigrationUtilTest, MigrationFromV1) {
56 const char kDatabaseVersionKey[] = "VERSION";
57 const char kChangeStampKey[] = "CHANGE_STAMP";
58 const char kSyncRootDirectoryKey[] = "SYNC_ROOT_DIR";
59 const char kDriveMetadataKeyPrefix[] = "METADATA: ";
60 const char kMetadataKeySeparator = ' ';
61 const char kDriveIncrementalSyncOriginKeyPrefix[] = "ISYNC_ORIGIN: ";
62 const char kDriveDisabledOriginKeyPrefix[] = "DISABLED_ORIGIN: ";
63
64 const GURL kOrigin1("chrome-extension://example1");
65 const GURL kOrigin2("chrome-extension://example2");
66
67 const std::string kSyncRootResourceId("folder:sync_root_resource_id");
68 const std::string kResourceId1("folder:hoge");
69 const std::string kResourceId2("folder:fuga");
70 const std::string kFileResourceId("file:piyo");
71 const base::FilePath kFile(FPL("foo bar"));
72 const std::string kFileMD5("file_md5");
73
74 const char kV1ServiceName[] = "drive";
75 ASSERT_TRUE(RegisterSyncableFileSystem(kV1ServiceName));
76
77 base::ScopedTempDir base_dir;
78 leveldb::Options options;
79 options.create_if_missing = true;
80 leveldb::DB* db_ptr = NULL;
81 std::string db_dir = fileapi::FilePathToString(
82 base_dir.path().Append(DriveMetadataStore::kDatabaseName));
83 leveldb::Status status = leveldb::DB::Open(options, db_dir, &db_ptr);
84
85 scoped_ptr<leveldb::DB> db(db_ptr);
86 ASSERT_TRUE(status.ok());
87
88 // Setup the database with the scheme version 1.
89 leveldb::WriteBatch batch;
90 batch.Put(kDatabaseVersionKey, "1");
91 batch.Put(kChangeStampKey, "1");
92 batch.Put(kSyncRootDirectoryKey, kSyncRootResourceId);
93
94 fileapi::FileSystemURL url =
95 CreateSyncableFileSystemURL(kOrigin1, kV1ServiceName, kFile);
96
97 // Setup drive metadata.
98 DriveMetadata drive_metadata;
99 drive_metadata.set_resource_id(kFileResourceId);
100 drive_metadata.set_md5_checksum(kFileMD5);
101 drive_metadata.set_conflicted(false);
102 drive_metadata.set_to_be_fetched(false);
103 std::string metadata_string;
104 drive_metadata.SerializeToString(&metadata_string);
105 std::string metadata_key = kDriveMetadataKeyPrefix + kOrigin1.spec() +
106 kMetadataKeySeparator + url.path().AsUTF8Unsafe();
107 batch.Put(metadata_key, metadata_string);
108
109 // Setup incremental sync origin and disabled origin.
110 batch.Put(kDriveIncrementalSyncOriginKeyPrefix + kOrigin1.spec(),
111 kResourceId1);
112 batch.Put(kDriveDisabledOriginKeyPrefix + kOrigin2.spec(),
113 kResourceId2);
114
115 status = db->Write(leveldb::WriteOptions(), &batch);
116 EXPECT_EQ(SYNC_STATUS_OK, LevelDBStatusToSyncStatusCode(status));
117 EXPECT_TRUE(RevokeSyncableFileSystem(kV1ServiceName));
118
119 // Migrate the database.
120 drive::MigrateDatabaseFromV1ToV2(db.get());
121
122 scoped_ptr<leveldb::Iterator> itr(db->NewIterator(leveldb::ReadOptions()));
123
124 // Verify DB scheme version.
125 int64 database_version = 0;
126 itr->Seek(kDatabaseVersionKey);
127 EXPECT_TRUE(itr->Valid());
128 EXPECT_TRUE(base::StringToInt64(itr->value().ToString(), &database_version));
129 EXPECT_EQ(2, database_version);
130
131 // Verify the sync root directory.
132 itr->Seek(kSyncRootDirectoryKey);
133 EXPECT_TRUE(itr->Valid());
134 EXPECT_EQ(RemoveWapiIdPrefix(kSyncRootResourceId), itr->value().ToString());
135
136 // Verify metadata.
137 itr->Seek(kDriveMetadataKeyPrefix);
138 EXPECT_TRUE(itr->Valid());
139 DriveMetadata metadata;
140 EXPECT_TRUE(metadata.ParseFromString(itr->value().ToString()));
141 EXPECT_EQ(RemoveWapiIdPrefix(kFileResourceId), metadata.resource_id());
142 EXPECT_EQ(kFileMD5, metadata.md5_checksum());
143 EXPECT_FALSE(metadata.conflicted());
144 EXPECT_FALSE(metadata.to_be_fetched());
145
146 // Verify incremental sync origins.
147 itr->Seek(kDriveIncrementalSyncOriginKeyPrefix);
148 EXPECT_TRUE(itr->Valid());
149 EXPECT_EQ(RemoveWapiIdPrefix(kResourceId1), itr->value().ToString());
150
151 // Verify incremental sync origins.
kinuko 2013/05/28 15:09:20 incremental -> disabled
nhiroki 2013/05/29 04:10:18 Done.
152 itr->Seek(kDriveDisabledOriginKeyPrefix);
153 EXPECT_TRUE(itr->Valid());
154 EXPECT_EQ(RemoveWapiIdPrefix(kResourceId2), itr->value().ToString());
155 }
156
157 } // namespace drive
158 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698