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