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

Side by Side Diff: chrome/browser/safe_browsing/safe_browsing_store_file_unittest.cc

Issue 1410343012: Revert of Move more declarations from c/b/sb/sb_util.h to components. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@01_components
Patch Set: Created 5 years, 1 month 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
OLDNEW
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/safe_browsing/safe_browsing_store_file.h" 5 #include "chrome/browser/safe_browsing/safe_browsing_store_file.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.h"
9 #include "base/files/scoped_file.h" 9 #include "base/files/scoped_file.h"
10 #include "base/files/scoped_temp_dir.h" 10 #include "base/files/scoped_temp_dir.h"
11 #include "base/md5.h" 11 #include "base/md5.h"
12 #include "base/path_service.h" 12 #include "base/path_service.h"
13 #include "base/test/test_simple_task_runner.h" 13 #include "base/test/test_simple_task_runner.h"
14 #include "chrome/common/chrome_paths.h" 14 #include "chrome/common/chrome_paths.h"
15 #include "components/safe_browsing_db/prefix_set.h" 15 #include "components/safe_browsing_db/prefix_set.h"
16 #include "components/safe_browsing_db/util.h"
17 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
18 #include "testing/platform_test.h" 17 #include "testing/platform_test.h"
19 18
20 namespace { 19 namespace {
21 20
22 const int kAddChunk1 = 1; 21 const int kAddChunk1 = 1;
23 const int kAddChunk2 = 3; 22 const int kAddChunk2 = 3;
24 const int kAddChunk3 = 5; 23 const int kAddChunk3 = 5;
25 const int kAddChunk4 = 7; 24 const int kAddChunk4 = 7;
26 // Disjoint chunk numbers for subs to flush out typos. 25 // Disjoint chunk numbers for subs to flush out typos.
27 const int kSubChunk1 = 2; 26 const int kSubChunk1 = 2;
28 const int kSubChunk2 = 4; 27 const int kSubChunk2 = 4;
29 28
30 const SBFullHash kHash1 = safe_browsing::SBFullHashForString("one"); 29 const SBFullHash kHash1 = SBFullHashForString("one");
31 const SBFullHash kHash2 = safe_browsing::SBFullHashForString("two"); 30 const SBFullHash kHash2 = SBFullHashForString("two");
32 const SBFullHash kHash3 = safe_browsing::SBFullHashForString("three"); 31 const SBFullHash kHash3 = SBFullHashForString("three");
33 const SBFullHash kHash4 = safe_browsing::SBFullHashForString("four"); 32 const SBFullHash kHash4 = SBFullHashForString("four");
34 const SBFullHash kHash5 = safe_browsing::SBFullHashForString("five"); 33 const SBFullHash kHash5 = SBFullHashForString("five");
35 const SBFullHash kHash6 = safe_browsing::SBFullHashForString("six"); 34 const SBFullHash kHash6 = SBFullHashForString("six");
36 35
37 const SBPrefix kMinSBPrefix = 0u; 36 const SBPrefix kMinSBPrefix = 0u;
38 const SBPrefix kMaxSBPrefix = ~kMinSBPrefix; 37 const SBPrefix kMaxSBPrefix = ~kMinSBPrefix;
39 38
40 } // namespace 39 } // namespace
41 40
42 namespace safe_browsing { 41 namespace safe_browsing {
43 42
44 class SafeBrowsingStoreFileTest : public PlatformTest { 43 class SafeBrowsingStoreFileTest : public PlatformTest {
45 public: 44 public:
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 187
189 std::vector<SBPrefix> prefixes_result; 188 std::vector<SBPrefix> prefixes_result;
190 builder.GetPrefixSetNoHashes()->GetPrefixes(&prefixes_result); 189 builder.GetPrefixSetNoHashes()->GetPrefixes(&prefixes_result);
191 ASSERT_EQ(3U, prefixes_result.size()); 190 ASSERT_EQ(3U, prefixes_result.size());
192 EXPECT_EQ(kHash1.prefix, prefixes_result[0]); 191 EXPECT_EQ(kHash1.prefix, prefixes_result[0]);
193 EXPECT_EQ(kHash5.prefix, prefixes_result[1]); 192 EXPECT_EQ(kHash5.prefix, prefixes_result[1]);
194 EXPECT_EQ(kHash2.prefix, prefixes_result[2]); 193 EXPECT_EQ(kHash2.prefix, prefixes_result[2]);
195 194
196 ASSERT_EQ(1U, add_full_hashes_result.size()); 195 ASSERT_EQ(1U, add_full_hashes_result.size());
197 EXPECT_EQ(kAddChunk2, add_full_hashes_result[0].chunk_id); 196 EXPECT_EQ(kAddChunk2, add_full_hashes_result[0].chunk_id);
198 EXPECT_TRUE(safe_browsing::SBFullHashEqual( 197 EXPECT_TRUE(SBFullHashEqual(kHash4, add_full_hashes_result[0].full_hash));
199 kHash4, add_full_hashes_result[0].full_hash));
200 } 198 }
201 } 199 }
202 200
203 // Verify that the min and max prefixes are stored and operated on. 201 // Verify that the min and max prefixes are stored and operated on.
204 TEST_F(SafeBrowsingStoreFileTest, PrefixMinMax) { 202 TEST_F(SafeBrowsingStoreFileTest, PrefixMinMax) {
205 PopulateStore(); 203 PopulateStore();
206 204
207 ASSERT_TRUE(store_->BeginUpdate()); 205 ASSERT_TRUE(store_->BeginUpdate());
208 206
209 EXPECT_TRUE(store_->BeginChunk()); 207 EXPECT_TRUE(store_->BeginChunk());
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 EXPECT_TRUE(store_->FinishUpdate(&builder, &add_full_hashes_result)); 272 EXPECT_TRUE(store_->FinishUpdate(&builder, &add_full_hashes_result));
275 273
276 // Knocked out the chunk expected. 274 // Knocked out the chunk expected.
277 std::vector<SBPrefix> prefixes_result; 275 std::vector<SBPrefix> prefixes_result;
278 builder.GetPrefixSetNoHashes()->GetPrefixes(&prefixes_result); 276 builder.GetPrefixSetNoHashes()->GetPrefixes(&prefixes_result);
279 ASSERT_EQ(1U, prefixes_result.size()); 277 ASSERT_EQ(1U, prefixes_result.size());
280 EXPECT_EQ(kHash1.prefix, prefixes_result[0]); 278 EXPECT_EQ(kHash1.prefix, prefixes_result[0]);
281 279
282 ASSERT_EQ(1U, add_full_hashes_result.size()); 280 ASSERT_EQ(1U, add_full_hashes_result.size());
283 EXPECT_EQ(kAddChunk2, add_full_hashes_result[0].chunk_id); 281 EXPECT_EQ(kAddChunk2, add_full_hashes_result[0].chunk_id);
284 EXPECT_TRUE(safe_browsing::SBFullHashEqual( 282 EXPECT_TRUE(SBFullHashEqual(kHash4, add_full_hashes_result[0].full_hash));
285 kHash4, add_full_hashes_result[0].full_hash));
286 } 283 }
287 284
288 ASSERT_TRUE(store_->BeginUpdate()); 285 ASSERT_TRUE(store_->BeginUpdate());
289 286
290 // This add should be knocked out by an existing sub. 287 // This add should be knocked out by an existing sub.
291 EXPECT_TRUE(store_->BeginChunk()); 288 EXPECT_TRUE(store_->BeginChunk());
292 store_->SetAddChunk(kAddChunk3); 289 store_->SetAddChunk(kAddChunk3);
293 EXPECT_TRUE(store_->WriteAddPrefix(kAddChunk3, kHash3.prefix)); 290 EXPECT_TRUE(store_->WriteAddPrefix(kAddChunk3, kHash3.prefix));
294 EXPECT_TRUE(store_->FinishChunk()); 291 EXPECT_TRUE(store_->FinishChunk());
295 292
296 { 293 {
297 safe_browsing::PrefixSetBuilder builder; 294 safe_browsing::PrefixSetBuilder builder;
298 std::vector<SBAddFullHash> add_full_hashes_result; 295 std::vector<SBAddFullHash> add_full_hashes_result;
299 EXPECT_TRUE(store_->FinishUpdate(&builder, &add_full_hashes_result)); 296 EXPECT_TRUE(store_->FinishUpdate(&builder, &add_full_hashes_result));
300 297
301 std::vector<SBPrefix> prefixes_result; 298 std::vector<SBPrefix> prefixes_result;
302 builder.GetPrefixSetNoHashes()->GetPrefixes(&prefixes_result); 299 builder.GetPrefixSetNoHashes()->GetPrefixes(&prefixes_result);
303 ASSERT_EQ(1U, prefixes_result.size()); 300 ASSERT_EQ(1U, prefixes_result.size());
304 EXPECT_EQ(kHash1.prefix, prefixes_result[0]); 301 EXPECT_EQ(kHash1.prefix, prefixes_result[0]);
305 302
306 ASSERT_EQ(1U, add_full_hashes_result.size()); 303 ASSERT_EQ(1U, add_full_hashes_result.size());
307 EXPECT_EQ(kAddChunk2, add_full_hashes_result[0].chunk_id); 304 EXPECT_EQ(kAddChunk2, add_full_hashes_result[0].chunk_id);
308 EXPECT_TRUE(safe_browsing::SBFullHashEqual( 305 EXPECT_TRUE(SBFullHashEqual(kHash4, add_full_hashes_result[0].full_hash));
309 kHash4, add_full_hashes_result[0].full_hash));
310 } 306 }
311 307
312 ASSERT_TRUE(store_->BeginUpdate()); 308 ASSERT_TRUE(store_->BeginUpdate());
313 309
314 // But by here the sub should be gone, so it should stick this time. 310 // But by here the sub should be gone, so it should stick this time.
315 EXPECT_TRUE(store_->BeginChunk()); 311 EXPECT_TRUE(store_->BeginChunk());
316 store_->SetAddChunk(kAddChunk3); 312 store_->SetAddChunk(kAddChunk3);
317 EXPECT_TRUE(store_->WriteAddPrefix(kAddChunk3, kHash3.prefix)); 313 EXPECT_TRUE(store_->WriteAddPrefix(kAddChunk3, kHash3.prefix));
318 EXPECT_TRUE(store_->FinishChunk()); 314 EXPECT_TRUE(store_->FinishChunk());
319 315
320 { 316 {
321 safe_browsing::PrefixSetBuilder builder; 317 safe_browsing::PrefixSetBuilder builder;
322 std::vector<SBAddFullHash> add_full_hashes_result; 318 std::vector<SBAddFullHash> add_full_hashes_result;
323 EXPECT_TRUE(store_->FinishUpdate(&builder, &add_full_hashes_result)); 319 EXPECT_TRUE(store_->FinishUpdate(&builder, &add_full_hashes_result));
324 320
325 std::vector<SBPrefix> prefixes_result; 321 std::vector<SBPrefix> prefixes_result;
326 builder.GetPrefixSetNoHashes()->GetPrefixes(&prefixes_result); 322 builder.GetPrefixSetNoHashes()->GetPrefixes(&prefixes_result);
327 ASSERT_EQ(2U, prefixes_result.size()); 323 ASSERT_EQ(2U, prefixes_result.size());
328 EXPECT_EQ(kHash1.prefix, prefixes_result[0]); 324 EXPECT_EQ(kHash1.prefix, prefixes_result[0]);
329 EXPECT_EQ(kHash3.prefix, prefixes_result[1]); 325 EXPECT_EQ(kHash3.prefix, prefixes_result[1]);
330 326
331 ASSERT_EQ(1U, add_full_hashes_result.size()); 327 ASSERT_EQ(1U, add_full_hashes_result.size());
332 EXPECT_EQ(kAddChunk2, add_full_hashes_result[0].chunk_id); 328 EXPECT_EQ(kAddChunk2, add_full_hashes_result[0].chunk_id);
333 EXPECT_TRUE(safe_browsing::SBFullHashEqual( 329 EXPECT_TRUE(SBFullHashEqual(kHash4, add_full_hashes_result[0].full_hash));
334 kHash4, add_full_hashes_result[0].full_hash));
335 } 330 }
336 } 331 }
337 332
338 // Test that deletes delete the chunk's data. 333 // Test that deletes delete the chunk's data.
339 TEST_F(SafeBrowsingStoreFileTest, DeleteChunks) { 334 TEST_F(SafeBrowsingStoreFileTest, DeleteChunks) {
340 ASSERT_TRUE(store_->BeginUpdate()); 335 ASSERT_TRUE(store_->BeginUpdate());
341 336
342 // A prefix chunk which will be deleted. 337 // A prefix chunk which will be deleted.
343 EXPECT_FALSE(store_->CheckAddChunk(kAddChunk1)); 338 EXPECT_FALSE(store_->CheckAddChunk(kAddChunk1));
344 store_->SetAddChunk(kAddChunk1); 339 store_->SetAddChunk(kAddChunk1);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 std::vector<SBAddFullHash> add_full_hashes_result; 385 std::vector<SBAddFullHash> add_full_hashes_result;
391 EXPECT_TRUE(store_->FinishUpdate(&builder, &add_full_hashes_result)); 386 EXPECT_TRUE(store_->FinishUpdate(&builder, &add_full_hashes_result));
392 387
393 std::vector<SBPrefix> prefixes_result; 388 std::vector<SBPrefix> prefixes_result;
394 builder.GetPrefixSetNoHashes()->GetPrefixes(&prefixes_result); 389 builder.GetPrefixSetNoHashes()->GetPrefixes(&prefixes_result);
395 ASSERT_EQ(1U, prefixes_result.size()); 390 ASSERT_EQ(1U, prefixes_result.size());
396 EXPECT_EQ(kHash3.prefix, prefixes_result[0]); 391 EXPECT_EQ(kHash3.prefix, prefixes_result[0]);
397 392
398 ASSERT_EQ(1U, add_full_hashes_result.size()); 393 ASSERT_EQ(1U, add_full_hashes_result.size());
399 EXPECT_EQ(kAddChunk3, add_full_hashes_result[0].chunk_id); 394 EXPECT_EQ(kAddChunk3, add_full_hashes_result[0].chunk_id);
400 EXPECT_TRUE(safe_browsing::SBFullHashEqual( 395 EXPECT_TRUE(SBFullHashEqual(kHash6, add_full_hashes_result[0].full_hash));
401 kHash6, add_full_hashes_result[0].full_hash));
402 } 396 }
403 397
404 // Expected chunks are there in another update. 398 // Expected chunks are there in another update.
405 ASSERT_TRUE(store_->BeginUpdate()); 399 ASSERT_TRUE(store_->BeginUpdate());
406 EXPECT_FALSE(store_->CheckAddChunk(kAddChunk1)); 400 EXPECT_FALSE(store_->CheckAddChunk(kAddChunk1));
407 EXPECT_TRUE(store_->CheckAddChunk(kAddChunk2)); 401 EXPECT_TRUE(store_->CheckAddChunk(kAddChunk2));
408 EXPECT_TRUE(store_->CheckAddChunk(kAddChunk3)); 402 EXPECT_TRUE(store_->CheckAddChunk(kAddChunk3));
409 EXPECT_FALSE(store_->CheckSubChunk(kSubChunk1)); 403 EXPECT_FALSE(store_->CheckSubChunk(kSubChunk1));
410 EXPECT_TRUE(store_->CheckSubChunk(kSubChunk2)); 404 EXPECT_TRUE(store_->CheckSubChunk(kSubChunk2));
411 405
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
664 ASSERT_EQ(2U, add_prefixes.size()); 658 ASSERT_EQ(2U, add_prefixes.size());
665 EXPECT_EQ(kAddChunk1, add_prefixes[0].chunk_id); 659 EXPECT_EQ(kAddChunk1, add_prefixes[0].chunk_id);
666 EXPECT_EQ(kHash1.prefix, add_prefixes[0].prefix); 660 EXPECT_EQ(kHash1.prefix, add_prefixes[0].prefix);
667 EXPECT_EQ(kAddChunk1, add_prefixes[1].chunk_id); 661 EXPECT_EQ(kAddChunk1, add_prefixes[1].chunk_id);
668 EXPECT_EQ(kHash2.prefix, add_prefixes[1].prefix); 662 EXPECT_EQ(kHash2.prefix, add_prefixes[1].prefix);
669 663
670 std::vector<SBAddFullHash> add_hashes; 664 std::vector<SBAddFullHash> add_hashes;
671 EXPECT_TRUE(store_->GetAddFullHashes(&add_hashes)); 665 EXPECT_TRUE(store_->GetAddFullHashes(&add_hashes));
672 ASSERT_EQ(1U, add_hashes.size()); 666 ASSERT_EQ(1U, add_hashes.size());
673 EXPECT_EQ(kAddChunk2, add_hashes[0].chunk_id); 667 EXPECT_EQ(kAddChunk2, add_hashes[0].chunk_id);
674 EXPECT_TRUE(safe_browsing::SBFullHashEqual(kHash4, add_hashes[0].full_hash)); 668 EXPECT_TRUE(SBFullHashEqual(kHash4, add_hashes[0].full_hash));
675 } 669 }
676 670
677 // Test that the database handles resharding correctly, both when growing and 671 // Test that the database handles resharding correctly, both when growing and
678 // which shrinking. 672 // which shrinking.
679 TEST_F(SafeBrowsingStoreFileTest, Resharding) { 673 TEST_F(SafeBrowsingStoreFileTest, Resharding) {
680 // Loop through multiple stride boundaries (1<<32, 1<<31, 1<<30, 1<<29). 674 // Loop through multiple stride boundaries (1<<32, 1<<31, 1<<30, 1<<29).
681 const uint32 kTargetStride = 1 << 29; 675 const uint32 kTargetStride = 1 << 29;
682 676
683 // Each chunk will require 8 bytes per prefix, plus 4 bytes for chunk 677 // Each chunk will require 8 bytes per prefix, plus 4 bytes for chunk
684 // information. It should be less than |kTargetFootprint| in the 678 // information. It should be less than |kTargetFootprint| in the
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 ASSERT_EQ(2U, add_prefixes.size()); 800 ASSERT_EQ(2U, add_prefixes.size());
807 EXPECT_EQ(kAddChunk1, add_prefixes[0].chunk_id); 801 EXPECT_EQ(kAddChunk1, add_prefixes[0].chunk_id);
808 EXPECT_EQ(kHash1.prefix, add_prefixes[0].prefix); 802 EXPECT_EQ(kHash1.prefix, add_prefixes[0].prefix);
809 EXPECT_EQ(kAddChunk1, add_prefixes[1].chunk_id); 803 EXPECT_EQ(kAddChunk1, add_prefixes[1].chunk_id);
810 EXPECT_EQ(kHash2.prefix, add_prefixes[1].prefix); 804 EXPECT_EQ(kHash2.prefix, add_prefixes[1].prefix);
811 805
812 std::vector<SBAddFullHash> add_hashes; 806 std::vector<SBAddFullHash> add_hashes;
813 EXPECT_TRUE(store_->GetAddFullHashes(&add_hashes)); 807 EXPECT_TRUE(store_->GetAddFullHashes(&add_hashes));
814 ASSERT_EQ(1U, add_hashes.size()); 808 ASSERT_EQ(1U, add_hashes.size());
815 EXPECT_EQ(kAddChunk1, add_hashes[0].chunk_id); 809 EXPECT_EQ(kAddChunk1, add_hashes[0].chunk_id);
816 EXPECT_TRUE(safe_browsing::SBFullHashEqual(kHash2, add_hashes[0].full_hash)); 810 EXPECT_TRUE(SBFullHashEqual(kHash2, add_hashes[0].full_hash));
817 811
818 // Attempt an update to make sure things work end-to-end. 812 // Attempt an update to make sure things work end-to-end.
819 EXPECT_TRUE(store_->BeginUpdate()); 813 EXPECT_TRUE(store_->BeginUpdate());
820 814
821 // Still has the chunks expected in the next update. 815 // Still has the chunks expected in the next update.
822 std::vector<int> chunks; 816 std::vector<int> chunks;
823 store_->GetAddChunks(&chunks); 817 store_->GetAddChunks(&chunks);
824 ASSERT_EQ(1U, chunks.size()); 818 ASSERT_EQ(1U, chunks.size());
825 EXPECT_EQ(kAddChunk1, chunks[0]); 819 EXPECT_EQ(kAddChunk1, chunks[0]);
826 820
(...skipping 22 matching lines...) Expand all
849 std::vector<SBPrefix> prefixes_result; 843 std::vector<SBPrefix> prefixes_result;
850 builder.GetPrefixSetNoHashes()->GetPrefixes(&prefixes_result); 844 builder.GetPrefixSetNoHashes()->GetPrefixes(&prefixes_result);
851 ASSERT_EQ(1U, prefixes_result.size()); 845 ASSERT_EQ(1U, prefixes_result.size());
852 EXPECT_EQ(kHash1.prefix, prefixes_result[0]); 846 EXPECT_EQ(kHash1.prefix, prefixes_result[0]);
853 EXPECT_TRUE(add_full_hashes_result.empty()); 847 EXPECT_TRUE(add_full_hashes_result.empty());
854 } 848 }
855 } 849 }
856 #endif 850 #endif
857 851
858 } // namespace safe_browsing 852 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698