zeek/testing/btest/core/record-field-redef.zeek
Patrick Kelley 8fd444092b initial
2025-05-07 15:35:15 -04:00

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);
}