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

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

Issue 16109008: Cleanup: Deprecate DriveFileSyncService::kServiceName (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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/sync_file_system/drive/metadata_db_migration_util.h" 5 #include "chrome/browser/sync_file_system/drive/metadata_db_migration_util.h"
6 6
7 #include "base/files/scoped_temp_dir.h" 7 #include "base/files/scoped_temp_dir.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "chrome/browser/sync_file_system/drive_metadata_store.h" 10 #include "chrome/browser/sync_file_system/drive_metadata_store.h"
11 #include "googleurl/src/gurl.h" 11 #include "googleurl/src/gurl.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "third_party/leveldatabase/src/include/leveldb/db.h" 13 #include "third_party/leveldatabase/src/include/leveldb/db.h"
14 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" 14 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h"
15 #include "webkit/browser/fileapi/external_mount_points.h"
15 #include "webkit/browser/fileapi/syncable/syncable_file_system_util.h" 16 #include "webkit/browser/fileapi/syncable/syncable_file_system_util.h"
16 #include "webkit/common/fileapi/file_system_util.h" 17 #include "webkit/common/fileapi/file_system_util.h"
17 18
18 #define FPL FILE_PATH_LITERAL 19 #define FPL FILE_PATH_LITERAL
19 20
20 namespace sync_file_system { 21 namespace sync_file_system {
21 namespace drive { 22 namespace drive {
22 23
23 namespace { 24 namespace {
25
24 const char kV0ServiceName[] = "drive"; 26 const char kV0ServiceName[] = "drive";
27
28 bool CreateV0SerializedSyncableFileSystemURL(
29 const GURL& origin,
30 const base::FilePath& path,
31 std::string* serialized_url) {
32 fileapi::ScopedExternalFileSystem scoped_fs(
33 kV0ServiceName, fileapi::kFileSystemTypeSyncable, base::FilePath());
34
35 fileapi::FileSystemURL url =
36 fileapi::ExternalMountPoints::GetSystemInstance()->
37 CreateExternalFileSystemURL(origin, kV0ServiceName, path);
38 if (!url.is_valid())
39 return false;
40 *serialized_url = fileapi::GetExternalFileSystemRootURIString(
41 origin, kV0ServiceName) + url.path().AsUTF8Unsafe();
42 return true;
25 } 43 }
26 44
45 } // namespace
46
27 TEST(DriveMetadataDBMigrationUtilTest, ParseV0FormatFileSystemURL) { 47 TEST(DriveMetadataDBMigrationUtilTest, ParseV0FormatFileSystemURL) {
28 const GURL kOrigin("chrome-extension://example"); 48 const GURL kOrigin("chrome-extension://example");
29 const base::FilePath kFile(FPL("foo bar")); 49 const base::FilePath kFile(FPL("foo bar"));
30 50
31 ASSERT_TRUE(RegisterSyncableFileSystem(kV0ServiceName));
32
33 fileapi::FileSystemURL url =
34 CreateSyncableFileSystemURL(kOrigin, kV0ServiceName, kFile);
35
36 std::string serialized_url; 51 std::string serialized_url;
37 SerializeSyncableFileSystemURL(url, &serialized_url); 52 ASSERT_TRUE(CreateV0SerializedSyncableFileSystemURL(
53 kOrigin, kFile, &serialized_url));
38 54
39 GURL origin; 55 GURL origin;
40 base::FilePath path; 56 base::FilePath path;
41 EXPECT_TRUE(ParseV0FormatFileSystemURL(GURL(serialized_url), &origin, &path)); 57 EXPECT_TRUE(ParseV0FormatFileSystemURL(GURL(serialized_url), &origin, &path));
42 EXPECT_EQ(kOrigin, origin); 58 EXPECT_EQ(kOrigin, origin);
43 EXPECT_EQ(kFile, path); 59 EXPECT_EQ(kFile, path);
44
45 EXPECT_TRUE(RevokeSyncableFileSystem(kV0ServiceName));
46 } 60 }
47 61
48 TEST(DriveMetadataDBMigrationUtilTest, AddWapiIdPrefix) { 62 TEST(DriveMetadataDBMigrationUtilTest, AddWapiIdPrefix) {
49 DriveMetadata_ResourceType type_file = 63 DriveMetadata_ResourceType type_file =
50 DriveMetadata_ResourceType_RESOURCE_TYPE_FILE; 64 DriveMetadata_ResourceType_RESOURCE_TYPE_FILE;
51 DriveMetadata_ResourceType type_folder = 65 DriveMetadata_ResourceType type_folder =
52 DriveMetadata_ResourceType_RESOURCE_TYPE_FOLDER; 66 DriveMetadata_ResourceType_RESOURCE_TYPE_FOLDER;
53 67
54 EXPECT_EQ("file:xxx", AddWapiFilePrefix("xxx")); 68 EXPECT_EQ("file:xxx", AddWapiFilePrefix("xxx"));
55 EXPECT_EQ("folder:yyy", AddWapiFolderPrefix("yyy")); 69 EXPECT_EQ("folder:yyy", AddWapiFolderPrefix("yyy"));
(...skipping 25 matching lines...) Expand all
81 95
82 const GURL kOrigin1("chrome-extension://example1"); 96 const GURL kOrigin1("chrome-extension://example1");
83 const GURL kOrigin2("chrome-extension://example2"); 97 const GURL kOrigin2("chrome-extension://example2");
84 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); 98 const std::string kSyncRootResourceId("folder:sync_root_resource_id");
85 const std::string kResourceId1("folder:hoge"); 99 const std::string kResourceId1("folder:hoge");
86 const std::string kResourceId2("folder:fuga"); 100 const std::string kResourceId2("folder:fuga");
87 const std::string kFileResourceId("file:piyo"); 101 const std::string kFileResourceId("file:piyo");
88 const base::FilePath kFile(FPL("foo bar")); 102 const base::FilePath kFile(FPL("foo bar"));
89 const std::string kFileMD5("file_md5"); 103 const std::string kFileMD5("file_md5");
90 104
91 ASSERT_TRUE(RegisterSyncableFileSystem(kV0ServiceName));
92
93 base::ScopedTempDir base_dir; 105 base::ScopedTempDir base_dir;
94 ASSERT_TRUE(base_dir.CreateUniqueTempDir()); 106 ASSERT_TRUE(base_dir.CreateUniqueTempDir());
95 107
96 leveldb::Options options; 108 leveldb::Options options;
97 options.create_if_missing = true; 109 options.create_if_missing = true;
98 leveldb::DB* db_ptr = NULL; 110 leveldb::DB* db_ptr = NULL;
99 std::string db_dir = fileapi::FilePathToString( 111 std::string db_dir = fileapi::FilePathToString(
100 base_dir.path().Append(DriveMetadataStore::kDatabaseName)); 112 base_dir.path().Append(DriveMetadataStore::kDatabaseName));
101 leveldb::Status status = leveldb::DB::Open(options, db_dir, &db_ptr); 113 leveldb::Status status = leveldb::DB::Open(options, db_dir, &db_ptr);
102 114
103 scoped_ptr<leveldb::DB> db(db_ptr); 115 scoped_ptr<leveldb::DB> db(db_ptr);
104 ASSERT_TRUE(status.ok()); 116 ASSERT_TRUE(status.ok());
105 117
106 // Setup the database with the schema version 0. 118 // Setup the database with the schema version 0.
107 leveldb::WriteBatch batch; 119 leveldb::WriteBatch batch;
108 batch.Put(kChangeStampKey, "1"); 120 batch.Put(kChangeStampKey, "1");
109 batch.Put(kSyncRootDirectoryKey, kSyncRootResourceId); 121 batch.Put(kSyncRootDirectoryKey, kSyncRootResourceId);
110 122
111 fileapi::FileSystemURL url =
112 CreateSyncableFileSystemURL(kOrigin1, kV0ServiceName, kFile);
113
114 // Setup drive metadata. 123 // Setup drive metadata.
115 DriveMetadata drive_metadata; 124 DriveMetadata drive_metadata;
116 drive_metadata.set_resource_id(kFileResourceId); 125 drive_metadata.set_resource_id(kFileResourceId);
117 drive_metadata.set_md5_checksum(kFileMD5); 126 drive_metadata.set_md5_checksum(kFileMD5);
118 drive_metadata.set_conflicted(false); 127 drive_metadata.set_conflicted(false);
119 drive_metadata.set_to_be_fetched(false); 128 drive_metadata.set_to_be_fetched(false);
120 129
121 std::string serialized_url; 130 std::string serialized_url;
122 SerializeSyncableFileSystemURL(url, &serialized_url); 131 ASSERT_TRUE(CreateV0SerializedSyncableFileSystemURL(
132 kOrigin1, kFile, &serialized_url));
123 std::string metadata_string; 133 std::string metadata_string;
124 drive_metadata.SerializeToString(&metadata_string); 134 drive_metadata.SerializeToString(&metadata_string);
125 batch.Put(kDriveMetadataKeyPrefix + serialized_url, metadata_string); 135 batch.Put(kDriveMetadataKeyPrefix + serialized_url, metadata_string);
126 136
127 // Setup batch sync origin and incremental sync origin. 137 // Setup batch sync origin and incremental sync origin.
128 batch.Put(kDriveBatchSyncOriginKeyPrefix + kOrigin1.spec(), kResourceId1); 138 batch.Put(kDriveBatchSyncOriginKeyPrefix + kOrigin1.spec(), kResourceId1);
129 batch.Put(kDriveIncrementalSyncOriginKeyPrefix + kOrigin2.spec(), 139 batch.Put(kDriveIncrementalSyncOriginKeyPrefix + kOrigin2.spec(),
130 kResourceId2); 140 kResourceId2);
131 141
132 status = db->Write(leveldb::WriteOptions(), &batch); 142 status = db->Write(leveldb::WriteOptions(), &batch);
133 EXPECT_EQ(SYNC_STATUS_OK, LevelDBStatusToSyncStatusCode(status)); 143 EXPECT_EQ(SYNC_STATUS_OK, LevelDBStatusToSyncStatusCode(status));
134 EXPECT_TRUE(RevokeSyncableFileSystem(kV0ServiceName));
135 144
136 // Migrate the database. 145 // Migrate the database.
137 drive::MigrateDatabaseFromV0ToV1(db.get()); 146 drive::MigrateDatabaseFromV0ToV1(db.get());
138 147
139 scoped_ptr<leveldb::Iterator> itr(db->NewIterator(leveldb::ReadOptions())); 148 scoped_ptr<leveldb::Iterator> itr(db->NewIterator(leveldb::ReadOptions()));
140 149
141 // Verify DB schema version. 150 // Verify DB schema version.
142 int64 database_version = 0; 151 int64 database_version = 0;
143 itr->Seek(kDatabaseVersionKey); 152 itr->Seek(kDatabaseVersionKey);
144 EXPECT_TRUE(itr->Valid()); 153 EXPECT_TRUE(itr->Valid());
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 const GURL kOrigin3("chrome-extension://example3"); 202 const GURL kOrigin3("chrome-extension://example3");
194 203
195 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); 204 const std::string kSyncRootResourceId("folder:sync_root_resource_id");
196 const std::string kResourceId1("folder:hoge"); 205 const std::string kResourceId1("folder:hoge");
197 const std::string kResourceId2("folder:fuga"); 206 const std::string kResourceId2("folder:fuga");
198 const std::string kResourceId3("folder:hogera"); 207 const std::string kResourceId3("folder:hogera");
199 const std::string kFileResourceId("file:piyo"); 208 const std::string kFileResourceId("file:piyo");
200 const base::FilePath kFile(FPL("foo bar")); 209 const base::FilePath kFile(FPL("foo bar"));
201 const std::string kFileMD5("file_md5"); 210 const std::string kFileMD5("file_md5");
202 211
203 const char kV1ServiceName[] = "syncfs"; 212 RegisterSyncableFileSystem();
204 ASSERT_TRUE(RegisterSyncableFileSystem(kV1ServiceName));
205 213
206 base::ScopedTempDir base_dir; 214 base::ScopedTempDir base_dir;
207 ASSERT_TRUE(base_dir.CreateUniqueTempDir()); 215 ASSERT_TRUE(base_dir.CreateUniqueTempDir());
208 216
209 leveldb::Options options; 217 leveldb::Options options;
210 options.create_if_missing = true; 218 options.create_if_missing = true;
211 leveldb::DB* db_ptr = NULL; 219 leveldb::DB* db_ptr = NULL;
212 std::string db_dir = fileapi::FilePathToString( 220 std::string db_dir = fileapi::FilePathToString(
213 base_dir.path().Append(DriveMetadataStore::kDatabaseName)); 221 base_dir.path().Append(DriveMetadataStore::kDatabaseName));
214 leveldb::Status status = leveldb::DB::Open(options, db_dir, &db_ptr); 222 leveldb::Status status = leveldb::DB::Open(options, db_dir, &db_ptr);
215 223
216 scoped_ptr<leveldb::DB> db(db_ptr); 224 scoped_ptr<leveldb::DB> db(db_ptr);
217 ASSERT_TRUE(status.ok()); 225 ASSERT_TRUE(status.ok());
218 226
219 // Setup the database with the schema version 1. 227 // Setup the database with the schema version 1.
220 leveldb::WriteBatch batch; 228 leveldb::WriteBatch batch;
221 batch.Put(kDatabaseVersionKey, "1"); 229 batch.Put(kDatabaseVersionKey, "1");
222 batch.Put(kChangeStampKey, "1"); 230 batch.Put(kChangeStampKey, "1");
223 batch.Put(kSyncRootDirectoryKey, kSyncRootResourceId); 231 batch.Put(kSyncRootDirectoryKey, kSyncRootResourceId);
224 232
225 fileapi::FileSystemURL url = 233 fileapi::FileSystemURL url = CreateSyncableFileSystemURL(kOrigin1, kFile);
226 CreateSyncableFileSystemURL(kOrigin1, kV1ServiceName, kFile);
227 234
228 // Setup drive metadata. 235 // Setup drive metadata.
229 DriveMetadata drive_metadata; 236 DriveMetadata drive_metadata;
230 drive_metadata.set_resource_id(kFileResourceId); 237 drive_metadata.set_resource_id(kFileResourceId);
231 drive_metadata.set_md5_checksum(kFileMD5); 238 drive_metadata.set_md5_checksum(kFileMD5);
232 drive_metadata.set_conflicted(false); 239 drive_metadata.set_conflicted(false);
233 drive_metadata.set_to_be_fetched(false); 240 drive_metadata.set_to_be_fetched(false);
234 std::string metadata_string; 241 std::string metadata_string;
235 drive_metadata.SerializeToString(&metadata_string); 242 drive_metadata.SerializeToString(&metadata_string);
236 std::string metadata_key = kDriveMetadataKeyPrefix + kOrigin1.spec() + 243 std::string metadata_key = kDriveMetadataKeyPrefix + kOrigin1.spec() +
237 kMetadataKeySeparator + url.path().AsUTF8Unsafe(); 244 kMetadataKeySeparator + url.path().AsUTF8Unsafe();
238 batch.Put(metadata_key, metadata_string); 245 batch.Put(metadata_key, metadata_string);
239 246
240 // Setup origins. 247 // Setup origins.
241 batch.Put(kDriveBatchSyncOriginKeyPrefix + kOrigin1.spec(), kResourceId1); 248 batch.Put(kDriveBatchSyncOriginKeyPrefix + kOrigin1.spec(), kResourceId1);
242 batch.Put(kDriveIncrementalSyncOriginKeyPrefix + kOrigin2.spec(), 249 batch.Put(kDriveIncrementalSyncOriginKeyPrefix + kOrigin2.spec(),
243 kResourceId2); 250 kResourceId2);
244 batch.Put(kDriveDisabledOriginKeyPrefix + kOrigin3.spec(), kResourceId3); 251 batch.Put(kDriveDisabledOriginKeyPrefix + kOrigin3.spec(), kResourceId3);
245 252
246 status = db->Write(leveldb::WriteOptions(), &batch); 253 status = db->Write(leveldb::WriteOptions(), &batch);
247 EXPECT_EQ(SYNC_STATUS_OK, LevelDBStatusToSyncStatusCode(status)); 254 EXPECT_EQ(SYNC_STATUS_OK, LevelDBStatusToSyncStatusCode(status));
248 EXPECT_TRUE(RevokeSyncableFileSystem(kV1ServiceName)); 255
256 RevokeSyncableFileSystem();
249 257
250 // Migrate the database. 258 // Migrate the database.
251 drive::MigrateDatabaseFromV1ToV2(db.get()); 259 drive::MigrateDatabaseFromV1ToV2(db.get());
252 260
253 scoped_ptr<leveldb::Iterator> itr(db->NewIterator(leveldb::ReadOptions())); 261 scoped_ptr<leveldb::Iterator> itr(db->NewIterator(leveldb::ReadOptions()));
254 262
255 // Verify DB schema version. 263 // Verify DB schema version.
256 int64 database_version = 0; 264 int64 database_version = 0;
257 itr->Seek(kDatabaseVersionKey); 265 itr->Seek(kDatabaseVersionKey);
258 EXPECT_TRUE(itr->Valid()); 266 EXPECT_TRUE(itr->Valid());
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 EXPECT_EQ(RemoveWapiIdPrefix(kResourceId2), itr->value().ToString()); 300 EXPECT_EQ(RemoveWapiIdPrefix(kResourceId2), itr->value().ToString());
293 301
294 // Verify the disabled origin. 302 // Verify the disabled origin.
295 itr->Seek(kDriveDisabledOriginKeyPrefix); 303 itr->Seek(kDriveDisabledOriginKeyPrefix);
296 EXPECT_TRUE(itr->Valid()); 304 EXPECT_TRUE(itr->Valid());
297 EXPECT_EQ(RemoveWapiIdPrefix(kResourceId3), itr->value().ToString()); 305 EXPECT_EQ(RemoveWapiIdPrefix(kResourceId3), itr->value().ToString());
298 } 306 }
299 307
300 } // namespace drive 308 } // namespace drive
301 } // namespace sync_file_system 309 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698