mirror of
https://github.com/zeek/zeek.git
synced 2025-10-05 08:08:19 +00:00
77 lines
2 KiB
Text
77 lines
2 KiB
Text
# @TEST-EXEC: mkdir fail.sqlite
|
|
# @TEST-EXEC: btest-bg-run zeek "BROKER_FILE_VERBOSITY=error BROKER_CONSOLE_VERBOSITY=quiet zeek -b %INPUT >out 2>err"
|
|
# @TEST-EXEC: btest-bg-wait 60
|
|
# @TEST-EXEC: btest-diff zeek/out
|
|
# @TEST-EXEC: TEST_DIFF_CANONIFIER="$SCRIPTS/diff-remove-abspath $SCRIPTS/diff-sort" btest-diff zeek/err
|
|
|
|
redef exit_only_after_terminate = T;
|
|
|
|
global c = 0;
|
|
global m1: opaque of Broker::Store;
|
|
global m2: opaque of Broker::Store;
|
|
global c1: opaque of Broker::Store;
|
|
global c2: opaque of Broker::Store;
|
|
|
|
global check_it: function(name: string, s: opaque of Broker::Store);
|
|
|
|
function check_terminate_conditions()
|
|
{
|
|
++c;
|
|
if ( c == 4 )
|
|
{
|
|
print Broker::is_closed(m1);
|
|
print Broker::is_closed(m2);
|
|
print Broker::is_closed(c1);
|
|
print Broker::is_closed(c2);
|
|
# Failed to originally open m1, so should raise an error.
|
|
Broker::close(m1);
|
|
Broker::close(m2);
|
|
Broker::close(c1);
|
|
# Closing c2 is an error since it's actually referring to m2, already
|
|
# closed above (i.e. making a clone of a master store that already lives
|
|
# in the same process, just returns a handle to the master).
|
|
Broker::close(c2);
|
|
print Broker::is_closed(m1);
|
|
print Broker::is_closed(m2);
|
|
print Broker::is_closed(c1);
|
|
print Broker::is_closed(c2);
|
|
check_it("m1", m1);
|
|
check_it("c1", c1);
|
|
check_it("m2", m2);
|
|
check_it("c2", c2);
|
|
}
|
|
else if ( c == 8 )
|
|
terminate();
|
|
}
|
|
|
|
function check_it(name: string, s: opaque of Broker::Store)
|
|
{
|
|
when [name, s] ( local r = Broker::keys(s) )
|
|
{
|
|
check_terminate_conditions();
|
|
print fmt("%s keys result: %s", name, r);
|
|
}
|
|
timeout 1sec
|
|
{
|
|
check_terminate_conditions();
|
|
print fmt("%s timeout", name);
|
|
}
|
|
}
|
|
|
|
event zeek_init()
|
|
{
|
|
m1 = Broker::create_master("../fail", Broker::SQLITE);
|
|
m2 = Broker::create_master("ok");
|
|
c1 = Broker::create_clone("../fail");
|
|
c2 = Broker::create_clone("ok");
|
|
|
|
print Broker::is_closed(m1);
|
|
print Broker::is_closed(m2);
|
|
print Broker::is_closed(c1);
|
|
print Broker::is_closed(c2);
|
|
|
|
check_it("m1", m1);
|
|
check_it("c1", c1);
|
|
check_it("m2", m2);
|
|
check_it("c2", c2);
|
|
}
|