mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
btest/generic: Add publish_hrw(), publish_rr() and logging tests
They currently use zeromq, but technically they should be valid for any other backend, too, even broker.
This commit is contained in:
parent
df69ec1279
commit
d816bfb249
11 changed files with 724 additions and 0 deletions
|
@ -0,0 +1,4 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
error in <...>/cluster-publish-errors.zeek, line 58: Publish of unknown record type 'Cluster::MyEvent' (Cluster::publish(topic, <internal>::#0))
|
||||
error in <...>/cluster-publish-errors.zeek, line 65: Publish of unknown record type 'Cluster::MyEvent' (Cluster::publish_hrw(Cluster::proxy_pool, key, <internal>::#0))
|
||||
error in <...>/cluster-publish-errors.zeek, line 72: Publish of unknown record type 'Cluster::MyEvent' (Cluster::publish_rr(Cluster::proxy_pool, key, <internal>::#0))
|
201
testing/btest/Baseline/cluster.generic.logging-rr/rr2.log.sorted
Normal file
201
testing/btest/Baseline/cluster.generic.logging-rr/rr2.log.sorted
Normal file
|
@ -0,0 +1,201 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
0 worker-1
|
||||
0 worker-2
|
||||
1 worker-1
|
||||
1 worker-2
|
||||
2 worker-1
|
||||
2 worker-2
|
||||
3 worker-1
|
||||
3 worker-2
|
||||
4 worker-1
|
||||
4 worker-2
|
||||
5 worker-1
|
||||
5 worker-2
|
||||
6 worker-1
|
||||
6 worker-2
|
||||
7 worker-1
|
||||
7 worker-2
|
||||
8 worker-1
|
||||
8 worker-2
|
||||
9 worker-1
|
||||
9 worker-2
|
||||
10 worker-1
|
||||
10 worker-2
|
||||
11 worker-1
|
||||
11 worker-2
|
||||
12 worker-1
|
||||
12 worker-2
|
||||
13 worker-1
|
||||
13 worker-2
|
||||
14 worker-1
|
||||
14 worker-2
|
||||
15 worker-1
|
||||
15 worker-2
|
||||
16 worker-1
|
||||
16 worker-2
|
||||
17 worker-1
|
||||
17 worker-2
|
||||
18 worker-1
|
||||
18 worker-2
|
||||
19 worker-1
|
||||
19 worker-2
|
||||
20 worker-1
|
||||
20 worker-2
|
||||
21 worker-1
|
||||
21 worker-2
|
||||
22 worker-1
|
||||
22 worker-2
|
||||
23 worker-1
|
||||
23 worker-2
|
||||
24 worker-1
|
||||
24 worker-2
|
||||
25 worker-1
|
||||
25 worker-2
|
||||
26 worker-1
|
||||
26 worker-2
|
||||
27 worker-1
|
||||
27 worker-2
|
||||
28 worker-1
|
||||
28 worker-2
|
||||
29 worker-1
|
||||
29 worker-2
|
||||
30 worker-1
|
||||
30 worker-2
|
||||
31 worker-1
|
||||
31 worker-2
|
||||
32 worker-1
|
||||
32 worker-2
|
||||
33 worker-1
|
||||
33 worker-2
|
||||
34 worker-1
|
||||
34 worker-2
|
||||
35 worker-1
|
||||
35 worker-2
|
||||
36 worker-1
|
||||
36 worker-2
|
||||
37 worker-1
|
||||
37 worker-2
|
||||
38 worker-1
|
||||
38 worker-2
|
||||
39 worker-1
|
||||
39 worker-2
|
||||
40 worker-1
|
||||
40 worker-2
|
||||
41 worker-1
|
||||
41 worker-2
|
||||
42 worker-1
|
||||
42 worker-2
|
||||
43 worker-1
|
||||
43 worker-2
|
||||
44 worker-1
|
||||
44 worker-2
|
||||
45 worker-1
|
||||
45 worker-2
|
||||
46 worker-1
|
||||
46 worker-2
|
||||
47 worker-1
|
||||
47 worker-2
|
||||
48 worker-1
|
||||
48 worker-2
|
||||
49 worker-1
|
||||
49 worker-2
|
||||
50 worker-1
|
||||
50 worker-2
|
||||
51 worker-1
|
||||
51 worker-2
|
||||
52 worker-1
|
||||
52 worker-2
|
||||
53 worker-1
|
||||
53 worker-2
|
||||
54 worker-1
|
||||
54 worker-2
|
||||
55 worker-1
|
||||
55 worker-2
|
||||
56 worker-1
|
||||
56 worker-2
|
||||
57 worker-1
|
||||
57 worker-2
|
||||
58 worker-1
|
||||
58 worker-2
|
||||
59 worker-1
|
||||
59 worker-2
|
||||
60 worker-1
|
||||
60 worker-2
|
||||
61 worker-1
|
||||
61 worker-2
|
||||
62 worker-1
|
||||
62 worker-2
|
||||
63 worker-1
|
||||
63 worker-2
|
||||
64 worker-1
|
||||
64 worker-2
|
||||
65 worker-1
|
||||
65 worker-2
|
||||
66 worker-1
|
||||
66 worker-2
|
||||
67 worker-1
|
||||
67 worker-2
|
||||
68 worker-1
|
||||
68 worker-2
|
||||
69 worker-1
|
||||
69 worker-2
|
||||
70 worker-1
|
||||
70 worker-2
|
||||
71 worker-1
|
||||
71 worker-2
|
||||
72 worker-1
|
||||
72 worker-2
|
||||
73 worker-1
|
||||
73 worker-2
|
||||
74 worker-1
|
||||
74 worker-2
|
||||
75 worker-1
|
||||
75 worker-2
|
||||
76 worker-1
|
||||
76 worker-2
|
||||
77 worker-1
|
||||
77 worker-2
|
||||
78 worker-1
|
||||
78 worker-2
|
||||
79 worker-1
|
||||
79 worker-2
|
||||
80 worker-1
|
||||
80 worker-2
|
||||
81 worker-1
|
||||
81 worker-2
|
||||
82 worker-1
|
||||
82 worker-2
|
||||
83 worker-1
|
||||
83 worker-2
|
||||
84 worker-1
|
||||
84 worker-2
|
||||
85 worker-1
|
||||
85 worker-2
|
||||
86 worker-1
|
||||
86 worker-2
|
||||
87 worker-1
|
||||
87 worker-2
|
||||
88 worker-1
|
||||
88 worker-2
|
||||
89 worker-1
|
||||
89 worker-2
|
||||
90 worker-1
|
||||
90 worker-2
|
||||
91 worker-1
|
||||
91 worker-2
|
||||
92 worker-1
|
||||
92 worker-2
|
||||
93 worker-1
|
||||
93 worker-2
|
||||
94 worker-1
|
||||
94 worker-2
|
||||
95 worker-1
|
||||
95 worker-2
|
||||
96 worker-1
|
||||
96 worker-2
|
||||
97 worker-1
|
||||
97 worker-2
|
||||
98 worker-1
|
||||
98 worker-2
|
||||
99 worker-1
|
||||
99 worker-2
|
|
@ -0,0 +1,42 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
got pong, 0, args, worker-2, args
|
||||
got pong, 0, args, worker-2, make_event
|
||||
got pong, 0, make_event, worker-2, args
|
||||
got pong, 0, make_event, worker-2, make_event
|
||||
got pong, 1, args, worker-1, args
|
||||
got pong, 1, args, worker-1, make_event
|
||||
got pong, 1, make_event, worker-1, args
|
||||
got pong, 1, make_event, worker-1, make_event
|
||||
got pong, 2, args, worker-2, args
|
||||
got pong, 2, args, worker-2, make_event
|
||||
got pong, 2, make_event, worker-2, args
|
||||
got pong, 2, make_event, worker-2, make_event
|
||||
got pong, 3, args, worker-1, args
|
||||
got pong, 3, args, worker-1, make_event
|
||||
got pong, 3, make_event, worker-1, args
|
||||
got pong, 3, make_event, worker-1, make_event
|
||||
got pong, 4, args, worker-1, args
|
||||
got pong, 4, args, worker-1, make_event
|
||||
got pong, 4, make_event, worker-1, args
|
||||
got pong, 4, make_event, worker-1, make_event
|
||||
got pong, 5, args, worker-2, args
|
||||
got pong, 5, args, worker-2, make_event
|
||||
got pong, 5, make_event, worker-2, args
|
||||
got pong, 5, make_event, worker-2, make_event
|
||||
got pong, 6, args, worker-1, args
|
||||
got pong, 6, args, worker-1, make_event
|
||||
got pong, 6, make_event, worker-1, args
|
||||
got pong, 6, make_event, worker-1, make_event
|
||||
got pong, 7, args, worker-2, args
|
||||
got pong, 7, args, worker-2, make_event
|
||||
got pong, 7, make_event, worker-2, args
|
||||
got pong, 7, make_event, worker-2, make_event
|
||||
got pong, 8, args, worker-1, args
|
||||
got pong, 8, args, worker-1, make_event
|
||||
got pong, 8, make_event, worker-1, args
|
||||
got pong, 8, make_event, worker-1, make_event
|
||||
got pong, 9, args, worker-1, args
|
||||
got pong, 9, args, worker-1, make_event
|
||||
got pong, 9, make_event, worker-1, args
|
||||
got pong, 9, make_event, worker-1, make_event
|
||||
have 40, finish!
|
|
@ -0,0 +1,16 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
a node_up, manager
|
||||
a node_up, worker-2
|
||||
got ping, 1, args
|
||||
got ping, 1, make_event
|
||||
got ping, 3, args
|
||||
got ping, 3, make_event
|
||||
got ping, 4, args
|
||||
got ping, 4, make_event
|
||||
got ping, 6, args
|
||||
got ping, 6, make_event
|
||||
got ping, 8, args
|
||||
got ping, 8, make_event
|
||||
got ping, 9, args
|
||||
got ping, 9, make_event
|
||||
z got finish!
|
|
@ -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 node_up, manager
|
||||
a node_up, worker-1
|
||||
got ping, 0, args
|
||||
got ping, 0, make_event
|
||||
got ping, 2, args
|
||||
got ping, 2, make_event
|
||||
got ping, 5, args
|
||||
got ping, 5, make_event
|
||||
got ping, 7, args
|
||||
got ping, 7, make_event
|
||||
z got finish!
|
|
@ -0,0 +1,42 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
got pong, 0, args, worker-1, args
|
||||
got pong, 0, args, worker-1, make_event
|
||||
got pong, 0, make_event, worker-1, args
|
||||
got pong, 0, make_event, worker-1, make_event
|
||||
got pong, 1, args, worker-2, args
|
||||
got pong, 1, args, worker-2, make_event
|
||||
got pong, 1, make_event, worker-2, args
|
||||
got pong, 1, make_event, worker-2, make_event
|
||||
got pong, 2, args, worker-1, args
|
||||
got pong, 2, args, worker-1, make_event
|
||||
got pong, 2, make_event, worker-1, args
|
||||
got pong, 2, make_event, worker-1, make_event
|
||||
got pong, 3, args, worker-2, args
|
||||
got pong, 3, args, worker-2, make_event
|
||||
got pong, 3, make_event, worker-2, args
|
||||
got pong, 3, make_event, worker-2, make_event
|
||||
got pong, 4, args, worker-1, args
|
||||
got pong, 4, args, worker-1, make_event
|
||||
got pong, 4, make_event, worker-1, args
|
||||
got pong, 4, make_event, worker-1, make_event
|
||||
got pong, 5, args, worker-2, args
|
||||
got pong, 5, args, worker-2, make_event
|
||||
got pong, 5, make_event, worker-2, args
|
||||
got pong, 5, make_event, worker-2, make_event
|
||||
got pong, 6, args, worker-1, args
|
||||
got pong, 6, args, worker-1, make_event
|
||||
got pong, 6, make_event, worker-1, args
|
||||
got pong, 6, make_event, worker-1, make_event
|
||||
got pong, 7, args, worker-2, args
|
||||
got pong, 7, args, worker-2, make_event
|
||||
got pong, 7, make_event, worker-2, args
|
||||
got pong, 7, make_event, worker-2, make_event
|
||||
got pong, 8, args, worker-1, args
|
||||
got pong, 8, args, worker-1, make_event
|
||||
got pong, 8, make_event, worker-1, args
|
||||
got pong, 8, make_event, worker-1, make_event
|
||||
got pong, 9, args, worker-2, args
|
||||
got pong, 9, args, worker-2, make_event
|
||||
got pong, 9, make_event, worker-2, args
|
||||
got pong, 9, make_event, worker-2, make_event
|
||||
have 40, finish!
|
|
@ -0,0 +1,14 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
a node_up, manager
|
||||
a node_up, worker-2
|
||||
got ping, 0, args
|
||||
got ping, 0, make_event
|
||||
got ping, 2, args
|
||||
got ping, 2, make_event
|
||||
got ping, 4, args
|
||||
got ping, 4, make_event
|
||||
got ping, 6, args
|
||||
got ping, 6, make_event
|
||||
got ping, 8, args
|
||||
got ping, 8, make_event
|
||||
z got finish!
|
|
@ -0,0 +1,14 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
a node_up, manager
|
||||
a node_up, worker-1
|
||||
got ping, 1, args
|
||||
got ping, 1, make_event
|
||||
got ping, 3, args
|
||||
got ping, 3, make_event
|
||||
got ping, 5, args
|
||||
got ping, 5, make_event
|
||||
got ping, 7, args
|
||||
got ping, 7, make_event
|
||||
got ping, 9, args
|
||||
got ping, 9, make_event
|
||||
z got finish!
|
177
testing/btest/cluster/generic/logging-rr.zeek
Normal file
177
testing/btest/cluster/generic/logging-rr.zeek
Normal file
|
@ -0,0 +1,177 @@
|
|||
# @TEST-DOC: Testing round-robin of Log::write() across two loggers.
|
||||
#
|
||||
# @TEST-REQUIRES: have-zeromq
|
||||
#
|
||||
# @TEST-PORT: XPUB_PORT
|
||||
# @TEST-PORT: XSUB_PORT
|
||||
# @TEST-PORT: LOG_PULL_PORT_1
|
||||
# @TEST-PORT: LOG_PULL_PORT_2
|
||||
#
|
||||
# @TEST-EXEC: chmod +x ./check-log.sh
|
||||
#
|
||||
# @TEST-EXEC: cp $FILES/zeromq/cluster-layout-two-loggers.zeek cluster-layout.zeek
|
||||
# @TEST-EXEC: cp $FILES/zeromq/test-bootstrap.zeek zeromq-test-bootstrap.zeek
|
||||
#
|
||||
# @TEST-EXEC: zeek -b --parse-only common.zeek 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 logger-1 "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=logger-1 zeek -b ../common.zeek >out"
|
||||
# @TEST-EXEC: btest-bg-run logger-2 "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=logger-2 zeek -b ../common.zeek >out"
|
||||
# @TEST-EXEC: btest-bg-run worker-1 "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=worker-1 zeek -b ../worker.zeek >out"
|
||||
# @TEST-EXEC: btest-bg-run worker-2 "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=worker-2 zeek -b ../worker.zeek >out"
|
||||
#
|
||||
# @TEST-EXEC: btest-bg-wait 10
|
||||
#
|
||||
# @TEST-EXEC: test $(grep -c worker-1 logger-1/rr2.log) -gt 10
|
||||
# @TEST-EXEC: test $(grep -c worker-2 logger-1/rr2.log) -gt 10
|
||||
# @TEST-EXEC: test $(grep -c worker-1 logger-2/rr2.log) -gt 10
|
||||
# @TEST-EXEC: test $(grep -c worker-2 logger-2/rr2.log) -gt 10
|
||||
|
||||
# @TEST-EXEC: zeek-cut < logger-1/rr2.log > rr2.log
|
||||
# @TEST-EXEC: zeek-cut < logger-2/rr2.log >> rr2.log
|
||||
# @TEST-EXEC: sort -n rr2.log > rr2.log.sorted
|
||||
# @TEST-EXEC: btest-diff rr2.log.sorted
|
||||
|
||||
# @TEST-START-FILE common.zeek
|
||||
@load ./zeromq-test-bootstrap.zeek
|
||||
|
||||
redef Log::default_rotation_interval = 0sec;
|
||||
redef Log::flush_interval = 0.03sec;
|
||||
redef Log::write_buffer_size = 7;
|
||||
|
||||
module LogRR;
|
||||
|
||||
export {
|
||||
redef enum Log::ID += { LOG1, LOG2 };
|
||||
type Info: record {
|
||||
c: count &log;
|
||||
from: string &log &default=Cluster::node;
|
||||
};
|
||||
|
||||
global go: event();
|
||||
global finish: event();
|
||||
}
|
||||
|
||||
event zeek_init()
|
||||
{
|
||||
Log::create_stream(LOG1, [$columns=Info, $path="rr1"]);
|
||||
Log::create_stream(LOG2, [$columns=Info, $path="rr2"]);
|
||||
}
|
||||
|
||||
event finish()
|
||||
{
|
||||
terminate();
|
||||
}
|
||||
# @TEST-END-FILE
|
||||
|
||||
# @TEST-START-FILE manager.zeek
|
||||
@load ./common.zeek
|
||||
|
||||
event check_ready()
|
||||
{
|
||||
if ( ! piped_exec("../check-log.sh", "") )
|
||||
{
|
||||
Reporter::error("check-log.sh failed");
|
||||
terminate();
|
||||
}
|
||||
|
||||
if ( file_size("DONE") >= 0 )
|
||||
{
|
||||
Cluster::publish(Cluster::worker_topic, LogRR::go);
|
||||
return;
|
||||
}
|
||||
|
||||
schedule 0.1sec { check_ready() };
|
||||
}
|
||||
|
||||
event zeek_init()
|
||||
{
|
||||
event check_ready();
|
||||
}
|
||||
|
||||
|
||||
global nodes_down: set[string];
|
||||
|
||||
event Cluster::node_down(name: string, id: string)
|
||||
{
|
||||
print current_time(), "node_down", name;
|
||||
add nodes_down[name];
|
||||
|
||||
if ( |nodes_down| == 2 ) # workers down
|
||||
Cluster::publish(Cluster::logger_topic, LogRR::finish);
|
||||
|
||||
if ( |nodes_down| == 4 ) # both loggers down
|
||||
terminate();
|
||||
}
|
||||
# @TEST-END-FILE
|
||||
|
||||
|
||||
# @TEST-START-FILE worker.zeek
|
||||
@load ./common.zeek
|
||||
|
||||
global do_write2 = F;
|
||||
|
||||
event write_log1(c: count)
|
||||
{
|
||||
if ( do_write2 )
|
||||
{
|
||||
Log::write(LogRR::LOG1, [$c=10000000]);
|
||||
return;
|
||||
}
|
||||
|
||||
Log::write(LogRR::LOG1, [$c=c]);
|
||||
Log::flush(LogRR::LOG1);
|
||||
schedule 0.05sec { write_log1(++c) };
|
||||
}
|
||||
|
||||
event write_log2(c: count)
|
||||
{
|
||||
if ( c == 100 )
|
||||
{
|
||||
terminate();
|
||||
return;
|
||||
}
|
||||
|
||||
Log::write(LogRR::LOG2, [$c=c]);
|
||||
schedule 0.012sec { write_log2(++c) };
|
||||
}
|
||||
|
||||
event LogRR::go()
|
||||
{
|
||||
do_write2 = T;
|
||||
event write_log2(0);
|
||||
}
|
||||
|
||||
event zeek_init()
|
||||
{
|
||||
event write_log1(0);
|
||||
}
|
||||
|
||||
# @TEST-END-FILE
|
||||
|
||||
@TEST-START-FILE check-log.sh
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# This script regularly checks for the loggers rr1.log file until
|
||||
# both workers appear. Once this happens, creates a READY file
|
||||
# which will result in workers getting the "go" and sending writes
|
||||
# to rr2.log
|
||||
set -eux
|
||||
|
||||
LOGGERS="logger-1 logger-2"
|
||||
WORKERS="worker-1 worker-2"
|
||||
|
||||
for logger in $LOGGERS; do
|
||||
for worker in $WORKERS; do
|
||||
date +%s
|
||||
echo check $logger $worker
|
||||
if ! grep -q "${worker}" ../${logger}/rr1.log; then
|
||||
exit 0
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
echo "DONE"
|
||||
echo "DONE" > DONE
|
||||
exit 0
|
||||
@TEST-END-FILE
|
101
testing/btest/cluster/generic/publish-hrw.zeek
Normal file
101
testing/btest/cluster/generic/publish-hrw.zeek
Normal file
|
@ -0,0 +1,101 @@
|
|||
# @TEST-DOC: Send ping/pong using publish_hrw(), publish() and make_event()
|
||||
#
|
||||
# @TEST-REQUIRES: have-zeromq
|
||||
#
|
||||
# @TEST-PORT: XPUB_PORT
|
||||
# @TEST-PORT: XSUB_PORT
|
||||
# @TEST-PORT: LOG_PULL_PORT
|
||||
#
|
||||
# @TEST-EXEC: cp $FILES/zeromq/cluster-layout-no-logger.zeek cluster-layout.zeek
|
||||
# @TEST-EXEC: cp $FILES/zeromq/test-bootstrap.zeek zeromq-test-bootstrap.zeek
|
||||
#
|
||||
# @TEST-EXEC: zeek -b --parse-only common.zeek 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-1 "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=worker-1 zeek -b ../worker.zeek >out"
|
||||
# @TEST-EXEC: btest-bg-run worker-2 "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=worker-2 zeek -b ../worker.zeek >out"
|
||||
#
|
||||
# @TEST-EXEC: btest-bg-wait 10
|
||||
# @TEST-EXEC: sort < ./manager/out > ./manager.sorted
|
||||
# @TEST-EXEC: sort < ./worker-1/out > ./worker-1.sorted
|
||||
# @TEST-EXEC: sort < ./worker-2/out > ./worker-2.sorted
|
||||
# @TEST-EXEC: btest-diff manager.sorted
|
||||
# @TEST-EXEC: btest-diff worker-1.sorted
|
||||
# @TEST-EXEC: btest-diff worker-2.sorted
|
||||
|
||||
# @TEST-START-FILE common.zeek
|
||||
@load ./zeromq-test-bootstrap.zeek
|
||||
|
||||
global finish: event();
|
||||
global ping: event(c: count, how: string);
|
||||
global pong: event(c: count, how: string, from: string, from_how: string);
|
||||
# @TEST-END-FILE
|
||||
|
||||
# @TEST-START-FILE manager.zeek
|
||||
@load ./common.zeek
|
||||
|
||||
global nodes_up: set[string];
|
||||
global nodes_down: set[string];
|
||||
global pongs: set[count, string, string, string];
|
||||
|
||||
global i = 0;
|
||||
|
||||
event send_hrw()
|
||||
{
|
||||
if (i >= 10 )
|
||||
return;
|
||||
|
||||
Cluster::publish_hrw(Cluster::worker_pool, cat(i), ping, i, "args");
|
||||
local e = Cluster::make_event(ping, i, "make_event");
|
||||
Cluster::publish_hrw(Cluster::worker_pool, cat(i), e);
|
||||
++i;
|
||||
|
||||
schedule 0.01sec { send_hrw() };
|
||||
}
|
||||
|
||||
event pong(c: count, how: string, from: string, from_how: string)
|
||||
{
|
||||
print "got pong", c, how, from, from_how;
|
||||
add pongs[c, how, from, from_how];
|
||||
|
||||
if ( |pongs| == 40 )
|
||||
{
|
||||
print "have 40, finish!";
|
||||
Cluster::publish(Cluster::worker_topic, finish);
|
||||
}
|
||||
}
|
||||
|
||||
event Cluster::node_up(name: string, id: string) {
|
||||
add nodes_up[name];
|
||||
if ( |nodes_up| == 2 ) {
|
||||
event send_hrw();
|
||||
}
|
||||
}
|
||||
|
||||
event Cluster::node_down(name: string, id: string) {
|
||||
add nodes_down[name];
|
||||
if ( |nodes_down| == 2 )
|
||||
terminate();
|
||||
}
|
||||
# @TEST-END-FILE
|
||||
|
||||
|
||||
# @TEST-START-FILE worker.zeek
|
||||
@load ./common.zeek
|
||||
|
||||
event ping(c: count, how: string) {
|
||||
print "got ping", c, how;
|
||||
Cluster::publish(Cluster::manager_topic, pong, c, how, Cluster::node, "args");
|
||||
local e = Cluster::make_event(pong, c, how, Cluster::node, "make_event");
|
||||
Cluster::publish(Cluster::manager_topic, e);
|
||||
}
|
||||
|
||||
event Cluster::node_up(name: string, id: string) {
|
||||
print "a node_up", name;
|
||||
}
|
||||
|
||||
event finish() &is_used {
|
||||
print "z got finish!";
|
||||
terminate();
|
||||
}
|
||||
# @TEST-END-FILE
|
101
testing/btest/cluster/generic/publish-rr.zeek
Normal file
101
testing/btest/cluster/generic/publish-rr.zeek
Normal file
|
@ -0,0 +1,101 @@
|
|||
# @TEST-DOC: Send ping/pong using publish_rr(), publish() and make_event()
|
||||
#
|
||||
# @TEST-REQUIRES: have-zeromq
|
||||
#
|
||||
# @TEST-PORT: XPUB_PORT
|
||||
# @TEST-PORT: XSUB_PORT
|
||||
# @TEST-PORT: LOG_PULL_PORT
|
||||
#
|
||||
# @TEST-EXEC: cp $FILES/zeromq/cluster-layout-no-logger.zeek cluster-layout.zeek
|
||||
# @TEST-EXEC: cp $FILES/zeromq/test-bootstrap.zeek zeromq-test-bootstrap.zeek
|
||||
#
|
||||
# @TEST-EXEC: zeek -b --parse-only common.zeek 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-1 "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=worker-1 zeek -b ../worker.zeek >out"
|
||||
# @TEST-EXEC: btest-bg-run worker-2 "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=worker-2 zeek -b ../worker.zeek >out"
|
||||
#
|
||||
# @TEST-EXEC: btest-bg-wait 10
|
||||
# @TEST-EXEC: sort < ./manager/out > ./manager.sorted
|
||||
# @TEST-EXEC: sort < ./worker-1/out > ./worker-1.sorted
|
||||
# @TEST-EXEC: sort < ./worker-2/out > ./worker-2.sorted
|
||||
# @TEST-EXEC: btest-diff manager.sorted
|
||||
# @TEST-EXEC: btest-diff worker-1.sorted
|
||||
# @TEST-EXEC: btest-diff worker-2.sorted
|
||||
|
||||
# @TEST-START-FILE common.zeek
|
||||
@load ./zeromq-test-bootstrap.zeek
|
||||
|
||||
global finish: event();
|
||||
global ping: event(c: count, how: string);
|
||||
global pong: event(c: count, how: string, from: string, from_how: string);
|
||||
# @TEST-END-FILE
|
||||
|
||||
# @TEST-START-FILE manager.zeek
|
||||
@load ./common.zeek
|
||||
|
||||
global nodes_up: set[string];
|
||||
global nodes_down: set[string];
|
||||
global pongs: set[count, string, string, string];
|
||||
|
||||
global i = 0;
|
||||
|
||||
event send_rr()
|
||||
{
|
||||
if (i >= 10 )
|
||||
return;
|
||||
|
||||
Cluster::publish_rr(Cluster::worker_pool, "ping-key-args", ping, i, "args");
|
||||
local e = Cluster::make_event(ping, i, "make_event");
|
||||
Cluster::publish_rr(Cluster::worker_pool, "ping-key-event", e);
|
||||
++i;
|
||||
|
||||
schedule 0.01sec { send_rr() };
|
||||
}
|
||||
|
||||
event pong(c: count, how: string, from: string, from_how: string)
|
||||
{
|
||||
print "got pong", c, how, from, from_how;
|
||||
add pongs[c, how, from, from_how];
|
||||
|
||||
if ( |pongs| == 40 )
|
||||
{
|
||||
print "have 40, finish!";
|
||||
Cluster::publish(Cluster::worker_topic, finish);
|
||||
}
|
||||
}
|
||||
|
||||
event Cluster::node_up(name: string, id: string) {
|
||||
add nodes_up[name];
|
||||
if ( |nodes_up| == 2 ) {
|
||||
event send_rr();
|
||||
}
|
||||
}
|
||||
|
||||
event Cluster::node_down(name: string, id: string) {
|
||||
add nodes_down[name];
|
||||
if ( |nodes_down| == 2 )
|
||||
terminate();
|
||||
}
|
||||
# @TEST-END-FILE
|
||||
|
||||
|
||||
# @TEST-START-FILE worker.zeek
|
||||
@load ./common.zeek
|
||||
|
||||
event ping(c: count, how: string) {
|
||||
print "got ping", c, how;
|
||||
Cluster::publish(Cluster::manager_topic, pong, c, how, Cluster::node, "args");
|
||||
local e = Cluster::make_event(pong, c, how, Cluster::node, "make_event");
|
||||
Cluster::publish(Cluster::manager_topic, e);
|
||||
}
|
||||
|
||||
event Cluster::node_up(name: string, id: string) {
|
||||
print "a node_up", name;
|
||||
}
|
||||
|
||||
event finish() &is_used {
|
||||
print "z got finish!";
|
||||
terminate();
|
||||
}
|
||||
# @TEST-END-FILE
|
Loading…
Add table
Add a link
Reference in a new issue