| Index: chrome/browser/safe_browsing/bloom_filter_unittest.cc
|
| diff --git a/chrome/browser/safe_browsing/bloom_filter_unittest.cc b/chrome/browser/safe_browsing/bloom_filter_unittest.cc
|
| deleted file mode 100644
|
| index b0d12375c1d80eb207e3b0955c9e43e482de8fef..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/safe_browsing/bloom_filter_unittest.cc
|
| +++ /dev/null
|
| @@ -1,117 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/safe_browsing/bloom_filter.h"
|
| -
|
| -#include <limits.h>
|
| -
|
| -#include <set>
|
| -#include <vector>
|
| -
|
| -#include "base/file_util.h"
|
| -#include "base/logging.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/path_service.h"
|
| -#include "base/rand_util.h"
|
| -#include "base/scoped_temp_dir.h"
|
| -#include "base/string_util.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace {
|
| -
|
| -SBPrefix GenHash() {
|
| - return static_cast<SBPrefix>(base::RandUint64());
|
| -}
|
| -
|
| -}
|
| -
|
| -TEST(SafeBrowsingBloomFilter, BloomFilterUse) {
|
| - // Use a small number for unit test so it's not slow.
|
| - int count = 1000;
|
| -
|
| - // Build up the bloom filter.
|
| - scoped_refptr<BloomFilter> filter(
|
| - new BloomFilter(count * BloomFilter::kBloomFilterSizeRatio));
|
| -
|
| - typedef std::set<SBPrefix> Values;
|
| - Values values;
|
| - for (int i = 0; i < count; ++i) {
|
| - SBPrefix value = GenHash();
|
| - values.insert(value);
|
| - filter->Insert(value);
|
| - }
|
| - EXPECT_TRUE(filter->CheckChecksum());
|
| -
|
| - // Check serialization works.
|
| - char* data_copy = new char[filter->size()];
|
| - memcpy(data_copy, filter->data(), filter->size());
|
| - scoped_refptr<BloomFilter> filter_copy(
|
| - new BloomFilter(data_copy, filter->size(), filter->hash_keys_));
|
| - EXPECT_TRUE(filter_copy->CheckChecksum());
|
| -
|
| - // Check no false negatives by ensuring that every time we inserted exists.
|
| - for (Values::const_iterator i = values.begin(); i != values.end(); ++i)
|
| - EXPECT_TRUE(filter_copy->Exists(*i));
|
| -
|
| - // Check false positive error rate by checking the same number of items that
|
| - // we inserted, but of different values, and calculating what percentage are
|
| - // "found".
|
| - int found_count = 0;
|
| - int checked = 0;
|
| - while (true) {
|
| - SBPrefix value = GenHash();
|
| - if (values.count(value))
|
| - continue;
|
| -
|
| - if (filter_copy->Exists(value))
|
| - found_count++;
|
| -
|
| - checked++;
|
| - if (checked == count)
|
| - break;
|
| - }
|
| -
|
| - // The FP rate should be 1.2%. Keep a large margin of error because we don't
|
| - // want to fail this test because we happened to randomly pick a lot of FPs.
|
| - double fp_rate = found_count * 100.0 / count;
|
| - CHECK(fp_rate < 5.0);
|
| -
|
| - VLOG(1) << "For safe browsing bloom filter of size " << count
|
| - << ", the FP rate was " << fp_rate << " %";
|
| -}
|
| -
|
| -// Test that we can read and write the bloom filter file.
|
| -TEST(SafeBrowsingBloomFilter, BloomFilterFile) {
|
| - // Create initial filter.
|
| - const int kTestEntries = BloomFilter::kBloomFilterMinSize;
|
| - scoped_refptr<BloomFilter> filter_write(
|
| - new BloomFilter(kTestEntries * BloomFilter::kBloomFilterSizeRatio));
|
| -
|
| - for (int i = 0; i < kTestEntries; ++i)
|
| - filter_write->Insert(GenHash());
|
| - EXPECT_TRUE(filter_write->CheckChecksum());
|
| -
|
| - // Remove any left over test filters and serialize.
|
| - ScopedTempDir temp_dir;
|
| - ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
|
| - FilePath filter_path = temp_dir.path().AppendASCII("SafeBrowsingTestFilter");
|
| - ASSERT_TRUE(filter_write->WriteFile(filter_path));
|
| -
|
| - // Create new empty filter and load from disk.
|
| - BloomFilter* filter = BloomFilter::LoadFile(filter_path);
|
| - ASSERT_TRUE(filter != NULL);
|
| - scoped_refptr<BloomFilter> filter_read(filter);
|
| - EXPECT_TRUE(filter_read->CheckChecksum());
|
| -
|
| - // Check data consistency.
|
| - EXPECT_EQ(filter_write->hash_keys_.size(), filter_read->hash_keys_.size());
|
| -
|
| - for (size_t i = 0; i < filter_write->hash_keys_.size(); ++i)
|
| - EXPECT_EQ(filter_write->hash_keys_[i], filter_read->hash_keys_[i]);
|
| -
|
| - EXPECT_EQ(filter_write->size(), filter_read->size());
|
| -
|
| - EXPECT_EQ(0,
|
| - memcmp(filter_write->data(), filter_read->data(), filter_read->size()));
|
| -}
|
|
|