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

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

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

Powered by Google App Engine
This is Rietveld 408576698