public Boolean evaluate(String key, String bloomFilter) throws HiveException { Filter bloom = BloomFactory.GetBloomFilter(bloomFilter); if (bloom != null) { return bloom.membershipTest(new Key(key.getBytes())); } else { throw new HiveException("Unable to find bloom " + bloomFilter); } }
@Nullable public Boolean evaluate(@Nullable Text bloomStr, @Nullable Text keyStr) throws HiveException { if (bloomStr == null) { return null; } if (keyStr == null) { return Boolean.FALSE; } Filter bloom = getFilter(bloomStr); key.set(keyStr.copyBytes(), 1.0d); return Boolean.valueOf(bloom.membershipTest(key)); }
@Nullable public Boolean evaluate(@Nullable Text bloomStr, @Nullable List<Text> keys) throws HiveException { if (bloomStr == null) { return null; } if (keys == null) { return Boolean.FALSE; } final Filter bloom = getFilter(bloomStr); for (Text keyStr : keys) { if (keyStr == null) { continue; } key.set(keyStr.copyBytes(), 1.0d); if (bloom.membershipTest(key)) { return Boolean.TRUE; } } return Boolean.FALSE; }
@Nullable public Boolean evaluate(@Nullable Text bloomStr, @Nullable List<Text> keys) throws HiveException { if (bloomStr == null) { return null; } if (keys == null) { return Boolean.FALSE; } final Filter bloom = getFilter(bloomStr); for (Text keyStr : keys) { if (keyStr == null) { continue; } key.set(keyStr.copyBytes(), 1.0d); if (bloom.membershipTest(key) == false) { return Boolean.FALSE; } } return Boolean.TRUE; }
private void checkTestMembershipOnNPE(Filter filter) { try { Key nullKey = null; filter.membershipTest(nullKey); } catch (NullPointerException ex) { // expected } catch (Exception e) { Assert.fail("" + e); } }
private void checkTestMembershipOnNPE(Filter filter) { try { Key nullKey = null; filter.membershipTest(nullKey); } catch (NullPointerException ex) { // expected } catch (Exception e) { Assert.fail("" + e); } }
@Override public void assertWhat(Filter filter, int numInsertions, int hashId, ImmutableSet<Integer> falsePositives) { // add all even keys for (int i = 0; i < numInsertions; i += 2) { filter.add(new Key(Integer.toString(i).getBytes())); } // check on present even key for (int i = 0; i < numInsertions; i += 2) { Assert.assertTrue(" filter might contains " + i, filter.membershipTest(new Key(Integer.toString(i).getBytes()))); } // check on absent odd in event for (int i = 1; i < numInsertions; i += 2) { if (!falsePositives.contains(i)) { assertFalse(" filter should not contain " + i, filter.membershipTest(new Key(Integer.toString(i).getBytes()))); } } } }),
@Override public void assertWhat(Filter filter, int numInsertions, int hashId, ImmutableSet<Integer> falsePositives) { // add all even keys for (int i = 0; i < numInsertions; i += 2) { filter.add(new Key(Integer.toString(i).getBytes())); } // check on present even key for (int i = 0; i < numInsertions; i += 2) { Assert.assertTrue(" filter might contains " + i, filter.membershipTest(new Key(Integer.toString(i).getBytes()))); } // check on absent odd in event for (int i = 1; i < numInsertions; i += 2) { if (!falsePositives.contains(i)) { assertFalse(" filter should not contain " + i, filter.membershipTest(new Key(Integer.toString(i).getBytes()))); } } } }),
@Override public void assertWhat(Filter filter, int numInsertions, int hashId, ImmutableSet<Integer> falsePositives) { filter.add(keys); assertTrue(" might contain key error ", filter.membershipTest(new Key("100".getBytes()))); assertTrue(" might contain key error ", filter.membershipTest(new Key("200".getBytes()))); filter.add(keys.toArray(new Key[] {})); assertTrue(" might contain key error ", filter.membershipTest(new Key("100".getBytes()))); assertTrue(" might contain key error ", filter.membershipTest(new Key("200".getBytes()))); filter.add(new AbstractCollection<Key>() { @Override public Iterator<Key> iterator() { return keys.iterator(); } @Override public int size() { return keys.size(); } }); assertTrue(" might contain key error ", filter.membershipTest(new Key("100".getBytes()))); assertTrue(" might contain key error ", filter.membershipTest(new Key("200".getBytes()))); } }),
@Override public void assertWhat(Filter filter, int numInsertions, int hashId, ImmutableSet<Integer> falsePositives) { Filter evenFilter = getSymmetricFilter(filter.getClass(), numInsertions, hashId); // add all even for (int i = 0; i < numInsertions; i += 2) { evenFilter.add(new Key(Integer.toString(i).getBytes())); } // add all odd for (int i = 1; i < numInsertions; i += 2) { filter.add(new Key(Integer.toString(i).getBytes())); } // union odd with even filter.or(evenFilter); // check on present all key for (int i = 0; i < numInsertions; i++) { Assert.assertTrue(" filter might contains " + i, filter.membershipTest(new Key(Integer.toString(i).getBytes()))); } } });
@Override public void assertWhat(Filter filter, int numInsertions, int hashId, ImmutableSet<Integer> falsePositives) { Filter evenFilter = getSymmetricFilter(filter.getClass(), numInsertions, hashId); // add all even for (int i = 0; i < numInsertions; i += 2) { evenFilter.add(new Key(Integer.toString(i).getBytes())); } // add all odd for (int i = 1; i < numInsertions; i += 2) { filter.add(new Key(Integer.toString(i).getBytes())); } // union odd with even filter.or(evenFilter); // check on present all key for (int i = 0; i < numInsertions; i++) { Assert.assertTrue(" filter might contains " + i, filter.membershipTest(new Key(Integer.toString(i).getBytes()))); } } });
@Override public void assertWhat(Filter filter, int numInsertions, int hashId, ImmutableSet<Integer> falsePositives) { filter.add(keys); assertTrue(" might contain key error ", filter.membershipTest(new Key("100".getBytes()))); assertTrue(" might contain key error ", filter.membershipTest(new Key("200".getBytes()))); filter.add(keys.toArray(new Key[] {})); assertTrue(" might contain key error ", filter.membershipTest(new Key("100".getBytes()))); assertTrue(" might contain key error ", filter.membershipTest(new Key("200".getBytes()))); filter.add(new AbstractCollection<Key>() { @Override public Iterator<Key> iterator() { return keys.iterator(); } @Override public int size() { return keys.size(); } }); assertTrue(" might contain key error ", filter.membershipTest(new Key("100".getBytes()))); assertTrue(" might contain key error ", filter.membershipTest(new Key("200".getBytes()))); } }),
@Override public void assertWhat(Filter filter, int numInsertions, int hashId, ImmutableSet<Integer> falsePositives) { int startIntersection = numInsertions - (numInsertions - 100); int endIntersection = numInsertions - 100; Filter partialFilter = getSymmetricFilter(filter.getClass(), numInsertions, hashId); for (int i = 0; i < numInsertions; i++) { String digit = Integer.toString(i); filter.add(new Key(digit.getBytes())); if (i >= startIntersection && i <= endIntersection) { partialFilter.add(new Key(digit.getBytes())); } } // do logic AND filter.and(partialFilter); for (int i = 0; i < numInsertions; i++) { if (i >= startIntersection && i <= endIntersection) { Assert.assertTrue(" filter might contains " + i, filter.membershipTest(new Key(Integer.toString(i).getBytes()))); } } } }),
@Override public void assertWhat(Filter filter, int numInsertions, int hashId, ImmutableSet<Integer> falsePositives) { int startIntersection = numInsertions - (numInsertions - 100); int endIntersection = numInsertions - 100; Filter partialFilter = getSymmetricFilter(filter.getClass(), numInsertions, hashId); for (int i = 0; i < numInsertions; i++) { String digit = Integer.toString(i); filter.add(new Key(digit.getBytes())); if (i >= startIntersection && i <= endIntersection) { partialFilter.add(new Key(digit.getBytes())); } } // do logic AND filter.and(partialFilter); for (int i = 0; i < numInsertions; i++) { if (i >= startIntersection && i <= endIntersection) { Assert.assertTrue(" filter might contains " + i, filter.membershipTest(new Key(Integer.toString(i).getBytes()))); } } } }),
filter.membershipTest(new Key(Integer.toString(i).getBytes()))); filter.membershipTest(new Key(Integer.toString(i).getBytes())));
filter.membershipTest(new Key(Integer.toString(i).getBytes()))); filter.membershipTest(new Key(Integer.toString(i).getBytes())));
@Override public void assertWhat(Filter filter, int numInsertions, int hashId, ImmutableSet<Integer> falsePositives) { final Random rnd = new Random(); final DataOutputBuffer out = new DataOutputBuffer(); final DataInputBuffer in = new DataInputBuffer(); try { Filter tempFilter = getSymmetricFilter(filter.getClass(), numInsertions, hashId); ImmutableList.Builder<Integer> blist = ImmutableList.builder(); for (int i = 0; i < slotSize; i++) { blist.add(rnd.nextInt(numInsertions * 2)); } ImmutableList<Integer> list = blist.build(); // mark bits for later check for (Integer slot : list) { filter.add(new Key(String.valueOf(slot).getBytes())); } filter.write(out); in.reset(out.getData(), out.getLength()); tempFilter.readFields(in); for (Integer slot : list) { assertTrue("read/write mask check filter error on " + slot, filter.membershipTest(new Key(String.valueOf(slot).getBytes()))); } } catch (IOException ex) { Assert.fail("error ex !!!" + ex); } } }),
@Override public void assertWhat(Filter filter, int numInsertions, int hashId, ImmutableSet<Integer> falsePositives) { final Random rnd = new Random(); final DataOutputBuffer out = new DataOutputBuffer(); final DataInputBuffer in = new DataInputBuffer(); try { Filter tempFilter = getSymmetricFilter(filter.getClass(), numInsertions, hashId); ImmutableList.Builder<Integer> blist = ImmutableList.builder(); for (int i = 0; i < slotSize; i++) { blist.add(rnd.nextInt(numInsertions * 2)); } ImmutableList<Integer> list = blist.build(); // mark bits for later check for (Integer slot : list) { filter.add(new Key(String.valueOf(slot).getBytes())); } filter.write(out); in.reset(out.getData(), out.getLength()); tempFilter.readFields(in); for (Integer slot : list) { assertTrue("read/write mask check filter error on " + slot, filter.membershipTest(new Key(String.valueOf(slot).getBytes()))); } } catch (IOException ex) { Assert.fail("error ex !!!" + ex); } } }),