57 lines
1.5 KiB
Plaintext
57 lines
1.5 KiB
Plaintext
# @TEST-DOC: Redef'ing of record fields for adding and removing &log from them.
|
|
# @TEST-EXEC: zeek -b %INPUT >output
|
|
# @TEST-EXEC: btest-diff output
|
|
# @TEST-EXEC: btest-diff test.log
|
|
|
|
module RedefRecordTest;
|
|
|
|
export {
|
|
redef enum Log::ID += { LOG };
|
|
|
|
type Info: record {
|
|
ts: time &log;
|
|
msg: string &log;
|
|
extra1: string &log &optional;
|
|
extra2: string &optional;
|
|
extra3: string &optional;
|
|
extra4: string &optional;
|
|
};
|
|
}
|
|
|
|
# Adding an extra &log is fine: Making something &log by default
|
|
# shouldn't break users.
|
|
redef record Info$msg += { &log };
|
|
|
|
# Don't log extra1
|
|
redef record Info$extra1 -= { &log };
|
|
|
|
# Don't log extra2 (default, but remove &log) again
|
|
redef record Info$extra2 -= { &log };
|
|
|
|
# Do log extra3
|
|
redef record Info$extra3 += { &log };
|
|
|
|
# Redef extra4 from global scope (remove and re-add &log)
|
|
module GLOBAL;
|
|
redef record RedefRecordTest::Info$extra4 -= { &log };
|
|
redef record RedefRecordTest::Info$extra4 += { &log };
|
|
|
|
module RedefRecordTest;
|
|
|
|
# zeek_init() for testing of print and logging.
|
|
event zeek_init()
|
|
{
|
|
print "Info record_fields\n", record_fields(Info);
|
|
local rec = Info(
|
|
$ts=double_to_time(1660142487.54),
|
|
$msg="msg",
|
|
$extra1="extra1 value",
|
|
$extra2="extra2 value",
|
|
$extra3="extra3 value",
|
|
$extra4="extra4 value"
|
|
);
|
|
print "Info record", rec;
|
|
Log::create_stream(LOG, [$columns=Info, $path="test"]);
|
|
Log::write(LOG, rec);
|
|
}
|