OLD | NEW |
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_cache_metadata.h" | 5 #include "chrome/browser/chromeos/gdata/gdata_cache_metadata.h" |
6 | 6 |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/scoped_temp_dir.h" | 8 #include "base/scoped_temp_dir.h" |
9 #include "chrome/browser/chromeos/gdata/gdata_util.h" | 9 #include "chrome/browser/chromeos/gdata/gdata_util.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 } | 104 } |
105 | 105 |
106 // Create an symlink to |target| at |symlink|. | 106 // Create an symlink to |target| at |symlink|. |
107 void CreateSymbolicLink(const FilePath& target, const FilePath& symlink) { | 107 void CreateSymbolicLink(const FilePath& target, const FilePath& symlink) { |
108 ASSERT_TRUE(file_util::CreateSymbolicLink(target, symlink)) | 108 ASSERT_TRUE(file_util::CreateSymbolicLink(target, symlink)) |
109 << ": " << target.value() << ": " << symlink.value(); | 109 << ": " << target.value() << ": " << symlink.value(); |
110 } | 110 } |
111 | 111 |
112 protected: | 112 protected: |
113 // Helper function to insert an item with key |resource_id| into |cache_map|. | 113 // Helper function to insert an item with key |resource_id| into |cache_map|. |
114 // |md5|, |sub_dir_type|, |cache_state| are used to create the value | 114 // |md5| and |cache_state| are used to create the value CacheEntry. |
115 // CacheEntry. | |
116 void InsertIntoMap(GDataCacheMetadataMap::CacheMap* cache_map, | 115 void InsertIntoMap(GDataCacheMetadataMap::CacheMap* cache_map, |
117 const std::string& resource_id, | 116 const std::string& resource_id, |
118 const std::string& md5, | 117 const std::string& md5, |
119 int cache_state) { | 118 int cache_state) { |
120 cache_map->insert(std::make_pair( | 119 cache_map->insert(std::make_pair( |
121 resource_id, GDataCache::CacheEntry(md5, cache_state))); | 120 resource_id, GDataCache::CacheEntry(md5, cache_state))); |
122 } | 121 } |
123 | 122 |
124 ScopedTempDir temp_dir_; | 123 ScopedTempDir temp_dir_; |
125 scoped_ptr<GDataCacheMetadataMap> metadata_; | 124 scoped_ptr<GDataCacheMetadataMap> metadata_; |
(...skipping 12 matching lines...) Expand all Loading... |
138 // Save an initial entry. | 137 // Save an initial entry. |
139 std::string test_resource_id("test_resource_id"); | 138 std::string test_resource_id("test_resource_id"); |
140 std::string test_file_md5("test_file_md5"); | 139 std::string test_file_md5("test_file_md5"); |
141 GDataCache::CacheSubDirectoryType test_sub_dir_type = | 140 GDataCache::CacheSubDirectoryType test_sub_dir_type = |
142 GDataCache::CACHE_TYPE_PERSISTENT; | 141 GDataCache::CACHE_TYPE_PERSISTENT; |
143 int test_cache_state = (GDataCache::CACHE_STATE_PRESENT | | 142 int test_cache_state = (GDataCache::CACHE_STATE_PRESENT | |
144 GDataCache::CACHE_STATE_PERSISTENT); | 143 GDataCache::CACHE_STATE_PERSISTENT); |
145 metadata_->UpdateCache(test_resource_id, test_file_md5, test_cache_state); | 144 metadata_->UpdateCache(test_resource_id, test_file_md5, test_cache_state); |
146 | 145 |
147 // Test that the entry can be retrieved. | 146 // Test that the entry can be retrieved. |
148 scoped_ptr<GDataCache::CacheEntry> cache_entry = | 147 GDataCache::CacheEntry cache_entry; |
149 metadata_->GetCacheEntry(test_resource_id, test_file_md5); | 148 ASSERT_TRUE(metadata_->GetCacheEntry( |
150 ASSERT_TRUE(cache_entry.get()); | 149 test_resource_id, test_file_md5, &cache_entry)); |
151 EXPECT_EQ(test_file_md5, cache_entry->md5); | 150 EXPECT_EQ(test_file_md5, cache_entry.md5); |
152 EXPECT_EQ(test_sub_dir_type, cache_entry->GetSubDirectoryType()); | 151 EXPECT_EQ(test_sub_dir_type, cache_entry.GetSubDirectoryType()); |
153 EXPECT_EQ(test_cache_state, cache_entry->cache_state); | 152 EXPECT_EQ(test_cache_state, cache_entry.cache_state); |
154 | 153 |
155 // Empty md5 should also work. | 154 // Empty md5 should also work. |
156 cache_entry = | 155 ASSERT_TRUE(metadata_->GetCacheEntry( |
157 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); | 156 test_resource_id, std::string(), &cache_entry)); |
158 ASSERT_TRUE(cache_entry.get()); | 157 EXPECT_EQ(test_file_md5, cache_entry.md5); |
159 EXPECT_EQ(test_file_md5, cache_entry->md5); | |
160 | 158 |
161 // resource_id doesn't exist. | 159 // resource_id doesn't exist. |
162 cache_entry = metadata_->GetCacheEntry("not_found_resource_id", | 160 EXPECT_FALSE(metadata_->GetCacheEntry( |
163 std::string()).Pass(); | 161 "not_found_resource_id", std::string(), &cache_entry)); |
164 EXPECT_FALSE(cache_entry.get()); | |
165 | 162 |
166 // md5 doesn't match. | 163 // md5 doesn't match. |
167 cache_entry = | 164 EXPECT_FALSE(metadata_->GetCacheEntry( |
168 metadata_->GetCacheEntry(test_resource_id, "mismatch_md5").Pass(); | 165 test_resource_id, "mismatch_md5", &cache_entry)); |
169 EXPECT_FALSE(cache_entry.get()); | |
170 | 166 |
171 // Update all attributes. | 167 // Update all attributes. |
172 test_file_md5 = "test_file_md5_2"; | 168 test_file_md5 = "test_file_md5_2"; |
173 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; | 169 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; |
174 test_cache_state = GDataCache::CACHE_STATE_PINNED; | 170 test_cache_state = GDataCache::CACHE_STATE_PINNED; |
175 metadata_->UpdateCache(test_resource_id, test_file_md5, test_cache_state); | 171 metadata_->UpdateCache(test_resource_id, test_file_md5, test_cache_state); |
176 | 172 |
177 // Make sure the values took. | 173 // Make sure the values took. |
178 cache_entry = | 174 ASSERT_TRUE(metadata_->GetCacheEntry( |
179 metadata_->GetCacheEntry(test_resource_id, test_file_md5).Pass(); | 175 test_resource_id, test_file_md5, &cache_entry)); |
180 ASSERT_TRUE(cache_entry.get()); | 176 EXPECT_EQ(test_file_md5, cache_entry.md5); |
181 EXPECT_EQ(test_file_md5, cache_entry->md5); | 177 EXPECT_EQ(test_sub_dir_type, cache_entry.GetSubDirectoryType()); |
182 EXPECT_EQ(test_sub_dir_type, cache_entry->GetSubDirectoryType()); | 178 EXPECT_EQ(test_cache_state, cache_entry.cache_state); |
183 EXPECT_EQ(test_cache_state, cache_entry->cache_state); | |
184 | 179 |
185 // Empty m5 should work. | 180 // Empty m5 should work. |
186 cache_entry = | 181 ASSERT_TRUE(metadata_->GetCacheEntry( |
187 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); | 182 test_resource_id, std::string(), &cache_entry)); |
188 ASSERT_TRUE(cache_entry.get()); | 183 EXPECT_EQ(test_file_md5, cache_entry.md5); |
189 EXPECT_EQ(test_file_md5, cache_entry->md5); | |
190 | 184 |
191 // Test dirty cache. | 185 // Test dirty cache. |
192 test_file_md5 = "test_file_md5_3"; | 186 test_file_md5 = "test_file_md5_3"; |
193 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; | 187 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; |
194 test_cache_state = GDataCache::CACHE_STATE_DIRTY; | 188 test_cache_state = GDataCache::CACHE_STATE_DIRTY; |
195 metadata_->UpdateCache(test_resource_id, test_file_md5, test_cache_state); | 189 metadata_->UpdateCache(test_resource_id, test_file_md5, test_cache_state); |
196 | 190 |
197 // Make sure the values took. | 191 // Make sure the values took. |
198 cache_entry = | 192 ASSERT_TRUE(metadata_->GetCacheEntry( |
199 metadata_->GetCacheEntry(test_resource_id, test_file_md5).Pass(); | 193 test_resource_id, test_file_md5, &cache_entry)); |
200 ASSERT_TRUE(cache_entry.get()); | 194 EXPECT_EQ(test_file_md5, cache_entry.md5); |
201 EXPECT_EQ(test_file_md5, cache_entry->md5); | 195 EXPECT_EQ(test_sub_dir_type, cache_entry.GetSubDirectoryType()); |
202 EXPECT_EQ(test_sub_dir_type, cache_entry->GetSubDirectoryType()); | 196 EXPECT_EQ(test_cache_state, cache_entry.cache_state); |
203 EXPECT_EQ(test_cache_state, cache_entry->cache_state); | |
204 | 197 |
205 // Empty md5 should work. | 198 // Empty md5 should work. |
206 cache_entry = | 199 ASSERT_TRUE(metadata_->GetCacheEntry( |
207 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); | 200 test_resource_id, std::string(), &cache_entry)); |
208 ASSERT_TRUE(cache_entry.get()); | 201 EXPECT_EQ(test_file_md5, cache_entry.md5); |
209 EXPECT_EQ(test_file_md5, cache_entry->md5); | |
210 | 202 |
211 // Mismatched md5 should also work for dirty entries. | 203 // Mismatched md5 should also work for dirty entries. |
212 cache_entry = | 204 ASSERT_TRUE(metadata_->GetCacheEntry( |
213 metadata_->GetCacheEntry(test_resource_id, "mismatch_md5").Pass(); | 205 test_resource_id, "mismatch_md5", &cache_entry)); |
214 ASSERT_TRUE(cache_entry.get()); | 206 EXPECT_EQ(test_file_md5, cache_entry.md5); |
215 EXPECT_EQ(test_file_md5, cache_entry->md5); | |
216 | 207 |
217 // Remove the entry. | 208 // Remove the entry. |
218 metadata_->RemoveFromCache(test_resource_id); | 209 metadata_->RemoveFromCache(test_resource_id); |
219 cache_entry = | 210 EXPECT_FALSE(metadata_->GetCacheEntry( |
220 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); | 211 test_resource_id, std::string(), &cache_entry)); |
221 EXPECT_FALSE(cache_entry.get()); | |
222 | 212 |
223 // Add another one. | 213 // Add another one. |
224 test_resource_id = "test_resource_id_2"; | 214 test_resource_id = "test_resource_id_2"; |
225 test_file_md5 = "test_file_md5_4"; | 215 test_file_md5 = "test_file_md5_4"; |
226 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; | 216 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; |
227 test_cache_state = GDataCache::CACHE_STATE_PRESENT; | 217 test_cache_state = GDataCache::CACHE_STATE_PRESENT; |
228 metadata_->UpdateCache(test_resource_id, test_file_md5, test_cache_state); | 218 metadata_->UpdateCache(test_resource_id, test_file_md5, test_cache_state); |
229 | 219 |
230 // Make sure the values took. | 220 // Make sure the values took. |
231 cache_entry = | 221 ASSERT_TRUE(metadata_->GetCacheEntry( |
232 metadata_->GetCacheEntry(test_resource_id, test_file_md5).Pass(); | 222 test_resource_id, test_file_md5, &cache_entry)); |
233 ASSERT_TRUE(cache_entry.get()); | 223 EXPECT_EQ(test_file_md5, cache_entry.md5); |
234 EXPECT_EQ(test_file_md5, cache_entry->md5); | 224 EXPECT_EQ(test_sub_dir_type, cache_entry.GetSubDirectoryType()); |
235 EXPECT_EQ(test_sub_dir_type, cache_entry->GetSubDirectoryType()); | 225 EXPECT_EQ(test_cache_state, cache_entry.cache_state); |
236 EXPECT_EQ(test_cache_state, cache_entry->cache_state); | |
237 | 226 |
238 // Update with CACHE_STATE_NONE should evict the entry. | 227 // Update with CACHE_STATE_NONE should evict the entry. |
239 test_file_md5 = "test_file_md5_5"; | 228 test_file_md5 = "test_file_md5_5"; |
240 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; | 229 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; |
241 test_cache_state = GDataCache::CACHE_STATE_NONE; | 230 test_cache_state = GDataCache::CACHE_STATE_NONE; |
242 metadata_->UpdateCache(test_resource_id, test_file_md5, test_cache_state); | 231 metadata_->UpdateCache(test_resource_id, test_file_md5, test_cache_state); |
243 | 232 |
244 cache_entry = | 233 EXPECT_FALSE(metadata_->GetCacheEntry( |
245 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); | 234 test_resource_id, std::string(), &cache_entry)); |
246 EXPECT_FALSE(cache_entry.get()); | |
247 } | 235 } |
248 | 236 |
249 TEST_F(GDataCacheMetadataMapTest, Initialization) { | 237 TEST_F(GDataCacheMetadataMapTest, Initialization) { |
250 using file_util::PathExists; | 238 using file_util::PathExists; |
251 using file_util::IsLink; | 239 using file_util::IsLink; |
252 SetUpCacheWithVariousFiles(); | 240 SetUpCacheWithVariousFiles(); |
253 | 241 |
254 // Some files are removed during cache initialization. Make sure these | 242 // Some files are removed during cache initialization. Make sure these |
255 // exist beforehand. | 243 // exist beforehand. |
256 EXPECT_TRUE(PathExists(persistent_directory_.AppendASCII("id_baz.local"))); | 244 EXPECT_TRUE(PathExists(persistent_directory_.AppendASCII("id_baz.local"))); |
257 EXPECT_TRUE(PathExists(persistent_directory_.AppendASCII("id_bad.md5bad"))); | 245 EXPECT_TRUE(PathExists(persistent_directory_.AppendASCII("id_bad.md5bad"))); |
258 EXPECT_TRUE(PathExists(tmp_directory_.AppendASCII("id_quux.local"))); | 246 EXPECT_TRUE(PathExists(tmp_directory_.AppendASCII("id_quux.local"))); |
259 EXPECT_TRUE(PathExists(pinned_directory_.AppendASCII("id_not_symlink"))); | 247 EXPECT_TRUE(PathExists(pinned_directory_.AppendASCII("id_not_symlink"))); |
260 EXPECT_TRUE(IsLink(pinned_directory_.AppendASCII("id_dangling"))); | 248 EXPECT_TRUE(IsLink(pinned_directory_.AppendASCII("id_dangling"))); |
261 EXPECT_TRUE(IsLink(pinned_directory_.AppendASCII("id_outside"))); | 249 EXPECT_TRUE(IsLink(pinned_directory_.AppendASCII("id_outside"))); |
262 EXPECT_TRUE(IsLink(outgoing_directory_.AppendASCII("id_foo"))); | 250 EXPECT_TRUE(IsLink(outgoing_directory_.AppendASCII("id_foo"))); |
263 EXPECT_TRUE(IsLink(persistent_directory_.AppendASCII("id_symlink"))); | 251 EXPECT_TRUE(IsLink(persistent_directory_.AppendASCII("id_symlink"))); |
264 EXPECT_TRUE(IsLink(tmp_directory_.AppendASCII("id_symlink_tmp"))); | 252 EXPECT_TRUE(IsLink(tmp_directory_.AppendASCII("id_symlink_tmp"))); |
265 | 253 |
266 SetUpCacheMetadata(); | 254 SetUpCacheMetadata(); |
267 | 255 |
268 // Check contents in "persistent" directory. | 256 // Check contents in "persistent" directory. |
269 // | 257 // |
270 // "id_foo" is present and pinned. | 258 // "id_foo" is present and pinned. |
271 scoped_ptr<GDataCache::CacheEntry> cache_entry; | 259 GDataCache::CacheEntry cache_entry; |
272 cache_entry = metadata_->GetCacheEntry("id_foo", "md5foo"); | 260 ASSERT_TRUE(metadata_->GetCacheEntry("id_foo", "md5foo", &cache_entry)); |
273 ASSERT_TRUE(cache_entry.get()); | 261 EXPECT_EQ("md5foo", cache_entry.md5); |
274 EXPECT_EQ("md5foo", cache_entry->md5); | |
275 EXPECT_EQ(GDataCache::CACHE_TYPE_PERSISTENT, | 262 EXPECT_EQ(GDataCache::CACHE_TYPE_PERSISTENT, |
276 cache_entry->GetSubDirectoryType()); | 263 cache_entry.GetSubDirectoryType()); |
277 EXPECT_EQ(GDataCache::CACHE_STATE_PRESENT | GDataCache::CACHE_STATE_PINNED | | 264 EXPECT_EQ(GDataCache::CACHE_STATE_PRESENT | GDataCache::CACHE_STATE_PINNED | |
278 GDataCache::CACHE_STATE_PERSISTENT, | 265 GDataCache::CACHE_STATE_PERSISTENT, |
279 cache_entry->cache_state); | 266 cache_entry.cache_state); |
280 EXPECT_TRUE(PathExists(persistent_directory_.AppendASCII("id_foo.md5foo"))); | 267 EXPECT_TRUE(PathExists(persistent_directory_.AppendASCII("id_foo.md5foo"))); |
281 EXPECT_TRUE(PathExists(pinned_directory_.AppendASCII("id_foo"))); | 268 EXPECT_TRUE(PathExists(pinned_directory_.AppendASCII("id_foo"))); |
282 // The invalid symlink in "outgoing" should be removed. | 269 // The invalid symlink in "outgoing" should be removed. |
283 EXPECT_FALSE(PathExists(outgoing_directory_.AppendASCII("id_foo"))); | 270 EXPECT_FALSE(PathExists(outgoing_directory_.AppendASCII("id_foo"))); |
284 | 271 |
285 // "id_bar" is present and dirty. | 272 // "id_bar" is present and dirty. |
286 cache_entry = metadata_->GetCacheEntry("id_bar", ""); | 273 ASSERT_TRUE(metadata_->GetCacheEntry("id_bar", "", &cache_entry)); |
287 ASSERT_TRUE(cache_entry.get()); | 274 EXPECT_EQ("local", cache_entry.md5); |
288 EXPECT_EQ("local", cache_entry->md5); | |
289 EXPECT_EQ(GDataCache::CACHE_TYPE_PERSISTENT, | 275 EXPECT_EQ(GDataCache::CACHE_TYPE_PERSISTENT, |
290 cache_entry->GetSubDirectoryType()); | 276 cache_entry.GetSubDirectoryType()); |
291 EXPECT_EQ(GDataCache::CACHE_STATE_PRESENT | GDataCache::CACHE_STATE_DIRTY | | 277 EXPECT_EQ(GDataCache::CACHE_STATE_PRESENT | GDataCache::CACHE_STATE_DIRTY | |
292 GDataCache::CACHE_STATE_PERSISTENT, | 278 GDataCache::CACHE_STATE_PERSISTENT, |
293 cache_entry->cache_state); | 279 cache_entry.cache_state); |
294 EXPECT_TRUE(PathExists(persistent_directory_.AppendASCII("id_bar.local"))); | 280 EXPECT_TRUE(PathExists(persistent_directory_.AppendASCII("id_bar.local"))); |
295 EXPECT_TRUE(PathExists(outgoing_directory_.AppendASCII("id_bar"))); | 281 EXPECT_TRUE(PathExists(outgoing_directory_.AppendASCII("id_bar"))); |
296 | 282 |
297 // "id_baz" should be removed during cache initialization. | 283 // "id_baz" should be removed during cache initialization. |
298 cache_entry = metadata_->GetCacheEntry("id_baz", ""); | 284 EXPECT_FALSE(metadata_->GetCacheEntry("id_baz", "", &cache_entry)); |
299 EXPECT_FALSE(cache_entry.get()); | |
300 EXPECT_FALSE(PathExists(persistent_directory_.AppendASCII("id_baz.local"))); | 285 EXPECT_FALSE(PathExists(persistent_directory_.AppendASCII("id_baz.local"))); |
301 | 286 |
302 // "id_bad" should be removed during cache initialization. | 287 // "id_bad" should be removed during cache initialization. |
303 cache_entry = metadata_->GetCacheEntry("id_bad", "md5bad"); | 288 EXPECT_FALSE(metadata_->GetCacheEntry("id_bad", "md5bad", &cache_entry)); |
304 EXPECT_FALSE(cache_entry.get()); | |
305 EXPECT_FALSE(PathExists(persistent_directory_.AppendASCII("id_bad.md5bad"))); | 289 EXPECT_FALSE(PathExists(persistent_directory_.AppendASCII("id_bad.md5bad"))); |
306 | 290 |
307 // "id_symlink" should be removed during cache initialization. | 291 // "id_symlink" should be removed during cache initialization. |
308 cache_entry = metadata_->GetCacheEntry("id_symlink", ""); | 292 EXPECT_FALSE(metadata_->GetCacheEntry("id_symlink", "", &cache_entry)); |
309 EXPECT_FALSE(cache_entry.get()); | |
310 EXPECT_FALSE(PathExists(persistent_directory_.AppendASCII("id_symlink"))); | 293 EXPECT_FALSE(PathExists(persistent_directory_.AppendASCII("id_symlink"))); |
311 | 294 |
312 // Check contents in "tmp" directory. | 295 // Check contents in "tmp" directory. |
313 // | 296 // |
314 // "id_qux" is just present in tmp directory. | 297 // "id_qux" is just present in tmp directory. |
315 cache_entry = metadata_->GetCacheEntry("id_qux", "md5qux"); | 298 ASSERT_TRUE(metadata_->GetCacheEntry("id_qux", "md5qux", &cache_entry)); |
316 ASSERT_TRUE(cache_entry.get()); | 299 EXPECT_EQ("md5qux", cache_entry.md5); |
317 EXPECT_EQ("md5qux", cache_entry->md5); | 300 EXPECT_EQ(GDataCache::CACHE_TYPE_TMP, cache_entry.GetSubDirectoryType()); |
318 EXPECT_EQ(GDataCache::CACHE_TYPE_TMP, cache_entry->GetSubDirectoryType()); | 301 EXPECT_EQ(GDataCache::CACHE_STATE_PRESENT, cache_entry.cache_state); |
319 EXPECT_EQ(GDataCache::CACHE_STATE_PRESENT, cache_entry->cache_state); | |
320 EXPECT_TRUE(PathExists(tmp_directory_.AppendASCII("id_qux.md5qux"))); | 302 EXPECT_TRUE(PathExists(tmp_directory_.AppendASCII("id_qux.md5qux"))); |
321 | 303 |
322 // "id_quux" should be removed during cache initialization. | 304 // "id_quux" should be removed during cache initialization. |
323 cache_entry = metadata_->GetCacheEntry("id_quux", "md5qux"); | 305 EXPECT_FALSE(metadata_->GetCacheEntry("id_quux", "md5qux", &cache_entry)); |
324 EXPECT_FALSE(cache_entry.get()); | |
325 EXPECT_FALSE(PathExists(pinned_directory_.AppendASCII("id_quux.local"))); | 306 EXPECT_FALSE(PathExists(pinned_directory_.AppendASCII("id_quux.local"))); |
326 | 307 |
327 // "id_symlink_tmp" should be removed during cache initialization. | 308 // "id_symlink_tmp" should be removed during cache initialization. |
328 cache_entry = metadata_->GetCacheEntry("id_symlink_tmp", ""); | 309 EXPECT_FALSE(metadata_->GetCacheEntry("id_symlink_tmp", "", &cache_entry)); |
329 EXPECT_FALSE(cache_entry.get()); | |
330 EXPECT_FALSE(PathExists(pinned_directory_.AppendASCII("id_symlink_tmp"))); | 310 EXPECT_FALSE(PathExists(pinned_directory_.AppendASCII("id_symlink_tmp"))); |
331 | 311 |
332 // Check contents in "pinned" directory. | 312 // Check contents in "pinned" directory. |
333 // | 313 // |
334 // "id_corge" is pinned but not present. | 314 // "id_corge" is pinned but not present. |
335 cache_entry = metadata_->GetCacheEntry("id_corge", ""); | 315 ASSERT_TRUE(metadata_->GetCacheEntry("id_corge", "", &cache_entry)); |
336 ASSERT_TRUE(cache_entry.get()); | 316 EXPECT_EQ("", cache_entry.md5); |
337 EXPECT_EQ("", cache_entry->md5); | 317 EXPECT_EQ(GDataCache::CACHE_STATE_PINNED, cache_entry.cache_state); |
338 EXPECT_EQ(GDataCache::CACHE_STATE_PINNED, cache_entry->cache_state); | |
339 EXPECT_TRUE(IsLink(pinned_directory_.AppendASCII("id_corge"))); | 318 EXPECT_TRUE(IsLink(pinned_directory_.AppendASCII("id_corge"))); |
340 | 319 |
341 // "id_dangling" should be removed during cache initialization. | 320 // "id_dangling" should be removed during cache initialization. |
342 cache_entry = metadata_->GetCacheEntry("id_dangling", ""); | 321 EXPECT_FALSE(metadata_->GetCacheEntry("id_dangling", "", &cache_entry)); |
343 EXPECT_FALSE(cache_entry.get()); | |
344 EXPECT_FALSE(IsLink(pinned_directory_.AppendASCII("id_dangling"))); | 322 EXPECT_FALSE(IsLink(pinned_directory_.AppendASCII("id_dangling"))); |
345 | 323 |
346 // "id_outside" should be removed during cache initialization. | 324 // "id_outside" should be removed during cache initialization. |
347 cache_entry = metadata_->GetCacheEntry("id_outside", ""); | 325 EXPECT_FALSE(metadata_->GetCacheEntry("id_outside", "", &cache_entry)); |
348 EXPECT_FALSE(cache_entry.get()); | |
349 EXPECT_FALSE(IsLink(pinned_directory_.AppendASCII("id_outside"))); | 326 EXPECT_FALSE(IsLink(pinned_directory_.AppendASCII("id_outside"))); |
350 | 327 |
351 // "id_not_symlink" should be removed during cache initialization. | 328 // "id_not_symlink" should be removed during cache initialization. |
352 cache_entry = metadata_->GetCacheEntry("id_not_symlink", ""); | 329 EXPECT_FALSE(metadata_->GetCacheEntry("id_not_symlink", "", &cache_entry)); |
353 EXPECT_FALSE(cache_entry.get()); | |
354 EXPECT_FALSE(IsLink(pinned_directory_.AppendASCII("id_not_symlink"))); | 330 EXPECT_FALSE(IsLink(pinned_directory_.AppendASCII("id_not_symlink"))); |
355 } | 331 } |
356 | 332 |
357 // Test GDataCacheMetadataMap::RemoveTemporaryFiles. | 333 // Test GDataCacheMetadataMap::RemoveTemporaryFiles. |
358 TEST_F(GDataCacheMetadataMapTest, RemoveTemporaryFilesTest) { | 334 TEST_F(GDataCacheMetadataMapTest, RemoveTemporaryFilesTest) { |
359 SetUpCacheMetadata(); | 335 SetUpCacheMetadata(); |
360 | 336 |
361 GDataCacheMetadataMap::CacheMap cache_map; | 337 GDataCacheMetadataMap::CacheMap cache_map; |
362 InsertIntoMap(&cache_map, | 338 InsertIntoMap(&cache_map, |
363 "<resource_id_1>", | 339 "<resource_id_1>", |
(...skipping 10 matching lines...) Expand all Loading... |
374 GDataCache::CACHE_STATE_PRESENT | | 350 GDataCache::CACHE_STATE_PRESENT | |
375 GDataCache::CACHE_STATE_PERSISTENT); | 351 GDataCache::CACHE_STATE_PERSISTENT); |
376 InsertIntoMap(&cache_map, | 352 InsertIntoMap(&cache_map, |
377 "<resource_id_4>", | 353 "<resource_id_4>", |
378 "<md5>", | 354 "<md5>", |
379 GDataCache::CACHE_STATE_PRESENT); | 355 GDataCache::CACHE_STATE_PRESENT); |
380 | 356 |
381 metadata_->cache_map_ = cache_map; | 357 metadata_->cache_map_ = cache_map; |
382 metadata_->RemoveTemporaryFiles(); | 358 metadata_->RemoveTemporaryFiles(); |
383 // resource 1 and 4 should be gone, as these are temporary. | 359 // resource 1 and 4 should be gone, as these are temporary. |
384 EXPECT_FALSE(metadata_->GetCacheEntry("<resource_id_1>", "").get()); | 360 GDataCache::CacheEntry cache_entry; |
385 EXPECT_TRUE(metadata_->GetCacheEntry("<resource_id_2>", "").get()); | 361 EXPECT_FALSE(metadata_->GetCacheEntry("<resource_id_1>", "", &cache_entry)); |
386 EXPECT_TRUE(metadata_->GetCacheEntry("<resource_id_3>", "").get()); | 362 EXPECT_TRUE(metadata_->GetCacheEntry("<resource_id_2>", "", &cache_entry)); |
387 EXPECT_FALSE(metadata_->GetCacheEntry("<resource_id_4>", "").get()); | 363 EXPECT_TRUE(metadata_->GetCacheEntry("<resource_id_3>", "", &cache_entry)); |
| 364 EXPECT_FALSE(metadata_->GetCacheEntry("<resource_id_4>", "", &cache_entry)); |
388 } | 365 } |
389 | 366 |
390 } // namespace gdata | 367 } // namespace gdata |
OLD | NEW |