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

Side by Side Diff: chrome/browser/chromeos/gdata/gdata_files_unittest.cc

Issue 10800092: Database support for GDataDirectoryService. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 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 (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/gdata/gdata_files.h" 5 #include "chrome/browser/chromeos/gdata/gdata_files.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10
11 #include "base/sequenced_task_runner.h"
12 #include "base/string_number_conversions.h"
13 #include "base/threading/sequenced_worker_pool.h"
10 #include "base/message_loop.h" 14 #include "base/message_loop.h"
11 #include "chrome/browser/chromeos/gdata/gdata.pb.h" 15 #include "chrome/browser/chromeos/gdata/gdata.pb.h"
16 #include "chrome/browser/chromeos/gdata/gdata_cache.h"
17 #include "chrome/browser/chromeos/gdata/gdata_test_util.h"
18 #include "chrome/test/base/testing_profile.h"
19 #include "content/public/test/test_browser_thread.h"
12 #include "chrome/browser/chromeos/gdata/gdata_test_util.h" 20 #include "chrome/browser/chromeos/gdata/gdata_test_util.h"
13 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
14 22
15 namespace gdata { 23 namespace gdata {
16 24
17 namespace { 25 namespace {
18 26
19 // See gdata.proto for the difference between the two URLs. 27 // See gdata.proto for the difference between the two URLs.
20 const char kResumableEditMediaUrl[] = "http://resumable-edit-media/"; 28 const char kResumableEditMediaUrl[] = "http://resumable-edit-media/";
21 const char kResumableCreateMediaUrl[] = "http://resumable-create-media/"; 29 const char kResumableCreateMediaUrl[] = "http://resumable-create-media/";
22 30
31 GDataDirectory* AddDirectory(GDataDirectory* parent,
32 GDataDirectoryService* directory_service,
33 int sequence_id) {
34 GDataDirectory* dir = new GDataDirectory(parent, directory_service);
35 const std::string dir_name = "dir" + base::IntToString(sequence_id);
36 const std::string resource_id = std::string("dir_resource_id:") +
37 dir_name;
38 dir->set_title(dir_name);
39 dir->set_resource_id(resource_id);
40 GDataFileError error = GDATA_FILE_ERROR_FAILED;
41 directory_service->AddEntryToDirectory(
42 parent->GetFilePath(),
43 dir,
44 base::Bind(&test_util::CopyErrorCodeFromFileOperationCallback, &error));
45 test_util::RunBlockingPoolTask();
46 EXPECT_EQ(GDATA_FILE_OK, error);
47 return dir;
48 }
49
50 GDataFile* AddFile(GDataDirectory* parent,
51 GDataDirectoryService* directory_service,
52 int sequence_id) {
53 GDataFile* file = new GDataFile(parent, directory_service);
54 const std::string title = "file" + base::IntToString(sequence_id);
55 const std::string resource_id = std::string("file_resource_id:") +
56 title;
57 file->set_title(title);
58 file->set_resource_id(resource_id);
59 file->set_file_md5(std::string("file_md5:") + title);
60 GDataFileError error = GDATA_FILE_ERROR_FAILED;
61 directory_service->AddEntryToDirectory(
62 parent->GetFilePath(),
63 file,
64 base::Bind(&test_util::CopyErrorCodeFromFileOperationCallback, &error));
65 test_util::RunBlockingPoolTask();
66 EXPECT_EQ(GDATA_FILE_OK, error);
67 return file;
68 }
69
70 // Creates the following files/directories
71 // drive/dir1/
72 // drive/dir2/
73 // drive/dir1/dir3/
74 // drive/dir1/file4
75 // drive/dir1/file5
76 // drive/dir2/file6
77 // drive/dir2/file7
78 // drive/dir2/file8
79 // drive/dir1/dir3/file9
80 // drive/dir1/dir3/file10
81 void InitDirectoryService(GDataDirectoryService* directory_service) {
82 int sequence_id = 1;
83 GDataDirectory* dir1 = AddDirectory(directory_service->root(),
84 directory_service, sequence_id++);
85 GDataDirectory* dir2 = AddDirectory(directory_service->root(),
86 directory_service, sequence_id++);
87 GDataDirectory* dir3 = AddDirectory(dir1, directory_service, sequence_id++);
88
89 AddFile(dir1, directory_service, sequence_id++);
90 AddFile(dir1, directory_service, sequence_id++);
91
92 AddFile(dir2, directory_service, sequence_id++);
93 AddFile(dir2, directory_service, sequence_id++);
94 AddFile(dir2, directory_service, sequence_id++);
95
96 AddFile(dir3, directory_service, sequence_id++);
97 AddFile(dir3, directory_service, sequence_id++);
98 }
99
100 GDataDirectory* FindDir(GDataDirectoryService* directory_service,
101 const char* path) {
102 return directory_service->FindEntryByPathSync(
103 FilePath(path))->AsGDataDirectory();
104 }
105
106 GDataFile* FindFile(GDataDirectoryService* directory_service,
107 const char* path) {
108 return directory_service->FindEntryByPathSync(FilePath(path))->AsGDataFile();
109 }
110
23 } // namespace 111 } // namespace
24 112
113 void VerifyDirectoryService(GDataDirectoryService* directory_service) {
114 ASSERT_TRUE(directory_service->root());
115
116 GDataDirectory* dir1 = FindDir(directory_service, "drive/dir1");
117 ASSERT_TRUE(dir1);
118 GDataDirectory* dir2 = FindDir(directory_service, "drive/dir2");
119 ASSERT_TRUE(dir2);
120 GDataDirectory* dir3 = FindDir(directory_service, "drive/dir1/dir3");
121 ASSERT_TRUE(dir3);
122
123 GDataFile* file4 = FindFile(directory_service, "drive/dir1/file4");
124 EXPECT_TRUE(file4);
125 EXPECT_EQ(file4->parent(), dir1);
126 GDataFile* file5 = FindFile(directory_service, "drive/dir1/file5");
127 EXPECT_TRUE(file5);
128 EXPECT_EQ(file5->parent(), dir1);
129 GDataFile* file6 = FindFile(directory_service, "drive/dir2/file6");
130 EXPECT_TRUE(file6);
131 EXPECT_EQ(file6->parent(), dir2);
132 GDataFile* file7 = FindFile(directory_service, "drive/dir2/file7");
133 EXPECT_TRUE(file7);
134 EXPECT_EQ(file7->parent(), dir2);
135 GDataFile* file8 = FindFile(directory_service, "drive/dir2/file8");
136 EXPECT_TRUE(file8);
137 EXPECT_EQ(file8->parent(), dir2);
138 GDataFile* file9 = FindFile(directory_service, "drive/dir1/dir3/file9");
139 EXPECT_TRUE(file9);
140 EXPECT_EQ(file9->parent(), dir3);
141 GDataFile* file10 = FindFile(directory_service, "drive/dir1/dir3/file10");
142 EXPECT_TRUE(file10);
143 EXPECT_EQ(file10->parent(), dir3);
144
145 EXPECT_EQ(dir1, directory_service->GetEntryByResourceId(
146 "dir_resource_id:dir1"));
147 EXPECT_EQ(dir2, directory_service->GetEntryByResourceId(
148 "dir_resource_id:dir2"));
149 EXPECT_EQ(dir3, directory_service->GetEntryByResourceId(
150 "dir_resource_id:dir3"));
151 EXPECT_EQ(file4, directory_service->GetEntryByResourceId(
152 "file_resource_id:file4"));
153 EXPECT_EQ(file5, directory_service->GetEntryByResourceId(
154 "file_resource_id:file5"));
155 EXPECT_EQ(file6, directory_service->GetEntryByResourceId(
156 "file_resource_id:file6"));
157 EXPECT_EQ(file7, directory_service->GetEntryByResourceId(
158 "file_resource_id:file7"));
159 EXPECT_EQ(file8, directory_service->GetEntryByResourceId(
160 "file_resource_id:file8"));
161 EXPECT_EQ(file9, directory_service->GetEntryByResourceId(
162 "file_resource_id:file9"));
163 EXPECT_EQ(file10, directory_service->GetEntryByResourceId(
164 "file_resource_id:file10"));
165 }
166
25 TEST(GDataEntryTest, FromProto_DetectBadUploadUrl) { 167 TEST(GDataEntryTest, FromProto_DetectBadUploadUrl) {
26 GDataEntryProto proto; 168 GDataEntryProto proto;
27 proto.set_title("test.txt"); 169 proto.set_title("test.txt");
28 170
29 GDataEntry entry(NULL, NULL); 171 GDataEntry entry(NULL, NULL);
30 // This should fail as the upload URL is empty. 172 // This should fail as the upload URL is empty.
31 ASSERT_FALSE(entry.FromProto(proto)); 173 ASSERT_FALSE(entry.FromProto(proto));
32 174
33 // Set a upload URL. 175 // Set a upload URL.
34 proto.set_upload_url(kResumableEditMediaUrl); 176 proto.set_upload_url(kResumableEditMediaUrl);
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 411
270 TEST(GDataRootDirectoryTest, GetEntryByResourceId_RootDirectory) { 412 TEST(GDataRootDirectoryTest, GetEntryByResourceId_RootDirectory) {
271 GDataDirectoryService directory_service; 413 GDataDirectoryService directory_service;
272 // Look up the root directory by its resource ID. 414 // Look up the root directory by its resource ID.
273 GDataEntry* entry = directory_service.GetEntryByResourceId( 415 GDataEntry* entry = directory_service.GetEntryByResourceId(
274 kGDataRootDirectoryResourceId); 416 kGDataRootDirectoryResourceId);
275 ASSERT_TRUE(entry); 417 ASSERT_TRUE(entry);
276 EXPECT_EQ(kGDataRootDirectoryResourceId, entry->resource_id()); 418 EXPECT_EQ(kGDataRootDirectoryResourceId, entry->resource_id());
277 } 419 }
278 420
421 TEST(GDataRootDirectoryTest, DBTest) {
422 MessageLoopForUI message_loop;
423 content::TestBrowserThread ui_thread(content::BrowserThread::UI,
424 &message_loop);
425
426 scoped_ptr<TestingProfile> profile(new TestingProfile);
427 scoped_refptr<base::SequencedWorkerPool> pool =
428 content::BrowserThread::GetBlockingPool();
429 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner =
430 pool->GetSequencedTaskRunner(pool->GetSequenceToken());
431
432 GDataDirectoryService directory_service;
433 FilePath db_path(GDataCache::GetCacheRootPath(profile.get()).
434 AppendASCII("meta").AppendASCII("resource_metadata.db"));
435 directory_service.InitFromDB(db_path, blocking_task_runner, NULL,
436 base::Closure());
437 test_util::RunBlockingPoolTask();
438 InitDirectoryService(&directory_service);
439
440 // Write the filesystem to db.
441 directory_service.SaveToDB();
442 test_util::RunBlockingPoolTask();
443
444 GDataDirectoryService directory_service2;
445 directory_service2.InitFromDB(db_path, blocking_task_runner, NULL,
446 base::Closure());
447 test_util::RunBlockingPoolTask();
448
449 VerifyDirectoryService(&directory_service2);
450 }
451
279 } // namespace gdata 452 } // namespace gdata
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698