Merge branch 'topic/bernhard/hyperloglog' into topic/bernhard/hyperloglog-with-measurement

This commit is contained in:
Bernhard Amann 2013-04-08 09:45:10 +02:00
commit 25c0ffc3ab
7 changed files with 298 additions and 361 deletions

View file

@ -0,0 +1,23 @@
This value should be around 13:
13.00129
This value should be about 12:
12.001099
This value should be around 0:
0.0
This value should be around 13:
13.00129
This value should be 0:
0.0
This value should be true:
T
This value should be about 12:
12.001099
12.001099
This value should be true:
T
This value should be about 21:
21.003365
This value should be about 13:
13.00129
This value should be about 12:
12.001099

View file

@ -4,135 +4,78 @@
event bro_init()
{
local m1 = "measurement1";
local m2 = "measurement2";
print "This value should be true:";
print hll_cardinality_init(0.01, m1);
hll_cardinality_init(0.01, m2);
print "This value should be false:";
print hll_cardinality_init(0.02, "measurement1");
local c1 = hll_cardinality_init(0.01);
local c2 = hll_cardinality_init(0.01);
local add1 = "hey";
local add2 = "hi";
local add3 = 123;
hll_cardinality_add(add1, m1);
hll_cardinality_add(add2, m1);
hll_cardinality_add(add3, m1);
hll_cardinality_add("a", m1);
hll_cardinality_add("b", m1);
hll_cardinality_add("c", m1);
hll_cardinality_add("d", m1);
hll_cardinality_add("e", m1);
hll_cardinality_add("f", m1);
hll_cardinality_add("g", m1);
hll_cardinality_add("h", m1);
hll_cardinality_add("i", m1);
hll_cardinality_add(c1, add1);
hll_cardinality_add(c1, add2);
hll_cardinality_add(c1, add3);
hll_cardinality_add(c1, "a");
hll_cardinality_add(c1, "b");
hll_cardinality_add(c1, "c");
hll_cardinality_add(c1, "d");
hll_cardinality_add(c1, "e");
hll_cardinality_add(c1, "f");
hll_cardinality_add(c1, "g");
hll_cardinality_add(c1, "h");
hll_cardinality_add(c1, "i");
hll_cardinality_add(c1, "j");
print "This value should be true:";
print hll_cardinality_add("j", m1);
print "This value should be false:";
print hll_cardinality_add("asdf", "something");
hll_cardinality_add(add1, m2);
hll_cardinality_add(add2, m2);
hll_cardinality_add(add3, m2);
hll_cardinality_add(1, m2);
hll_cardinality_add("b", m2);
hll_cardinality_add(2, m2);
hll_cardinality_add(3, m2);
hll_cardinality_add(4, m2);
hll_cardinality_add(5, m2);
hll_cardinality_add(6, m2);
hll_cardinality_add(7, m2);
hll_cardinality_add(8, m2);
hll_cardinality_add(c2, add1);
hll_cardinality_add(c2, add2);
hll_cardinality_add(c2, add3);
hll_cardinality_add(c2, 1);
hll_cardinality_add(c2, "b");
hll_cardinality_add(c2, 2);
hll_cardinality_add(c2, 3);
hll_cardinality_add(c2, 4);
hll_cardinality_add(c2, 5);
hll_cardinality_add(c2, 6);
hll_cardinality_add(c2, 7);
hll_cardinality_add(c2, 8);
print "This value should be around 13:";
print hll_cardinality_estimate("measurement1");
print hll_cardinality_estimate(c1);
print "This value should be -1.0:";
print hll_cardinality_estimate("m2");
print "This value should be about 12:";
print hll_cardinality_estimate(c2);
hll_cardinality_init(0.02, "m2");
local m2 = hll_cardinality_init(0.02);
print "This value should be around 0:";
print hll_cardinality_estimate("m2");
print hll_cardinality_estimate(m2);
print "This value should be true:";
print hll_cardinality_destroy("m2");
print "This value should be false:";
print hll_cardinality_destroy("m2");
print "This value should be -1.0:";
print hll_cardinality_estimate("m2");
print "This next thing should be false:";
print hll_cardinality_clone("m3", "m2");
print "This next thing should be true:";
print hll_cardinality_clone("measurement3", "measurement1");
local c3 = hll_cardinality_clone(c1);
print "This value should be around 13:";
print hll_cardinality_estimate("measurement3");
print hll_cardinality_estimate(c3);
hll_cardinality_destroy("measurement3");
print "This next thing should be equal to -1.0:";
print hll_cardinality_estimate("measurement3");
print "This value should be around 13:";
print hll_cardinality_estimate("measurement1");
c3 = hll_cardinality_init(0.01);
print "This value should be 0:";
print hll_cardinality_estimate(c3);
print "This value should be true:";
print hll_cardinality_merge_into("measurement3", "measurement2");
print "This value should be false:";
print hll_cardinality_merge_into("measurement4", "measurement6");
print hll_cardinality_merge_into(c3, c2);
print "This value should be about 12:";
print hll_cardinality_estimate("measurement3");
print "This value should be false:";
print hll_cardinality_merge_into("measurement3", "measurement15");
print "This value should be about 12:";
print hll_cardinality_estimate("measurement3");
print hll_cardinality_estimate(c2);
print hll_cardinality_estimate(c3);
print "This value should be true:";
print hll_cardinality_merge_into("measurement2", "measurement1");
print hll_cardinality_merge_into(c2, c1);
print "This value should be about 21:";
print hll_cardinality_estimate("measurement2");
print hll_cardinality_estimate(c2);
print "This value should be about 13:";
print hll_cardinality_estimate("measurement1");
print hll_cardinality_estimate(c1);
print "This value should be about 12:";
print hll_cardinality_estimate("measurement3");
print hll_cardinality_estimate(c3);
local keys = hll_cardinality_keys();
for(key in keys)
{
print "The key is:";
print key;
print "The value is:";
print hll_cardinality_estimate(key);
}
}
#function hll_cardinality_keys%(%): bool
# %{
#// TableVal* a = new TableVal(string_set);
#// map<BroString, CardinalityCounter*>::iterator it;
#
#// for(it = hll_counters.begin() ; it != hll_counters.end(); it++)
#// {
#// a->Assign((*it).first);
#// }
#// return a;
# return new Val(1, TYPE_BOOL);