zeek/testing/btest/doc/zeekygen/declaring_script.zeek
2025-04-17 16:30:23 +02:00

71 lines
1.8 KiB
Text

# @TEST-DOC: Test zeekygen declaring script functions. A bit quirky: The path returned for additional scripts depends on whether loaded relative or absolute. We load %INPUT relative here to have relative paths.
#
# @TEST-EXEC: unset ZEEK_DISABLE_ZEEKYGEN; zeek -b `basename %INPUT` >out
# @TEST-EXEC: btest-diff out
@load ./my-module
@load ./redef-it
@load ./pkg1
@load base/protocols/conn
@load protocols/conn/speculative-service
@load protocols/conn/mac-logging
event zeek_init()
{
print "Conn::Info", get_identifier_declaring_script("Conn::Info");
print "Conn::Info$uid", get_record_field_declaring_script("Conn::Info$uid");
print "Conn::Info$speculative_service", get_record_field_declaring_script("Conn::Info$speculative_service");
print "Conn::Info$orig_l2_addr", get_record_field_declaring_script("Conn::Info$orig_l2_addr");
# Custom record
local record_type_name = "MyModule::Info";
local record_script = get_identifier_declaring_script(record_type_name);
print record_type_name, record_script;
for ( field in record_fields(record_type_name) )
{
local field_identifier = fmt("%s$%s", record_type_name, field);
local field_script = get_record_field_declaring_script(field_identifier);
print field_identifier, record_script != field_script ? "redef" : "original", field_script;
}
}
# @TEST-START-FILE my-module.zeek
module MyModule;
export {
type Info: record {
ts: time &log;
prefix: string &log;
};
}
# @TEST-END-FILE
# @TEST-START-FILE redef-it.zeek
module RedefIt;
export {
redef record MyModule::Info += {
addl: string &log &default="dfl";
};
}
# @TEST-END-FILE
# @TEST-START-FILE pkg1/__load__.zeek
@load ./redef-more.zeek
# @TEST-END-FILE
# @TEST-START-FILE pkg1/redef-more.zeek
module RedefMore;
export {
redef record MyModule::Info += {
more: string &log &default="more";
};
}
# @TEST-END-FILE