mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
Merge remote-tracking branch 'origin/topic/awelzel/pluggable-cluster-backends-part4'
* origin/topic/awelzel/pluggable-cluster-backends-part4: Update ZAM BiF-tracking configure: Add --disable-cluster-backend-zeromq CMakeLists: Cluster backends output zeromq: Conditionally enable by default btest/generic: Add publish_hrw(), publish_rr() and logging tests generate-docs: Run on Ubuntu 24.04, add cppzmq docker: Add cppzmq/libzmq dependencies tsan_suppressions: Add called_from_lib: libzmq ci: Add cppzmq and libzmq to most platforms cluster/backend/zeromq: Add ZeroMQ based cluster backend cluster/backend/zeromq: Add cppzmq submodule cluster: Add Cluster::node_id(), allow redef of node_topic(), nodeid_topic() cluster: Move publish_hrw() and publish_rr() to cluster.bif
This commit is contained in:
commit
4ee2f9256b
89 changed files with 3035 additions and 109 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))
|
|
@ -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, Cluster::MyEvent()))
|
||||
error in <...>/cluster-publish-errors.zeek, line 65: Publish of unknown record type 'Cluster::MyEvent' (Cluster::publish_hrw(Cluster::proxy_pool, key, Cluster::MyEvent()))
|
||||
error in <...>/cluster-publish-errors.zeek, line 72: Publish of unknown record type 'Cluster::MyEvent' (Cluster::publish_rr(Cluster::proxy_pool, key, Cluster::MyEvent()))
|
|
@ -0,0 +1,13 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
Broker::make_event with Cluster::publish()
|
||||
r=, T
|
||||
Broker::make_event with Cluster::publish_hrw()
|
||||
r=, T
|
||||
Broker::make_event with Cluster::publish_rr()
|
||||
r=, T
|
||||
Cluster::publish() with wrong event
|
||||
r=, F
|
||||
Cluster::publish_hrw() with wrong event
|
||||
r=, F
|
||||
Cluster::publish_rr() with wrong event
|
||||
r=, F
|
|
@ -0,0 +1,7 @@
|
|||
### 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 30: Publish of Broker::Event record instance with type 'Broker::Event' to a non-Broker backend (Cluster::publish(topic, Cluster::be))
|
||||
error in <...>/cluster-publish-errors.zeek, line 39: Publish of Broker::Event record instance with type 'Broker::Event' to a non-Broker backend (Cluster::publish_hrw(Cluster::proxy_pool, key, Cluster::be))
|
||||
error in <...>/cluster-publish-errors.zeek, line 47: Publish of Broker::Event record instance with type 'Broker::Event' to a non-Broker backend (Cluster::publish_rr(Cluster::proxy_pool, key, Cluster::be))
|
||||
error in <...>/cluster-publish-errors.zeek, line 58: Publish of unknown record type 'Cluster::MyEvent' (Cluster::publish(topic, Cluster::MyEvent()))
|
||||
error in <...>/cluster-publish-errors.zeek, line 65: Publish of unknown record type 'Cluster::MyEvent' (Cluster::publish_hrw(Cluster::proxy_pool, key, Cluster::MyEvent()))
|
||||
error in <...>/cluster-publish-errors.zeek, line 72: Publish of unknown record type 'Cluster::MyEvent' (Cluster::publish_rr(Cluster::proxy_pool, key, Cluster::MyEvent()))
|
|
@ -0,0 +1,13 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
Broker::make_event with Cluster::publish()
|
||||
r=, F
|
||||
Broker::make_event with Cluster::publish_hrw()
|
||||
r=, F
|
||||
Broker::make_event with Cluster::publish_rr()
|
||||
r=, F
|
||||
Cluster::publish() with wrong event
|
||||
r=, F
|
||||
Cluster::publish_hrw() with wrong event
|
||||
r=, F
|
||||
Cluster::publish_rr() with wrong event
|
||||
r=, F
|
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!
|
|
@ -0,0 +1,21 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
logger got hello from manager (zeromq_manager_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
logger got hello from proxy (zeromq_proxy_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
logger got hello from worker-1 (zeromq_worker-1_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
logger got hello from worker-2 (zeromq_worker-2_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
manager got hello from logger (zeromq_logger_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
manager got hello from proxy (zeromq_proxy_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
manager got hello from worker-1 (zeromq_worker-1_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
manager got hello from worker-2 (zeromq_worker-2_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
proxy got hello from logger (zeromq_logger_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
proxy got hello from manager (zeromq_manager_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
proxy got hello from worker-1 (zeromq_worker-1_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
proxy got hello from worker-2 (zeromq_worker-2_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-1 got hello from logger (zeromq_logger_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-1 got hello from manager (zeromq_manager_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-1 got hello from proxy (zeromq_proxy_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-1 got hello from worker-2 (zeromq_worker-2_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-2 got hello from logger (zeromq_logger_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-2 got hello from manager (zeromq_manager_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-2 got hello from proxy (zeromq_proxy_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-2 got hello from worker-1 (zeromq_worker-1_<hostname>_<pid>_NrFj3eGxkRR5)
|
16
testing/btest/Baseline/cluster.zeromq.logging/manager.out
Normal file
16
testing/btest/Baseline/cluster.zeromq.logging/manager.out
Normal file
|
@ -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 zeek_init, manager
|
||||
B node_up, logger
|
||||
B node_up, proxy
|
||||
B node_up, worker-1
|
||||
B node_up, worker-2
|
||||
B nodes_up, 2
|
||||
B nodes_up, 3
|
||||
B nodes_up, 4
|
||||
B nodes_up, 5
|
||||
C send_finish
|
||||
D node_down, logger
|
||||
D node_down, proxy
|
||||
D node_down, worker-1
|
||||
D node_down, worker-2
|
||||
D send_finish to logger
|
21
testing/btest/Baseline/cluster.zeromq.logging/node_up.sorted
Normal file
21
testing/btest/Baseline/cluster.zeromq.logging/node_up.sorted
Normal file
|
@ -0,0 +1,21 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
logger manager
|
||||
logger proxy
|
||||
logger worker-1
|
||||
logger worker-2
|
||||
manager logger
|
||||
manager proxy
|
||||
manager worker-1
|
||||
manager worker-2
|
||||
proxy logger
|
||||
proxy manager
|
||||
proxy worker-1
|
||||
proxy worker-2
|
||||
worker-1 logger
|
||||
worker-1 manager
|
||||
worker-1 proxy
|
||||
worker-1 worker-2
|
||||
worker-2 logger
|
||||
worker-2 manager
|
||||
worker-2 proxy
|
||||
worker-2 worker-1
|
|
@ -0,0 +1,13 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
manager got hello from proxy (zeromq_proxy_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
manager got hello from worker-1 (zeromq_worker-1_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
manager got hello from worker-2 (zeromq_worker-2_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
proxy got hello from manager (zeromq_manager_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
proxy got hello from worker-1 (zeromq_worker-1_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
proxy got hello from worker-2 (zeromq_worker-2_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-1 got hello from manager (zeromq_manager_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-1 got hello from proxy (zeromq_proxy_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-1 got hello from worker-2 (zeromq_worker-2_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-2 got hello from manager (zeromq_manager_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-2 got hello from proxy (zeromq_proxy_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-2 got hello from worker-1 (zeromq_worker-1_<hostname>_<pid>_NrFj3eGxkRR5)
|
|
@ -0,0 +1,11 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
A node_up, proxy
|
||||
A node_up, worker-1
|
||||
A node_up, worker-2
|
||||
B nodes_up, 2
|
||||
B nodes_up, 3
|
||||
B nodes_up, 4
|
||||
D node_down, proxy
|
||||
D node_down, worker-1
|
||||
D node_down, worker-2
|
||||
zeek_init, manager
|
|
@ -0,0 +1,13 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
manager proxy
|
||||
manager worker-1
|
||||
manager worker-2
|
||||
proxy manager
|
||||
proxy worker-1
|
||||
proxy worker-2
|
||||
worker-1 manager
|
||||
worker-1 proxy
|
||||
worker-1 worker-2
|
||||
worker-2 manager
|
||||
worker-2 proxy
|
||||
worker-2 worker-1
|
|
@ -0,0 +1,21 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
logger got hello from manager (zeromq_manager_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
logger got hello from proxy (zeromq_proxy_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
logger got hello from worker-1 (zeromq_worker-1_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
logger got hello from worker-2 (zeromq_worker-2_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
manager got hello from logger (zeromq_logger_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
manager got hello from proxy (zeromq_proxy_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
manager got hello from worker-1 (zeromq_worker-1_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
manager got hello from worker-2 (zeromq_worker-2_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
proxy got hello from logger (zeromq_logger_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
proxy got hello from manager (zeromq_manager_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
proxy got hello from worker-1 (zeromq_worker-1_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
proxy got hello from worker-2 (zeromq_worker-2_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-1 got hello from logger (zeromq_logger_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-1 got hello from manager (zeromq_manager_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-1 got hello from proxy (zeromq_proxy_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-1 got hello from worker-2 (zeromq_worker-2_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-2 got hello from logger (zeromq_logger_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-2 got hello from manager (zeromq_manager_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-2 got hello from proxy (zeromq_proxy_<hostname>_<pid>_NrFj3eGxkRR5)
|
||||
worker-2 got hello from worker-1 (zeromq_worker-1_<hostname>_<pid>_NrFj3eGxkRR5)
|
|
@ -0,0 +1,3 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
node_up, worker-1
|
||||
node_down, worker-1
|
|
@ -0,0 +1,2 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
node_up, manager
|
|
@ -259,6 +259,7 @@ scripts/base/init-frameworks-and-bifs.zeek
|
|||
build/scripts/base/bif/plugins/Zeek_WebSocket.functions.bif.zeek
|
||||
build/scripts/base/bif/plugins/Zeek_WebSocket.types.bif.zeek
|
||||
build/scripts/base/bif/plugins/Zeek_XMPP.events.bif.zeek
|
||||
build/scripts/base/bif/plugins/Zeek_Cluster_Backend_ZeroMQ.cluster_backend_zeromq.bif.zeek
|
||||
build/scripts/base/bif/plugins/Zeek_ARP.events.bif.zeek
|
||||
build/scripts/base/bif/plugins/Zeek_UDP.events.bif.zeek
|
||||
build/scripts/base/bif/plugins/Zeek_ICMP.events.bif.zeek
|
||||
|
|
|
@ -259,6 +259,7 @@ scripts/base/init-frameworks-and-bifs.zeek
|
|||
build/scripts/base/bif/plugins/Zeek_WebSocket.functions.bif.zeek
|
||||
build/scripts/base/bif/plugins/Zeek_WebSocket.types.bif.zeek
|
||||
build/scripts/base/bif/plugins/Zeek_XMPP.events.bif.zeek
|
||||
build/scripts/base/bif/plugins/Zeek_Cluster_Backend_ZeroMQ.cluster_backend_zeromq.bif.zeek
|
||||
build/scripts/base/bif/plugins/Zeek_ARP.events.bif.zeek
|
||||
build/scripts/base/bif/plugins/Zeek_UDP.events.bif.zeek
|
||||
build/scripts/base/bif/plugins/Zeek_ICMP.events.bif.zeek
|
||||
|
|
|
@ -1,5 +1 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
received termination signal
|
||||
received termination signal
|
||||
received termination signal
|
||||
received termination signal
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
541 seen BiFs, 0 unseen BiFs (), 0 new BiFs ()
|
||||
542 seen BiFs, 0 unseen BiFs (), 0 new BiFs ()
|
||||
|
|
|
@ -337,6 +337,7 @@
|
|||
0.000000 MetaHookPost LoadFile(0, ./Zeek_BenchmarkReader.benchmark.bif.zeek, <...>/Zeek_BenchmarkReader.benchmark.bif.zeek) -> -1
|
||||
0.000000 MetaHookPost LoadFile(0, ./Zeek_BinaryReader.binary.bif.zeek, <...>/Zeek_BinaryReader.binary.bif.zeek) -> -1
|
||||
0.000000 MetaHookPost LoadFile(0, ./Zeek_BitTorrent.events.bif.zeek, <...>/Zeek_BitTorrent.events.bif.zeek) -> -1
|
||||
0.000000 MetaHookPost LoadFile(0, ./Zeek_Cluster_Backend_ZeroMQ.cluster_backend_zeromq.bif.zeek, <...>/Zeek_Cluster_Backend_ZeroMQ.cluster_backend_zeromq.bif.zeek) -> -1
|
||||
0.000000 MetaHookPost LoadFile(0, ./Zeek_ConfigReader.config.bif.zeek, <...>/Zeek_ConfigReader.config.bif.zeek) -> -1
|
||||
0.000000 MetaHookPost LoadFile(0, ./Zeek_ConnSize.events.bif.zeek, <...>/Zeek_ConnSize.events.bif.zeek) -> -1
|
||||
0.000000 MetaHookPost LoadFile(0, ./Zeek_ConnSize.functions.bif.zeek, <...>/Zeek_ConnSize.functions.bif.zeek) -> -1
|
||||
|
@ -643,6 +644,7 @@
|
|||
0.000000 MetaHookPost LoadFileExtended(0, ./Zeek_BenchmarkReader.benchmark.bif.zeek, <...>/Zeek_BenchmarkReader.benchmark.bif.zeek) -> (-1, <no content>)
|
||||
0.000000 MetaHookPost LoadFileExtended(0, ./Zeek_BinaryReader.binary.bif.zeek, <...>/Zeek_BinaryReader.binary.bif.zeek) -> (-1, <no content>)
|
||||
0.000000 MetaHookPost LoadFileExtended(0, ./Zeek_BitTorrent.events.bif.zeek, <...>/Zeek_BitTorrent.events.bif.zeek) -> (-1, <no content>)
|
||||
0.000000 MetaHookPost LoadFileExtended(0, ./Zeek_Cluster_Backend_ZeroMQ.cluster_backend_zeromq.bif.zeek, <...>/Zeek_Cluster_Backend_ZeroMQ.cluster_backend_zeromq.bif.zeek) -> (-1, <no content>)
|
||||
0.000000 MetaHookPost LoadFileExtended(0, ./Zeek_ConfigReader.config.bif.zeek, <...>/Zeek_ConfigReader.config.bif.zeek) -> (-1, <no content>)
|
||||
0.000000 MetaHookPost LoadFileExtended(0, ./Zeek_ConnSize.events.bif.zeek, <...>/Zeek_ConnSize.events.bif.zeek) -> (-1, <no content>)
|
||||
0.000000 MetaHookPost LoadFileExtended(0, ./Zeek_ConnSize.functions.bif.zeek, <...>/Zeek_ConnSize.functions.bif.zeek) -> (-1, <no content>)
|
||||
|
@ -1281,6 +1283,7 @@
|
|||
0.000000 MetaHookPre LoadFile(0, ./Zeek_BenchmarkReader.benchmark.bif.zeek, <...>/Zeek_BenchmarkReader.benchmark.bif.zeek)
|
||||
0.000000 MetaHookPre LoadFile(0, ./Zeek_BinaryReader.binary.bif.zeek, <...>/Zeek_BinaryReader.binary.bif.zeek)
|
||||
0.000000 MetaHookPre LoadFile(0, ./Zeek_BitTorrent.events.bif.zeek, <...>/Zeek_BitTorrent.events.bif.zeek)
|
||||
0.000000 MetaHookPre LoadFile(0, ./Zeek_Cluster_Backend_ZeroMQ.cluster_backend_zeromq.bif.zeek, <...>/Zeek_Cluster_Backend_ZeroMQ.cluster_backend_zeromq.bif.zeek)
|
||||
0.000000 MetaHookPre LoadFile(0, ./Zeek_ConfigReader.config.bif.zeek, <...>/Zeek_ConfigReader.config.bif.zeek)
|
||||
0.000000 MetaHookPre LoadFile(0, ./Zeek_ConnSize.events.bif.zeek, <...>/Zeek_ConnSize.events.bif.zeek)
|
||||
0.000000 MetaHookPre LoadFile(0, ./Zeek_ConnSize.functions.bif.zeek, <...>/Zeek_ConnSize.functions.bif.zeek)
|
||||
|
@ -1587,6 +1590,7 @@
|
|||
0.000000 MetaHookPre LoadFileExtended(0, ./Zeek_BenchmarkReader.benchmark.bif.zeek, <...>/Zeek_BenchmarkReader.benchmark.bif.zeek)
|
||||
0.000000 MetaHookPre LoadFileExtended(0, ./Zeek_BinaryReader.binary.bif.zeek, <...>/Zeek_BinaryReader.binary.bif.zeek)
|
||||
0.000000 MetaHookPre LoadFileExtended(0, ./Zeek_BitTorrent.events.bif.zeek, <...>/Zeek_BitTorrent.events.bif.zeek)
|
||||
0.000000 MetaHookPre LoadFileExtended(0, ./Zeek_Cluster_Backend_ZeroMQ.cluster_backend_zeromq.bif.zeek, <...>/Zeek_Cluster_Backend_ZeroMQ.cluster_backend_zeromq.bif.zeek)
|
||||
0.000000 MetaHookPre LoadFileExtended(0, ./Zeek_ConfigReader.config.bif.zeek, <...>/Zeek_ConfigReader.config.bif.zeek)
|
||||
0.000000 MetaHookPre LoadFileExtended(0, ./Zeek_ConnSize.events.bif.zeek, <...>/Zeek_ConnSize.events.bif.zeek)
|
||||
0.000000 MetaHookPre LoadFileExtended(0, ./Zeek_ConnSize.functions.bif.zeek, <...>/Zeek_ConnSize.functions.bif.zeek)
|
||||
|
@ -2224,6 +2228,7 @@
|
|||
0.000000 | HookLoadFile ./Zeek_BenchmarkReader.benchmark.bif.zeek <...>/Zeek_BenchmarkReader.benchmark.bif.zeek
|
||||
0.000000 | HookLoadFile ./Zeek_BinaryReader.binary.bif.zeek <...>/Zeek_BinaryReader.binary.bif.zeek
|
||||
0.000000 | HookLoadFile ./Zeek_BitTorrent.events.bif.zeek <...>/Zeek_BitTorrent.events.bif.zeek
|
||||
0.000000 | HookLoadFile ./Zeek_Cluster_Backend_ZeroMQ.cluster_backend_zeromq.bif.zeek <...>/Zeek_Cluster_Backend_ZeroMQ.cluster_backend_zeromq.bif.zeek
|
||||
0.000000 | HookLoadFile ./Zeek_ConfigReader.config.bif.zeek <...>/Zeek_ConfigReader.config.bif.zeek
|
||||
0.000000 | HookLoadFile ./Zeek_ConnSize.events.bif.zeek <...>/Zeek_ConnSize.events.bif.zeek
|
||||
0.000000 | HookLoadFile ./Zeek_ConnSize.functions.bif.zeek <...>/Zeek_ConnSize.functions.bif.zeek
|
||||
|
@ -2530,6 +2535,7 @@
|
|||
0.000000 | HookLoadFileExtended ./Zeek_BenchmarkReader.benchmark.bif.zeek <...>/Zeek_BenchmarkReader.benchmark.bif.zeek
|
||||
0.000000 | HookLoadFileExtended ./Zeek_BinaryReader.binary.bif.zeek <...>/Zeek_BinaryReader.binary.bif.zeek
|
||||
0.000000 | HookLoadFileExtended ./Zeek_BitTorrent.events.bif.zeek <...>/Zeek_BitTorrent.events.bif.zeek
|
||||
0.000000 | HookLoadFileExtended ./Zeek_Cluster_Backend_ZeroMQ.cluster_backend_zeromq.bif.zeek <...>/Zeek_Cluster_Backend_ZeroMQ.cluster_backend_zeromq.bif.zeek
|
||||
0.000000 | HookLoadFileExtended ./Zeek_ConfigReader.config.bif.zeek <...>/Zeek_ConfigReader.config.bif.zeek
|
||||
0.000000 | HookLoadFileExtended ./Zeek_ConnSize.events.bif.zeek <...>/Zeek_ConnSize.events.bif.zeek
|
||||
0.000000 | HookLoadFileExtended ./Zeek_ConnSize.functions.bif.zeek <...>/Zeek_ConnSize.functions.bif.zeek
|
||||
|
|
8
testing/btest/Files/zeromq/cluster-layout-no-logger.zeek
Normal file
8
testing/btest/Files/zeromq/cluster-layout-no-logger.zeek
Normal file
|
@ -0,0 +1,8 @@
|
|||
redef Cluster::manager_is_logger = T;
|
||||
|
||||
redef Cluster::nodes = {
|
||||
["manager"] = [$node_type=Cluster::MANAGER, $ip=127.0.0.1, $p=to_port(getenv("LOG_PULL_PORT"))],
|
||||
["proxy"] = [$node_type=Cluster::PROXY, $ip=127.0.0.1],
|
||||
["worker-1"] = [$node_type=Cluster::WORKER, $ip=127.0.0.1],
|
||||
["worker-2"] = [$node_type=Cluster::WORKER, $ip=127.0.0.1],
|
||||
};
|
9
testing/btest/Files/zeromq/cluster-layout-simple.zeek
Normal file
9
testing/btest/Files/zeromq/cluster-layout-simple.zeek
Normal file
|
@ -0,0 +1,9 @@
|
|||
redef Cluster::manager_is_logger = F;
|
||||
|
||||
redef Cluster::nodes = {
|
||||
["manager"] = [$node_type=Cluster::MANAGER, $ip=127.0.0.1],
|
||||
["logger"] = [$node_type=Cluster::LOGGER, $ip=127.0.0.1, $p=to_port(getenv("LOG_PULL_PORT"))],
|
||||
["proxy"] = [$node_type=Cluster::PROXY, $ip=127.0.0.1],
|
||||
["worker-1"] = [$node_type=Cluster::WORKER, $ip=127.0.0.1],
|
||||
["worker-2"] = [$node_type=Cluster::WORKER, $ip=127.0.0.1],
|
||||
};
|
10
testing/btest/Files/zeromq/cluster-layout-two-loggers.zeek
Normal file
10
testing/btest/Files/zeromq/cluster-layout-two-loggers.zeek
Normal file
|
@ -0,0 +1,10 @@
|
|||
redef Cluster::manager_is_logger = F;
|
||||
|
||||
redef Cluster::nodes = {
|
||||
["manager"] = [$node_type=Cluster::MANAGER, $ip=127.0.0.1],
|
||||
["logger-1"] = [$node_type=Cluster::LOGGER, $ip=127.0.0.1, $p=to_port(getenv("LOG_PULL_PORT_1"))],
|
||||
["logger-2"] = [$node_type=Cluster::LOGGER, $ip=127.0.0.1, $p=to_port(getenv("LOG_PULL_PORT_2"))],
|
||||
["proxy"] = [$node_type=Cluster::PROXY, $ip=127.0.0.1],
|
||||
["worker-1"] = [$node_type=Cluster::WORKER, $ip=127.0.0.1],
|
||||
["worker-2"] = [$node_type=Cluster::WORKER, $ip=127.0.0.1],
|
||||
};
|
11
testing/btest/Files/zeromq/test-bootstrap.zeek
Normal file
11
testing/btest/Files/zeromq/test-bootstrap.zeek
Normal file
|
@ -0,0 +1,11 @@
|
|||
# Helper scripts for test expecting XPUB/XSUB ports allocated by
|
||||
# btest and configuring the ZeroMQ globals.
|
||||
@load base/utils/numbers
|
||||
|
||||
@load frameworks/cluster/backend/zeromq
|
||||
@load frameworks/cluster/backend/zeromq/connect
|
||||
|
||||
redef Cluster::Backend::ZeroMQ::listen_xpub_endpoint = fmt("tcp://127.0.0.1:%s", extract_count(getenv("XPUB_PORT")));
|
||||
redef Cluster::Backend::ZeroMQ::listen_xsub_endpoint = fmt("tcp://127.0.0.1:%s", extract_count(getenv("XSUB_PORT")));
|
||||
redef Cluster::Backend::ZeroMQ::connect_xpub_endpoint = fmt("tcp://127.0.0.1:%s", extract_count(getenv("XSUB_PORT")));
|
||||
redef Cluster::Backend::ZeroMQ::connect_xsub_endpoint = fmt("tcp://127.0.0.1:%s", extract_count(getenv("XPUB_PORT")));
|
74
testing/btest/cluster/generic/cluster-publish-errors.zeek
Normal file
74
testing/btest/cluster/generic/cluster-publish-errors.zeek
Normal file
|
@ -0,0 +1,74 @@
|
|||
# @TEST-DOC: Test errors of cluster bifs
|
||||
#
|
||||
# @TEST-EXEC: zeek --parse-only -b %INPUT
|
||||
# @TEST-EXEC: zeek -b %INPUT
|
||||
# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff .stderr
|
||||
# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff .stdout
|
||||
|
||||
module Cluster;
|
||||
|
||||
event ping1(c: count, how: string) &is_used
|
||||
{
|
||||
}
|
||||
|
||||
hook hook1(c: count, how: string) &is_used
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
event zeek_init()
|
||||
{
|
||||
# Fake the pool!
|
||||
init_pool_node(Cluster::proxy_pool, "proxy-1");
|
||||
mark_pool_node_alive(Cluster::proxy_pool, "proxy-1");
|
||||
}
|
||||
|
||||
event zeek_init() &priority=-1
|
||||
{
|
||||
print "Broker::make_event with Cluster::publish()";
|
||||
local be = Broker::make_event(ping1, 1, "make_event()");
|
||||
local r = Cluster::publish("topic", be);
|
||||
print "r=", r;
|
||||
}
|
||||
|
||||
event zeek_init() &priority=-2
|
||||
{
|
||||
print "Broker::make_event with Cluster::publish_hrw()";
|
||||
|
||||
local be = Broker::make_event(ping1, 1, "make_event()");
|
||||
local r = Cluster::publish_hrw(Cluster::proxy_pool, "key", be);
|
||||
print "r=", r;
|
||||
}
|
||||
|
||||
event zeek_init() &priority=-3
|
||||
{
|
||||
print "Broker::make_event with Cluster::publish_rr()";
|
||||
local be = Broker::make_event(ping1, 1, "make_event()");
|
||||
local r = Cluster::publish_rr(Cluster::proxy_pool, "key", be);
|
||||
print "r=", r;
|
||||
}
|
||||
|
||||
type MyEvent: record {
|
||||
x: count &default=1;
|
||||
};
|
||||
|
||||
event zeek_init() &priority=-4
|
||||
{
|
||||
print "Cluster::publish() with wrong event";
|
||||
local r = Cluster::publish("topic", MyEvent());
|
||||
print "r=", r;
|
||||
}
|
||||
|
||||
event zeek_init() &priority=-4
|
||||
{
|
||||
print "Cluster::publish_hrw() with wrong event";
|
||||
local r = Cluster::publish_hrw(Cluster::proxy_pool, "key", MyEvent());
|
||||
print "r=", r;
|
||||
}
|
||||
|
||||
event zeek_init() &priority=-4
|
||||
{
|
||||
print "Cluster::publish_rr() with wrong event";
|
||||
local r = Cluster::publish_rr(Cluster::proxy_pool, "key", MyEvent());
|
||||
print "r=", r;
|
||||
}
|
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
|
139
testing/btest/cluster/zeromq/logging.zeek
Normal file
139
testing/btest/cluster/zeromq/logging.zeek
Normal file
|
@ -0,0 +1,139 @@
|
|||
# @TEST-DOC: Startup a ZeroMQ cluster by hand, testing basic logging and node_up and node_down events.
|
||||
#
|
||||
# @TEST-REQUIRES: have-zeromq
|
||||
#
|
||||
# @TEST-GROUP: cluster-zeromq
|
||||
#
|
||||
# @TEST-PORT: XPUB_PORT
|
||||
# @TEST-PORT: XSUB_PORT
|
||||
# @TEST-PORT: LOG_PULL_PORT
|
||||
#
|
||||
# @TEST-EXEC: chmod +x ./check-cluster-log.sh
|
||||
#
|
||||
# @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: 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 10
|
||||
# @TEST-EXEC: btest-diff cluster.log.normalized
|
||||
# @TEST-EXEC: zeek-cut -F ' ' < ./logger/node_up.log | sort > node_up.sorted
|
||||
# @TEST-EXEC: btest-diff node_up.sorted
|
||||
# @TEST-EXEC: sort manager/out > manager.out
|
||||
# @TEST-EXEC: btest-diff manager.out
|
||||
|
||||
# @TEST-START-FILE common.zeek
|
||||
@load ./zeromq-test-bootstrap
|
||||
|
||||
redef Log::default_rotation_interval = 0sec;
|
||||
redef Log::flush_interval = 0.01sec;
|
||||
|
||||
type Info: record {
|
||||
self: string &log &default=Cluster::node;
|
||||
node: string &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="node_up"]);
|
||||
}
|
||||
|
||||
event Cluster::node_up(name: string, id: string) &priority=-5 {
|
||||
print "B node_up", name;
|
||||
Log::write(TEST_LOG, [$node=name]);
|
||||
# Log::flush(TEST_LOG);
|
||||
# Log::flush(Cluster::LOG);
|
||||
}
|
||||
# @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 "C send_finish";
|
||||
for ( n in nodes_up )
|
||||
if ( n != "logger" )
|
||||
Cluster::publish(Cluster::node_topic(n), finish, Cluster::node);
|
||||
}
|
||||
|
||||
event check_cluster_log() {
|
||||
if ( file_size("DONE") >= 0 ) {
|
||||
event send_finish();
|
||||
return;
|
||||
}
|
||||
|
||||
system("../check-cluster-log.sh");
|
||||
schedule 0.1sec { check_cluster_log() };
|
||||
}
|
||||
|
||||
event zeek_init() {
|
||||
schedule 0.1sec { check_cluster_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 "D node_down", name;
|
||||
add nodes_down[name];
|
||||
|
||||
if ( |nodes_down| == |Cluster::nodes| - 1 ) {
|
||||
print "D send_finish to logger";
|
||||
Cluster::publish(Cluster::node_topic("logger"), finish, Cluster::node);
|
||||
}
|
||||
if ( |nodes_down| == |Cluster::nodes| )
|
||||
terminate();
|
||||
}
|
||||
# @TEST-END-FILE
|
||||
|
||||
# @TEST-START-FILE other.zeek
|
||||
@load ./common.zeek
|
||||
|
||||
event finish(name: string) {
|
||||
print fmt("finish from %s", name);
|
||||
terminate();
|
||||
}
|
||||
# @TEST-END-FILE
|
||||
|
||||
# @TEST-START-FILE check-cluster-log.sh
|
||||
#!/bin/sh
|
||||
#
|
||||
# This script checks logger/cluster.log until the expected number
|
||||
# of log entries have been observed and puts a normalized version
|
||||
# into the testing directory for baselining.
|
||||
CLUSTER_LOG=../logger/cluster.log
|
||||
|
||||
if [ ! -f $CLUSTER_LOG ]; then
|
||||
echo "$CLUSTER_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 node message < $CLUSTER_LOG | sed -r 's/_[^_]+_[0-9]+_/_<hostname>_<pid>_/g' | sort > cluster.log.tmp
|
||||
|
||||
# 4 times 5
|
||||
if [ $(wc -l < cluster.log.tmp) = 20 ]; then
|
||||
echo "DONE!" >&2
|
||||
mv cluster.log.tmp ../cluster.log.normalized
|
||||
echo "DONE" > DONE
|
||||
fi
|
||||
|
||||
exit 0
|
||||
# @TEST-END-FILE
|
129
testing/btest/cluster/zeromq/manager-is-logger.zeek
Normal file
129
testing/btest/cluster/zeromq/manager-is-logger.zeek
Normal file
|
@ -0,0 +1,129 @@
|
|||
# @TEST-DOC: Startup a ZeroMQ cluster without a logger, testing logging through the manager.
|
||||
#
|
||||
# @TEST-REQUIRES: have-zeromq
|
||||
#
|
||||
# @TEST-GROUP: cluster-zeromq
|
||||
#
|
||||
# @TEST-PORT: XPUB_PORT
|
||||
# @TEST-PORT: XSUB_PORT
|
||||
# @TEST-PORT: LOG_PULL_PORT
|
||||
#
|
||||
# @TEST-EXEC: chmod +x ./check-cluster-log.sh
|
||||
#
|
||||
# @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: btest-bg-run manager "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=manager zeek -b ../manager.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 10
|
||||
# @TEST-EXEC: btest-diff cluster.log.normalized
|
||||
# @TEST-EXEC: zeek-cut -F ' ' < ./manager/node_up.log | sort > node_up.sorted
|
||||
# @TEST-EXEC: btest-diff node_up.sorted
|
||||
# @TEST-EXEC: sort manager/out > manager.out
|
||||
# @TEST-EXEC: btest-diff manager.out
|
||||
|
||||
# @TEST-START-FILE common.zeek
|
||||
@load ./zeromq-test-bootstrap
|
||||
|
||||
redef Log::default_rotation_interval = 0sec;
|
||||
redef Log::flush_interval = 0.01sec;
|
||||
|
||||
type Info: record {
|
||||
self: string &log &default=Cluster::node;
|
||||
node: string &log;
|
||||
};
|
||||
|
||||
redef enum Log::ID += { TEST_LOG };
|
||||
|
||||
global finish: event(name: string) &is_used;
|
||||
|
||||
event zeek_init() {
|
||||
print "zeek_init", Cluster::node;
|
||||
Log::create_stream(TEST_LOG, [$columns=Info, $path="node_up"]);
|
||||
}
|
||||
|
||||
event Cluster::node_up(name: string, id: string) {
|
||||
print "A node_up", name;
|
||||
Log::write(TEST_LOG, [$node=name]);
|
||||
}
|
||||
# @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() {
|
||||
for ( n in nodes_up )
|
||||
Cluster::publish(Cluster::node_topic(n), finish, Cluster::node);
|
||||
}
|
||||
|
||||
event check_cluster_log() {
|
||||
if ( file_size("DONE") >= 0 ) {
|
||||
event send_finish();
|
||||
return;
|
||||
}
|
||||
|
||||
system("../check-cluster-log.sh");
|
||||
schedule 0.1sec { check_cluster_log() };
|
||||
}
|
||||
|
||||
event zeek_init() {
|
||||
schedule 0.1sec { check_cluster_log() };
|
||||
}
|
||||
|
||||
event Cluster::node_up(name: string, id: string) {
|
||||
add nodes_up[name];
|
||||
print "B nodes_up", |nodes_up|;
|
||||
}
|
||||
|
||||
event Cluster::node_down(name: string, id: string) {
|
||||
print "D 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) {
|
||||
print fmt("finish from %s", name);
|
||||
terminate();
|
||||
}
|
||||
# @TEST-END-FILE
|
||||
#
|
||||
# @TEST-START-FILE check-cluster-log.sh
|
||||
#!/bin/sh
|
||||
#
|
||||
# This script checks cluster.log until the expected number
|
||||
# of log entries have been observed and puts a normalized version
|
||||
# into the testing directory for baselining.
|
||||
CLUSTER_LOG=cluster.log
|
||||
|
||||
if [ ! -f $CLUSTER_LOG ]; then
|
||||
echo "$CLUSTER_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 node message < $CLUSTER_LOG | sed -r 's/_[^_]+_[0-9]+_/_<hostname>_<pid>_/g' | sort > cluster.log.tmp
|
||||
|
||||
# 4 times 3
|
||||
if [ $(wc -l < cluster.log.tmp) = 12 ]; then
|
||||
echo "DONE!" >&2
|
||||
mv cluster.log.tmp ../cluster.log.normalized
|
||||
echo "DONE" > DONE
|
||||
fi
|
||||
|
||||
exit 0
|
||||
# @TEST-END-FILE
|
86
testing/btest/cluster/zeromq/supervisor.zeek
Normal file
86
testing/btest/cluster/zeromq/supervisor.zeek
Normal file
|
@ -0,0 +1,86 @@
|
|||
# @TEST-DOC: Configure a ZeroMQ cluster with Zeek's supervisor.
|
||||
#
|
||||
# @TEST-REQUIRES: have-zeromq
|
||||
#
|
||||
# @TEST-GROUP: cluster-zeromq
|
||||
#
|
||||
# @TEST-PORT: XPUB_PORT
|
||||
# @TEST-PORT: XSUB_PORT
|
||||
# @TEST-PORT: LOG_PULL_PORT
|
||||
|
||||
# @TEST-EXEC: chmod +x ./check-cluster-log.sh
|
||||
#
|
||||
# @TEST-EXEC: cp $FILES/zeromq/test-bootstrap.zeek zeromq-test-bootstrap.zeek
|
||||
#
|
||||
# @TEST-EXEC: btest-bg-run supervisor "ZEEKPATH=$ZEEKPATH:.. && zeek -j ../supervisor.zeek >out"
|
||||
# @TEST-EXEC: btest-bg-wait 10
|
||||
# @TEST-EXEC: btest-diff supervisor/cluster.log
|
||||
|
||||
redef Log::default_rotation_interval = 0secs;
|
||||
redef Log::flush_interval = 0.01sec;
|
||||
|
||||
@if ( ! Supervisor::is_supervisor() )
|
||||
@load ./zeromq-test-bootstrap
|
||||
@else
|
||||
|
||||
# The supervisor peeks into logger/cluster.log to initate a shutdown when
|
||||
# all nodes have said hello to each other. See the check-cluster.log.sh
|
||||
# script below.
|
||||
event check_cluster_log() {
|
||||
system_env("../check-cluster-log.sh", table(["SUPERVISOR_PID"] = cat(getpid())));
|
||||
|
||||
schedule 0.1sec { check_cluster_log() };
|
||||
}
|
||||
|
||||
event zeek_init()
|
||||
{
|
||||
if ( ! Supervisor::is_supervisor() )
|
||||
return;
|
||||
|
||||
Broker::listen("127.0.0.1", 9999/tcp);
|
||||
|
||||
local cluster: table[string] of Supervisor::ClusterEndpoint;
|
||||
cluster["manager"] = [$role=Supervisor::MANAGER, $host=127.0.0.1, $p=0/unknown];
|
||||
cluster["logger"] = [$role=Supervisor::LOGGER, $host=127.0.0.1, $p=to_port(getenv("LOG_PULL_PORT"))];
|
||||
cluster["proxy"] = [$role=Supervisor::PROXY, $host=127.0.0.1, $p=0/unknown];
|
||||
cluster["worker-1"] = [$role=Supervisor::WORKER, $host=127.0.0.1, $p=0/unknown];
|
||||
cluster["worker-2"] = [$role=Supervisor::WORKER, $host=127.0.0.1, $p=0/unknown];
|
||||
|
||||
for ( n, ep in cluster )
|
||||
{
|
||||
local sn = Supervisor::NodeConfig($name=n, $bare_mode=T, $cluster=cluster, $directory=n);
|
||||
local res = Supervisor::create(sn);
|
||||
|
||||
if ( res != "" )
|
||||
print fmt("supervisor failed to create node '%s': %s", n, res);
|
||||
}
|
||||
|
||||
# Start polling the cluster.log
|
||||
event check_cluster_log();
|
||||
}
|
||||
@endif
|
||||
|
||||
# @TEST-START-FILE check-cluster-log.sh
|
||||
#!/bin/sh
|
||||
#
|
||||
# This script checks logger/cluster.log until the expected number
|
||||
# of log entries have been observed and puts a normalized version
|
||||
# into the current directory. This runs from the supervisor.
|
||||
if [ ! -f logger/cluster.log ]; then
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
if [ -f DONE ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Remove hostname and pid from node id in message.
|
||||
zeek-cut node message < logger/cluster.log | sed -r 's/_[^_]+_[0-9]+_/_<hostname>_<pid>_/g' | sort > cluster.log
|
||||
|
||||
if [ $(wc -l < cluster.log) = 20 ]; then
|
||||
echo "DONE!" >&2
|
||||
# Trigger shutdown through supervisor.
|
||||
kill ${ZEEK_ARG_SUPERVISOR_PID};
|
||||
echo "DONE" > DONE
|
||||
fi
|
||||
# @TEST-END-FILE
|
53
testing/btest/cluster/zeromq/two-nodes.zeek
Normal file
53
testing/btest/cluster/zeromq/two-nodes.zeek
Normal file
|
@ -0,0 +1,53 @@
|
|||
# @TEST-DOC: Startup a manager running the ZeroMQ proxy thread, a worker connects and the manager sends a finish event to terminate the worker.
|
||||
#
|
||||
# @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: 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 finish: event(name: string);
|
||||
# @TEST-END-FILE
|
||||
|
||||
# @TEST-START-FILE manager.zeek
|
||||
@load ./common.zeek
|
||||
# If a node comes up that isn't us, send it a finish event.
|
||||
event Cluster::node_up(name: string, id: string) {
|
||||
print "node_up", name;
|
||||
Cluster::publish(Cluster::nodeid_topic(id), finish, Cluster::node);
|
||||
}
|
||||
|
||||
# If the worker vanishes, finish the 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 Cluster::node_up(name: string, id: string) {
|
||||
print "node_up", name;
|
||||
}
|
||||
|
||||
event finish(name: string) &is_used {
|
||||
terminate();
|
||||
}
|
||||
# @TEST-END-FILE
|
|
@ -1,6 +1,7 @@
|
|||
# @TEST-DOC: ZAM maintenance script for tracking changes in BiFs.
|
||||
#
|
||||
# @TEST-REQUIRES: have-spicy
|
||||
# @TEST-REQUIRES: have-zeromq
|
||||
#
|
||||
# @TEST-EXEC: zeek -b %INPUT >output
|
||||
# @TEST-EXEC: btest-diff output
|
||||
|
@ -198,6 +199,7 @@ global known_BiFs = set(
|
|||
"Telemetry::__histogram_observe",
|
||||
"Telemetry::__histogram_sum",
|
||||
"WebSocket::__configure_analyzer",
|
||||
"Cluster::Backend::ZeroMQ::spawn_zmq_proxy_thread",
|
||||
"__init_primary_bifs",
|
||||
"__init_secondary_bifs",
|
||||
"active_file",
|
||||
|
|
4
testing/scripts/have-zeromq
Executable file
4
testing/scripts/have-zeromq
Executable file
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
|
||||
zeek -N Zeek::Cluster_Backend_ZeroMQ >/dev/null
|
||||
exit $?
|
Loading…
Add table
Add a link
Reference in a new issue