public void testExpectedFpp() { BloomFilter<Object> bf = BloomFilter.create(HashTestUtils.BAD_FUNNEL, 10, 0.03); double fpp = bf.expectedFpp(); assertEquals(0.0, fpp); // usually completed in less than 200 iterations while (fpp != 1.0) { boolean changed = bf.put(new Object()); double newFpp = bf.expectedFpp(); // if changed, the new fpp is strictly higher, otherwise it is the same assertTrue(changed ? newFpp > fpp : newFpp == fpp); fpp = newFpp; } }
public void testJavaSerialization() { BloomFilter<byte[]> bf = BloomFilter.create(Funnels.byteArrayFunnel(), 100); for (int i = 0; i < 10; i++) { bf.put(Ints.toByteArray(i)); } BloomFilter<byte[]> copy = SerializableTester.reserialize(bf); for (int i = 0; i < 10; i++) { assertTrue(copy.mightContain(Ints.toByteArray(i))); } assertEquals(bf.expectedFpp(), copy.expectedFpp()); SerializableTester.reserializeAndAssert(bf); }
double actualReportedFpp = bf.expectedFpp(); assertEquals(expectedReportedFpp, actualReportedFpp, 0.00033);
double actualReportedFpp = bf.expectedFpp(); assertEquals(expectedReportedFpp, actualReportedFpp, 0.00015);
double actualReportedFpp = bf.expectedFpp(); assertEquals(expectedReportedFpp, actualReportedFpp, 0.00033);
/** * Returns the current false positive probability ({@code FPP}) of this filter. * * @return the probability that {@link #contains(Object)} will erroneously return {@code true} * given an element that has not actually been added to the filter. * @see #fpp() * @see <a target="guavadoc" href="http://google.github.io/guava/releases/snapshot/api/docs/com/google/common/hash/BloomFilter.html#put(T)">com.google.common.hash.BloomFilter#put(T)</a> */ public double currentFpp() { return delegate.expectedFpp(); }
/** * @deprecated Use {@link #expectedFpp} instead. */ @Deprecated public double expectedFalsePositiveProbability() { return expectedFpp(); }
@Override public void close() { changeTrackers.remove(this); if (LOG.isDebugEnabled()) { if (lazyBloomFilter.filter == null) { LOG.debug("Disposing CacheChangesTracker for {}, no filter was needed", keyFilter); } else { LOG.debug("Disposing CacheChangesTracker for {}, filter fpp was: {}", keyFilter, lazyBloomFilter.filter.expectedFpp()); } } }
@Override public void close() { changeTrackers.remove(this); if (LOG.isDebugEnabled()) { if (lazyBloomFilter.filter == null) { LOG.debug("Disposing CacheChangesTracker for {}, no filter was needed", keyFilter); } else { LOG.debug("Disposing CacheChangesTracker for {}, filter fpp was: {}", keyFilter, lazyBloomFilter.filter.expectedFpp()); } } }
private void _checkBloomFilterUsage() { _monitorService.modifyCounter(MonitorService.Counter.BLOOMFILTER_APPROXIMATE_ELEMENT_COUNT, bloomFilter.approximateElementCount(), null); _monitorService.modifyCounter(MonitorService.Counter.BLOOMFILTER_SCOPE_ONLY_APPROXIMATE_ELEMENT_COUNT, bloomFilterScopeOnly.approximateElementCount(), null); _monitorService.modifyCounter(MonitorService.Counter.BLOOMFILTER_SCOPE_AND_METRIC_ONLY_APPROXIMATE_ELEMENT_COUNT, bloomFilterScopeAndMetricOnly.approximateElementCount(), null); _monitorService.modifyCounter(MonitorService.Counter.BLOOMFILTER_METATAGS_APPROXIMATE_ELEMENT_COUNT, bloomFilterMetatags.approximateElementCount(), null); _logger.info("Metrics Bloom expected error rate = {}", bloomFilter.expectedFpp()); _logger.info("Scope only Bloom expected error rate = {}", bloomFilterScopeOnly.expectedFpp()); _logger.info("Scope and metric only Bloom expected error rate = {}", bloomFilterScopeAndMetricOnly.expectedFpp()); _logger.info("Metic Metatags Bloom expected error rate = {}", bloomFilterMetatags.expectedFpp()); }
private void _checkBloomFilterUsage() { _monitorService.modifyCounter(MonitorService.Counter.BLOOMFILTER_APPROXIMATE_ELEMENT_COUNT, bloomFilter.approximateElementCount(), null); _monitorService.modifyCounter(MonitorService.Counter.BLOOMFILTER_SCOPE_ONLY_APPROXIMATE_ELEMENT_COUNT, bloomFilterScopeOnly.approximateElementCount(), null); _monitorService.modifyCounter(MonitorService.Counter.BLOOMFILTER_SCOPE_AND_METRIC_ONLY_APPROXIMATE_ELEMENT_COUNT, bloomFilterScopeAndMetricOnly.approximateElementCount(), null); _monitorService.modifyCounter(MonitorService.Counter.BLOOMFILTER_METATAGS_APPROXIMATE_ELEMENT_COUNT, bloomFilterMetatags.approximateElementCount(), null); _logger.info("Metrics Bloom expected error rate = {}", bloomFilter.expectedFpp()); _logger.info("Scope only Bloom expected error rate = {}", bloomFilterScopeOnly.expectedFpp()); _logger.info("Scope and metric only Bloom expected error rate = {}", bloomFilterScopeAndMetricOnly.expectedFpp()); _logger.info("Metic Metatags Bloom expected error rate = {}", bloomFilterMetatags.expectedFpp()); }
public void testExpectedFpp() { BloomFilter<Object> bf = BloomFilter.create(HashTestUtils.BAD_FUNNEL, 10, 0.03); double fpp = bf.expectedFpp(); assertEquals(0.0, fpp); // usually completed in less than 200 iterations while (fpp != 1.0) { boolean changed = bf.put(new Object()); double newFpp = bf.expectedFpp(); // if changed, the new fpp is strictly higher, otherwise it is the same assertTrue(changed ? newFpp > fpp : newFpp == fpp); fpp = newFpp; } }
public void testJavaSerialization() { BloomFilter<byte[]> bf = BloomFilter.create(Funnels.byteArrayFunnel(), 100); for (int i = 0; i < 10; i++) { bf.put(Ints.toByteArray(i)); } BloomFilter<byte[]> copy = SerializableTester.reserialize(bf); for (int i = 0; i < 10; i++) { assertTrue(copy.mightContain(Ints.toByteArray(i))); } assertEquals(bf.expectedFpp(), copy.expectedFpp()); SerializableTester.reserializeAndAssert(bf); }
double actualReportedFpp = bf.expectedFpp(); assertEquals(expectedReportedFpp, actualReportedFpp, 0.00033);
double actualReportedFpp = bf.expectedFpp(); assertEquals(expectedReportedFpp, actualReportedFpp, 0.00033);
double actualReportedFpp = bf.expectedFpp(); assertEquals(expectedReportedFpp, actualReportedFpp, 0.00015);