| 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 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 TEST_F(GDataCacheMetadataMapTest, CacheTest) { | 135 TEST_F(GDataCacheMetadataMapTest, CacheTest) { |
| 136 SetUpCacheMetadata(); | 136 SetUpCacheMetadata(); |
| 137 | 137 |
| 138 // Save an initial entry. | 138 // Save an initial entry. |
| 139 std::string test_resource_id("test_resource_id"); | 139 std::string test_resource_id("test_resource_id"); |
| 140 std::string test_file_md5("test_file_md5"); | 140 std::string test_file_md5("test_file_md5"); |
| 141 GDataCache::CacheSubDirectoryType test_sub_dir_type = | 141 GDataCache::CacheSubDirectoryType test_sub_dir_type = |
| 142 GDataCache::CACHE_TYPE_PERSISTENT; | 142 GDataCache::CACHE_TYPE_PERSISTENT; |
| 143 int test_cache_state = (CACHE_STATE_PRESENT | | 143 int test_cache_state = (CACHE_STATE_PRESENT | |
| 144 CACHE_STATE_PERSISTENT); | 144 CACHE_STATE_PERSISTENT); |
| 145 metadata_->UpdateCache( | 145 metadata_->AddOrUpdateCacheEntry( |
| 146 test_resource_id, | 146 test_resource_id, |
| 147 GDataCacheEntry(test_file_md5, test_cache_state)); | 147 GDataCacheEntry(test_file_md5, test_cache_state)); |
| 148 | 148 |
| 149 // Test that the entry can be retrieved. | 149 // Test that the entry can be retrieved. |
| 150 scoped_ptr<GDataCacheEntry> cache_entry = | 150 scoped_ptr<GDataCacheEntry> cache_entry = |
| 151 metadata_->GetCacheEntry(test_resource_id, test_file_md5); | 151 metadata_->GetCacheEntry(test_resource_id, test_file_md5); |
| 152 ASSERT_TRUE(cache_entry.get()); | 152 ASSERT_TRUE(cache_entry.get()); |
| 153 EXPECT_EQ(test_file_md5, cache_entry->md5()); | 153 EXPECT_EQ(test_file_md5, cache_entry->md5()); |
| 154 EXPECT_EQ(test_sub_dir_type, GDataCache::GetSubDirectoryType(*cache_entry)); | 154 EXPECT_EQ(test_sub_dir_type, GDataCache::GetSubDirectoryType(*cache_entry)); |
| 155 EXPECT_EQ(test_cache_state, cache_entry->cache_state()); | 155 EXPECT_EQ(test_cache_state, cache_entry->cache_state()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 167 | 167 |
| 168 // md5 doesn't match. | 168 // md5 doesn't match. |
| 169 cache_entry = | 169 cache_entry = |
| 170 metadata_->GetCacheEntry(test_resource_id, "mismatch_md5").Pass(); | 170 metadata_->GetCacheEntry(test_resource_id, "mismatch_md5").Pass(); |
| 171 EXPECT_FALSE(cache_entry.get()); | 171 EXPECT_FALSE(cache_entry.get()); |
| 172 | 172 |
| 173 // Update all attributes. | 173 // Update all attributes. |
| 174 test_file_md5 = "test_file_md5_2"; | 174 test_file_md5 = "test_file_md5_2"; |
| 175 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; | 175 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; |
| 176 test_cache_state = CACHE_STATE_PINNED; | 176 test_cache_state = CACHE_STATE_PINNED; |
| 177 metadata_->UpdateCache( | 177 metadata_->AddOrUpdateCacheEntry( |
| 178 test_resource_id, | 178 test_resource_id, |
| 179 GDataCacheEntry(test_file_md5, test_cache_state)); | 179 GDataCacheEntry(test_file_md5, test_cache_state)); |
| 180 | 180 |
| 181 // Make sure the values took. | 181 // Make sure the values took. |
| 182 cache_entry = | 182 cache_entry = |
| 183 metadata_->GetCacheEntry(test_resource_id, test_file_md5).Pass(); | 183 metadata_->GetCacheEntry(test_resource_id, test_file_md5).Pass(); |
| 184 ASSERT_TRUE(cache_entry.get()); | 184 ASSERT_TRUE(cache_entry.get()); |
| 185 EXPECT_EQ(test_file_md5, cache_entry->md5()); | 185 EXPECT_EQ(test_file_md5, cache_entry->md5()); |
| 186 EXPECT_EQ(test_sub_dir_type, GDataCache::GetSubDirectoryType(*cache_entry)); | 186 EXPECT_EQ(test_sub_dir_type, GDataCache::GetSubDirectoryType(*cache_entry)); |
| 187 EXPECT_EQ(test_cache_state, cache_entry->cache_state()); | 187 EXPECT_EQ(test_cache_state, cache_entry->cache_state()); |
| 188 | 188 |
| 189 // Empty m5 should work. | 189 // Empty m5 should work. |
| 190 cache_entry = | 190 cache_entry = |
| 191 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); | 191 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); |
| 192 ASSERT_TRUE(cache_entry.get()); | 192 ASSERT_TRUE(cache_entry.get()); |
| 193 EXPECT_EQ(test_file_md5, cache_entry->md5()); | 193 EXPECT_EQ(test_file_md5, cache_entry->md5()); |
| 194 | 194 |
| 195 // Test dirty cache. | 195 // Test dirty cache. |
| 196 test_file_md5 = "test_file_md5_3"; | 196 test_file_md5 = "test_file_md5_3"; |
| 197 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; | 197 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; |
| 198 test_cache_state = CACHE_STATE_DIRTY; | 198 test_cache_state = CACHE_STATE_DIRTY; |
| 199 metadata_->UpdateCache( | 199 metadata_->AddOrUpdateCacheEntry( |
| 200 test_resource_id, | 200 test_resource_id, |
| 201 GDataCacheEntry(test_file_md5, test_cache_state)); | 201 GDataCacheEntry(test_file_md5, test_cache_state)); |
| 202 | 202 |
| 203 // Make sure the values took. | 203 // Make sure the values took. |
| 204 cache_entry = | 204 cache_entry = |
| 205 metadata_->GetCacheEntry(test_resource_id, test_file_md5).Pass(); | 205 metadata_->GetCacheEntry(test_resource_id, test_file_md5).Pass(); |
| 206 ASSERT_TRUE(cache_entry.get()); | 206 ASSERT_TRUE(cache_entry.get()); |
| 207 EXPECT_EQ(test_file_md5, cache_entry->md5()); | 207 EXPECT_EQ(test_file_md5, cache_entry->md5()); |
| 208 EXPECT_EQ(test_sub_dir_type, GDataCache::GetSubDirectoryType(*cache_entry)); | 208 EXPECT_EQ(test_sub_dir_type, GDataCache::GetSubDirectoryType(*cache_entry)); |
| 209 EXPECT_EQ(test_cache_state, cache_entry->cache_state()); | 209 EXPECT_EQ(test_cache_state, cache_entry->cache_state()); |
| 210 | 210 |
| 211 // Empty md5 should work. | 211 // Empty md5 should work. |
| 212 cache_entry = | 212 cache_entry = |
| 213 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); | 213 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); |
| 214 ASSERT_TRUE(cache_entry.get()); | 214 ASSERT_TRUE(cache_entry.get()); |
| 215 EXPECT_EQ(test_file_md5, cache_entry->md5()); | 215 EXPECT_EQ(test_file_md5, cache_entry->md5()); |
| 216 | 216 |
| 217 // Mismatched md5 should also work for dirty entries. | 217 // Mismatched md5 should also work for dirty entries. |
| 218 cache_entry = | 218 cache_entry = |
| 219 metadata_->GetCacheEntry(test_resource_id, "mismatch_md5").Pass(); | 219 metadata_->GetCacheEntry(test_resource_id, "mismatch_md5").Pass(); |
| 220 ASSERT_TRUE(cache_entry.get()); | 220 ASSERT_TRUE(cache_entry.get()); |
| 221 EXPECT_EQ(test_file_md5, cache_entry->md5()); | 221 EXPECT_EQ(test_file_md5, cache_entry->md5()); |
| 222 | 222 |
| 223 // Remove the entry. | 223 // Remove the entry. |
| 224 metadata_->RemoveFromCache(test_resource_id); | 224 metadata_->RemoveCacheEntry(test_resource_id); |
| 225 cache_entry = | 225 cache_entry = |
| 226 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); | 226 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); |
| 227 EXPECT_FALSE(cache_entry.get()); | 227 EXPECT_FALSE(cache_entry.get()); |
| 228 | 228 |
| 229 // Add another one. | 229 // Add another one. |
| 230 test_resource_id = "test_resource_id_2"; | 230 test_resource_id = "test_resource_id_2"; |
| 231 test_file_md5 = "test_file_md5_4"; | 231 test_file_md5 = "test_file_md5_4"; |
| 232 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; | 232 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; |
| 233 test_cache_state = CACHE_STATE_PRESENT; | 233 test_cache_state = CACHE_STATE_PRESENT; |
| 234 metadata_->UpdateCache( | 234 metadata_->AddOrUpdateCacheEntry( |
| 235 test_resource_id, | 235 test_resource_id, |
| 236 GDataCacheEntry(test_file_md5, test_cache_state)); | 236 GDataCacheEntry(test_file_md5, test_cache_state)); |
| 237 | 237 |
| 238 // Make sure the values took. | 238 // Make sure the values took. |
| 239 cache_entry = | 239 cache_entry = |
| 240 metadata_->GetCacheEntry(test_resource_id, test_file_md5).Pass(); | 240 metadata_->GetCacheEntry(test_resource_id, test_file_md5).Pass(); |
| 241 ASSERT_TRUE(cache_entry.get()); | 241 ASSERT_TRUE(cache_entry.get()); |
| 242 EXPECT_EQ(test_file_md5, cache_entry->md5()); | 242 EXPECT_EQ(test_file_md5, cache_entry->md5()); |
| 243 EXPECT_EQ(test_sub_dir_type, GDataCache::GetSubDirectoryType(*cache_entry)); | 243 EXPECT_EQ(test_sub_dir_type, GDataCache::GetSubDirectoryType(*cache_entry)); |
| 244 EXPECT_EQ(test_cache_state, cache_entry->cache_state()); | 244 EXPECT_EQ(test_cache_state, cache_entry->cache_state()); |
| 245 | |
| 246 // Update with CACHE_STATE_NONE should evict the entry. | |
| 247 test_file_md5 = "test_file_md5_5"; | |
| 248 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; | |
| 249 test_cache_state = CACHE_STATE_NONE; | |
| 250 metadata_->UpdateCache( | |
| 251 test_resource_id, | |
| 252 GDataCacheEntry(test_file_md5, test_cache_state)); | |
| 253 | |
| 254 cache_entry = | |
| 255 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); | |
| 256 EXPECT_FALSE(cache_entry.get()); | |
| 257 } | 245 } |
| 258 | 246 |
| 259 TEST_F(GDataCacheMetadataMapTest, Initialization) { | 247 TEST_F(GDataCacheMetadataMapTest, Initialization) { |
| 260 using file_util::PathExists; | 248 using file_util::PathExists; |
| 261 using file_util::IsLink; | 249 using file_util::IsLink; |
| 262 SetUpCacheWithVariousFiles(); | 250 SetUpCacheWithVariousFiles(); |
| 263 | 251 |
| 264 // Some files are removed during cache initialization. Make sure these | 252 // Some files are removed during cache initialization. Make sure these |
| 265 // exist beforehand. | 253 // exist beforehand. |
| 266 EXPECT_TRUE(PathExists(persistent_directory_.AppendASCII("id_baz.local"))); | 254 EXPECT_TRUE(PathExists(persistent_directory_.AppendASCII("id_baz.local"))); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 392 metadata_->cache_map_ = cache_map; | 380 metadata_->cache_map_ = cache_map; |
| 393 metadata_->RemoveTemporaryFiles(); | 381 metadata_->RemoveTemporaryFiles(); |
| 394 // resource 1 and 4 should be gone, as these are temporary. | 382 // resource 1 and 4 should be gone, as these are temporary. |
| 395 EXPECT_FALSE(metadata_->GetCacheEntry("<resource_id_1>", "").get()); | 383 EXPECT_FALSE(metadata_->GetCacheEntry("<resource_id_1>", "").get()); |
| 396 EXPECT_TRUE(metadata_->GetCacheEntry("<resource_id_2>", "").get()); | 384 EXPECT_TRUE(metadata_->GetCacheEntry("<resource_id_2>", "").get()); |
| 397 EXPECT_TRUE(metadata_->GetCacheEntry("<resource_id_3>", "").get()); | 385 EXPECT_TRUE(metadata_->GetCacheEntry("<resource_id_3>", "").get()); |
| 398 EXPECT_FALSE(metadata_->GetCacheEntry("<resource_id_4>", "").get()); | 386 EXPECT_FALSE(metadata_->GetCacheEntry("<resource_id_4>", "").get()); |
| 399 } | 387 } |
| 400 | 388 |
| 401 } // namespace gdata | 389 } // namespace gdata |
| OLD | NEW |