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

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

Issue 13866009: Remove root resource id aliasing from DriveResourceMetadata. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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/drive_resource_metadata.h" 5 #include "chrome/browser/chromeos/drive/drive_resource_metadata.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 const std::string& parent_resource_id); 81 const std::string& parent_resource_id);
82 82
83 virtual void SetUp() OVERRIDE { 83 virtual void SetUp() OVERRIDE {
84 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 84 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
85 85
86 base::ThreadRestrictions::SetIOAllowed(false); // For strict thread check. 86 base::ThreadRestrictions::SetIOAllowed(false); // For strict thread check.
87 scoped_refptr<base::SequencedWorkerPool> pool = 87 scoped_refptr<base::SequencedWorkerPool> pool =
88 content::BrowserThread::GetBlockingPool(); 88 content::BrowserThread::GetBlockingPool();
89 blocking_task_runner_ = 89 blocking_task_runner_ =
90 pool->GetSequencedTaskRunner(pool->GetSequenceToken()); 90 pool->GetSequencedTaskRunner(pool->GetSequenceToken());
91 resource_metadata_.reset(new DriveResourceMetadata(kTestRootResourceId, 91 resource_metadata_.reset(new DriveResourceMetadata(temp_dir_.path(),
92 temp_dir_.path(),
93 blocking_task_runner_)); 92 blocking_task_runner_));
94 Init(resource_metadata_.get()); 93 Init(resource_metadata_.get());
95 } 94 }
96 95
97 virtual void TearDown() OVERRIDE { 96 virtual void TearDown() OVERRIDE {
98 resource_metadata_.reset(); 97 resource_metadata_.reset();
99 base::ThreadRestrictions::SetIOAllowed(true); 98 base::ThreadRestrictions::SetIOAllowed(true);
100 } 99 }
101 100
102 // Gets the entry info by path synchronously. Returns NULL on failure. 101 // Gets the entry info by path synchronously. Returns NULL on failure.
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 }; 164 };
166 165
167 // static 166 // static
168 void DriveResourceMetadataTest::Init(DriveResourceMetadata* resource_metadata) { 167 void DriveResourceMetadataTest::Init(DriveResourceMetadata* resource_metadata) {
169 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 168 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
170 resource_metadata->Initialize( 169 resource_metadata->Initialize(
171 google_apis::test_util::CreateCopyResultCallback(&error)); 170 google_apis::test_util::CreateCopyResultCallback(&error));
172 google_apis::test_util::RunBlockingPoolTask(); 171 google_apis::test_util::RunBlockingPoolTask();
173 ASSERT_EQ(DRIVE_FILE_OK, error); 172 ASSERT_EQ(DRIVE_FILE_OK, error);
174 173
174 // Create mydrive root directory.
175 {
176 error = DRIVE_FILE_ERROR_FAILED;
177 base::FilePath drive_path;
178 resource_metadata->AddEntry(
179 util::CreateMyDriveRootEntry(kTestRootResourceId),
180 google_apis::test_util::CreateCopyResultCallback(&error, &drive_path));
181 google_apis::test_util::RunBlockingPoolTask();
182 ASSERT_EQ(DRIVE_FILE_OK, error);
183 }
184
175 int sequence_id = 1; 185 int sequence_id = 1;
176 ASSERT_TRUE(AddDriveEntryProto( 186 ASSERT_TRUE(AddDriveEntryProto(
177 resource_metadata, sequence_id++, true, kTestRootResourceId)); 187 resource_metadata, sequence_id++, true, kTestRootResourceId));
178 ASSERT_TRUE(AddDriveEntryProto( 188 ASSERT_TRUE(AddDriveEntryProto(
179 resource_metadata, sequence_id++, true, kTestRootResourceId)); 189 resource_metadata, sequence_id++, true, kTestRootResourceId));
180 ASSERT_TRUE(AddDriveEntryProto( 190 ASSERT_TRUE(AddDriveEntryProto(
181 resource_metadata, sequence_id++, true, "resource_id:dir1")); 191 resource_metadata, sequence_id++, true, "resource_id:dir1"));
182 192
183 ASSERT_TRUE(AddDriveEntryProto( 193 ASSERT_TRUE(AddDriveEntryProto(
184 resource_metadata, sequence_id++, false, "resource_id:dir1")); 194 resource_metadata, sequence_id++, false, "resource_id:dir1"));
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 TEST_F(DriveResourceMetadataTest, VersionCheck) { 264 TEST_F(DriveResourceMetadataTest, VersionCheck) {
255 // Set up the root directory. 265 // Set up the root directory.
256 DriveRootDirectoryProto proto; 266 DriveRootDirectoryProto proto;
257 DriveEntryProto* mutable_entry = 267 DriveEntryProto* mutable_entry =
258 proto.mutable_drive_directory()->mutable_drive_entry(); 268 proto.mutable_drive_directory()->mutable_drive_entry();
259 mutable_entry->mutable_file_info()->set_is_directory(true); 269 mutable_entry->mutable_file_info()->set_is_directory(true);
260 mutable_entry->set_resource_id(util::kDriveGrandRootSpecialResourceId); 270 mutable_entry->set_resource_id(util::kDriveGrandRootSpecialResourceId);
261 mutable_entry->set_title("drive"); 271 mutable_entry->set_title("drive");
262 272
263 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests> 273 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests>
264 resource_metadata(new DriveResourceMetadata(kTestRootResourceId, 274 resource_metadata(new DriveResourceMetadata(temp_dir_.path(),
265 temp_dir_.path(),
266 blocking_task_runner_)); 275 blocking_task_runner_));
267 ForceUsingMemoryStorage(resource_metadata.get()); 276 ForceUsingMemoryStorage(resource_metadata.get());
268 277
269 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 278 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
270 resource_metadata->Initialize( 279 resource_metadata->Initialize(
271 google_apis::test_util::CreateCopyResultCallback(&error)); 280 google_apis::test_util::CreateCopyResultCallback(&error));
272 google_apis::test_util::RunBlockingPoolTask(); 281 google_apis::test_util::RunBlockingPoolTask();
273 ASSERT_EQ(DRIVE_FILE_OK, error); 282 ASSERT_EQ(DRIVE_FILE_OK, error);
274 283
275 std::string serialized_proto; 284 std::string serialized_proto;
(...skipping 19 matching lines...) Expand all
295 // Set a newer version, and serialize. 304 // Set a newer version, and serialize.
296 proto.set_version(kProtoVersion + 1); 305 proto.set_version(kProtoVersion + 1);
297 EXPECT_TRUE(proto.SerializeToString(&serialized_proto)); 306 EXPECT_TRUE(proto.SerializeToString(&serialized_proto));
298 // This should fail as the version is newer. 307 // This should fail as the version is newer.
299 EXPECT_FALSE(ParseMetadataFromString(resource_metadata.get(), 308 EXPECT_FALSE(ParseMetadataFromString(resource_metadata.get(),
300 serialized_proto)); 309 serialized_proto));
301 } 310 }
302 311
303 TEST_F(DriveResourceMetadataTest, LargestChangestamp) { 312 TEST_F(DriveResourceMetadataTest, LargestChangestamp) {
304 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests> 313 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests>
305 resource_metadata(new DriveResourceMetadata(kTestRootResourceId, 314 resource_metadata(new DriveResourceMetadata(temp_dir_.path(),
306 temp_dir_.path(),
307 blocking_task_runner_)); 315 blocking_task_runner_));
308 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 316 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
309 resource_metadata->Initialize( 317 resource_metadata->Initialize(
310 google_apis::test_util::CreateCopyResultCallback(&error)); 318 google_apis::test_util::CreateCopyResultCallback(&error));
311 google_apis::test_util::RunBlockingPoolTask(); 319 google_apis::test_util::RunBlockingPoolTask();
312 ASSERT_EQ(DRIVE_FILE_OK, error); 320 ASSERT_EQ(DRIVE_FILE_OK, error);
313 321
314 int64 in_changestamp = 123456; 322 int64 in_changestamp = 123456;
315 resource_metadata->SetLargestChangestamp( 323 resource_metadata->SetLargestChangestamp(
316 in_changestamp, 324 in_changestamp,
317 google_apis::test_util::CreateCopyResultCallback(&error)); 325 google_apis::test_util::CreateCopyResultCallback(&error));
318 google_apis::test_util::RunBlockingPoolTask(); 326 google_apis::test_util::RunBlockingPoolTask();
319 EXPECT_EQ(DRIVE_FILE_OK, error); 327 EXPECT_EQ(DRIVE_FILE_OK, error);
320 328
321 int64 out_changestamp = 0; 329 int64 out_changestamp = 0;
322 resource_metadata->GetLargestChangestamp( 330 resource_metadata->GetLargestChangestamp(
323 google_apis::test_util::CreateCopyResultCallback(&out_changestamp)); 331 google_apis::test_util::CreateCopyResultCallback(&out_changestamp));
324 google_apis::test_util::RunBlockingPoolTask(); 332 google_apis::test_util::RunBlockingPoolTask();
325 DCHECK_EQ(in_changestamp, out_changestamp); 333 DCHECK_EQ(in_changestamp, out_changestamp);
326 } 334 }
327 335
328 TEST_F(DriveResourceMetadataTest, GetEntryInfoByResourceId_RootDirectory) { 336 TEST_F(DriveResourceMetadataTest, GetEntryInfoByResourceId_RootDirectory) {
329 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests> 337 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests>
330 resource_metadata(new DriveResourceMetadata(kTestRootResourceId, 338 resource_metadata(new DriveResourceMetadata(temp_dir_.path(),
331 temp_dir_.path(),
332 blocking_task_runner_)); 339 blocking_task_runner_));
333 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 340 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
334 resource_metadata->Initialize( 341 resource_metadata->Initialize(
335 google_apis::test_util::CreateCopyResultCallback(&error)); 342 google_apis::test_util::CreateCopyResultCallback(&error));
336 google_apis::test_util::RunBlockingPoolTask(); 343 google_apis::test_util::RunBlockingPoolTask();
337 ASSERT_EQ(DRIVE_FILE_OK, error); 344 ASSERT_EQ(DRIVE_FILE_OK, error);
338 345
339 base::FilePath drive_file_path; 346 base::FilePath drive_file_path;
340 scoped_ptr<DriveEntryProto> entry_proto; 347 scoped_ptr<DriveEntryProto> entry_proto;
341 348
(...skipping 903 matching lines...) Expand 10 before | Expand all | Expand 10 after
1245 base::FilePath drive_file_path; 1252 base::FilePath drive_file_path;
1246 scoped_ptr<DriveEntryProto> entry_proto; 1253 scoped_ptr<DriveEntryProto> entry_proto;
1247 1254
1248 // root should continue to exist. 1255 // root should continue to exist.
1249 entry_proto = GetEntryInfoByPathSync(base::FilePath::FromUTF8Unsafe("drive")); 1256 entry_proto = GetEntryInfoByPathSync(base::FilePath::FromUTF8Unsafe("drive"));
1250 ASSERT_TRUE(entry_proto.get()); 1257 ASSERT_TRUE(entry_proto.get());
1251 EXPECT_EQ("drive", entry_proto->base_name()); 1258 EXPECT_EQ("drive", entry_proto->base_name());
1252 ASSERT_TRUE(entry_proto->file_info().is_directory()); 1259 ASSERT_TRUE(entry_proto->file_info().is_directory());
1253 EXPECT_EQ(util::kDriveGrandRootSpecialResourceId, entry_proto->resource_id()); 1260 EXPECT_EQ(util::kDriveGrandRootSpecialResourceId, entry_proto->resource_id());
1254 1261
1255 // There is "root" and "other", which are both empty. 1262 // There is "other", which are both empty.
1256 entries = ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive")); 1263 entries = ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive"));
1257 ASSERT_TRUE(entries.get()); 1264 ASSERT_TRUE(entries.get());
1258 EXPECT_EQ(2U, entries->size()); 1265 EXPECT_EQ(1U, entries->size());
1259
1260 scoped_ptr<DriveEntryProtoVector> entries_in_mydrive =
1261 ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive/root"));
1262 ASSERT_TRUE(entries_in_mydrive.get());
1263 EXPECT_TRUE(entries_in_mydrive->empty());
1264 1266
1265 scoped_ptr<DriveEntryProtoVector> entries_in_other = 1267 scoped_ptr<DriveEntryProtoVector> entries_in_other =
1266 ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive/other")); 1268 ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive/other"));
1267 ASSERT_TRUE(entries_in_other.get()); 1269 ASSERT_TRUE(entries_in_other.get());
1268 EXPECT_TRUE(entries_in_other->empty()); 1270 EXPECT_TRUE(entries_in_other->empty());
1269 1271
1270 } 1272 }
1271 1273
1272 TEST_F(DriveResourceMetadataTest, PerDirectoryChangestamp) { 1274 TEST_F(DriveResourceMetadataTest, PerDirectoryChangestamp) {
1273 const int kNewChangestamp = kTestChangestamp + 1; 1275 const int kNewChangestamp = kTestChangestamp + 1;
1274 const char kSubDirectoryResourceId[] = "sub-directory-id"; 1276 const char kSubDirectoryResourceId[] = "sub-directory-id";
1275 1277
1276 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests> 1278 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests>
1277 resource_metadata_original(new DriveResourceMetadata( 1279 resource_metadata_original(new DriveResourceMetadata(
1278 kTestRootResourceId, temp_dir_.path(), blocking_task_runner_)); 1280 temp_dir_.path(), blocking_task_runner_));
1279 ForceUsingMemoryStorage(resource_metadata_original.get()); 1281 ForceUsingMemoryStorage(resource_metadata_original.get());
1280 1282
1281 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 1283 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
1282 resource_metadata_original->Initialize( 1284 resource_metadata_original->Initialize(
1283 google_apis::test_util::CreateCopyResultCallback(&error)); 1285 google_apis::test_util::CreateCopyResultCallback(&error));
1284 google_apis::test_util::RunBlockingPoolTask(); 1286 google_apis::test_util::RunBlockingPoolTask();
1285 ASSERT_EQ(DRIVE_FILE_OK, error); 1287 ASSERT_EQ(DRIVE_FILE_OK, error);
1286 1288
1287 resource_metadata_original->SetLargestChangestamp( 1289 resource_metadata_original->SetLargestChangestamp(
1288 kNewChangestamp, 1290 kNewChangestamp,
1289 google_apis::test_util::CreateCopyResultCallback(&error)); 1291 google_apis::test_util::CreateCopyResultCallback(&error));
1290 google_apis::test_util::RunBlockingPoolTask(); 1292 google_apis::test_util::RunBlockingPoolTask();
1291 EXPECT_EQ(DRIVE_FILE_OK, error); 1293 EXPECT_EQ(DRIVE_FILE_OK, error);
1292 1294
1295 // Add "/drive/root" directory.
1296 base::FilePath file_path;
1297 resource_metadata_original->AddEntry(
1298 util::CreateMyDriveRootEntry(kTestRootResourceId),
1299 google_apis::test_util::CreateCopyResultCallback(&error, &file_path));
1300 google_apis::test_util::RunBlockingPoolTask();
1301 ASSERT_EQ(DRIVE_FILE_OK, error);
1302
1293 // Add a sub directory. 1303 // Add a sub directory.
1294 DriveEntryProto directory_entry; 1304 DriveEntryProto directory_entry;
1295 directory_entry.mutable_file_info()->set_is_directory(true); 1305 directory_entry.mutable_file_info()->set_is_directory(true);
1296 directory_entry.set_resource_id(kSubDirectoryResourceId); 1306 directory_entry.set_resource_id(kSubDirectoryResourceId);
1297 directory_entry.set_parent_resource_id(kTestRootResourceId); 1307 directory_entry.set_parent_resource_id(kTestRootResourceId);
1298 directory_entry.set_title("directory"); 1308 directory_entry.set_title("directory");
1299 base::FilePath file_path;
1300 resource_metadata_original->AddEntry( 1309 resource_metadata_original->AddEntry(
1301 directory_entry, 1310 directory_entry,
1302 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); 1311 google_apis::test_util::CreateCopyResultCallback(&error, &file_path));
1312 google_apis::test_util::RunBlockingPoolTask();
1313 ASSERT_EQ(DRIVE_FILE_OK, error);
1314
1303 // At this point, both the root and the sub directory do not contain the 1315 // At this point, both the root and the sub directory do not contain the
1304 // per-directory changestamp. 1316 // per-directory changestamp.
1305 resource_metadata_original->MaybeSave(); 1317 resource_metadata_original->MaybeSave();
1306 google_apis::test_util::RunBlockingPoolTask(); 1318 google_apis::test_util::RunBlockingPoolTask();
1307 1319
1308 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests> 1320 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests>
1309 resource_metadata(new DriveResourceMetadata( 1321 resource_metadata(new DriveResourceMetadata(temp_dir_.path(),
1310 util::kDriveGrandRootSpecialResourceId, 1322 blocking_task_runner_));
1311 temp_dir_.path(),
1312 blocking_task_runner_));
1313 ForceUsingMemoryStorage(resource_metadata.get()); 1323 ForceUsingMemoryStorage(resource_metadata.get());
1314 1324
1315 resource_metadata->Initialize( 1325 resource_metadata->Initialize(
1316 google_apis::test_util::CreateCopyResultCallback(&error)); 1326 google_apis::test_util::CreateCopyResultCallback(&error));
1317 google_apis::test_util::RunBlockingPoolTask(); 1327 google_apis::test_util::RunBlockingPoolTask();
1318 ASSERT_EQ(DRIVE_FILE_OK, error); 1328 ASSERT_EQ(DRIVE_FILE_OK, error);
1319 1329
1320 // Load. This should propagate the largest changestamp to every directory. 1330 // Load. This should propagate the largest changestamp to every directory.
1321 resource_metadata->Load( 1331 resource_metadata->Load(
1322 google_apis::test_util::CreateCopyResultCallback(&error)); 1332 google_apis::test_util::CreateCopyResultCallback(&error));
(...skipping 17 matching lines...) Expand all
1340 google_apis::test_util::RunBlockingPoolTask(); 1350 google_apis::test_util::RunBlockingPoolTask();
1341 ASSERT_EQ(DRIVE_FILE_OK, error); 1351 ASSERT_EQ(DRIVE_FILE_OK, error);
1342 EXPECT_EQ(kNewChangestamp, 1352 EXPECT_EQ(kNewChangestamp,
1343 entry_proto->directory_specific_info().changestamp()); 1353 entry_proto->directory_specific_info().changestamp());
1344 } 1354 }
1345 1355
1346 TEST_F(DriveResourceMetadataTest, SaveAndLoad) { 1356 TEST_F(DriveResourceMetadataTest, SaveAndLoad) {
1347 // Save metadata and reset. 1357 // Save metadata and reset.
1348 resource_metadata_->MaybeSave(); 1358 resource_metadata_->MaybeSave();
1349 1359
1350 resource_metadata_.reset(new DriveResourceMetadata( 1360 resource_metadata_.reset(new DriveResourceMetadata(temp_dir_.path(),
1351 util::kDriveGrandRootSpecialResourceId, 1361 blocking_task_runner_));
1352 temp_dir_.path(),
1353 blocking_task_runner_));
1354 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 1362 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
1355 resource_metadata_->Initialize( 1363 resource_metadata_->Initialize(
1356 google_apis::test_util::CreateCopyResultCallback(&error)); 1364 google_apis::test_util::CreateCopyResultCallback(&error));
1357 google_apis::test_util::RunBlockingPoolTask(); 1365 google_apis::test_util::RunBlockingPoolTask();
1358 ASSERT_EQ(DRIVE_FILE_OK, error); 1366 ASSERT_EQ(DRIVE_FILE_OK, error);
1359 1367
1360 // Load metadata. 1368 // Load metadata.
1361 resource_metadata_->Load( 1369 resource_metadata_->Load(
1362 google_apis::test_util::CreateCopyResultCallback(&error)); 1370 google_apis::test_util::CreateCopyResultCallback(&error));
1363 google_apis::test_util::RunBlockingPoolTask(); 1371 google_apis::test_util::RunBlockingPoolTask();
1364 EXPECT_EQ(DRIVE_FILE_OK, error); 1372 EXPECT_EQ(DRIVE_FILE_OK, error);
1365 1373
1366 // Try to get some data. 1374 // Try to get some data.
1367 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync( 1375 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(
1368 base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3/file9")); 1376 base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3/file9"));
1369 ASSERT_TRUE(entry.get()); 1377 ASSERT_TRUE(entry.get());
1370 EXPECT_EQ("file9", entry->base_name()); 1378 EXPECT_EQ("file9", entry->base_name());
1371 ASSERT_TRUE(!entry->file_info().is_directory()); 1379 ASSERT_TRUE(!entry->file_info().is_directory());
1372 EXPECT_EQ("md5:file9", entry->file_specific_info().file_md5()); 1380 EXPECT_EQ("md5:file9", entry->file_specific_info().file_md5());
1373 } 1381 }
1374 1382
1375 } // namespace drive 1383 } // namespace drive
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698