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

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

Issue 265833003: drive: Stop checking free disk space in ResourceMetadata::Initialize (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix typo Created 6 years, 7 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
« no previous file with comments | « chrome/browser/chromeos/drive/resource_metadata_storage.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/chromeos/drive/resource_metadata_storage.h" 5 #include "chrome/browser/chromeos/drive/resource_metadata_storage.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/files/scoped_temp_dir.h" 10 #include "base/files/scoped_temp_dir.h"
(...skipping 14 matching lines...) Expand all
25 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 25 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
26 26
27 storage_.reset(new ResourceMetadataStorage( 27 storage_.reset(new ResourceMetadataStorage(
28 temp_dir_.path(), base::MessageLoopProxy::current().get())); 28 temp_dir_.path(), base::MessageLoopProxy::current().get()));
29 ASSERT_TRUE(storage_->Initialize()); 29 ASSERT_TRUE(storage_->Initialize());
30 } 30 }
31 31
32 // Overwrites |storage_|'s version. 32 // Overwrites |storage_|'s version.
33 void SetDBVersion(int version) { 33 void SetDBVersion(int version) {
34 ResourceMetadataHeader header; 34 ResourceMetadataHeader header;
35 ASSERT_TRUE(storage_->GetHeader(&header)); 35 ASSERT_EQ(FILE_ERROR_OK, storage_->GetHeader(&header));
36 header.set_version(version); 36 header.set_version(version);
37 EXPECT_TRUE(storage_->PutHeader(header)); 37 EXPECT_EQ(FILE_ERROR_OK, storage_->PutHeader(header));
38 } 38 }
39 39
40 bool CheckValidity() { 40 bool CheckValidity() {
41 return storage_->CheckValidity(); 41 return storage_->CheckValidity();
42 } 42 }
43 43
44 leveldb::DB* resource_map() { return storage_->resource_map_.get(); } 44 leveldb::DB* resource_map() { return storage_->resource_map_.get(); }
45 45
46 // Puts a child entry. 46 // Puts a child entry.
47 void PutChild(const std::string& parent_id, 47 void PutChild(const std::string& parent_id,
(...skipping 14 matching lines...) Expand all
62 } 62 }
63 63
64 content::TestBrowserThreadBundle thread_bundle_; 64 content::TestBrowserThreadBundle thread_bundle_;
65 base::ScopedTempDir temp_dir_; 65 base::ScopedTempDir temp_dir_;
66 scoped_ptr<ResourceMetadataStorage, 66 scoped_ptr<ResourceMetadataStorage,
67 test_util::DestroyHelperForTests> storage_; 67 test_util::DestroyHelperForTests> storage_;
68 }; 68 };
69 69
70 TEST_F(ResourceMetadataStorageTest, LargestChangestamp) { 70 TEST_F(ResourceMetadataStorageTest, LargestChangestamp) {
71 const int64 kLargestChangestamp = 1234567890; 71 const int64 kLargestChangestamp = 1234567890;
72 EXPECT_TRUE(storage_->SetLargestChangestamp(kLargestChangestamp)); 72 EXPECT_EQ(FILE_ERROR_OK,
73 EXPECT_EQ(kLargestChangestamp, storage_->GetLargestChangestamp()); 73 storage_->SetLargestChangestamp(kLargestChangestamp));
74 int64 value = 0;
75 EXPECT_EQ(FILE_ERROR_OK, storage_->GetLargestChangestamp(&value));
76 EXPECT_EQ(kLargestChangestamp, value);
74 } 77 }
75 78
76 TEST_F(ResourceMetadataStorageTest, PutEntry) { 79 TEST_F(ResourceMetadataStorageTest, PutEntry) {
77 const std::string key1 = "abcdefg"; 80 const std::string key1 = "abcdefg";
78 const std::string key2 = "abcd"; 81 const std::string key2 = "abcd";
79 const std::string key3 = "efgh"; 82 const std::string key3 = "efgh";
80 const std::string name2 = "ABCD"; 83 const std::string name2 = "ABCD";
81 const std::string name3 = "EFGH"; 84 const std::string name3 = "EFGH";
82 85
83 // key1 not found. 86 // key1 not found.
84 ResourceEntry result; 87 ResourceEntry result;
85 EXPECT_FALSE(storage_->GetEntry(key1, &result)); 88 EXPECT_EQ(FILE_ERROR_NOT_FOUND, storage_->GetEntry(key1, &result));
86 89
87 // Put entry1. 90 // Put entry1.
88 ResourceEntry entry1; 91 ResourceEntry entry1;
89 entry1.set_local_id(key1); 92 entry1.set_local_id(key1);
90 EXPECT_TRUE(storage_->PutEntry(entry1)); 93 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry1));
91 94
92 // key1 found. 95 // key1 found.
93 EXPECT_TRUE(storage_->GetEntry(key1, &result)); 96 EXPECT_EQ(FILE_ERROR_OK, storage_->GetEntry(key1, &result));
94 97
95 // key2 not found. 98 // key2 not found.
96 EXPECT_FALSE(storage_->GetEntry(key2, &result)); 99 EXPECT_EQ(FILE_ERROR_NOT_FOUND, storage_->GetEntry(key2, &result));
97 100
98 // Put entry2 as a child of entry1. 101 // Put entry2 as a child of entry1.
99 ResourceEntry entry2; 102 ResourceEntry entry2;
100 entry2.set_local_id(key2); 103 entry2.set_local_id(key2);
101 entry2.set_parent_local_id(key1); 104 entry2.set_parent_local_id(key1);
102 entry2.set_base_name(name2); 105 entry2.set_base_name(name2);
103 EXPECT_TRUE(storage_->PutEntry(entry2)); 106 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry2));
104 107
105 // key2 found. 108 // key2 found.
106 EXPECT_TRUE(storage_->GetEntry(key2, &result)); 109 std::string child_id;
107 EXPECT_EQ(key2, storage_->GetChild(key1, name2)); 110 EXPECT_EQ(FILE_ERROR_OK, storage_->GetEntry(key2, &result));
111 EXPECT_EQ(FILE_ERROR_OK, storage_->GetChild(key1, name2, &child_id));
112 EXPECT_EQ(key2, child_id);
108 113
109 // Put entry3 as a child of entry2. 114 // Put entry3 as a child of entry2.
110 ResourceEntry entry3; 115 ResourceEntry entry3;
111 entry3.set_local_id(key3); 116 entry3.set_local_id(key3);
112 entry3.set_parent_local_id(key2); 117 entry3.set_parent_local_id(key2);
113 entry3.set_base_name(name3); 118 entry3.set_base_name(name3);
114 EXPECT_TRUE(storage_->PutEntry(entry3)); 119 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry3));
115 120
116 // key3 found. 121 // key3 found.
117 EXPECT_TRUE(storage_->GetEntry(key3, &result)); 122 EXPECT_EQ(FILE_ERROR_OK, storage_->GetEntry(key3, &result));
118 EXPECT_EQ(key3, storage_->GetChild(key2, name3)); 123 EXPECT_EQ(FILE_ERROR_OK, storage_->GetChild(key2, name3, &child_id));
124 EXPECT_EQ(key3, child_id);
119 125
120 // Change entry3's parent to entry1. 126 // Change entry3's parent to entry1.
121 entry3.set_parent_local_id(key1); 127 entry3.set_parent_local_id(key1);
122 EXPECT_TRUE(storage_->PutEntry(entry3)); 128 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry3));
123 129
124 // entry3 is a child of entry1 now. 130 // entry3 is a child of entry1 now.
125 EXPECT_TRUE(storage_->GetChild(key2, name3).empty()); 131 EXPECT_EQ(FILE_ERROR_NOT_FOUND, storage_->GetChild(key2, name3, &child_id));
126 EXPECT_EQ(key3, storage_->GetChild(key1, name3)); 132 EXPECT_EQ(FILE_ERROR_OK, storage_->GetChild(key1, name3, &child_id));
133 EXPECT_EQ(key3, child_id);
127 134
128 // Remove entries. 135 // Remove entries.
129 EXPECT_TRUE(storage_->RemoveEntry(key3)); 136 EXPECT_EQ(FILE_ERROR_OK, storage_->RemoveEntry(key3));
130 EXPECT_FALSE(storage_->GetEntry(key3, &result)); 137 EXPECT_EQ(FILE_ERROR_NOT_FOUND, storage_->GetEntry(key3, &result));
131 EXPECT_TRUE(storage_->RemoveEntry(key2)); 138 EXPECT_EQ(FILE_ERROR_OK, storage_->RemoveEntry(key2));
132 EXPECT_FALSE(storage_->GetEntry(key2, &result)); 139 EXPECT_EQ(FILE_ERROR_NOT_FOUND, storage_->GetEntry(key2, &result));
133 EXPECT_TRUE(storage_->RemoveEntry(key1)); 140 EXPECT_EQ(FILE_ERROR_OK, storage_->RemoveEntry(key1));
134 EXPECT_FALSE(storage_->GetEntry(key1, &result)); 141 EXPECT_EQ(FILE_ERROR_NOT_FOUND, storage_->GetEntry(key1, &result));
135 } 142 }
136 143
137 TEST_F(ResourceMetadataStorageTest, Iterator) { 144 TEST_F(ResourceMetadataStorageTest, Iterator) {
138 // Prepare data. 145 // Prepare data.
139 std::vector<std::string> keys; 146 std::vector<std::string> keys;
140 147
141 keys.push_back("entry1"); 148 keys.push_back("entry1");
142 keys.push_back("entry2"); 149 keys.push_back("entry2");
143 keys.push_back("entry3"); 150 keys.push_back("entry3");
144 keys.push_back("entry4"); 151 keys.push_back("entry4");
145 152
146 for (size_t i = 0; i < keys.size(); ++i) { 153 for (size_t i = 0; i < keys.size(); ++i) {
147 ResourceEntry entry; 154 ResourceEntry entry;
148 entry.set_local_id(keys[i]); 155 entry.set_local_id(keys[i]);
149 EXPECT_TRUE(storage_->PutEntry(entry)); 156 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry));
150 } 157 }
151 158
152 // Insert some cache entries. 159 // Insert some cache entries.
153 std::map<std::string, FileCacheEntry> cache_entries; 160 std::map<std::string, FileCacheEntry> cache_entries;
154 cache_entries[keys[0]].set_md5("aaaaaa"); 161 cache_entries[keys[0]].set_md5("aaaaaa");
155 cache_entries[keys[1]].set_md5("bbbbbb"); 162 cache_entries[keys[1]].set_md5("bbbbbb");
156 for (std::map<std::string, FileCacheEntry>::iterator it = 163 for (std::map<std::string, FileCacheEntry>::iterator it =
157 cache_entries.begin(); it != cache_entries.end(); ++it) 164 cache_entries.begin(); it != cache_entries.end(); ++it)
158 EXPECT_TRUE(storage_->PutCacheEntry(it->first, it->second)); 165 EXPECT_EQ(FILE_ERROR_OK, storage_->PutCacheEntry(it->first, it->second));
159 166
160 // Iterate and check the result. 167 // Iterate and check the result.
161 std::map<std::string, ResourceEntry> found_entries; 168 std::map<std::string, ResourceEntry> found_entries;
162 std::map<std::string, FileCacheEntry> found_cache_entries; 169 std::map<std::string, FileCacheEntry> found_cache_entries;
163 scoped_ptr<ResourceMetadataStorage::Iterator> it = storage_->GetIterator(); 170 scoped_ptr<ResourceMetadataStorage::Iterator> it = storage_->GetIterator();
164 ASSERT_TRUE(it); 171 ASSERT_TRUE(it);
165 for (; !it->IsAtEnd(); it->Advance()) { 172 for (; !it->IsAtEnd(); it->Advance()) {
166 const ResourceEntry& entry = it->GetValue(); 173 const ResourceEntry& entry = it->GetValue();
167 found_entries[it->GetID()] = entry; 174 found_entries[it->GetID()] = entry;
168 175
(...skipping 17 matching lines...) Expand all
186 193
187 TEST_F(ResourceMetadataStorageTest, PutCacheEntry) { 194 TEST_F(ResourceMetadataStorageTest, PutCacheEntry) {
188 FileCacheEntry entry; 195 FileCacheEntry entry;
189 const std::string key1 = "abcdefg"; 196 const std::string key1 = "abcdefg";
190 const std::string key2 = "abcd"; 197 const std::string key2 = "abcd";
191 const std::string md5_1 = "foo"; 198 const std::string md5_1 = "foo";
192 const std::string md5_2 = "bar"; 199 const std::string md5_2 = "bar";
193 200
194 // Put cache entries. 201 // Put cache entries.
195 entry.set_md5(md5_1); 202 entry.set_md5(md5_1);
196 EXPECT_TRUE(storage_->PutCacheEntry(key1, entry)); 203 EXPECT_EQ(FILE_ERROR_OK, storage_->PutCacheEntry(key1, entry));
197 entry.set_md5(md5_2); 204 entry.set_md5(md5_2);
198 EXPECT_TRUE(storage_->PutCacheEntry(key2, entry)); 205 EXPECT_EQ(FILE_ERROR_OK, storage_->PutCacheEntry(key2, entry));
199 206
200 // Get cache entires. 207 // Get cache entires.
201 EXPECT_TRUE(storage_->GetCacheEntry(key1, &entry)); 208 EXPECT_EQ(FILE_ERROR_OK, storage_->GetCacheEntry(key1, &entry));
202 EXPECT_EQ(md5_1, entry.md5()); 209 EXPECT_EQ(md5_1, entry.md5());
203 EXPECT_TRUE(storage_->GetCacheEntry(key2, &entry)); 210 EXPECT_EQ(FILE_ERROR_OK, storage_->GetCacheEntry(key2, &entry));
204 EXPECT_EQ(md5_2, entry.md5()); 211 EXPECT_EQ(md5_2, entry.md5());
205 212
206 // Remove cache entries. 213 // Remove cache entries.
207 EXPECT_TRUE(storage_->RemoveCacheEntry(key1)); 214 EXPECT_EQ(FILE_ERROR_OK, storage_->RemoveCacheEntry(key1));
208 EXPECT_FALSE(storage_->GetCacheEntry(key1, &entry)); 215 EXPECT_EQ(FILE_ERROR_NOT_FOUND, storage_->GetCacheEntry(key1, &entry));
209 216
210 EXPECT_TRUE(storage_->RemoveCacheEntry(key2)); 217 EXPECT_EQ(FILE_ERROR_OK, storage_->RemoveCacheEntry(key2));
211 EXPECT_FALSE(storage_->GetCacheEntry(key2, &entry)); 218 EXPECT_EQ(FILE_ERROR_NOT_FOUND, storage_->GetCacheEntry(key2, &entry));
212 } 219 }
213 220
214 TEST_F(ResourceMetadataStorageTest, CacheEntryIterator) { 221 TEST_F(ResourceMetadataStorageTest, CacheEntryIterator) {
215 // Prepare data. 222 // Prepare data.
216 std::map<std::string, FileCacheEntry> entries; 223 std::map<std::string, FileCacheEntry> entries;
217 FileCacheEntry cache_entry; 224 FileCacheEntry cache_entry;
218 225
219 cache_entry.set_md5("aA"); 226 cache_entry.set_md5("aA");
220 entries["entry1"] = cache_entry; 227 entries["entry1"] = cache_entry;
221 cache_entry.set_md5("bB"); 228 cache_entry.set_md5("bB");
222 entries["entry2"] = cache_entry; 229 entries["entry2"] = cache_entry;
223 cache_entry.set_md5("cC"); 230 cache_entry.set_md5("cC");
224 entries["entry3"] = cache_entry; 231 entries["entry3"] = cache_entry;
225 cache_entry.set_md5("dD"); 232 cache_entry.set_md5("dD");
226 entries["entry4"] = cache_entry; 233 entries["entry4"] = cache_entry;
227 234
228 for (std::map<std::string, FileCacheEntry>::iterator it = entries.begin(); 235 for (std::map<std::string, FileCacheEntry>::iterator it = entries.begin();
229 it != entries.end(); ++it) 236 it != entries.end(); ++it)
230 EXPECT_TRUE(storage_->PutCacheEntry(it->first, it->second)); 237 EXPECT_EQ(FILE_ERROR_OK, storage_->PutCacheEntry(it->first, it->second));
231 238
232 // Insert some dummy entries. 239 // Insert some dummy entries.
233 ResourceEntry entry; 240 ResourceEntry entry;
234 entry.set_local_id("entry1"); 241 entry.set_local_id("entry1");
235 EXPECT_TRUE(storage_->PutEntry(entry)); 242 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry));
236 entry.set_local_id("entry2"); 243 entry.set_local_id("entry2");
237 EXPECT_TRUE(storage_->PutEntry(entry)); 244 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry));
238 245
239 // Iterate and check the result. 246 // Iterate and check the result.
240 scoped_ptr<ResourceMetadataStorage::CacheEntryIterator> it = 247 scoped_ptr<ResourceMetadataStorage::CacheEntryIterator> it =
241 storage_->GetCacheEntryIterator(); 248 storage_->GetCacheEntryIterator();
242 ASSERT_TRUE(it); 249 ASSERT_TRUE(it);
243 size_t num_entries = 0; 250 size_t num_entries = 0;
244 for (; !it->IsAtEnd(); it->Advance()) { 251 for (; !it->IsAtEnd(); it->Advance()) {
245 EXPECT_EQ(1U, entries.count(it->GetID())); 252 EXPECT_EQ(1U, entries.count(it->GetID()));
246 EXPECT_EQ(entries[it->GetID()].md5(), it->GetValue().md5()); 253 EXPECT_EQ(entries[it->GetID()].md5(), it->GetValue().md5());
247 ++num_entries; 254 ++num_entries;
248 } 255 }
249 EXPECT_FALSE(it->HasError()); 256 EXPECT_FALSE(it->HasError());
250 EXPECT_EQ(entries.size(), num_entries); 257 EXPECT_EQ(entries.size(), num_entries);
251 } 258 }
252 259
253 TEST_F(ResourceMetadataStorageTest, GetIdByResourceId) { 260 TEST_F(ResourceMetadataStorageTest, GetIdByResourceId) {
254 const std::string local_id = "local_id"; 261 const std::string local_id = "local_id";
255 const std::string resource_id = "resource_id"; 262 const std::string resource_id = "resource_id";
256 263
257 // Resource ID to local ID mapping is not stored yet. 264 // Resource ID to local ID mapping is not stored yet.
258 std::string id; 265 std::string id;
259 EXPECT_FALSE(storage_->GetIdByResourceId(resource_id, &id)); 266 EXPECT_EQ(FILE_ERROR_NOT_FOUND,
267 storage_->GetIdByResourceId(resource_id, &id));
260 268
261 // Put an entry with the resource ID. 269 // Put an entry with the resource ID.
262 ResourceEntry entry; 270 ResourceEntry entry;
263 entry.set_local_id(local_id); 271 entry.set_local_id(local_id);
264 entry.set_resource_id(resource_id); 272 entry.set_resource_id(resource_id);
265 EXPECT_TRUE(storage_->PutEntry(entry)); 273 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry));
266 274
267 // Can get local ID by resource ID. 275 // Can get local ID by resource ID.
268 EXPECT_TRUE(storage_->GetIdByResourceId(resource_id, &id)); 276 EXPECT_EQ(FILE_ERROR_OK, storage_->GetIdByResourceId(resource_id, &id));
269 EXPECT_EQ(local_id, id); 277 EXPECT_EQ(local_id, id);
270 278
271 // Resource ID to local ID mapping is removed. 279 // Resource ID to local ID mapping is removed.
272 EXPECT_TRUE(storage_->RemoveEntry(local_id)); 280 EXPECT_EQ(FILE_ERROR_OK, storage_->RemoveEntry(local_id));
273 EXPECT_FALSE(storage_->GetIdByResourceId(resource_id, &id)); 281 EXPECT_EQ(FILE_ERROR_NOT_FOUND,
282 storage_->GetIdByResourceId(resource_id, &id));
274 } 283 }
275 284
276 TEST_F(ResourceMetadataStorageTest, GetChildren) { 285 TEST_F(ResourceMetadataStorageTest, GetChildren) {
277 const std::string parents_id[] = { "mercury", "venus", "mars", "jupiter", 286 const std::string parents_id[] = { "mercury", "venus", "mars", "jupiter",
278 "saturn" }; 287 "saturn" };
279 std::vector<std::vector<std::pair<std::string, std::string> > > 288 std::vector<std::vector<std::pair<std::string, std::string> > >
280 children_name_id(arraysize(parents_id)); 289 children_name_id(arraysize(parents_id));
281 // Skip children_name_id[0/1] here because Mercury and Venus have no moon. 290 // Skip children_name_id[0/1] here because Mercury and Venus have no moon.
282 children_name_id[2].push_back(std::make_pair("phobos", "mars_i")); 291 children_name_id[2].push_back(std::make_pair("phobos", "mars_i"));
283 children_name_id[2].push_back(std::make_pair("deimos", "mars_ii")); 292 children_name_id[2].push_back(std::make_pair("deimos", "mars_ii"));
284 children_name_id[3].push_back(std::make_pair("io", "jupiter_i")); 293 children_name_id[3].push_back(std::make_pair("io", "jupiter_i"));
285 children_name_id[3].push_back(std::make_pair("europa", "jupiter_ii")); 294 children_name_id[3].push_back(std::make_pair("europa", "jupiter_ii"));
286 children_name_id[3].push_back(std::make_pair("ganymede", "jupiter_iii")); 295 children_name_id[3].push_back(std::make_pair("ganymede", "jupiter_iii"));
287 children_name_id[3].push_back(std::make_pair("calisto", "jupiter_iv")); 296 children_name_id[3].push_back(std::make_pair("calisto", "jupiter_iv"));
288 children_name_id[4].push_back(std::make_pair("mimas", "saturn_i")); 297 children_name_id[4].push_back(std::make_pair("mimas", "saturn_i"));
289 children_name_id[4].push_back(std::make_pair("enceladus", "saturn_ii")); 298 children_name_id[4].push_back(std::make_pair("enceladus", "saturn_ii"));
290 children_name_id[4].push_back(std::make_pair("tethys", "saturn_iii")); 299 children_name_id[4].push_back(std::make_pair("tethys", "saturn_iii"));
291 children_name_id[4].push_back(std::make_pair("dione", "saturn_iv")); 300 children_name_id[4].push_back(std::make_pair("dione", "saturn_iv"));
292 children_name_id[4].push_back(std::make_pair("rhea", "saturn_v")); 301 children_name_id[4].push_back(std::make_pair("rhea", "saturn_v"));
293 children_name_id[4].push_back(std::make_pair("titan", "saturn_vi")); 302 children_name_id[4].push_back(std::make_pair("titan", "saturn_vi"));
294 children_name_id[4].push_back(std::make_pair("iapetus", "saturn_vii")); 303 children_name_id[4].push_back(std::make_pair("iapetus", "saturn_vii"));
295 304
296 // Put parents. 305 // Put parents.
297 for (size_t i = 0; i < arraysize(parents_id); ++i) { 306 for (size_t i = 0; i < arraysize(parents_id); ++i) {
298 ResourceEntry entry; 307 ResourceEntry entry;
299 entry.set_local_id(parents_id[i]); 308 entry.set_local_id(parents_id[i]);
300 EXPECT_TRUE(storage_->PutEntry(entry)); 309 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry));
301 } 310 }
302 311
303 // Put children. 312 // Put children.
304 for (size_t i = 0; i < children_name_id.size(); ++i) { 313 for (size_t i = 0; i < children_name_id.size(); ++i) {
305 for (size_t j = 0; j < children_name_id[i].size(); ++j) { 314 for (size_t j = 0; j < children_name_id[i].size(); ++j) {
306 ResourceEntry entry; 315 ResourceEntry entry;
307 entry.set_local_id(children_name_id[i][j].second); 316 entry.set_local_id(children_name_id[i][j].second);
308 entry.set_parent_local_id(parents_id[i]); 317 entry.set_parent_local_id(parents_id[i]);
309 entry.set_base_name(children_name_id[i][j].first); 318 entry.set_base_name(children_name_id[i][j].first);
310 EXPECT_TRUE(storage_->PutEntry(entry)); 319 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry));
311 } 320 }
312 } 321 }
313 322
314 // Put some dummy cache entries. 323 // Put some dummy cache entries.
315 for (size_t i = 0; i < arraysize(parents_id); ++i) { 324 for (size_t i = 0; i < arraysize(parents_id); ++i) {
316 FileCacheEntry cache_entry; 325 FileCacheEntry cache_entry;
317 EXPECT_TRUE(storage_->PutCacheEntry(parents_id[i], cache_entry)); 326 EXPECT_EQ(FILE_ERROR_OK,
327 storage_->PutCacheEntry(parents_id[i], cache_entry));
318 } 328 }
319 329
320 // Try to get children. 330 // Try to get children.
321 for (size_t i = 0; i < children_name_id.size(); ++i) { 331 for (size_t i = 0; i < children_name_id.size(); ++i) {
322 std::vector<std::string> children; 332 std::vector<std::string> children;
323 storage_->GetChildren(parents_id[i], &children); 333 storage_->GetChildren(parents_id[i], &children);
324 EXPECT_EQ(children_name_id[i].size(), children.size()); 334 EXPECT_EQ(children_name_id[i].size(), children.size());
325 for (size_t j = 0; j < children_name_id[i].size(); ++j) { 335 for (size_t j = 0; j < children_name_id[i].size(); ++j) {
326 EXPECT_EQ(1, std::count(children.begin(), 336 EXPECT_EQ(1, std::count(children.begin(),
327 children.end(), 337 children.end(),
328 children_name_id[i][j].second)); 338 children_name_id[i][j].second));
329 } 339 }
330 } 340 }
331 } 341 }
332 342
333 TEST_F(ResourceMetadataStorageTest, OpenExistingDB) { 343 TEST_F(ResourceMetadataStorageTest, OpenExistingDB) {
334 const std::string parent_id1 = "abcdefg"; 344 const std::string parent_id1 = "abcdefg";
335 const std::string child_name1 = "WXYZABC"; 345 const std::string child_name1 = "WXYZABC";
336 const std::string child_id1 = "qwerty"; 346 const std::string child_id1 = "qwerty";
337 347
338 ResourceEntry entry1; 348 ResourceEntry entry1;
339 entry1.set_local_id(parent_id1); 349 entry1.set_local_id(parent_id1);
340 ResourceEntry entry2; 350 ResourceEntry entry2;
341 entry2.set_local_id(child_id1); 351 entry2.set_local_id(child_id1);
342 entry2.set_parent_local_id(parent_id1); 352 entry2.set_parent_local_id(parent_id1);
343 entry2.set_base_name(child_name1); 353 entry2.set_base_name(child_name1);
344 354
345 // Put some data. 355 // Put some data.
346 EXPECT_TRUE(storage_->PutEntry(entry1)); 356 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry1));
347 EXPECT_TRUE(storage_->PutEntry(entry2)); 357 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry2));
348 358
349 // Close DB and reopen. 359 // Close DB and reopen.
350 storage_.reset(new ResourceMetadataStorage( 360 storage_.reset(new ResourceMetadataStorage(
351 temp_dir_.path(), base::MessageLoopProxy::current().get())); 361 temp_dir_.path(), base::MessageLoopProxy::current().get()));
352 ASSERT_TRUE(storage_->Initialize()); 362 ASSERT_TRUE(storage_->Initialize());
353 363
354 // Can read data. 364 // Can read data.
355 ResourceEntry result; 365 ResourceEntry result;
356 EXPECT_TRUE(storage_->GetEntry(parent_id1, &result)); 366 EXPECT_EQ(FILE_ERROR_OK, storage_->GetEntry(parent_id1, &result));
357 367
358 EXPECT_TRUE(storage_->GetEntry(child_id1, &result)); 368 EXPECT_EQ(FILE_ERROR_OK, storage_->GetEntry(child_id1, &result));
359 EXPECT_EQ(parent_id1, result.parent_local_id()); 369 EXPECT_EQ(parent_id1, result.parent_local_id());
360 EXPECT_EQ(child_name1, result.base_name()); 370 EXPECT_EQ(child_name1, result.base_name());
361 371
362 EXPECT_EQ(child_id1, storage_->GetChild(parent_id1, child_name1)); 372 std::string child_id;
373 EXPECT_EQ(FILE_ERROR_OK,
374 storage_->GetChild(parent_id1, child_name1, &child_id));
375 EXPECT_EQ(child_id1, child_id);
363 } 376 }
364 377
365 TEST_F(ResourceMetadataStorageTest, IncompatibleDB_M29) { 378 TEST_F(ResourceMetadataStorageTest, IncompatibleDB_M29) {
366 const int64 kLargestChangestamp = 1234567890; 379 const int64 kLargestChangestamp = 1234567890;
367 380
368 // Construct M29 version DB. 381 // Construct M29 version DB.
369 SetDBVersion(6); 382 SetDBVersion(6);
370 EXPECT_TRUE(storage_->SetLargestChangestamp(kLargestChangestamp)); 383 EXPECT_EQ(FILE_ERROR_OK,
384 storage_->SetLargestChangestamp(kLargestChangestamp));
371 385
372 leveldb::WriteBatch batch; 386 leveldb::WriteBatch batch;
373 387
374 // Put a file entry and its cache entry. 388 // Put a file entry and its cache entry.
375 ResourceEntry entry; 389 ResourceEntry entry;
376 std::string serialized_entry; 390 std::string serialized_entry;
377 entry.set_resource_id("file:abcd"); 391 entry.set_resource_id("file:abcd");
378 EXPECT_TRUE(entry.SerializeToString(&serialized_entry)); 392 EXPECT_TRUE(entry.SerializeToString(&serialized_entry));
379 batch.Put("file:abcd", serialized_entry); 393 batch.Put("file:abcd", serialized_entry);
380 394
381 FileCacheEntry cache_entry; 395 FileCacheEntry cache_entry;
382 EXPECT_TRUE(cache_entry.SerializeToString(&serialized_entry)); 396 EXPECT_TRUE(cache_entry.SerializeToString(&serialized_entry));
383 batch.Put(std::string("file:abcd") + '\0' + "CACHE", serialized_entry); 397 batch.Put(std::string("file:abcd") + '\0' + "CACHE", serialized_entry);
384 398
385 EXPECT_TRUE(resource_map()->Write(leveldb::WriteOptions(), &batch).ok()); 399 EXPECT_TRUE(resource_map()->Write(leveldb::WriteOptions(), &batch).ok());
386 400
387 // Upgrade and reopen. 401 // Upgrade and reopen.
388 storage_.reset(); 402 storage_.reset();
389 EXPECT_TRUE(ResourceMetadataStorage::UpgradeOldDB( 403 EXPECT_TRUE(ResourceMetadataStorage::UpgradeOldDB(
390 temp_dir_.path(), base::Bind(&util::CanonicalizeResourceId))); 404 temp_dir_.path(), base::Bind(&util::CanonicalizeResourceId)));
391 storage_.reset(new ResourceMetadataStorage( 405 storage_.reset(new ResourceMetadataStorage(
392 temp_dir_.path(), base::MessageLoopProxy::current().get())); 406 temp_dir_.path(), base::MessageLoopProxy::current().get()));
393 ASSERT_TRUE(storage_->Initialize()); 407 ASSERT_TRUE(storage_->Initialize());
394 408
395 // Resource-ID-to-local-ID mapping is added. 409 // Resource-ID-to-local-ID mapping is added.
396 std::string id; 410 std::string id;
397 EXPECT_TRUE(storage_->GetIdByResourceId("abcd", &id)); // "file:" is dropped. 411 EXPECT_EQ(FILE_ERROR_OK,
412 storage_->GetIdByResourceId("abcd", &id)); // "file:" is dropped.
398 413
399 // Data is erased, except cache entries. 414 // Data is erased, except cache entries.
400 EXPECT_EQ(0, storage_->GetLargestChangestamp()); 415 int64 largest_changestamp = 0;
401 EXPECT_FALSE(storage_->GetEntry(id, &entry)); 416 EXPECT_EQ(FILE_ERROR_OK,
402 EXPECT_TRUE(storage_->GetCacheEntry(id, &cache_entry)); 417 storage_->GetLargestChangestamp(&largest_changestamp));
418 EXPECT_EQ(0, largest_changestamp);
419 EXPECT_EQ(FILE_ERROR_NOT_FOUND, storage_->GetEntry(id, &entry));
420 EXPECT_EQ(FILE_ERROR_OK, storage_->GetCacheEntry(id, &cache_entry));
403 } 421 }
404 422
405 TEST_F(ResourceMetadataStorageTest, IncompatibleDB_M32) { 423 TEST_F(ResourceMetadataStorageTest, IncompatibleDB_M32) {
406 const int64 kLargestChangestamp = 1234567890; 424 const int64 kLargestChangestamp = 1234567890;
407 const std::string resource_id = "abcd"; 425 const std::string resource_id = "abcd";
408 const std::string local_id = "local-abcd"; 426 const std::string local_id = "local-abcd";
409 427
410 // Construct M32 version DB. 428 // Construct M32 version DB.
411 SetDBVersion(11); 429 SetDBVersion(11);
412 EXPECT_TRUE(storage_->SetLargestChangestamp(kLargestChangestamp)); 430 EXPECT_EQ(FILE_ERROR_OK,
431 storage_->SetLargestChangestamp(kLargestChangestamp));
413 432
414 leveldb::WriteBatch batch; 433 leveldb::WriteBatch batch;
415 434
416 // Put a file entry and its cache and id entry. 435 // Put a file entry and its cache and id entry.
417 ResourceEntry entry; 436 ResourceEntry entry;
418 std::string serialized_entry; 437 std::string serialized_entry;
419 entry.set_resource_id(resource_id); 438 entry.set_resource_id(resource_id);
420 EXPECT_TRUE(entry.SerializeToString(&serialized_entry)); 439 EXPECT_TRUE(entry.SerializeToString(&serialized_entry));
421 batch.Put(local_id, serialized_entry); 440 batch.Put(local_id, serialized_entry);
422 441
423 FileCacheEntry cache_entry; 442 FileCacheEntry cache_entry;
424 EXPECT_TRUE(cache_entry.SerializeToString(&serialized_entry)); 443 EXPECT_TRUE(cache_entry.SerializeToString(&serialized_entry));
425 batch.Put(local_id + '\0' + "CACHE", serialized_entry); 444 batch.Put(local_id + '\0' + "CACHE", serialized_entry);
426 445
427 batch.Put('\0' + std::string("ID") + '\0' + resource_id, local_id); 446 batch.Put('\0' + std::string("ID") + '\0' + resource_id, local_id);
428 447
429 EXPECT_TRUE(resource_map()->Write(leveldb::WriteOptions(), &batch).ok()); 448 EXPECT_TRUE(resource_map()->Write(leveldb::WriteOptions(), &batch).ok());
430 449
431 // Upgrade and reopen. 450 // Upgrade and reopen.
432 storage_.reset(); 451 storage_.reset();
433 EXPECT_TRUE(ResourceMetadataStorage::UpgradeOldDB( 452 EXPECT_TRUE(ResourceMetadataStorage::UpgradeOldDB(
434 temp_dir_.path(), base::Bind(&util::CanonicalizeResourceId))); 453 temp_dir_.path(), base::Bind(&util::CanonicalizeResourceId)));
435 storage_.reset(new ResourceMetadataStorage( 454 storage_.reset(new ResourceMetadataStorage(
436 temp_dir_.path(), base::MessageLoopProxy::current().get())); 455 temp_dir_.path(), base::MessageLoopProxy::current().get()));
437 ASSERT_TRUE(storage_->Initialize()); 456 ASSERT_TRUE(storage_->Initialize());
438 457
439 // Data is erased, except cache and id mapping entries. 458 // Data is erased, except cache and id mapping entries.
440 std::string id; 459 std::string id;
441 EXPECT_TRUE(storage_->GetIdByResourceId(resource_id, &id)); 460 EXPECT_EQ(FILE_ERROR_OK, storage_->GetIdByResourceId(resource_id, &id));
442 EXPECT_EQ(local_id, id); 461 EXPECT_EQ(local_id, id);
443 EXPECT_EQ(0, storage_->GetLargestChangestamp()); 462 int64 largest_changestamp = 0;
444 EXPECT_FALSE(storage_->GetEntry(id, &entry)); 463 EXPECT_EQ(FILE_ERROR_OK,
445 EXPECT_TRUE(storage_->GetCacheEntry(id, &cache_entry)); 464 storage_->GetLargestChangestamp(&largest_changestamp));
465 EXPECT_EQ(0, largest_changestamp);
466 EXPECT_EQ(FILE_ERROR_NOT_FOUND, storage_->GetEntry(id, &entry));
467 EXPECT_EQ(FILE_ERROR_OK, storage_->GetCacheEntry(id, &cache_entry));
446 } 468 }
447 469
448 TEST_F(ResourceMetadataStorageTest, IncompatibleDB_Unknown) { 470 TEST_F(ResourceMetadataStorageTest, IncompatibleDB_Unknown) {
449 const int64 kLargestChangestamp = 1234567890; 471 const int64 kLargestChangestamp = 1234567890;
450 const std::string key1 = "abcd"; 472 const std::string key1 = "abcd";
451 473
452 // Put some data. 474 // Put some data.
453 EXPECT_TRUE(storage_->SetLargestChangestamp(kLargestChangestamp)); 475 EXPECT_EQ(FILE_ERROR_OK,
476 storage_->SetLargestChangestamp(kLargestChangestamp));
454 ResourceEntry entry; 477 ResourceEntry entry;
455 entry.set_local_id(key1); 478 entry.set_local_id(key1);
456 EXPECT_TRUE(storage_->PutEntry(entry)); 479 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry));
457 FileCacheEntry cache_entry; 480 FileCacheEntry cache_entry;
458 EXPECT_TRUE(storage_->PutCacheEntry(key1, cache_entry)); 481 EXPECT_EQ(FILE_ERROR_OK, storage_->PutCacheEntry(key1, cache_entry));
459 482
460 // Set newer version, upgrade and reopen DB. 483 // Set newer version, upgrade and reopen DB.
461 SetDBVersion(ResourceMetadataStorage::kDBVersion + 1); 484 SetDBVersion(ResourceMetadataStorage::kDBVersion + 1);
462 storage_.reset(); 485 storage_.reset();
463 EXPECT_FALSE(ResourceMetadataStorage::UpgradeOldDB( 486 EXPECT_FALSE(ResourceMetadataStorage::UpgradeOldDB(
464 temp_dir_.path(), base::Bind(&util::CanonicalizeResourceId))); 487 temp_dir_.path(), base::Bind(&util::CanonicalizeResourceId)));
465 storage_.reset(new ResourceMetadataStorage( 488 storage_.reset(new ResourceMetadataStorage(
466 temp_dir_.path(), base::MessageLoopProxy::current().get())); 489 temp_dir_.path(), base::MessageLoopProxy::current().get()));
467 ASSERT_TRUE(storage_->Initialize()); 490 ASSERT_TRUE(storage_->Initialize());
468 491
469 // Data is erased because of the incompatible version. 492 // Data is erased because of the incompatible version.
470 EXPECT_EQ(0, storage_->GetLargestChangestamp()); 493 int64 largest_changestamp = 0;
471 EXPECT_FALSE(storage_->GetEntry(key1, &entry)); 494 EXPECT_EQ(FILE_ERROR_OK,
472 EXPECT_FALSE(storage_->GetCacheEntry(key1, &cache_entry)); 495 storage_->GetLargestChangestamp(&largest_changestamp));
496 EXPECT_EQ(0, largest_changestamp);
497 EXPECT_EQ(FILE_ERROR_NOT_FOUND, storage_->GetEntry(key1, &entry));
498 EXPECT_EQ(FILE_ERROR_NOT_FOUND, storage_->GetCacheEntry(key1, &cache_entry));
473 } 499 }
474 500
475 TEST_F(ResourceMetadataStorageTest, WrongPath) { 501 TEST_F(ResourceMetadataStorageTest, WrongPath) {
476 // Create a file. 502 // Create a file.
477 base::FilePath path; 503 base::FilePath path;
478 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), &path)); 504 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), &path));
479 505
480 storage_.reset(new ResourceMetadataStorage( 506 storage_.reset(new ResourceMetadataStorage(
481 path, base::MessageLoopProxy::current().get())); 507 path, base::MessageLoopProxy::current().get()));
482 // Cannot initialize DB beacause the path does not point a directory. 508 // Cannot initialize DB beacause the path does not point a directory.
483 ASSERT_FALSE(storage_->Initialize()); 509 ASSERT_FALSE(storage_->Initialize());
484 } 510 }
485 511
486 TEST_F(ResourceMetadataStorageTest, RecoverCacheEntriesFromTrashedResourceMap) { 512 TEST_F(ResourceMetadataStorageTest, RecoverCacheEntriesFromTrashedResourceMap) {
487 // Put some cache entries. 513 // Put some cache entries.
488 FileCacheEntry cache_entry; 514 FileCacheEntry cache_entry;
489 cache_entry.set_md5("md5_foo"); 515 cache_entry.set_md5("md5_foo");
490 EXPECT_TRUE(storage_->PutCacheEntry("id_foo", cache_entry)); 516 EXPECT_EQ(FILE_ERROR_OK, storage_->PutCacheEntry("id_foo", cache_entry));
491 cache_entry.set_md5("md5_bar"); 517 cache_entry.set_md5("md5_bar");
492 cache_entry.set_is_dirty(true); 518 cache_entry.set_is_dirty(true);
493 EXPECT_TRUE(storage_->PutCacheEntry("id_bar", cache_entry)); 519 EXPECT_EQ(FILE_ERROR_OK, storage_->PutCacheEntry("id_bar", cache_entry));
494 520
495 // Put entry with id_foo. 521 // Put entry with id_foo.
496 ResourceEntry entry; 522 ResourceEntry entry;
497 entry.set_local_id("id_foo"); 523 entry.set_local_id("id_foo");
498 entry.set_base_name("foo"); 524 entry.set_base_name("foo");
499 entry.set_title("foo"); 525 entry.set_title("foo");
500 EXPECT_TRUE(storage_->PutEntry(entry)); 526 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry));
501 527
502 // Put entry with id_bar as a id_foo's child. 528 // Put entry with id_bar as a id_foo's child.
503 entry.set_local_id("id_bar"); 529 entry.set_local_id("id_bar");
504 entry.set_parent_local_id("id_foo"); 530 entry.set_parent_local_id("id_foo");
505 entry.set_base_name("bar"); 531 entry.set_base_name("bar");
506 entry.set_title("bar"); 532 entry.set_title("bar");
507 EXPECT_TRUE(storage_->PutEntry(entry)); 533 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry));
508 534
509 // Remove parent-child relationship to make the DB invalid. 535 // Remove parent-child relationship to make the DB invalid.
510 RemoveChild("id_foo", "bar"); 536 RemoveChild("id_foo", "bar");
511 EXPECT_FALSE(CheckValidity()); 537 EXPECT_FALSE(CheckValidity());
512 538
513 // Reopen. This should result in trashing the DB. 539 // Reopen. This should result in trashing the DB.
514 storage_.reset(new ResourceMetadataStorage( 540 storage_.reset(new ResourceMetadataStorage(
515 temp_dir_.path(), base::MessageLoopProxy::current().get())); 541 temp_dir_.path(), base::MessageLoopProxy::current().get()));
516 ASSERT_TRUE(storage_->Initialize()); 542 ASSERT_TRUE(storage_->Initialize());
517 543
(...skipping 17 matching lines...) Expand all
535 const std::string key3 = "boo"; 561 const std::string key3 = "boo";
536 const std::string name3 = "piyo"; 562 const std::string name3 = "piyo";
537 563
538 // Empty storage is valid. 564 // Empty storage is valid.
539 EXPECT_TRUE(CheckValidity()); 565 EXPECT_TRUE(CheckValidity());
540 566
541 // Put entry with key1. 567 // Put entry with key1.
542 ResourceEntry entry; 568 ResourceEntry entry;
543 entry.set_local_id(key1); 569 entry.set_local_id(key1);
544 entry.set_base_name(name1); 570 entry.set_base_name(name1);
545 EXPECT_TRUE(storage_->PutEntry(entry)); 571 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry));
546 EXPECT_TRUE(CheckValidity()); 572 EXPECT_TRUE(CheckValidity());
547 573
548 // Put entry with key2 under key1. 574 // Put entry with key2 under key1.
549 entry.set_local_id(key2); 575 entry.set_local_id(key2);
550 entry.set_parent_local_id(key1); 576 entry.set_parent_local_id(key1);
551 entry.set_base_name(name2); 577 entry.set_base_name(name2);
552 EXPECT_TRUE(storage_->PutEntry(entry)); 578 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry));
553 EXPECT_TRUE(CheckValidity()); 579 EXPECT_TRUE(CheckValidity());
554 580
555 RemoveChild(key1, name2); 581 RemoveChild(key1, name2);
556 EXPECT_FALSE(CheckValidity()); // Missing parent-child relationship. 582 EXPECT_FALSE(CheckValidity()); // Missing parent-child relationship.
557 583
558 // Add back parent-child relationship between key1 and key2. 584 // Add back parent-child relationship between key1 and key2.
559 PutChild(key1, name2, key2); 585 PutChild(key1, name2, key2);
560 EXPECT_TRUE(CheckValidity()); 586 EXPECT_TRUE(CheckValidity());
561 587
562 // Add parent-child relationship between key2 and key3. 588 // Add parent-child relationship between key2 and key3.
563 PutChild(key2, name3, key3); 589 PutChild(key2, name3, key3);
564 EXPECT_FALSE(CheckValidity()); // key3 is not stored in the storage. 590 EXPECT_FALSE(CheckValidity()); // key3 is not stored in the storage.
565 591
566 // Put entry with key3 under key2. 592 // Put entry with key3 under key2.
567 entry.set_local_id(key3); 593 entry.set_local_id(key3);
568 entry.set_parent_local_id(key2); 594 entry.set_parent_local_id(key2);
569 entry.set_base_name(name3); 595 entry.set_base_name(name3);
570 EXPECT_TRUE(storage_->PutEntry(entry)); 596 EXPECT_EQ(FILE_ERROR_OK, storage_->PutEntry(entry));
571 EXPECT_TRUE(CheckValidity()); 597 EXPECT_TRUE(CheckValidity());
572 598
573 // Parent-child relationship with wrong name. 599 // Parent-child relationship with wrong name.
574 RemoveChild(key2, name3); 600 RemoveChild(key2, name3);
575 EXPECT_FALSE(CheckValidity()); 601 EXPECT_FALSE(CheckValidity());
576 PutChild(key2, name2, key3); 602 PutChild(key2, name2, key3);
577 EXPECT_FALSE(CheckValidity()); 603 EXPECT_FALSE(CheckValidity());
578 604
579 // Fix up the relationship between key2 and key3. 605 // Fix up the relationship between key2 and key3.
580 RemoveChild(key2, name2); 606 RemoveChild(key2, name2);
581 EXPECT_FALSE(CheckValidity()); 607 EXPECT_FALSE(CheckValidity());
582 PutChild(key2, name3, key3); 608 PutChild(key2, name3, key3);
583 EXPECT_TRUE(CheckValidity()); 609 EXPECT_TRUE(CheckValidity());
584 610
585 // Add some cache entries. 611 // Add some cache entries.
586 FileCacheEntry cache_entry; 612 FileCacheEntry cache_entry;
587 EXPECT_TRUE(storage_->PutCacheEntry(key1, cache_entry)); 613 EXPECT_EQ(FILE_ERROR_OK, storage_->PutCacheEntry(key1, cache_entry));
588 EXPECT_TRUE(storage_->PutCacheEntry(key2, cache_entry)); 614 EXPECT_EQ(FILE_ERROR_OK, storage_->PutCacheEntry(key2, cache_entry));
589 615
590 // Remove key2. 616 // Remove key2.
591 RemoveChild(key1, name2); 617 RemoveChild(key1, name2);
592 EXPECT_FALSE(CheckValidity()); 618 EXPECT_FALSE(CheckValidity());
593 EXPECT_TRUE(storage_->RemoveEntry(key2)); 619 EXPECT_EQ(FILE_ERROR_OK, storage_->RemoveEntry(key2));
594 EXPECT_FALSE(CheckValidity()); 620 EXPECT_FALSE(CheckValidity());
595 621
596 // Remove key3. 622 // Remove key3.
597 RemoveChild(key2, name3); 623 RemoveChild(key2, name3);
598 EXPECT_FALSE(CheckValidity()); 624 EXPECT_FALSE(CheckValidity());
599 EXPECT_TRUE(storage_->RemoveEntry(key3)); 625 EXPECT_EQ(FILE_ERROR_OK, storage_->RemoveEntry(key3));
600 EXPECT_TRUE(CheckValidity()); 626 EXPECT_TRUE(CheckValidity());
601 627
602 // Remove key1. 628 // Remove key1.
603 EXPECT_TRUE(storage_->RemoveEntry(key1)); 629 EXPECT_EQ(FILE_ERROR_OK, storage_->RemoveEntry(key1));
604 EXPECT_TRUE(CheckValidity()); 630 EXPECT_TRUE(CheckValidity());
605 } 631 }
606 632
607 } // namespace internal 633 } // namespace internal
608 } // namespace drive 634 } // namespace drive
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/drive/resource_metadata_storage.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698