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 |