zeek/testing/btest/cluster/zeromq/unsubscribe.zeek

84 lines
2.1 KiB
Text

# @TEST-DOC: Regression test for unsubscriptions not actually unsubscribing because of "\x00" usage.
#
# @TEST-REQUIRES: have-zeromq
#
# @TEST-GROUP: cluster-zeromq
#
# @TEST-PORT: XPUB_PORT
# @TEST-PORT: XSUB_PORT
# @TEST-PORT: LOG_PULL_PORT
#
# @TEST-EXEC: cp $FILES/zeromq/cluster-layout-simple.zeek cluster-layout.zeek
# @TEST-EXEC: cp $FILES/zeromq/test-bootstrap.zeek zeromq-test-bootstrap.zeek
#
# @TEST-EXEC: zeek --parse-only ./manager.zeek ./worker.zeek
#
# @TEST-EXEC: btest-bg-run manager "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=manager zeek -b ../manager.zeek >out"
# @TEST-EXEC: btest-bg-run worker "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=worker-1 zeek -b ../worker.zeek >out"
#
# @TEST-EXEC: btest-bg-wait 30
# @TEST-EXEC: btest-diff ./manager/out
# @TEST-EXEC: btest-diff ./worker/out
# @TEST-START-FILE common.zeek
@load ./zeromq-test-bootstrap
global start_test: event() &is_used;
# @TEST-END-FILE
# @TEST-START-FILE manager.zeek
@load ./common.zeek
event Cluster::Backend::ZeroMQ::subscription(topic: string) {
if ( topic == "/test/worker/topic" ) {
print "subscription", topic;
Cluster::subscribe("/test/manager/topic");
}
}
event Cluster::Backend::ZeroMQ::unsubscription(topic: string) {
if ( topic == "/test/worker/topic" ) {
print "unsubscription", topic;
Cluster::unsubscribe("/test/manager/topic");
}
}
event Cluster::node_up(name: string, id: string) {
print "node_up", name;
Cluster::publish(Cluster::nodeid_topic(id), start_test);
}
event Cluster::node_down(name: string, id: string) {
print "node_down", name;
terminate();
}
# @TEST-END-FILE
# @TEST-START-FILE worker.zeek
@load ./common.zeek
event start_test() {
print "start_test";
Cluster::subscribe("/test/worker/topic");
}
event Cluster::Backend::ZeroMQ::subscription(topic: string) {
if ( topic == "/test/manager/topic" ) {
print "subscription", topic;
Cluster::unsubscribe("/test/worker/topic");
}
}
event Cluster::Backend::ZeroMQ::unsubscription(topic: string) {
if ( topic == "/test/manager/topic" ) {
print "unsubscription", topic;
terminate();
}
}
event zeek_done() {
print "done";
}
# @TEST-END-FILE