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 |