public void TestBloom64K() { var f = new BloomFilter64(100, 0.1); var k = f.K(); Assert.AreEqual(4u, k); }
public static CollectionOfBloomFilters Load(Mode mode, TransactionOperationContext indexContext) { var tree = indexContext.Transaction.InnerTransaction.CreateTree("BloomFilters"); var count = GetCount(tree, ref mode); var collection = new CollectionOfBloomFilters(mode, tree, indexContext); for (var i = 0; i < count; i++) { BloomFilter filter = null; switch (mode) { case Mode.X64: filter = new BloomFilter64(i, tree, writeable: false, allocator: indexContext.Allocator); break; case Mode.X86: filter = new BloomFilter32(i, tree, writeable: false, allocator: indexContext.Allocator); break; } collection.AddFilter(filter); } collection.Initialize(); return(collection); }
public void TestBloomCapacity() { var f = new BloomFilter64(100, 0.1); var capacity = f.Capacity(); Assert.AreEqual(480u, capacity); }
public void Testinitialize() { n = 100000; f = new BloomFilter64(100000, 0.1); data = new byte[n][]; for (int i = 0; i < n; i++) { data[i] = Encoding.ASCII.GetBytes(i.ToString()); } }
public void TestBloom64FillRatio() { var f = new BloomFilter64(100, 0.1); f.Add(A_BYTES); f.Add(B_BYTES); f.Add(C_BYTES); var ratio = f.FillRatio(); Assert.AreEqual(0.025, ratio); }
public void TestBloom64Count() { var f = new BloomFilter64(100, 0.1); for (uint i = 0; i < 10; i++) { f.Add(Encoding.ASCII.GetBytes(i.ToString())); } var count = f.Count(); Assert.AreEqual(10u, count); }
public static CollectionOfBloomFilters Load(Mode mode, TransactionOperationContext indexContext) { var isNew = false; var tree = indexContext.Transaction.InnerTransaction.ReadTree(BloomFiltersTreeName); if (tree == null) { isNew = true; tree = indexContext.Transaction.InnerTransaction.CreateTree(BloomFiltersTreeName); } var version = GetVersion(tree, isNew); var count = GetCount(tree, ref mode); if (count == _consumed) { Debug.Assert(mode == Mode.X86, "BloomFilters in x64 mode got consumed, should not happen and likely a bug!"); var consumedCollection = new CollectionOfBloomFilters(mode, version, tree: null, context: null) { Consumed = true }; return(consumedCollection); } var collection = new CollectionOfBloomFilters(mode, version, tree, indexContext); for (var i = 0; i < count; i++) { BloomFilter filter = null; switch (mode) { case Mode.X64: filter = new BloomFilter64(i, version, tree, writable: false, allocator: indexContext.Allocator); break; case Mode.X86: filter = new BloomFilter32(i, version, tree, writable: false, allocator: indexContext.Allocator); break; } collection.AddFilter(filter); } collection.Initialize(); return(collection); }
public void TestBloom64EstimatedFillRatio() { var f = new BloomFilter64(100, 0.5); for (uint i = 0; i < 100; i++) { f.Add(Encoding.ASCII.GetBytes(i.ToString())); } var ratio = f.EstimatedFillRatio(); if (ratio > 0.5) { Assert.Fail("Expected less than or equal to 0.5, got {0}", ratio); } }
public void TestBloom64Reset() { var f = new BloomFilter64(100, 0.1); for (int i = 0; i < 1000; i++) { f.Add(Encoding.ASCII.GetBytes(i.ToString())); } var resetF = f.Reset(); Assert.AreSame(f, resetF, "Returned BloomFilter64 should be the same instance"); for (uint i = 0; i < f.Buckets.count; i++) { if (f.Buckets.Get(i) != 0) { Assert.Fail("Expected all bits to be unset"); } } }
public void TestCleanup() { f = null; n = 0; data = null; }
public void TestBloom64TestAndAdd() { var f = new BloomFilter64(100, 0.01); // 'a' is not in the filter. if (f.Test(A_BYTES)) { Assert.Fail("'a' should not be a member"); } var addedF = f.Add(A_BYTES); Assert.AreSame(f, addedF, "Returned BloomFilter64 should be the same instance"); // 'a' is now in the filter. if (!f.Test(A_BYTES)) { Assert.Fail("'a' should be a member"); } // 'a' is still in the filter. if (!f.TestAndAdd(A_BYTES)) { Assert.Fail("'a' should be a member"); } // 'b' is not in the filter. if (f.TestAndAdd(B_BYTES)) { Assert.Fail("'b' should not be a member"); } // 'a' is still in the filter. if (!f.Test(A_BYTES)) { Assert.Fail("'a' should be a member"); } // 'b' is now in the filter. if (!f.Test(B_BYTES)) { Assert.Fail("'b' should be a member"); } // 'c' is not in the filter. if (f.Test(C_BYTES)) { Assert.Fail("'c' should not be a member"); } for (int i = 0; i < 1000000; i++) { f.TestAndAdd(Encoding.ASCII.GetBytes(i.ToString())); } // 'x' should be a false positive. if (!f.Test(X_BYTES)) { Assert.Fail("'x' should be a member"); } }