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

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

Powered by Google App Engine
This is Rietveld 408576698