zeek/testing/btest/scripts/base/frameworks/logging/ascii-double.zeek
Christian Kreibich c0bd02e18f Canonifier improvements for the scripts.base.frameworks.logging.ascii-double test
This now more surgically applies canonifiers so that the double-format
numerical output isn't itself canonified.
2020-12-06 20:19:52 -08:00

88 lines
1.7 KiB
Text

# @TEST-DOC: Test that the ASCII writer logs values of type "double" correctly.
#
# @TEST-EXEC: zeek -b %INPUT test-json.zeek
# @TEST-EXEC: mv test.log json.log
# @TEST-EXEC: zeek -b %INPUT
#
# Override the canonifiers in the following: we don't want to canonify
# the double-format numbers themselves:
# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-openclose-timestamps btest-diff test.log
# @TEST-EXEC: TEST_DIFF_CANONIFIER= btest-diff json.log
#
# Make sure we do not write out scientific notation for doubles.
module Test;
export {
redef enum Log::ID += { LOG };
type Info: record {
d: double &log;
};
}
function logwrite(val: double)
{
Log::write(Test::LOG, [$d=val]);
}
event zeek_init()
{
local d: double;
local dmax: double = 1.79e308;
local dmin: double = 2.23e-308;
Log::create_stream(Test::LOG, [$columns=Info]);
# relatively large values
logwrite(2153226000.0);
logwrite(2153226000.1);
logwrite(2153226000.123456789);
# relatively small values
logwrite(1.0);
logwrite(1.1);
logwrite(1.123456789);
logwrite(-1.123456789);
logwrite(1.1234);
logwrite(.1234);
# scientific notation (positive exponents)
logwrite(5e4);
logwrite(-5e4);
logwrite(3.14e15);
logwrite(-3.14e15);
logwrite(dmax);
logwrite(-dmax);
# scientific notation (negative exponents)
logwrite(1.23456789e-5);
logwrite(dmin);
logwrite(-dmin);
# inf
d = dmax; # ok
d = d * 2.0; # inf
logwrite(d);
# -inf
d = -dmax; # ok
d = d * 2.0; # -inf
logwrite(d);
# negative zero (compares equal to 0.0, but has different representation)
d = -0.0;
logwrite(d);
# nan
d = dmax; # ok
d = d * 2.0; # inf
d = d * 0.0; # nan
logwrite(d);
}
# @TEST-START-FILE test-json.zeek
redef LogAscii::use_json = T;
# @TEST-END-FILE