Merge remote-tracking branch 'origin/topic/dnthayer/ticket1863'

* origin/topic/dnthayer/ticket1863:
  Fix ASCII logging of very large values of type "double"
  Add more test cases to ascii-double.bro
This commit is contained in:
Robin Sommer 2017-11-17 15:11:22 -08:00
commit 44baf1b355
4 changed files with 107 additions and 13 deletions

View file

@ -1,6 +1,10 @@
# @TEST-DOC: Test that the ASCII writer logs values of type "double" correctly.
#
# @TEST-EXEC: bro -b %INPUT test-json.bro
# @TEST-EXEC: mv test.log json.log
# @TEST-EXEC: bro -b %INPUT
# @TEST-EXEC: btest-diff test.log
# @TEST-EXEC: btest-diff json.log
#
# Make sure we do not write out scientific notation for doubles.
@ -14,16 +18,68 @@ export {
};
}
event bro_init()
function logwrite(val: double)
{
Log::create_stream(Test::LOG, [$columns=Info]);
Log::write(Test::LOG, [$d=2153226000.0]);
Log::write(Test::LOG, [$d=2153226000.1]);
Log::write(Test::LOG, [$d=2153226000.123456789]);
Log::write(Test::LOG, [$d=1.0]);
Log::write(Test::LOG, [$d=1.1]);
Log::write(Test::LOG, [$d=1.123456789]);
Log::write(Test::LOG, [$d=1.1234]);
Log::write(Test::LOG, [$d=3.14e15]);
Log::write(Test::LOG, [$d=val]);
}
event bro_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.bro
redef LogAscii::use_json = T;
# @TEST-END-FILE