From d939c2bdfc045132ce71a59572399bedbf0f84a2 Mon Sep 17 00:00:00 2001 From: Bernhard Amann Date: Mon, 13 May 2013 22:11:17 -0700 Subject: [PATCH] add tests for sampler --- .../frameworks/sumstats/plugins/sample.bro | 1 + .../manager-1..stdout | 12 ++ .../.stdout | 0 .../frameworks/sumstats/sample-cluster.bro | 111 ++++++++++++++++++ .../sumstats/{last.bro => sample.bro} | 0 5 files changed, 124 insertions(+) create mode 100644 testing/btest/Baseline/scripts.base.frameworks.sumstats.sample-cluster/manager-1..stdout rename testing/btest/Baseline/{scripts.base.frameworks.sumstats.last => scripts.base.frameworks.sumstats.sample}/.stdout (100%) create mode 100644 testing/btest/scripts/base/frameworks/sumstats/sample-cluster.bro rename testing/btest/scripts/base/frameworks/sumstats/{last.bro => sample.bro} (100%) diff --git a/scripts/base/frameworks/sumstats/plugins/sample.bro b/scripts/base/frameworks/sumstats/plugins/sample.bro index b04d2cf57c..12394fa0e9 100644 --- a/scripts/base/frameworks/sumstats/plugins/sample.bro +++ b/scripts/base/frameworks/sumstats/plugins/sample.bro @@ -67,6 +67,7 @@ hook compose_resultvals_hook(result: ResultVal, rv1: ResultVal, rv2: ResultVal) } local num_samples = rv1$num_samples; + result$num_samples = num_samples; if ( |rv1$sample_vector| > num_samples || |rv2$sample_vector| > num_samples ) { diff --git a/testing/btest/Baseline/scripts.base.frameworks.sumstats.sample-cluster/manager-1..stdout b/testing/btest/Baseline/scripts.base.frameworks.sumstats.sample-cluster/manager-1..stdout new file mode 100644 index 0000000000..579bd109d9 --- /dev/null +++ b/testing/btest/Baseline/scripts.base.frameworks.sumstats.sample-cluster/manager-1..stdout @@ -0,0 +1,12 @@ +6.5.4.3 +[[num=2, dbl=, str=], [num=5, dbl=, str=]] +2 +10.10.10.10 +[[num=5, dbl=, str=]] +1 +1.2.3.4 +[[num=5, dbl=, str=], [num=22, dbl=, str=], [num=94, dbl=, str=], [num=91, dbl=, str=], [num=52, dbl=, str=]] +0 +7.2.1.5 +[[num=1, dbl=, str=], [num=91, dbl=, str=]] +2 diff --git a/testing/btest/Baseline/scripts.base.frameworks.sumstats.last/.stdout b/testing/btest/Baseline/scripts.base.frameworks.sumstats.sample/.stdout similarity index 100% rename from testing/btest/Baseline/scripts.base.frameworks.sumstats.last/.stdout rename to testing/btest/Baseline/scripts.base.frameworks.sumstats.sample/.stdout diff --git a/testing/btest/scripts/base/frameworks/sumstats/sample-cluster.bro b/testing/btest/scripts/base/frameworks/sumstats/sample-cluster.bro new file mode 100644 index 0000000000..c83cf7028e --- /dev/null +++ b/testing/btest/scripts/base/frameworks/sumstats/sample-cluster.bro @@ -0,0 +1,111 @@ +# @TEST-SERIALIZE: comm +# +# @TEST-EXEC: btest-bg-run manager-1 BROPATH=$BROPATH:.. CLUSTER_NODE=manager-1 bro %INPUT +# @TEST-EXEC: sleep 1 +# @TEST-EXEC: btest-bg-run worker-1 BROPATH=$BROPATH:.. CLUSTER_NODE=worker-1 bro %INPUT +# @TEST-EXEC: btest-bg-run worker-2 BROPATH=$BROPATH:.. CLUSTER_NODE=worker-2 bro %INPUT +# @TEST-EXEC: btest-bg-wait 15 + +# @TEST-EXEC: btest-diff manager-1/.stdout + +@TEST-START-FILE cluster-layout.bro +redef Cluster::nodes = { + ["manager-1"] = [$node_type=Cluster::MANAGER, $ip=127.0.0.1, $p=37757/tcp, $workers=set("worker-1", "worker-2")], + ["worker-1"] = [$node_type=Cluster::WORKER, $ip=127.0.0.1, $p=37760/tcp, $manager="manager-1", $interface="eth0"], + ["worker-2"] = [$node_type=Cluster::WORKER, $ip=127.0.0.1, $p=37761/tcp, $manager="manager-1", $interface="eth1"], +}; +@TEST-END-FILE + +redef Log::default_rotation_interval = 0secs; + +global n = 0; + +event bro_init() &priority=5 + { + local r1: SumStats::Reducer = [$stream="test", $apply=set(SumStats::SAMPLE), $num_samples=5]; + SumStats::create([$epoch=5secs, + $reducers=set(r1), + $epoch_finished(rt: SumStats::ResultTable) = + { + for ( key in rt ) + { + print key$host; + local r = rt[key]["test"]; + print r$sample_vector; + print r$sample_elements; + } + + terminate(); + }]); + } + +event remote_connection_closed(p: event_peer) + { + terminate(); + } + +global ready_for_data: event(); +redef Cluster::manager2worker_events += /^ready_for_data$/; + +event ready_for_data() + { + if ( Cluster::node == "worker-1" ) + { + SumStats::observe("test", [$host=1.2.3.4], [$num=5]); + SumStats::observe("test", [$host=1.2.3.4], [$num=22]); + SumStats::observe("test", [$host=1.2.3.4], [$num=94]); + SumStats::observe("test", [$host=1.2.3.4], [$num=50]); + # I checked the random numbers. seems legit. + SumStats::observe("test", [$host=1.2.3.4], [$num=51]); + SumStats::observe("test", [$host=1.2.3.4], [$num=61]); + SumStats::observe("test", [$host=1.2.3.4], [$num=61]); + SumStats::observe("test", [$host=1.2.3.4], [$num=71]); + SumStats::observe("test", [$host=1.2.3.4], [$num=81]); + SumStats::observe("test", [$host=1.2.3.4], [$num=91]); + SumStats::observe("test", [$host=1.2.3.4], [$num=101]); + SumStats::observe("test", [$host=1.2.3.4], [$num=111]); + SumStats::observe("test", [$host=1.2.3.4], [$num=121]); + SumStats::observe("test", [$host=1.2.3.4], [$num=131]); + SumStats::observe("test", [$host=1.2.3.4], [$num=141]); + SumStats::observe("test", [$host=1.2.3.4], [$num=151]); + SumStats::observe("test", [$host=1.2.3.4], [$num=161]); + SumStats::observe("test", [$host=1.2.3.4], [$num=171]); + SumStats::observe("test", [$host=1.2.3.4], [$num=181]); + SumStats::observe("test", [$host=1.2.3.4], [$num=191]); + + SumStats::observe("test", [$host=6.5.4.3], [$num=2]); + SumStats::observe("test", [$host=7.2.1.5], [$num=1]); + } + if ( Cluster::node == "worker-2" ) + { + SumStats::observe("test", [$host=1.2.3.4], [$num=75]); + SumStats::observe("test", [$host=1.2.3.4], [$num=30]); + SumStats::observe("test", [$host=1.2.3.4], [$num=3]); + SumStats::observe("test", [$host=1.2.3.4], [$num=57]); + SumStats::observe("test", [$host=1.2.3.4], [$num=52]); + SumStats::observe("test", [$host=1.2.3.4], [$num=61]); + SumStats::observe("test", [$host=1.2.3.4], [$num=95]); + SumStats::observe("test", [$host=1.2.3.4], [$num=95]); + SumStats::observe("test", [$host=1.2.3.4], [$num=95]); + SumStats::observe("test", [$host=1.2.3.4], [$num=95]); + SumStats::observe("test", [$host=1.2.3.4], [$num=95]); + SumStats::observe("test", [$host=1.2.3.4], [$num=95]); + SumStats::observe("test", [$host=1.2.3.4], [$num=95]); + SumStats::observe("test", [$host=1.2.3.4], [$num=95]); + SumStats::observe("test", [$host=6.5.4.3], [$num=5]); + SumStats::observe("test", [$host=7.2.1.5], [$num=91]); + SumStats::observe("test", [$host=10.10.10.10], [$num=5]); + } + } + +@if ( Cluster::local_node_type() == Cluster::MANAGER ) + +global peer_count = 0; +event remote_connection_handshake_done(p: event_peer) &priority=-5 + { + ++peer_count; + if ( peer_count == 2 ) + event ready_for_data(); + } + +@endif diff --git a/testing/btest/scripts/base/frameworks/sumstats/last.bro b/testing/btest/scripts/base/frameworks/sumstats/sample.bro similarity index 100% rename from testing/btest/scripts/base/frameworks/sumstats/last.bro rename to testing/btest/scripts/base/frameworks/sumstats/sample.bro