Example #1
0
        private void CheckOnAbsentFalsePositive(int hashId, int numInsertions, RetouchedBloomFilter
                                                filter, TestBloomFilters.Digits digits, short removeSchema)
        {
            AbstractCollection <Key> falsePositives = FalsePositiveUnder1000[hashId];

            if (falsePositives == null)
            {
                NUnit.Framework.Assert.Fail(string.Format("false positives for hash %d not founded"
                                                          , hashId));
            }
            filter.AddFalsePositive(falsePositives);
            for (int i = digits.GetStart(); i < numInsertions; i += 2)
            {
                filter.Add(new Key(Runtime.GetBytesForString(Extensions.ToString(
                                                                 i))));
            }
            foreach (Key key in falsePositives)
            {
                filter.SelectiveClearing(key, removeSchema);
            }
            for (int i_1 = 1 - digits.GetStart(); i_1 < numInsertions; i_1 += 2)
            {
                NUnit.Framework.Assert.IsFalse(" testRetouchedBloomFilterAddFalsePositive error "
                                               + i_1, filter.MembershipTest(new Key(Runtime.GetBytesForString(Extensions.ToString
                                                                                                                  (i_1)))));
            }
        }
Example #2
0
        public virtual void TestRetouchedBloomFilterSpecific()
        {
            int numInsertions         = 1000;
            int hashFunctionNumber    = 5;
            ImmutableSet <int> hashes = ImmutableSet.Of(Org.Apache.Hadoop.Util.Hash.Hash.MurmurHash
                                                        , Org.Apache.Hadoop.Util.Hash.Hash.JenkinsHash);

            foreach (int hashId in hashes)
            {
                RetouchedBloomFilter filter = new RetouchedBloomFilter(bitSize, hashFunctionNumber
                                                                       , hashId);
                CheckOnAbsentFalsePositive(hashId, numInsertions, filter, TestBloomFilters.Digits
                                           .Odd, RemoveScheme.MaximumFp);
                filter.And(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId));
                CheckOnAbsentFalsePositive(hashId, numInsertions, filter, TestBloomFilters.Digits
                                           .Even, RemoveScheme.MaximumFp);
                filter.And(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId));
                CheckOnAbsentFalsePositive(hashId, numInsertions, filter, TestBloomFilters.Digits
                                           .Odd, RemoveScheme.MinimumFn);
                filter.And(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId));
                CheckOnAbsentFalsePositive(hashId, numInsertions, filter, TestBloomFilters.Digits
                                           .Even, RemoveScheme.MinimumFn);
                filter.And(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId));
                CheckOnAbsentFalsePositive(hashId, numInsertions, filter, TestBloomFilters.Digits
                                           .Odd, RemoveScheme.Ratio);
                filter.And(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId));
                CheckOnAbsentFalsePositive(hashId, numInsertions, filter, TestBloomFilters.Digits
                                           .Even, RemoveScheme.Ratio);
                filter.And(new RetouchedBloomFilter(bitSize, hashFunctionNumber, hashId));
            }
        }