@Override public Object apply(List<Object> args) { int expectedInsertions = 100000; float falsePositiveRate = 0.01f; if (args.size() > 1) { expectedInsertions = ConversionUtils.convert(args.get(0), Integer.class); } if (args.size() > 2) { falsePositiveRate = ConversionUtils.convert(args.get(1), Float.class); } return new BloomFilter<>(SerDeUtils.SERIALIZER, expectedInsertions, falsePositiveRate); } }
@Override public void configure(Map<String, Object> config) { expectedInsertions = toInt(config.get(EXPECTED_INSERTIONS_KEY)); falsePositiveRate = toDouble(config.get(FALSE_POSITIVE_RATE_KEY)); name = config.get(NAME_KEY).toString(); filter = new BloomFilter<LookupKey>(new LookupKeySerializer(), expectedInsertions, falsePositiveRate); }
public BloomAccessTracker(String name, int expectedInsertions, double falsePositiveRate) { this.name = name; this.expectedInsertions = expectedInsertions; this.falsePositiveRate = falsePositiveRate; filter = new BloomFilter<LookupKey>(new LookupKeySerializer(), expectedInsertions, falsePositiveRate); } public BloomAccessTracker() {}
@Override public void reset() { filter = new BloomFilter<LookupKey>(new LookupKeySerializer(), expectedInsertions, falsePositiveRate); }
@Test public void testBloomFilter() { final BloomFilter<Object> expected = new BloomFilter<>(new BloomFilter.DefaultSerializer<>(), 10000, 0.01); expected.add("foo"); expected.add("bar"); byte[] raw = SerDeUtils.toBytes(expected); BloomFilter<Object> actual = (BloomFilter) SerDeUtils.fromBytes(raw, Object.class); Assert.assertTrue(actual.mightContain("foo")); Assert.assertFalse(actual.mightContain("timothy")); assertEquals(expected, actual); }
@Test @SuppressWarnings("unchecked") public void testBloomFilter() { final BloomFilter<Object> expected = new BloomFilter<>(new BloomFilter.DefaultSerializer<>(), 10000, 0.01); expected.add("foo"); expected.add("bar"); byte[] raw = SerDeUtils.toBytes(expected); BloomFilter<Object> actual = (BloomFilter) SerDeUtils.fromBytes(raw, Object.class); Assert.assertTrue(actual.mightContain("foo")); Assert.assertFalse(actual.mightContain("timothy")); assertEquals(expected, actual); }