<< " (int32)time_t is running out.";
}
-// Test that prefixes which were injected from full hashes are being removed.
-// This was a mistake in earlier versions of the code.
-TEST(SafeBrowsingStoreTest, KnockoutPrefixVolunteers) {
- // Construct some full hashes which share prefix with another.
- const SBFullHash kHash1mod1 = ModifyHashAfterPrefix(kHash1, 1);
- const SBFullHash kHash2mod1 = ModifyHashAfterPrefix(kHash2, 1);
-
- SBAddPrefixes add_prefixes;
- std::vector<SBAddFullHash> add_hashes;
- SBSubPrefixes sub_prefixes;
- std::vector<SBSubFullHash> sub_hashes;
-
- // Full hashes for an add chunk will have had the prefix injected.
- add_hashes.push_back(SBAddFullHash(kAddChunk1, kHash1));
- add_hashes.push_back(SBAddFullHash(kAddChunk1, kHash1mod1));
- add_prefixes.push_back(SBAddPrefix(kAddChunk1, kHash1.prefix));
-
- // Other full hashes or prefixes are not affected.
- add_hashes.push_back(SBAddFullHash(kAddChunk1, kHash3));
- add_prefixes.push_back(SBAddPrefix(kAddChunk2, kHash4.prefix));
-
- // Full hashes for a sub chunk will have had the prefix injected.
- sub_hashes.push_back(SBSubFullHash(kSubChunk1, kAddChunk1, kHash2));
- sub_hashes.push_back(SBSubFullHash(kSubChunk1, kAddChunk1, kHash2mod1));
- sub_prefixes.push_back(SBSubPrefix(kSubChunk1, kAddChunk1, kHash2.prefix));
-
- // Other full hashes or prefixes are not affected.
- sub_hashes.push_back(SBSubFullHash(kSubChunk1, kAddChunk1, kHash5));
- sub_prefixes.push_back(SBSubPrefix(kSubChunk2, kAddChunk2, kHash6.prefix));
-
- const base::hash_set<int32> no_deletions;
- ProcessHelper(&add_prefixes, &sub_prefixes, &add_hashes, &sub_hashes,
- no_deletions, no_deletions);
-
- ASSERT_EQ(1U, add_prefixes.size());
- EXPECT_EQ(kAddChunk2, add_prefixes[0].chunk_id);
- EXPECT_EQ(kHash4.prefix, add_prefixes[0].prefix);
-
- ASSERT_EQ(3U, add_hashes.size());
- EXPECT_EQ(kAddChunk1, add_hashes[0].chunk_id);
- EXPECT_TRUE(SBFullHashEqual(kHash1mod1, add_hashes[0].full_hash));
- EXPECT_EQ(kAddChunk1, add_hashes[1].chunk_id);
- EXPECT_TRUE(SBFullHashEqual(kHash1, add_hashes[1].full_hash));
- EXPECT_EQ(kAddChunk1, add_hashes[2].chunk_id);
- EXPECT_TRUE(SBFullHashEqual(kHash3, add_hashes[2].full_hash));
-
- ASSERT_EQ(1U, sub_prefixes.size());
- EXPECT_EQ(kSubChunk2, sub_prefixes[0].chunk_id);
- EXPECT_EQ(kAddChunk2, sub_prefixes[0].add_chunk_id);
- EXPECT_EQ(kHash6.prefix, sub_prefixes[0].add_prefix);
-
- ASSERT_EQ(3U, sub_hashes.size());
- EXPECT_EQ(kSubChunk1, sub_hashes[0].chunk_id);
- EXPECT_EQ(kAddChunk1, sub_hashes[0].add_chunk_id);
- EXPECT_TRUE(SBFullHashEqual(kHash5, sub_hashes[0].full_hash));
- EXPECT_EQ(kSubChunk1, sub_hashes[1].chunk_id);
- EXPECT_EQ(kAddChunk1, sub_hashes[1].add_chunk_id);
- EXPECT_TRUE(SBFullHashEqual(kHash2mod1, sub_hashes[1].full_hash));
- EXPECT_EQ(kSubChunk1, sub_hashes[2].chunk_id);
- EXPECT_EQ(kAddChunk1, sub_hashes[2].add_chunk_id);
- EXPECT_TRUE(SBFullHashEqual(kHash2, sub_hashes[2].full_hash));
-}
-
} // namespace