public override void AssertWhat(Filter filter, int numInsertions, int hashId, ImmutableSet <int> falsePositives) { Filter evenFilter = BloomFilterCommonTester.GetSymmetricFilter(filter.GetType(), numInsertions, hashId); // add all even for (int i = 0; i < numInsertions; i += 2) { evenFilter.Add(new Key(Runtime.GetBytesForString(Extensions.ToString (i)))); } // add all odd for (int i_1 = 1; i_1 < numInsertions; i_1 += 2) { filter.Add(new Key(Runtime.GetBytesForString(Extensions.ToString( i_1)))); } // union odd with even filter.Or(evenFilter); // check on present all key for (int i_2 = 0; i_2 < numInsertions; i_2++) { Assert.True(" filter might contains " + i_2, filter.MembershipTest (new Key(Runtime.GetBytesForString(Extensions.ToString(i_2))))); } }
public virtual void TestCountingBloomFilter() { int hashId = Org.Apache.Hadoop.Util.Hash.Hash.JenkinsHash; CountingBloomFilter filter = new CountingBloomFilter(bitSize, hashFunctionNumber, hashId); Key key = new Key(new byte[] { 48, 48 }); filter.Add(key); Assert.True("CountingBloomFilter.membership error ", filter.MembershipTest (key)); Assert.True("CountingBloomFilter.approximateCount error", filter .ApproximateCount(key) == 1); filter.Add(key); Assert.True("CountingBloomFilter.approximateCount error", filter .ApproximateCount(key) == 2); filter.Delete(key); Assert.True("CountingBloomFilter.membership error ", filter.MembershipTest (key)); filter.Delete(key); NUnit.Framework.Assert.IsFalse("CountingBloomFilter.membership error ", filter.MembershipTest (key)); Assert.True("CountingBloomFilter.approximateCount error", filter .ApproximateCount(key) == 0); BloomFilterCommonTester.Of(hashId, numInsertions).WithFilterInstance(filter).WithTestCases (ImmutableSet.Of(BloomFilterCommonTester.BloomFilterTestStrategy.KeyTestStrategy , BloomFilterCommonTester.BloomFilterTestStrategy.AddKeysStrategy, BloomFilterCommonTester.BloomFilterTestStrategy .ExceptionsCheckStrategy, BloomFilterCommonTester.BloomFilterTestStrategy.OddEvenAbsentStrategy , BloomFilterCommonTester.BloomFilterTestStrategy.WriteReadStrategy, BloomFilterCommonTester.BloomFilterTestStrategy .FilterOrStrategy, BloomFilterCommonTester.BloomFilterTestStrategy.FilterXorStrategy )).Test(); }
public override void AssertWhat(Filter filter, int numInsertions, int hashId, ImmutableSet <int> falsePositives) { int startIntersection = numInsertions - (numInsertions - 100); int endIntersection = numInsertions - 100; Filter partialFilter = BloomFilterCommonTester.GetSymmetricFilter(filter.GetType( ), numInsertions, hashId); for (int i = 0; i < numInsertions; i++) { string digit = Extensions.ToString(i); filter.Add(new Key(Runtime.GetBytesForString(digit))); if (i >= startIntersection && i <= endIntersection) { partialFilter.Add(new Key(Runtime.GetBytesForString(digit))); } } // do logic AND filter.And(partialFilter); for (int i_1 = 0; i_1 < numInsertions; i_1++) { if (i_1 >= startIntersection && i_1 <= endIntersection) { Assert.True(" filter might contains " + i_1, filter.MembershipTest (new Key(Runtime.GetBytesForString(Extensions.ToString(i_1))))); } } }
public virtual void TestDynamicBloomFilter() { int hashId = Org.Apache.Hadoop.Util.Hash.Hash.JenkinsHash; Filter filter = new DynamicBloomFilter(bitSize, hashFunctionNumber, Org.Apache.Hadoop.Util.Hash.Hash .JenkinsHash, 3); BloomFilterCommonTester.Of(hashId, numInsertions).WithFilterInstance(filter).WithTestCases (ImmutableSet.Of(BloomFilterCommonTester.BloomFilterTestStrategy.KeyTestStrategy , BloomFilterCommonTester.BloomFilterTestStrategy.AddKeysStrategy, BloomFilterCommonTester.BloomFilterTestStrategy .ExceptionsCheckStrategy, BloomFilterCommonTester.BloomFilterTestStrategy.WriteReadStrategy , BloomFilterCommonTester.BloomFilterTestStrategy.OddEvenAbsentStrategy)).Test(); NUnit.Framework.Assert.IsNotNull("testDynamicBloomFilter error ", filter.ToString ()); }
public virtual void TestFiltersWithMurmurHash() { int hashId = Org.Apache.Hadoop.Util.Hash.Hash.MurmurHash; BloomFilterCommonTester.Of(hashId, numInsertions).WithFilterInstance(new BloomFilter (bitSize, hashFunctionNumber, hashId)).WithFilterInstance(new RetouchedBloomFilter (bitSize, hashFunctionNumber, hashId)).WithTestCases(ImmutableSet.Of(BloomFilterCommonTester.BloomFilterTestStrategy .KeyTestStrategy, BloomFilterCommonTester.BloomFilterTestStrategy.AddKeysStrategy , BloomFilterCommonTester.BloomFilterTestStrategy.ExceptionsCheckStrategy, BloomFilterCommonTester.BloomFilterTestStrategy .OddEvenAbsentStrategy, BloomFilterCommonTester.BloomFilterTestStrategy.WriteReadStrategy , BloomFilterCommonTester.BloomFilterTestStrategy.FilterOrStrategy, BloomFilterCommonTester.BloomFilterTestStrategy .FilterAndStrategy, BloomFilterCommonTester.BloomFilterTestStrategy.FilterXorStrategy )).Test(); }
public override void AssertWhat(Filter filter, int numInsertions, int hashId, ImmutableSet <int> falsePositives) { Filter symmetricFilter = BloomFilterCommonTester.GetSymmetricFilter(filter.GetType (), numInsertions, hashId); try { // 0 xor 0 -> 0 filter.Xor(symmetricFilter); // check on present all key for (int i = 0; i < numInsertions; i++) { NUnit.Framework.Assert.IsFalse(" filter might contains " + i, filter.MembershipTest (new Key(Runtime.GetBytesForString(Extensions.ToString(i))))); } // add all even keys for (int i_1 = 0; i_1 < numInsertions; i_1 += 2) { filter.Add(new Key(Runtime.GetBytesForString(Extensions.ToString( i_1)))); } // add all odd keys for (int i_2 = 0; i_2 < numInsertions; i_2 += 2) { symmetricFilter.Add(new Key(Runtime.GetBytesForString(Extensions.ToString (i_2)))); } filter.Xor(symmetricFilter); // 1 xor 1 -> 0 // check on absent all key for (int i_3 = 0; i_3 < numInsertions; i_3++) { NUnit.Framework.Assert.IsFalse(" filter might not contains " + i_3, filter.MembershipTest (new Key(Runtime.GetBytesForString(Extensions.ToString(i_3))))); } } catch (NotSupportedException) { // not all Filter's implements this method return; } }
public override void AssertWhat(Filter filter, int numInsertions, int hashId, ImmutableSet <int> falsePositives) { Random rnd = new Random(); DataOutputBuffer @out = new DataOutputBuffer(); DataInputBuffer @in = new DataInputBuffer(); try { Filter tempFilter = BloomFilterCommonTester.GetSymmetricFilter(filter.GetType(), numInsertions, hashId); ImmutableList.Builder <int> blist = ImmutableList.Builder(); for (int i = 0; i < this.slotSize; i++) { blist.Add(rnd.Next(numInsertions * 2)); } ImmutableList <int> list = ((ImmutableList <int>)blist.Build()); // mark bits for later check foreach (int slot in list) { filter.Add(new Key(Runtime.GetBytesForString(slot.ToString()))); } filter.Write(@out); @in.Reset(@out.GetData(), @out.GetLength()); tempFilter.ReadFields(@in); foreach (int slot_1 in list) { Assert.True("read/write mask check filter error on " + slot_1, filter.MembershipTest(new Key(Runtime.GetBytesForString(slot_1.ToString( ))))); } } catch (IOException ex) { NUnit.Framework.Assert.Fail("error ex !!!" + ex); } }
public TestBloomFilters() { bitSize = BloomFilterCommonTester.OptimalNumOfBits(numInsertions, 0.03); }