diff --git a/testing/btest/Baseline/cluster.websocket.no-subscriptions/..client..stderr b/testing/btest/Baseline/cluster.websocket.broker.no-subscriptions/..client..stderr similarity index 100% rename from testing/btest/Baseline/cluster.websocket.no-subscriptions/..client..stderr rename to testing/btest/Baseline/cluster.websocket.broker.no-subscriptions/..client..stderr diff --git a/testing/btest/Baseline/cluster.websocket.no-subscriptions/..client..stdout b/testing/btest/Baseline/cluster.websocket.broker.no-subscriptions/..client..stdout similarity index 100% rename from testing/btest/Baseline/cluster.websocket.no-subscriptions/..client..stdout rename to testing/btest/Baseline/cluster.websocket.broker.no-subscriptions/..client..stdout diff --git a/testing/btest/Baseline/cluster.websocket.no-subscriptions/..manager..stderr b/testing/btest/Baseline/cluster.websocket.broker.no-subscriptions/..manager..stderr similarity index 100% rename from testing/btest/Baseline/cluster.websocket.no-subscriptions/..manager..stderr rename to testing/btest/Baseline/cluster.websocket.broker.no-subscriptions/..manager..stderr diff --git a/testing/btest/Baseline/cluster.websocket.broker.no-subscriptions/..manager..stdout b/testing/btest/Baseline/cluster.websocket.broker.no-subscriptions/..manager..stdout new file mode 100644 index 0000000000..944dde8125 --- /dev/null +++ b/testing/btest/Baseline/cluster.websocket.broker.no-subscriptions/..manager..stdout @@ -0,0 +1,33 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +got ping, 1, 1 +got ping, 2, 2 +got ping, 3, 3 +got ping, 4, 4 +got ping, 5, 5 +got ping, 6, 6 +got ping, 7, 7 +got ping, 8, 8 +got ping, 9, 9 +got ping, 10, 10 +got ping, 11, 11 +got ping, 12, 12 +got ping, 13, 13 +got ping, 14, 14 +got ping, 15, 15 +got ping, 16, 16 +got ping, 17, 17 +got ping, 18, 18 +got ping, 19, 19 +got ping, 20, 20 +got ping, 21, 21 +got ping, 22, 22 +got ping, 23, 23 +got ping, 24, 24 +got ping, 25, 25 +got ping, 26, 26 +got ping, 27, 27 +got ping, 28, 28 +got ping, 29, 29 +got ping, 30, 30 +got ping, 31, 31 +got ping, 32, 32 diff --git a/testing/btest/Baseline/cluster.websocket.no-subscriptions/..manager..stdout b/testing/btest/Baseline/cluster.websocket.zeromq.no-subscriptions/..client..stderr similarity index 70% rename from testing/btest/Baseline/cluster.websocket.no-subscriptions/..manager..stdout rename to testing/btest/Baseline/cluster.websocket.zeromq.no-subscriptions/..client..stderr index bb622d5ce2..49d861c74c 100644 --- a/testing/btest/Baseline/cluster.websocket.no-subscriptions/..manager..stdout +++ b/testing/btest/Baseline/cluster.websocket.zeromq.no-subscriptions/..client..stderr @@ -1,3 +1 @@ ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. -Cluster::websocket_client_added, [] -got ping, 42 diff --git a/testing/btest/Baseline/cluster.websocket.zeromq.no-subscriptions/..client..stdout b/testing/btest/Baseline/cluster.websocket.zeromq.no-subscriptions/..client..stdout new file mode 100644 index 0000000000..49d861c74c --- /dev/null +++ b/testing/btest/Baseline/cluster.websocket.zeromq.no-subscriptions/..client..stdout @@ -0,0 +1 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. diff --git a/testing/btest/Baseline/cluster.websocket.zeromq.no-subscriptions/..manager..stderr b/testing/btest/Baseline/cluster.websocket.zeromq.no-subscriptions/..manager..stderr new file mode 100644 index 0000000000..e3f6131b1d --- /dev/null +++ b/testing/btest/Baseline/cluster.websocket.zeromq.no-subscriptions/..manager..stderr @@ -0,0 +1,2 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +received termination signal diff --git a/testing/btest/Baseline/cluster.websocket.zeromq.no-subscriptions/..manager..stdout b/testing/btest/Baseline/cluster.websocket.zeromq.no-subscriptions/..manager..stdout new file mode 100644 index 0000000000..944dde8125 --- /dev/null +++ b/testing/btest/Baseline/cluster.websocket.zeromq.no-subscriptions/..manager..stdout @@ -0,0 +1,33 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +got ping, 1, 1 +got ping, 2, 2 +got ping, 3, 3 +got ping, 4, 4 +got ping, 5, 5 +got ping, 6, 6 +got ping, 7, 7 +got ping, 8, 8 +got ping, 9, 9 +got ping, 10, 10 +got ping, 11, 11 +got ping, 12, 12 +got ping, 13, 13 +got ping, 14, 14 +got ping, 15, 15 +got ping, 16, 16 +got ping, 17, 17 +got ping, 18, 18 +got ping, 19, 19 +got ping, 20, 20 +got ping, 21, 21 +got ping, 22, 22 +got ping, 23, 23 +got ping, 24, 24 +got ping, 25, 25 +got ping, 26, 26 +got ping, 27, 27 +got ping, 28, 28 +got ping, 29, 29 +got ping, 30, 30 +got ping, 31, 31 +got ping, 32, 32 diff --git a/testing/btest/cluster/websocket/broker/no-subscriptions.zeek b/testing/btest/cluster/websocket/broker/no-subscriptions.zeek new file mode 100644 index 0000000000..968e5b40bc --- /dev/null +++ b/testing/btest/cluster/websocket/broker/no-subscriptions.zeek @@ -0,0 +1,66 @@ +# @TEST-DOC: Test that publishing events to a WebSocket client's auto topic works. +# +# @TEST-REQUIRES: python3 -c 'import websockets.sync' +# +# @TEST-PORT: BROKER_PORT1 +# @TEST-PORT: WEBSOCKET_PORT +# +# @TEST-EXEC: cp $FILES/ws/wstest.py . +# +# @TEST-EXEC: zeek -b --parse-only manager.zeek +# @TEST-EXEC: python3 -m py_compile client.py +# +# @TEST-EXEC: btest-bg-run manager "ZEEKPATH=$ZEEKPATH:.. && CLUSTER_NODE=manager zeek -b ../manager.zeek" +# @TEST-EXEC: btest-bg-run client "python3 ../client.py" +# +# @TEST-EXEC: btest-bg-wait 30 +# @TEST-EXEC: btest-diff ./manager/.stdout +# @TEST-EXEC: btest-diff ./manager/.stderr +# @TEST-EXEC: btest-diff ./client/.stdout +# @TEST-EXEC: btest-diff ./client/.stderr + +# @TEST-START-FILE cluster-layout.zeek +redef Cluster::nodes = { + ["manager"] = [$node_type=Cluster::MANAGER, $ip=127.0.0.1, $p=to_port(getenv("BROKER_PORT1"))], +}; +# @TEST-END-FILE +# +# @TEST-START-FILE manager.zeek +redef exit_only_after_terminate = T; + +redef Log::enable_local_logging = T; +redef Log::default_rotation_interval = 0sec; +redef Broker::disable_ssl = T; + +event zeek_init() + { + Cluster::subscribe("/test/pings"); + Cluster::listen_websocket([$listen_host="127.0.0.1", $listen_port=to_port(getenv("WEBSOCKET_PORT"))]); + } + +global ping_count = 0; +const ping_count_expected = 32; + +event ping(c: count) &is_used + { + ++ping_count; + print "got ping", c, ping_count; + if ( ping_count == ping_count_expected ) + terminate(); + } +# @TEST-END-FILE + +# @TEST-START-FILE client.py +import wstest + +def run(ws_url): + for i in range(32): + with wstest.connect("ws1", ws_url) as tc: + tc.send_json([]) # Send no subscriptions + ack = tc.recv_json() + assert ack.get("type") == "ack", f"{ack}" + tc.send_json(wstest.build_event_v1("/test/pings/", "ping", [i + 1])) + +if __name__ == "__main__": + wstest.main(run, wstest.WS4_URL_V1) +# @TEST-END-FILE diff --git a/testing/btest/cluster/websocket/no-subscriptions.zeek b/testing/btest/cluster/websocket/zeromq/no-subscriptions.zeek similarity index 76% rename from testing/btest/cluster/websocket/no-subscriptions.zeek rename to testing/btest/cluster/websocket/zeromq/no-subscriptions.zeek index 09701e5fc9..305b0919eb 100644 --- a/testing/btest/cluster/websocket/no-subscriptions.zeek +++ b/testing/btest/cluster/websocket/zeromq/no-subscriptions.zeek @@ -36,28 +36,28 @@ event zeek_init() Cluster::listen_websocket([$listen_host="127.0.0.1", $listen_port=to_port(getenv("WEBSOCKET_PORT"))]); } +global ping_count = 0; +const ping_count_expected = 32; + event ping(c: count) &is_used { - print "got ping", c; - terminate(); - } - -event Cluster::websocket_client_added(info: Cluster::EndpointInfo, subscriptions: string_vec) - { - print "Cluster::websocket_client_added", subscriptions; + ++ping_count; + print "got ping", c, ping_count; + if ( ping_count == ping_count_expected ) + terminate(); } # @TEST-END-FILE - # @TEST-START-FILE client.py import wstest def run(ws_url): - with wstest.connect("ws1", ws_url) as tc: - tc.send_json([]) # Send no subscriptions - ack = tc.recv_json() - assert ack.get("type") == "ack", f"{ack}" - tc.send_json(wstest.build_event_v1("/test/pings/", "ping", [42])) + for i in range(32): + with wstest.connect("ws1", ws_url) as tc: + tc.send_json([]) # Send no subscriptions + ack = tc.recv_json() + assert ack.get("type") == "ack", f"{ack}" + tc.send_json(wstest.build_event_v1("/test/pings/", "ping", [i + 1])) if __name__ == "__main__": wstest.main(run, wstest.WS4_URL_V1)