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)))));
                    }
                }
示例#2
0
        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)))));
                        }
                    }
                }
示例#4
0
        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
                                                 ());
        }
示例#5
0
        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);
                    }
                }
示例#8
0
 public TestBloomFilters()
 {
     bitSize = BloomFilterCommonTester.OptimalNumOfBits(numInsertions, 0.03);
 }