mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
btest/cluster: Add broker logging test for sanity
Not very related to the PR, but created to help provoke an issue with the broker changes.
This commit is contained in:
parent
7acedd18d0
commit
f2e60fdaff
3 changed files with 326 additions and 0 deletions
12
testing/btest/Baseline/cluster.broker.logging/manager.out
Normal file
12
testing/btest/Baseline/cluster.broker.logging/manager.out
Normal file
|
@ -0,0 +1,12 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
A zeek_init, manager
|
||||
B nodes_up, 2
|
||||
B nodes_up, 3
|
||||
B nodes_up, 4
|
||||
B nodes_up, 5
|
||||
C cluster_started
|
||||
D send_finish
|
||||
E node_down, logger
|
||||
E node_down, proxy
|
||||
E node_down, worker-1
|
||||
E node_down, worker-2
|
|
@ -0,0 +1,166 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
logger 1
|
||||
logger 10
|
||||
logger 11
|
||||
logger 12
|
||||
logger 13
|
||||
logger 14
|
||||
logger 15
|
||||
logger 16
|
||||
logger 17
|
||||
logger 18
|
||||
logger 19
|
||||
logger 2
|
||||
logger 20
|
||||
logger 21
|
||||
logger 22
|
||||
logger 23
|
||||
logger 24
|
||||
logger 25
|
||||
logger 26
|
||||
logger 27
|
||||
logger 28
|
||||
logger 29
|
||||
logger 3
|
||||
logger 30
|
||||
logger 31
|
||||
logger 32
|
||||
logger 33
|
||||
logger 4
|
||||
logger 5
|
||||
logger 6
|
||||
logger 7
|
||||
logger 8
|
||||
logger 9
|
||||
manager 1
|
||||
manager 10
|
||||
manager 11
|
||||
manager 12
|
||||
manager 13
|
||||
manager 14
|
||||
manager 15
|
||||
manager 16
|
||||
manager 17
|
||||
manager 18
|
||||
manager 19
|
||||
manager 2
|
||||
manager 20
|
||||
manager 21
|
||||
manager 22
|
||||
manager 23
|
||||
manager 24
|
||||
manager 25
|
||||
manager 26
|
||||
manager 27
|
||||
manager 28
|
||||
manager 29
|
||||
manager 3
|
||||
manager 30
|
||||
manager 31
|
||||
manager 32
|
||||
manager 33
|
||||
manager 4
|
||||
manager 5
|
||||
manager 6
|
||||
manager 7
|
||||
manager 8
|
||||
manager 9
|
||||
proxy 1
|
||||
proxy 10
|
||||
proxy 11
|
||||
proxy 12
|
||||
proxy 13
|
||||
proxy 14
|
||||
proxy 15
|
||||
proxy 16
|
||||
proxy 17
|
||||
proxy 18
|
||||
proxy 19
|
||||
proxy 2
|
||||
proxy 20
|
||||
proxy 21
|
||||
proxy 22
|
||||
proxy 23
|
||||
proxy 24
|
||||
proxy 25
|
||||
proxy 26
|
||||
proxy 27
|
||||
proxy 28
|
||||
proxy 29
|
||||
proxy 3
|
||||
proxy 30
|
||||
proxy 31
|
||||
proxy 32
|
||||
proxy 33
|
||||
proxy 4
|
||||
proxy 5
|
||||
proxy 6
|
||||
proxy 7
|
||||
proxy 8
|
||||
proxy 9
|
||||
worker-1 1
|
||||
worker-1 10
|
||||
worker-1 11
|
||||
worker-1 12
|
||||
worker-1 13
|
||||
worker-1 14
|
||||
worker-1 15
|
||||
worker-1 16
|
||||
worker-1 17
|
||||
worker-1 18
|
||||
worker-1 19
|
||||
worker-1 2
|
||||
worker-1 20
|
||||
worker-1 21
|
||||
worker-1 22
|
||||
worker-1 23
|
||||
worker-1 24
|
||||
worker-1 25
|
||||
worker-1 26
|
||||
worker-1 27
|
||||
worker-1 28
|
||||
worker-1 29
|
||||
worker-1 3
|
||||
worker-1 30
|
||||
worker-1 31
|
||||
worker-1 32
|
||||
worker-1 33
|
||||
worker-1 4
|
||||
worker-1 5
|
||||
worker-1 6
|
||||
worker-1 7
|
||||
worker-1 8
|
||||
worker-1 9
|
||||
worker-2 1
|
||||
worker-2 10
|
||||
worker-2 11
|
||||
worker-2 12
|
||||
worker-2 13
|
||||
worker-2 14
|
||||
worker-2 15
|
||||
worker-2 16
|
||||
worker-2 17
|
||||
worker-2 18
|
||||
worker-2 19
|
||||
worker-2 2
|
||||
worker-2 20
|
||||
worker-2 21
|
||||
worker-2 22
|
||||
worker-2 23
|
||||
worker-2 24
|
||||
worker-2 25
|
||||
worker-2 26
|
||||
worker-2 27
|
||||
worker-2 28
|
||||
worker-2 29
|
||||
worker-2 3
|
||||
worker-2 30
|
||||
worker-2 31
|
||||
worker-2 32
|
||||
worker-2 33
|
||||
worker-2 4
|
||||
worker-2 5
|
||||
worker-2 6
|
||||
worker-2 7
|
||||
worker-2 8
|
||||
worker-2 9
|
148
testing/btest/cluster/broker/logging.zeek
Normal file
148
testing/btest/cluster/broker/logging.zeek
Normal file
|
@ -0,0 +1,148 @@
|
|||
# @TEST-DOC: Startup a Broker cluster by hand, testing basic logging and node_up and node_down events on the manager.
|
||||
#
|
||||
# @TEST-PORT: BROKER_PORT1
|
||||
# @TEST-PORT: BROKER_PORT2
|
||||
# @TEST-PORT: BROKER_PORT3
|
||||
# @TEST-PORT: BROKER_PORT4
|
||||
# @TEST-PORT: BROKER_PORT5
|
||||
#
|
||||
# @TEST-EXEC: chmod +x ./check-test-log.sh
|
||||
#
|
||||
# @TEST-EXEC: btest-bg-run manager "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=manager zeek -b ../manager.zeek >out"
|
||||
# @TEST-EXEC: btest-bg-run logger "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=logger zeek -b ../other.zeek >out"
|
||||
# @TEST-EXEC: btest-bg-run proxy "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=proxy zeek -b ../other.zeek >out"
|
||||
# @TEST-EXEC: btest-bg-run worker-1 "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=worker-1 zeek -b ../other.zeek >out"
|
||||
# @TEST-EXEC: btest-bg-run worker-2 "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=worker-2 zeek -b ../other.zeek >out"
|
||||
#
|
||||
# @TEST-EXEC: btest-bg-wait 30
|
||||
# @TEST-EXEC: btest-diff test.log.normalized
|
||||
# @TEST-EXEC: sort manager/out > manager.out
|
||||
# @TEST-EXEC: btest-diff manager.out
|
||||
|
||||
# @TEST-START-FILE cluster-layout.zeek
|
||||
redef Cluster::manager_is_logger = F;
|
||||
|
||||
redef Cluster::nodes = {
|
||||
["manager"] = [$node_type=Cluster::MANAGER, $ip=127.0.0.1, $p=to_port(getenv("BROKER_PORT1"))],
|
||||
["logger"] = [$node_type=Cluster::LOGGER, $ip=127.0.0.1, $p=to_port(getenv("BROKER_PORT2")), $manager="manager"],
|
||||
["proxy"] = [$node_type=Cluster::PROXY, $ip=127.0.0.1, $p=to_port(getenv("BROKER_PORT3")), $manager="manager"],
|
||||
["worker-1"] = [$node_type=Cluster::WORKER, $ip=127.0.0.1, $p=to_port(getenv("BROKER_PORT4")), $manager="manager"],
|
||||
["worker-2"] = [$node_type=Cluster::WORKER, $ip=127.0.0.1, $p=to_port(getenv("BROKER_PORT5")), $manager="manager"],
|
||||
};
|
||||
# @TEST-END-FILE
|
||||
|
||||
# @TEST-START-FILE common.zeek
|
||||
@load frameworks/cluster/experimental
|
||||
|
||||
redef Log::default_rotation_interval = 0sec;
|
||||
redef Log::flush_interval = 0.01sec;
|
||||
|
||||
type Info: record {
|
||||
self: string &log &default=Cluster::node;
|
||||
c: count &log;
|
||||
};
|
||||
|
||||
redef enum Log::ID += { TEST_LOG };
|
||||
|
||||
global finish: event(name: string) &is_used;
|
||||
|
||||
event zeek_init() {
|
||||
print "A zeek_init", Cluster::node;
|
||||
Log::create_stream(TEST_LOG, [$columns=Info, $path="test"]);
|
||||
}
|
||||
|
||||
const to_write = 33;
|
||||
global write = 0;
|
||||
|
||||
event tick()
|
||||
{
|
||||
++write;
|
||||
Log::write(TEST_LOG, [$c=write]);
|
||||
if ( write < to_write )
|
||||
schedule 0.05sec { tick() };
|
||||
}
|
||||
|
||||
event Cluster::Experimental::cluster_started()
|
||||
{
|
||||
print "C cluster_started";
|
||||
schedule 0.05sec { tick() };
|
||||
}
|
||||
# @TEST-END-FILE
|
||||
|
||||
# @TEST-START-FILE manager.zeek
|
||||
@load ./common.zeek
|
||||
|
||||
global nodes_up: set[string] = {"manager"};
|
||||
global nodes_down: set[string] = {"manager"};
|
||||
|
||||
event send_finish() {
|
||||
print "D send_finish";
|
||||
for ( n in nodes_up )
|
||||
Cluster::publish(Cluster::node_topic(n), finish, Cluster::node);
|
||||
}
|
||||
|
||||
event check_test_log() {
|
||||
if ( file_size("DONE") >= 0 ) {
|
||||
event send_finish();
|
||||
return;
|
||||
}
|
||||
|
||||
system("../check-test-log.sh");
|
||||
schedule 0.1sec { check_test_log() };
|
||||
}
|
||||
|
||||
event zeek_init() {
|
||||
schedule 0.1sec { check_test_log() };
|
||||
}
|
||||
|
||||
|
||||
event Cluster::node_up(name: string, id: string) &priority=-1 {
|
||||
add nodes_up[name];
|
||||
print "B nodes_up", |nodes_up|;
|
||||
}
|
||||
|
||||
event Cluster::node_down(name: string, id: string) {
|
||||
print "E node_down", name;
|
||||
add nodes_down[name];
|
||||
if ( |nodes_down| == |Cluster::nodes| )
|
||||
terminate();
|
||||
}
|
||||
# @TEST-END-FILE
|
||||
|
||||
# @TEST-START-FILE other.zeek
|
||||
@load ./common.zeek
|
||||
|
||||
event finish(name: string) {
|
||||
terminate();
|
||||
}
|
||||
# @TEST-END-FILE
|
||||
|
||||
# @TEST-START-FILE check-test-log.sh
|
||||
#!/bin/sh
|
||||
#
|
||||
# This script checks logger/test.log until the expected number
|
||||
# of log entries have been observed and puts a normalized version
|
||||
# into the testing directory for baselining.
|
||||
TEST_LOG=../logger/test.log
|
||||
|
||||
if [ ! -f $TEST_LOG ]; then
|
||||
echo "$TEST_LOG not found!" >&2
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
if [ -f DONE ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Remove hostname and pid from node id in message.
|
||||
zeek-cut self c < $TEST_LOG | sort > test.log.tmp
|
||||
|
||||
# 5 times 33 = 165
|
||||
if [ $(wc -l < test.log.tmp) = 165 ]; then
|
||||
echo "DONE!" >&2
|
||||
mv test.log.tmp ../test.log.normalized
|
||||
echo "DONE" > DONE
|
||||
fi
|
||||
|
||||
exit 0
|
||||
# @TEST-END-FILE
|
Loading…
Add table
Add a link
Reference in a new issue