| 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 "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
| 8 | 8 |
| 9 namespace gdata { | 9 namespace gdata { |
| 10 | 10 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 // Save an initial entry. | 45 // Save an initial entry. |
| 46 std::string test_resource_id("test_resource_id"); | 46 std::string test_resource_id("test_resource_id"); |
| 47 std::string test_file_md5("test_file_md5"); | 47 std::string test_file_md5("test_file_md5"); |
| 48 GDataCache::CacheSubDirectoryType test_sub_dir_type( | 48 GDataCache::CacheSubDirectoryType test_sub_dir_type( |
| 49 GDataCache::CACHE_TYPE_PERSISTENT); | 49 GDataCache::CACHE_TYPE_PERSISTENT); |
| 50 int test_cache_state(GDataCache::CACHE_STATE_PRESENT); | 50 int test_cache_state(GDataCache::CACHE_STATE_PRESENT); |
| 51 metadata_->UpdateCache(test_resource_id, test_file_md5, | 51 metadata_->UpdateCache(test_resource_id, test_file_md5, |
| 52 test_sub_dir_type, test_cache_state); | 52 test_sub_dir_type, test_cache_state); |
| 53 | 53 |
| 54 // Test that the entry can be retrieved. | 54 // Test that the entry can be retrieved. |
| 55 scoped_ptr<GDataCache::CacheEntry> cache_entry = | 55 GDataCache::CacheEntry cache_entry; |
| 56 metadata_->GetCacheEntry(test_resource_id, test_file_md5); | 56 ASSERT_TRUE(metadata_->GetCacheEntry( |
| 57 ASSERT_TRUE(cache_entry.get()); | 57 test_resource_id, test_file_md5, &cache_entry)); |
| 58 EXPECT_EQ(test_file_md5, cache_entry->md5); | 58 EXPECT_EQ(test_file_md5, cache_entry.md5); |
| 59 EXPECT_EQ(test_sub_dir_type, cache_entry->sub_dir_type); | 59 EXPECT_EQ(test_sub_dir_type, cache_entry.sub_dir_type); |
| 60 EXPECT_EQ(test_cache_state, cache_entry->cache_state); | 60 EXPECT_EQ(test_cache_state, cache_entry.cache_state); |
| 61 | 61 |
| 62 // Empty md5 should also work. | 62 // Empty md5 should also work. |
| 63 cache_entry = | 63 ASSERT_TRUE(metadata_->GetCacheEntry( |
| 64 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); | 64 test_resource_id, std::string(), &cache_entry)); |
| 65 ASSERT_TRUE(cache_entry.get()); | 65 EXPECT_EQ(test_file_md5, cache_entry.md5); |
| 66 EXPECT_EQ(test_file_md5, cache_entry->md5); | |
| 67 | 66 |
| 68 // resource_id doesn't exist. | 67 // resource_id doesn't exist. |
| 69 cache_entry = metadata_->GetCacheEntry("not_found_resource_id", | 68 EXPECT_FALSE(metadata_->GetCacheEntry( |
| 70 std::string()).Pass(); | 69 "not_found_resource_id", std::string(), &cache_entry)); |
| 71 EXPECT_FALSE(cache_entry.get()); | |
| 72 | 70 |
| 73 // md5 doesn't match. | 71 // md5 doesn't match. |
| 74 cache_entry = | 72 EXPECT_FALSE(metadata_->GetCacheEntry( |
| 75 metadata_->GetCacheEntry(test_resource_id, "mismatch_md5").Pass(); | 73 test_resource_id, "mismatch_md5", &cache_entry)); |
| 76 EXPECT_FALSE(cache_entry.get()); | |
| 77 | 74 |
| 78 // Update all attributes. | 75 // Update all attributes. |
| 79 test_file_md5 = "test_file_md5_2"; | 76 test_file_md5 = "test_file_md5_2"; |
| 80 test_sub_dir_type = GDataCache::CACHE_TYPE_PINNED; | 77 test_sub_dir_type = GDataCache::CACHE_TYPE_PINNED; |
| 81 test_cache_state = GDataCache::CACHE_STATE_PINNED; | 78 test_cache_state = GDataCache::CACHE_STATE_PINNED; |
| 82 metadata_->UpdateCache(test_resource_id, test_file_md5, test_sub_dir_type, | 79 metadata_->UpdateCache(test_resource_id, test_file_md5, test_sub_dir_type, |
| 83 test_cache_state); | 80 test_cache_state); |
| 84 | 81 |
| 85 // Make sure the values took. | 82 // Make sure the values took. |
| 86 cache_entry = | 83 ASSERT_TRUE(metadata_->GetCacheEntry( |
| 87 metadata_->GetCacheEntry(test_resource_id, test_file_md5).Pass(); | 84 test_resource_id, test_file_md5, &cache_entry)); |
| 88 ASSERT_TRUE(cache_entry.get()); | 85 EXPECT_EQ(test_file_md5, cache_entry.md5); |
| 89 EXPECT_EQ(test_file_md5, cache_entry->md5); | 86 EXPECT_EQ(test_sub_dir_type, cache_entry.sub_dir_type); |
| 90 EXPECT_EQ(test_sub_dir_type, cache_entry->sub_dir_type); | 87 EXPECT_EQ(test_cache_state, cache_entry.cache_state); |
| 91 EXPECT_EQ(test_cache_state, cache_entry->cache_state); | |
| 92 | 88 |
| 93 // Empty m5 should work. | 89 // Empty m5 should work. |
| 94 cache_entry = | 90 ASSERT_TRUE(metadata_->GetCacheEntry( |
| 95 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); | 91 test_resource_id, std::string(), &cache_entry)); |
| 96 ASSERT_TRUE(cache_entry.get()); | 92 EXPECT_EQ(test_file_md5, cache_entry.md5); |
| 97 EXPECT_EQ(test_file_md5, cache_entry->md5); | |
| 98 | 93 |
| 99 // Test dirty cache. | 94 // Test dirty cache. |
| 100 test_file_md5 = "test_file_md5_3"; | 95 test_file_md5 = "test_file_md5_3"; |
| 101 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; | 96 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP; |
| 102 test_cache_state = GDataCache::CACHE_STATE_DIRTY; | 97 test_cache_state = GDataCache::CACHE_STATE_DIRTY; |
| 103 metadata_->UpdateCache(test_resource_id, test_file_md5, test_sub_dir_type, | 98 metadata_->UpdateCache(test_resource_id, test_file_md5, test_sub_dir_type, |
| 104 test_cache_state); | 99 test_cache_state); |
| 105 | 100 |
| 106 // Make sure the values took. | 101 // Make sure the values took. |
| 107 cache_entry = | 102 ASSERT_TRUE(metadata_->GetCacheEntry( |
| 108 metadata_->GetCacheEntry(test_resource_id, test_file_md5).Pass(); | 103 test_resource_id, test_file_md5, &cache_entry)); |
| 109 ASSERT_TRUE(cache_entry.get()); | 104 EXPECT_EQ(test_file_md5, cache_entry.md5); |
| 110 EXPECT_EQ(test_file_md5, cache_entry->md5); | 105 EXPECT_EQ(test_sub_dir_type, cache_entry.sub_dir_type); |
| 111 EXPECT_EQ(test_sub_dir_type, cache_entry->sub_dir_type); | 106 EXPECT_EQ(test_cache_state, cache_entry.cache_state); |
| 112 EXPECT_EQ(test_cache_state, cache_entry->cache_state); | |
| 113 | 107 |
| 114 // Empty md5 should work. | 108 // Empty md5 should work. |
| 115 cache_entry = | 109 ASSERT_TRUE(metadata_->GetCacheEntry( |
| 116 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); | 110 test_resource_id, std::string(), &cache_entry)); |
| 117 ASSERT_TRUE(cache_entry.get()); | 111 EXPECT_EQ(test_file_md5, cache_entry.md5); |
| 118 EXPECT_EQ(test_file_md5, cache_entry->md5); | |
| 119 | 112 |
| 120 // Mismatched md5 should also work for dirty entries. | 113 // Mismatched md5 should also work for dirty entries. |
| 121 cache_entry = | 114 ASSERT_TRUE(metadata_->GetCacheEntry( |
| 122 metadata_->GetCacheEntry(test_resource_id, "mismatch_md5").Pass(); | 115 test_resource_id, "mismatch_md5", &cache_entry)); |
| 123 ASSERT_TRUE(cache_entry.get()); | 116 EXPECT_EQ(test_file_md5, cache_entry.md5); |
| 124 EXPECT_EQ(test_file_md5, cache_entry->md5); | |
| 125 | 117 |
| 126 // Remove the entry. | 118 // Remove the entry. |
| 127 metadata_->RemoveFromCache(test_resource_id); | 119 metadata_->RemoveFromCache(test_resource_id); |
| 128 cache_entry = | 120 EXPECT_FALSE(metadata_->GetCacheEntry( |
| 129 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); | 121 test_resource_id, std::string(), &cache_entry)); |
| 130 EXPECT_FALSE(cache_entry.get()); | |
| 131 | 122 |
| 132 // Add another one. | 123 // Add another one. |
| 133 test_resource_id = "test_resource_id_2"; | 124 test_resource_id = "test_resource_id_2"; |
| 134 test_file_md5 = "test_file_md5_4"; | 125 test_file_md5 = "test_file_md5_4"; |
| 135 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP_DOWNLOADS; | 126 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP_DOWNLOADS; |
| 136 test_cache_state = GDataCache::CACHE_STATE_PRESENT; | 127 test_cache_state = GDataCache::CACHE_STATE_PRESENT; |
| 137 metadata_->UpdateCache(test_resource_id, test_file_md5, test_sub_dir_type, | 128 metadata_->UpdateCache(test_resource_id, test_file_md5, test_sub_dir_type, |
| 138 test_cache_state); | 129 test_cache_state); |
| 139 | 130 |
| 140 // Make sure the values took. | 131 // Make sure the values took. |
| 141 cache_entry = | 132 ASSERT_TRUE(metadata_->GetCacheEntry( |
| 142 metadata_->GetCacheEntry(test_resource_id, test_file_md5).Pass(); | 133 test_resource_id, test_file_md5, &cache_entry)); |
| 143 ASSERT_TRUE(cache_entry.get()); | 134 EXPECT_EQ(test_file_md5, cache_entry.md5); |
| 144 EXPECT_EQ(test_file_md5, cache_entry->md5); | 135 EXPECT_EQ(test_sub_dir_type, cache_entry.sub_dir_type); |
| 145 EXPECT_EQ(test_sub_dir_type, cache_entry->sub_dir_type); | 136 EXPECT_EQ(test_cache_state, cache_entry.cache_state); |
| 146 EXPECT_EQ(test_cache_state, cache_entry->cache_state); | |
| 147 | 137 |
| 148 // Update with CACHE_STATE_NONE should evict the entry. | 138 // Update with CACHE_STATE_NONE should evict the entry. |
| 149 test_file_md5 = "test_file_md5_5"; | 139 test_file_md5 = "test_file_md5_5"; |
| 150 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP_DOCUMENTS; | 140 test_sub_dir_type = GDataCache::CACHE_TYPE_TMP_DOCUMENTS; |
| 151 test_cache_state = GDataCache::CACHE_STATE_NONE; | 141 test_cache_state = GDataCache::CACHE_STATE_NONE; |
| 152 metadata_->UpdateCache(test_resource_id, test_file_md5, test_sub_dir_type, | 142 metadata_->UpdateCache(test_resource_id, test_file_md5, test_sub_dir_type, |
| 153 test_cache_state); | 143 test_cache_state); |
| 154 | 144 |
| 155 cache_entry = | 145 EXPECT_FALSE(metadata_->GetCacheEntry( |
| 156 metadata_->GetCacheEntry(test_resource_id, std::string()).Pass(); | 146 test_resource_id, std::string(), &cache_entry)); |
| 157 EXPECT_FALSE(cache_entry.get()); | |
| 158 } | 147 } |
| 159 | 148 |
| 160 // Test GDataCacheMetadataMap::RemoveTemporaryFiles. | 149 // Test GDataCacheMetadataMap::RemoveTemporaryFiles. |
| 161 TEST_F(GDataCacheMetadataMapTest, RemoveTemporaryFilesTest) { | 150 TEST_F(GDataCacheMetadataMapTest, RemoveTemporaryFilesTest) { |
| 162 GDataCacheMetadataMap::CacheMap cache_map; | 151 GDataCacheMetadataMap::CacheMap cache_map; |
| 163 InsertIntoMap(&cache_map, | 152 InsertIntoMap(&cache_map, |
| 164 "<resource_id_1>", | 153 "<resource_id_1>", |
| 165 "<md5>", | 154 "<md5>", |
| 166 GDataCache::CACHE_TYPE_TMP, | 155 GDataCache::CACHE_TYPE_TMP, |
| 167 GDataCache::CACHE_STATE_PRESENT); | 156 GDataCache::CACHE_STATE_PRESENT); |
| 168 InsertIntoMap(&cache_map, | 157 InsertIntoMap(&cache_map, |
| 169 "<resource_id_2>", | 158 "<resource_id_2>", |
| 170 "<md5>", | 159 "<md5>", |
| 171 GDataCache::CACHE_TYPE_PINNED, | 160 GDataCache::CACHE_TYPE_PINNED, |
| 172 GDataCache::CACHE_STATE_PRESENT); | 161 GDataCache::CACHE_STATE_PRESENT); |
| 173 InsertIntoMap(&cache_map, | 162 InsertIntoMap(&cache_map, |
| 174 "<resource_id_3>", | 163 "<resource_id_3>", |
| 175 "<md5>", | 164 "<md5>", |
| 176 GDataCache::CACHE_TYPE_OUTGOING, | 165 GDataCache::CACHE_TYPE_OUTGOING, |
| 177 GDataCache::CACHE_STATE_PRESENT); | 166 GDataCache::CACHE_STATE_PRESENT); |
| 178 InsertIntoMap(&cache_map, | 167 InsertIntoMap(&cache_map, |
| 179 "<resource_id_4>", | 168 "<resource_id_4>", |
| 180 "<md5>", | 169 "<md5>", |
| 181 GDataCache::CACHE_TYPE_TMP, | 170 GDataCache::CACHE_TYPE_TMP, |
| 182 GDataCache::CACHE_STATE_PRESENT); | 171 GDataCache::CACHE_STATE_PRESENT); |
| 183 | 172 |
| 184 metadata_->cache_map_ = cache_map; | 173 metadata_->cache_map_ = cache_map; |
| 185 metadata_->RemoveTemporaryFiles(); | 174 metadata_->RemoveTemporaryFiles(); |
| 186 // resource 1 and 4 should be gone, as these are CACHE_TYPE_TMP. | 175 // resource 1 and 4 should be gone, as these are CACHE_TYPE_TMP. |
| 187 EXPECT_FALSE(metadata_->GetCacheEntry("<resource_id_1>", "").get()); | 176 GDataCache::CacheEntry cache_entry; |
| 188 EXPECT_TRUE(metadata_->GetCacheEntry("<resource_id_2>", "").get()); | 177 EXPECT_FALSE(metadata_->GetCacheEntry("<resource_id_1>", "", &cache_entry)); |
| 189 EXPECT_TRUE(metadata_->GetCacheEntry("<resource_id_3>", "").get()); | 178 EXPECT_TRUE(metadata_->GetCacheEntry("<resource_id_2>", "", &cache_entry)); |
| 190 EXPECT_FALSE(metadata_->GetCacheEntry("<resource_id_4>", "").get()); | 179 EXPECT_TRUE(metadata_->GetCacheEntry("<resource_id_3>", "", &cache_entry)); |
| 180 EXPECT_FALSE(metadata_->GetCacheEntry("<resource_id_4>", "", &cache_entry)); |
| 191 } | 181 } |
| 192 | 182 |
| 193 } // namespace gdata | 183 } // namespace gdata |
| OLD | NEW |