55 lines
1.8 KiB
Plaintext
55 lines
1.8 KiB
Plaintext
# This test verifies basic agent-controller communication in the Management
|
|
# framework. We launch agent and controller via the supervisor, add an extra
|
|
# handler for the notify_agent_hello event that travels agent -> controller, and
|
|
# verify that it prints receipt of the event to stdout.
|
|
|
|
# The following environment variables are known to the controller framework:
|
|
# @TEST-PORT: ZEEK_CONTROLLER_PORT
|
|
# @TEST-PORT: BROKER_PORT
|
|
|
|
# @TEST-EXEC: ZEEK_MANAGEMENT_TESTING=1 btest-bg-run zeek zeek -j %INPUT
|
|
# @TEST-EXEC: btest-bg-wait 10
|
|
# @TEST-EXEC: btest-diff zeek/nodes/controller/stdout
|
|
|
|
@load policy/frameworks/management/agent
|
|
@load policy/frameworks/management/controller
|
|
|
|
redef Broker::default_port = to_port(getenv("BROKER_PORT"));
|
|
|
|
redef Management::Controller::name = "controller";
|
|
redef Management::Agent::name = "agent";
|
|
|
|
# Tell the agent where to locate the controller.
|
|
redef Management::Agent::controller = [$address="127.0.0.1", $bound_port=to_port(getenv("ZEEK_CONTROLLER_PORT"))];
|
|
|
|
@if ( Supervisor::is_supervised() )
|
|
|
|
@load policy/frameworks/management/agent/api
|
|
|
|
global logged = F;
|
|
|
|
event zeek_init()
|
|
{
|
|
# We're using the controller to shut everything down once the
|
|
# notify_agent_hello event has arrived. The controller doesn't normally
|
|
# talk to the supervisor, so connect to it.
|
|
if ( Management::role == Management::CONTROLLER )
|
|
Broker::peer(getenv("ZEEK_DEFAULT_LISTEN_ADDRESS"), Broker::default_port, Broker::default_listen_retry);
|
|
}
|
|
|
|
event Management::Agent::API::notify_agent_hello(instance: string, id: string, connecting: bool, api_version: count)
|
|
{
|
|
if ( Management::role == Management::CONTROLLER )
|
|
{
|
|
if ( ! logged )
|
|
print(fmt("notify_agent_hello %s %s", instance, api_version));
|
|
|
|
logged = T;
|
|
|
|
# This takes down the whole process tree.
|
|
Broker::publish(SupervisorControl::topic_prefix, SupervisorControl::stop_request);
|
|
}
|
|
}
|
|
|
|
@endif
|