mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
52 lines
1.2 KiB
Text
52 lines
1.2 KiB
Text
# @TEST-EXEC: zeek -b %INPUT
|
|
# @TEST-DOC: Regression test #2017; no output check, just shouldn't crash
|
|
|
|
redef table_expire_interval = 0.1sec;
|
|
redef table_incremental_step = 100;
|
|
redef table_expire_delay = 0.5sec;
|
|
|
|
redef exit_only_after_terminate = T;
|
|
|
|
global tbl: table[string] of vector of count &default = vector() &create_expire=1sec;
|
|
|
|
const populates_per_second = 100;
|
|
const populates_num = 100;
|
|
global done = F;
|
|
|
|
event do_terminate() {
|
|
terminate();
|
|
}
|
|
|
|
event cleanup(idx: string) {
|
|
delete tbl[idx];
|
|
|
|
# terminate a bit after all elements will finally have been expired
|
|
if ( done && |tbl| == 0 )
|
|
schedule 1sec { do_terminate() };
|
|
}
|
|
|
|
event populate(round: count) {
|
|
|
|
local i = 0;
|
|
while (++i < populates_num) {
|
|
local val = rand(1000000);
|
|
local val_str = cat(val);
|
|
# print(fmt("round %s %s val=%s", round, i, val));
|
|
tbl[val_str] = vector(val);
|
|
|
|
# Schedule an explicit delete at most a second away.
|
|
local random_cleanup_delay = double_to_interval(rand(100) / 100.0);
|
|
schedule random_cleanup_delay { cleanup(val_str) };
|
|
}
|
|
|
|
if ( round <= 200 ) {
|
|
print(fmt("round %s size=%s", round, |tbl|));
|
|
schedule 1sec/populates_per_second { populate(++round) };
|
|
}
|
|
else
|
|
done = T;
|
|
}
|
|
|
|
event zeek_init() {
|
|
event populate(1);
|
|
}
|