@Test public void testRetouchedBloomFilterSpecific() { int numInsertions = 1000; int hashFunctionNumber = 5; ImmutableSet<Integer> hashes = ImmutableSet.of(Hash.MURMUR_HASH, Hash.JENKINS_HASH); for (Integer hashId : hashes) { RetouchedBloomFilter filter = new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId); checkOnAbsentFalsePositive(hashId, numInsertions, filter, Digits.ODD, RemoveScheme.MAXIMUM_FP); filter.and(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId)); checkOnAbsentFalsePositive(hashId, numInsertions, filter, Digits.EVEN, RemoveScheme.MAXIMUM_FP); filter.and(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId)); checkOnAbsentFalsePositive(hashId, numInsertions, filter, Digits.ODD, RemoveScheme.MINIMUM_FN); filter.and(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId)); checkOnAbsentFalsePositive(hashId, numInsertions, filter, Digits.EVEN, RemoveScheme.MINIMUM_FN); filter.and(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId)); checkOnAbsentFalsePositive(hashId, numInsertions, filter, Digits.ODD, RemoveScheme.RATIO); filter.and(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId)); checkOnAbsentFalsePositive(hashId, numInsertions, filter, Digits.EVEN, RemoveScheme.RATIO); filter.and(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId)); } }
@Test public void testRetouchedBloomFilterSpecific() { int numInsertions = 1000; int hashFunctionNumber = 5; ImmutableSet<Integer> hashes = ImmutableSet.of(Hash.MURMUR_HASH, Hash.JENKINS_HASH); for (Integer hashId : hashes) { RetouchedBloomFilter filter = new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId); checkOnAbsentFalsePositive(hashId, numInsertions, filter, Digits.ODD, RemoveScheme.MAXIMUM_FP); filter.and(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId)); checkOnAbsentFalsePositive(hashId, numInsertions, filter, Digits.EVEN, RemoveScheme.MAXIMUM_FP); filter.and(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId)); checkOnAbsentFalsePositive(hashId, numInsertions, filter, Digits.ODD, RemoveScheme.MINIMUM_FN); filter.and(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId)); checkOnAbsentFalsePositive(hashId, numInsertions, filter, Digits.EVEN, RemoveScheme.MINIMUM_FN); filter.and(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId)); checkOnAbsentFalsePositive(hashId, numInsertions, filter, Digits.ODD, RemoveScheme.RATIO); filter.and(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId)); checkOnAbsentFalsePositive(hashId, numInsertions, filter, Digits.EVEN, RemoveScheme.RATIO); filter.and(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId)); } }
@Test public void testFiltersWithMurmurHash() { int hashId = Hash.MURMUR_HASH; BloomFilterCommonTester.of(hashId, numInsertions) .withFilterInstance(new BloomFilter(bitSize, hashFunctionNumber, hashId)) .withFilterInstance(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId)) .withTestCases(ImmutableSet.of(BloomFilterTestStrategy.KEY_TEST_STRATEGY, BloomFilterTestStrategy.ADD_KEYS_STRATEGY, BloomFilterTestStrategy.EXCEPTIONS_CHECK_STRATEGY, BloomFilterTestStrategy.ODD_EVEN_ABSENT_STRATEGY, BloomFilterTestStrategy.WRITE_READ_STRATEGY, BloomFilterTestStrategy.FILTER_OR_STRATEGY, BloomFilterTestStrategy.FILTER_AND_STRATEGY, BloomFilterTestStrategy.FILTER_XOR_STRATEGY)).test(); }
@Test public void testFiltersWithJenkinsHash() { int hashId = Hash.JENKINS_HASH; BloomFilterCommonTester.of(hashId, numInsertions) .withFilterInstance(new BloomFilter(bitSize, hashFunctionNumber, hashId)) .withFilterInstance(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId)) .withTestCases(ImmutableSet.of(BloomFilterTestStrategy.KEY_TEST_STRATEGY, BloomFilterTestStrategy.ADD_KEYS_STRATEGY, BloomFilterTestStrategy.EXCEPTIONS_CHECK_STRATEGY, BloomFilterTestStrategy.ODD_EVEN_ABSENT_STRATEGY, BloomFilterTestStrategy.WRITE_READ_STRATEGY, BloomFilterTestStrategy.FILTER_OR_STRATEGY, BloomFilterTestStrategy.FILTER_AND_STRATEGY, BloomFilterTestStrategy.FILTER_XOR_STRATEGY)).test(); }
@Test public void testFiltersWithMurmurHash() { int hashId = Hash.MURMUR_HASH; BloomFilterCommonTester.of(hashId, numInsertions) .withFilterInstance(new BloomFilter(bitSize, hashFunctionNumber, hashId)) .withFilterInstance(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId)) .withTestCases(ImmutableSet.of(BloomFilterTestStrategy.KEY_TEST_STRATEGY, BloomFilterTestStrategy.ADD_KEYS_STRATEGY, BloomFilterTestStrategy.EXCEPTIONS_CHECK_STRATEGY, BloomFilterTestStrategy.ODD_EVEN_ABSENT_STRATEGY, BloomFilterTestStrategy.WRITE_READ_STRATEGY, BloomFilterTestStrategy.FILTER_OR_STRATEGY, BloomFilterTestStrategy.FILTER_AND_STRATEGY, BloomFilterTestStrategy.FILTER_XOR_STRATEGY)).test(); }
@Test public void testFiltersWithJenkinsHash() { int hashId = Hash.JENKINS_HASH; BloomFilterCommonTester.of(hashId, numInsertions) .withFilterInstance(new BloomFilter(bitSize, hashFunctionNumber, hashId)) .withFilterInstance(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId)) .withTestCases(ImmutableSet.of(BloomFilterTestStrategy.KEY_TEST_STRATEGY, BloomFilterTestStrategy.ADD_KEYS_STRATEGY, BloomFilterTestStrategy.EXCEPTIONS_CHECK_STRATEGY, BloomFilterTestStrategy.ODD_EVEN_ABSENT_STRATEGY, BloomFilterTestStrategy.WRITE_READ_STRATEGY, BloomFilterTestStrategy.FILTER_OR_STRATEGY, BloomFilterTestStrategy.FILTER_AND_STRATEGY, BloomFilterTestStrategy.FILTER_XOR_STRATEGY)).test(); }
private static Filter getSymmetricFilter(Class<?> filterClass, int numInsertions, int hashType) { int bitSetSize = optimalNumOfBits(numInsertions, 0.03); int hashFunctionNumber = 5; if (filterClass == BloomFilter.class) { return new BloomFilter(bitSetSize, hashFunctionNumber, hashType); } else if (filterClass == CountingBloomFilter.class) { return new CountingBloomFilter(bitSetSize, hashFunctionNumber, hashType); } else if (filterClass == RetouchedBloomFilter.class) { return new RetouchedBloomFilter(bitSetSize, hashFunctionNumber, hashType); } else if (filterClass == DynamicBloomFilter.class) { return new DynamicBloomFilter(bitSetSize, hashFunctionNumber, hashType, 3); } else { //fail fast assertFalse("unexpected filterClass", true); return null; } }
private static Filter getSymmetricFilter(Class<?> filterClass, int numInsertions, int hashType) { int bitSetSize = optimalNumOfBits(numInsertions, 0.03); int hashFunctionNumber = 5; if (filterClass == BloomFilter.class) { return new BloomFilter(bitSetSize, hashFunctionNumber, hashType); } else if (filterClass == CountingBloomFilter.class) { return new CountingBloomFilter(bitSetSize, hashFunctionNumber, hashType); } else if (filterClass == RetouchedBloomFilter.class) { return new RetouchedBloomFilter(bitSetSize, hashFunctionNumber, hashType); } else if (filterClass == DynamicBloomFilter.class) { return new DynamicBloomFilter(bitSetSize, hashFunctionNumber, hashType, 3); } else { //fail fast assertFalse("unexpected filterClass", true); return null; } }