Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(354)

Side by Side Diff: components/safe_browsing_db/v4_store_unittest.cc

Issue 2128173003: Merge the hash prefixes from the old store and the additions in the partial (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nit: s/soace/space Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « components/safe_browsing_db/v4_store.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "base/files/file_util.h" 5 #include "base/files/file_util.h"
6 #include "base/files/scoped_temp_dir.h" 6 #include "base/files/scoped_temp_dir.h"
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/test/test_simple_task_runner.h" 9 #include "base/test/test_simple_task_runner.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 list_update_response->set_response_type(ListUpdateResponse::FULL_UPDATE); 134 list_update_response->set_response_type(ListUpdateResponse::FULL_UPDATE);
135 list_update_response->set_new_client_state("test_client_state"); 135 list_update_response->set_new_client_state("test_client_state");
136 EXPECT_EQ(WRITE_SUCCESS, V4Store(task_runner_, store_path_) 136 EXPECT_EQ(WRITE_SUCCESS, V4Store(task_runner_, store_path_)
137 .WriteToDisk(std::move(list_update_response))); 137 .WriteToDisk(std::move(list_update_response)));
138 138
139 std::unique_ptr<V4Store> read_store(new V4Store(task_runner_, store_path_)); 139 std::unique_ptr<V4Store> read_store(new V4Store(task_runner_, store_path_));
140 EXPECT_EQ(READ_SUCCESS, read_store->ReadFromDisk()); 140 EXPECT_EQ(READ_SUCCESS, read_store->ReadFromDisk());
141 EXPECT_EQ("test_client_state", read_store->state_); 141 EXPECT_EQ("test_client_state", read_store->state_);
142 } 142 }
143 143
144 TEST_F(V4StoreTest, TestAddUnlumpedHashesWithInvalidAddition) {
145 HashPrefixMap prefix_map;
146 EXPECT_EQ(ADDITIONS_SIZE_UNEXPECTED_FAILURE,
147 V4Store::AddUnlumpedHashes(5, "a", &prefix_map));
148 EXPECT_TRUE(prefix_map.empty());
149 }
150
151 TEST_F(V4StoreTest, TestAddUnlumpedHashesWithEmptyString) {
152 HashPrefixMap prefix_map;
153 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
154 V4Store::AddUnlumpedHashes(5, "", &prefix_map));
155 EXPECT_TRUE(prefix_map[5].empty());
156 }
157
158 TEST_F(V4StoreTest, TestAddUnlumpedHashes) {
159 HashPrefixMap prefix_map;
160 PrefixSize prefix_size = 5;
161 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
162 V4Store::AddUnlumpedHashes(prefix_size, "abcde5432100000-----",
163 &prefix_map));
164 EXPECT_EQ(1u, prefix_map.size());
165 HashPrefixes hash_prefixes = prefix_map.at(prefix_size);
166 EXPECT_EQ(4 * prefix_size, hash_prefixes.size());
167 EXPECT_EQ("abcde5432100000-----", hash_prefixes);
168
169 prefix_size = 4;
170 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
171 V4Store::AddUnlumpedHashes(prefix_size, "abcde5432100000-----",
172 &prefix_map));
173 EXPECT_EQ(2u, prefix_map.size());
174 hash_prefixes = prefix_map.at(prefix_size);
175 EXPECT_EQ(5 * prefix_size, hash_prefixes.size());
176 EXPECT_EQ("abcde5432100000-----", hash_prefixes);
177 }
178
179 TEST_F(V4StoreTest, TestGetNextSmallestPrefixSizeWithEmptyPrefixMap) {
180 HashPrefixMap prefix_map;
181 CounterMap counter_map;
182 V4Store::InitializeCounterMap(prefix_map, &counter_map);
183
184 PrefixSize prefix_size;
185 EXPECT_FALSE(V4Store::GetNextSmallestPrefixSize(prefix_map, counter_map,
186 &prefix_size));
187 }
188
189 TEST_F(V4StoreTest, TestGetNextSmallestPrefixSize) {
190 HashPrefixMap prefix_map;
191 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
192 V4Store::AddUnlumpedHashes(5, "-----0000054321abcde", &prefix_map));
193 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
194 V4Store::AddUnlumpedHashes(4, "-----0000054321abcde", &prefix_map));
195 CounterMap counter_map;
196 V4Store::InitializeCounterMap(prefix_map, &counter_map);
197
198 PrefixSize prefix_size;
199 EXPECT_TRUE(V4Store::GetNextSmallestPrefixSize(prefix_map, counter_map,
200 &prefix_size));
201 EXPECT_EQ(4u, prefix_size);
202 }
203
204 TEST_F(V4StoreTest, TestGetNextUnmergedPrefix) {
205 HashPrefixMap prefix_map;
206 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
207 V4Store::AddUnlumpedHashes(5, "-----0000054321abcde", &prefix_map));
208 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
209 V4Store::AddUnlumpedHashes(4, "-----0000054321abcde", &prefix_map));
210 CounterMap counter_map;
211 V4Store::InitializeCounterMap(prefix_map, &counter_map);
212
213 PrefixSize prefix_size;
214 EXPECT_TRUE(V4Store::GetNextSmallestPrefixSize(prefix_map, counter_map,
215 &prefix_size));
216 const HashPrefix& prefix = V4Store::GetNextUnmergedPrefixForSize(
217 prefix_size, prefix_map, counter_map);
218 EXPECT_EQ("----", prefix);
219 }
220
221 TEST_F(V4StoreTest, TestMergeUpdatesWithSameSizesInEachMap) {
222 HashPrefixMap prefix_map_old;
223 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
224 V4Store::AddUnlumpedHashes(4, "abcdefgh", &prefix_map_old));
225 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
226 V4Store::AddUnlumpedHashes(5, "54321abcde", &prefix_map_old));
227 HashPrefixMap prefix_map_additions;
228 EXPECT_EQ(
229 APPLY_UPDATE_SUCCESS,
230 V4Store::AddUnlumpedHashes(4, "----1111bbbb", &prefix_map_additions));
231 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
232 V4Store::AddUnlumpedHashes(5, "22222bcdef", &prefix_map_additions));
233
234 std::unique_ptr<V4Store> store(new V4Store(task_runner_, store_path_));
235 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
236 store->MergeUpdate(prefix_map_old, prefix_map_additions));
237 const HashPrefixMap& prefix_map = store->hash_prefix_map_;
238 EXPECT_EQ(2u, prefix_map.size());
239
240 PrefixSize prefix_size = 4;
241 HashPrefixes hash_prefixes = prefix_map.at(prefix_size);
242 EXPECT_EQ(5 * prefix_size, hash_prefixes.size());
243 EXPECT_EQ("----", hash_prefixes.substr(0 * prefix_size, prefix_size));
244 EXPECT_EQ("1111", hash_prefixes.substr(1 * prefix_size, prefix_size));
245 EXPECT_EQ("abcd", hash_prefixes.substr(2 * prefix_size, prefix_size));
246 EXPECT_EQ("bbbb", hash_prefixes.substr(3 * prefix_size, prefix_size));
247 EXPECT_EQ("efgh", hash_prefixes.substr(4 * prefix_size, prefix_size));
248
249 prefix_size = 5;
250 hash_prefixes = prefix_map.at(prefix_size);
251 EXPECT_EQ(4 * prefix_size, hash_prefixes.size());
252 EXPECT_EQ("22222", hash_prefixes.substr(0 * prefix_size, prefix_size));
253 EXPECT_EQ("54321", hash_prefixes.substr(1 * prefix_size, prefix_size));
254 EXPECT_EQ("abcde", hash_prefixes.substr(2 * prefix_size, prefix_size));
255 EXPECT_EQ("bcdef", hash_prefixes.substr(3 * prefix_size, prefix_size));
256 }
257
258 TEST_F(V4StoreTest, TestMergeUpdatesWithDifferentSizesInEachMap) {
259 HashPrefixMap prefix_map_old;
260 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
261 V4Store::AddUnlumpedHashes(4, "1111abcdefgh", &prefix_map_old));
262 HashPrefixMap prefix_map_additions;
263 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
264 V4Store::AddUnlumpedHashes(5, "22222bcdef", &prefix_map_additions));
265
266 std::unique_ptr<V4Store> store(new V4Store(task_runner_, store_path_));
267 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
268 store->MergeUpdate(prefix_map_old, prefix_map_additions));
269 const HashPrefixMap& prefix_map = store->hash_prefix_map_;
270 EXPECT_EQ(2u, prefix_map.size());
271
272 PrefixSize prefix_size = 4;
273 HashPrefixes hash_prefixes = prefix_map.at(prefix_size);
274 EXPECT_EQ(3 * prefix_size, hash_prefixes.size());
275 EXPECT_EQ("1111abcdefgh", hash_prefixes);
276
277 prefix_size = 5;
278 hash_prefixes = prefix_map.at(prefix_size);
279 EXPECT_EQ(2 * prefix_size, hash_prefixes.size());
280 EXPECT_EQ("22222bcdef", hash_prefixes);
281 }
282
283 TEST_F(V4StoreTest, TestMergeUpdatesOldMapRunsOutFirst) {
284 HashPrefixMap prefix_map_old;
285 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
286 V4Store::AddUnlumpedHashes(4, "00001111", &prefix_map_old));
287 HashPrefixMap prefix_map_additions;
288 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
289 V4Store::AddUnlumpedHashes(4, "2222", &prefix_map_additions));
290
291 std::unique_ptr<V4Store> store(new V4Store(task_runner_, store_path_));
292 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
293 store->MergeUpdate(prefix_map_old, prefix_map_additions));
294 const HashPrefixMap& prefix_map = store->hash_prefix_map_;
295 EXPECT_EQ(1u, prefix_map.size());
296
297 PrefixSize prefix_size = 4;
298 HashPrefixes hash_prefixes = prefix_map.at(prefix_size);
299 EXPECT_EQ(3 * prefix_size, hash_prefixes.size());
300 EXPECT_EQ("0000", hash_prefixes.substr(0 * prefix_size, prefix_size));
301 EXPECT_EQ("1111", hash_prefixes.substr(1 * prefix_size, prefix_size));
302 EXPECT_EQ("2222", hash_prefixes.substr(2 * prefix_size, prefix_size));
303 }
304
305 TEST_F(V4StoreTest, TestMergeUpdatesAdditionsMapRunsOutFirst) {
306 HashPrefixMap prefix_map_old;
307 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
308 V4Store::AddUnlumpedHashes(4, "2222", &prefix_map_old));
309 HashPrefixMap prefix_map_additions;
310 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
311 V4Store::AddUnlumpedHashes(4, "00001111", &prefix_map_additions));
312
313 std::unique_ptr<V4Store> store(new V4Store(task_runner_, store_path_));
314 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
315 store->MergeUpdate(prefix_map_old, prefix_map_additions));
316 const HashPrefixMap& prefix_map = store->hash_prefix_map_;
317 EXPECT_EQ(1u, prefix_map.size());
318
319 PrefixSize prefix_size = 4;
320 HashPrefixes hash_prefixes = prefix_map.at(prefix_size);
321 EXPECT_EQ(3 * prefix_size, hash_prefixes.size());
322 EXPECT_EQ("0000", hash_prefixes.substr(0 * prefix_size, prefix_size));
323 EXPECT_EQ("1111", hash_prefixes.substr(1 * prefix_size, prefix_size));
324 EXPECT_EQ("2222", hash_prefixes.substr(2 * prefix_size, prefix_size));
325 }
326
327 TEST_F(V4StoreTest, TestMergeUpdatesFailsForRepeatedhashPrefix) {
328 HashPrefixMap prefix_map_old;
329 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
330 V4Store::AddUnlumpedHashes(4, "2222", &prefix_map_old));
331 HashPrefixMap prefix_map_additions;
332 EXPECT_EQ(APPLY_UPDATE_SUCCESS,
333 V4Store::AddUnlumpedHashes(4, "2222", &prefix_map_additions));
334
335 std::unique_ptr<V4Store> store(new V4Store(task_runner_, store_path_));
336 EXPECT_EQ(ADDITIONS_HAS_EXISTING_PREFIX_FAILURE,
337 store->MergeUpdate(prefix_map_old, prefix_map_additions));
338 }
339
144 } // namespace safe_browsing 340 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « components/safe_browsing_db/v4_store.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698