mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
testing/btest: Un-deferred record initalization tests
These baselines should align with what Zeek 5.2 or before did.
This commit is contained in:
parent
b783441428
commit
7d6c8d7224
13 changed files with 468 additions and 0 deletions
9
testing/btest/Baseline/core.record-field-defer-2/output
Normal file
9
testing/btest/Baseline/core.record-field-defer-2/output
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
0, new_connection, CHhAvVGS1DHFjwGM9, 1362692526.869344
|
||||||
|
1, my_network_time() called, 1362692526.869344
|
||||||
|
2, my_network_time() called, 1362692526.869344
|
||||||
|
3, my_network_time() called, 1362692526.869344
|
||||||
|
3, new_connection done
|
||||||
|
3, connection_state_remove, CHhAvVGS1DHFjwGM9, 1362692527.080972
|
||||||
|
3, state, CHhAvVGS1DHFjwGM9, [ts=1362692526.869344, inner=[ts=1362692526.869344, ts_other=1362692526.869344]]
|
||||||
|
3, connection_state_remove done
|
8
testing/btest/Baseline/core.record-field-defer-3/output
Normal file
8
testing/btest/Baseline/core.record-field-defer-3/output
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
0, new_connection, CHhAvVGS1DHFjwGM9, 1362692526.869344
|
||||||
|
1, my_network_time() called, 1362692526.869344
|
||||||
|
2, my_network_time() called, 1362692526.869344
|
||||||
|
2, new_connection done
|
||||||
|
2, connection_state_remove, CHhAvVGS1DHFjwGM9, 1362692527.080972
|
||||||
|
2, state, CHhAvVGS1DHFjwGM9, [ts=1362692526.869344, inner=[ts=1362692526.869344]]
|
||||||
|
2, connection_state_remove done
|
11
testing/btest/Baseline/core.record-field-defer-4/output
Normal file
11
testing/btest/Baseline/core.record-field-defer-4/output
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
0, new_connection, CHhAvVGS1DHFjwGM9, 1362692526.869344
|
||||||
|
1, my_network_time() called, 1362692526.869344
|
||||||
|
2, my_network_time() called, 1362692526.869344
|
||||||
|
3, my_network_time() called, 1362692526.869344
|
||||||
|
4, my_network_time() called, 1362692526.869344
|
||||||
|
5, my_network_time() called, 1362692526.869344
|
||||||
|
5, new_connection done
|
||||||
|
5, connection_state_remove, CHhAvVGS1DHFjwGM9, 1362692527.080972
|
||||||
|
5, state, CHhAvVGS1DHFjwGM9, [ts=1362692526.869344, inner=[ts=1362692526.869344, ts_other=1362692526.869344], inner_other=[ts=1362692526.869344, ts_other=1362692526.869344]]
|
||||||
|
5, connection_state_remove done
|
|
@ -0,0 +1,14 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
0, my_seq()
|
||||||
|
1, my_seq()
|
||||||
|
2, my_seq()
|
||||||
|
3, my_seq()
|
||||||
|
4, my_seq()
|
||||||
|
5, my_seq()
|
||||||
|
6, my_seq()
|
||||||
|
7, my_seq()
|
||||||
|
8, printing
|
||||||
|
8, s1, [seq=1, inner=[inner_most=[seq=3], seq=7]]
|
||||||
|
8, s2, [seq=2, inner=[inner_most=[seq=4], seq=8]]
|
||||||
|
8, os1, [inner_most=[seq=5]]
|
||||||
|
8, os2, [inner_most=[seq=6]]
|
|
@ -0,0 +1,8 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
0, my_seq()
|
||||||
|
1, my_seq()
|
||||||
|
2, my_seq()
|
||||||
|
3, my_seq()
|
||||||
|
4, printing
|
||||||
|
4, s1, [seq=1, inner=[seq=3]]
|
||||||
|
4, s2, [seq=2, inner=[seq=4]]
|
|
@ -0,0 +1,13 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
0, my_seq()
|
||||||
|
1, my_seq()
|
||||||
|
2, my_seq()
|
||||||
|
3, my_seq()
|
||||||
|
4, printing
|
||||||
|
4, s1, [seq=1, inner=[seq=3]]
|
||||||
|
4, s2, [seq=2, inner=[seq=4]]
|
||||||
|
4, tbl, {
|
||||||
|
[[seq=2, inner=[seq=4]]] = [seq=2, inner=[seq=4]],
|
||||||
|
[[seq=1, inner=[seq=3]]] = [seq=1, inner=[seq=3]]
|
||||||
|
}
|
||||||
|
4, done
|
|
@ -0,0 +1,13 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
0, my_seq()
|
||||||
|
1, my_seq()
|
||||||
|
2, my_seq()
|
||||||
|
3, my_seq()
|
||||||
|
4, printing
|
||||||
|
4, s1, [seq=1, inner=[seq=2]]
|
||||||
|
4, s2, [seq=3, inner=[seq=4]]
|
||||||
|
4, tbl, {
|
||||||
|
[[seq=1, inner=[seq=2]]] = [seq=1, inner=[seq=2]],
|
||||||
|
[[seq=3, inner=[seq=4]]] = [seq=3, inner=[seq=4]]
|
||||||
|
}
|
||||||
|
4, done
|
13
testing/btest/Baseline/core.record-field-defer-table/output
Normal file
13
testing/btest/Baseline/core.record-field-defer-table/output
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
0, my_seq()
|
||||||
|
1, my_seq()
|
||||||
|
2, my_seq()
|
||||||
|
3, my_seq()
|
||||||
|
4, printing
|
||||||
|
4, s1, [seq=1, inner=[seq=2]]
|
||||||
|
4, s2, [seq=3, inner=[seq=4]]
|
||||||
|
4, tbl, {
|
||||||
|
[[seq=1, inner=[seq=2]]] = [seq=1, inner=[seq=2]],
|
||||||
|
[[seq=3, inner=[seq=4]]] = [seq=3, inner=[seq=4]]
|
||||||
|
}
|
||||||
|
4, done
|
8
testing/btest/Baseline/core.record-field-defer/output
Normal file
8
testing/btest/Baseline/core.record-field-defer/output
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
0, new_connection, CHhAvVGS1DHFjwGM9, 1362692526.869344
|
||||||
|
1, my_network_time() called, 1362692526.869344
|
||||||
|
2, my_network_time() called, 1362692526.869344
|
||||||
|
2, new_connection done
|
||||||
|
2, connection_state_remove, CHhAvVGS1DHFjwGM9, 1362692527.080972
|
||||||
|
2, state, CHhAvVGS1DHFjwGM9, [ts=1362692526.869344, inner=[ts=1362692526.869344]]
|
||||||
|
2, connection_state_remove done
|
50
testing/btest/core/record-field-defer-parse-time-nested.zeek
Normal file
50
testing/btest/core/record-field-defer-parse-time-nested.zeek
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
# @TEST-DOC: Test deferred initialization behavior for nested records and redef.
|
||||||
|
# @TEST-EXEC: zeek -b %INPUT >output
|
||||||
|
# @TEST-EXEC: TEST_DIF_CANONIFIER= btest-diff output
|
||||||
|
|
||||||
|
module Test;
|
||||||
|
|
||||||
|
global seq = 0;
|
||||||
|
|
||||||
|
function my_seq(): count {
|
||||||
|
print seq, "my_seq()";
|
||||||
|
return ++seq;
|
||||||
|
}
|
||||||
|
|
||||||
|
type InnerMost: record { };
|
||||||
|
|
||||||
|
type Inner: record {
|
||||||
|
inner_most: InnerMost;
|
||||||
|
};
|
||||||
|
|
||||||
|
type State: record {
|
||||||
|
seq: count &default=my_seq();
|
||||||
|
inner: Inner;
|
||||||
|
};
|
||||||
|
|
||||||
|
type OtherState: record {
|
||||||
|
inner_most: InnerMost;
|
||||||
|
};
|
||||||
|
|
||||||
|
# s1$seq and s2$seq receive 1, 2
|
||||||
|
global s1 = State();
|
||||||
|
global s2 = State();
|
||||||
|
global os1 = OtherState();
|
||||||
|
global os2 = OtherState();
|
||||||
|
|
||||||
|
# This uses up seq 3,4,5,6 for nested InnerMost in s1,s2,os1,os2.
|
||||||
|
redef record InnerMost += {
|
||||||
|
seq: count &default=my_seq();
|
||||||
|
};
|
||||||
|
|
||||||
|
# This uses seq 7, 8 for s1 and s2.
|
||||||
|
redef record Inner += {
|
||||||
|
seq: count &default=my_seq();
|
||||||
|
};
|
||||||
|
|
||||||
|
print seq, "printing";
|
||||||
|
|
||||||
|
print seq, "s1", s1;
|
||||||
|
print seq, "s2", s2;
|
||||||
|
print seq, "os1", os1;
|
||||||
|
print seq, "os2", os2;
|
31
testing/btest/core/record-field-defer-parse-time.zeek
Normal file
31
testing/btest/core/record-field-defer-parse-time.zeek
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
# @TEST-DOC: Test deferred initialization behavior at parse time.
|
||||||
|
# @TEST-EXEC: zeek -b %INPUT >output
|
||||||
|
# @TEST-EXEC: TEST_DIF_CANONIFIER= btest-diff output
|
||||||
|
|
||||||
|
module Test;
|
||||||
|
|
||||||
|
global seq = 0;
|
||||||
|
|
||||||
|
function my_seq(): count {
|
||||||
|
print seq, "my_seq()";
|
||||||
|
return ++seq;
|
||||||
|
}
|
||||||
|
|
||||||
|
type Inner: record { };
|
||||||
|
|
||||||
|
type State: record {
|
||||||
|
seq: count &default=my_seq();
|
||||||
|
inner: Inner;
|
||||||
|
};
|
||||||
|
|
||||||
|
global s1 = State();
|
||||||
|
global s2 = State();
|
||||||
|
|
||||||
|
redef record Inner += {
|
||||||
|
seq: count &default=my_seq();
|
||||||
|
};
|
||||||
|
|
||||||
|
print seq, "printing";
|
||||||
|
|
||||||
|
print seq, "s1", s1;
|
||||||
|
print seq, "s2", s2;
|
115
testing/btest/core/record-field-defer-table.zeek
Normal file
115
testing/btest/core/record-field-defer-table.zeek
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
# @TEST-DOC: Test deferred initialization behavior at parse time placing records into tables.
|
||||||
|
# @TEST-EXEC: zeek -b %INPUT >output
|
||||||
|
# @TEST-EXEC: TEST_DIF_CANONIFIER= btest-diff output
|
||||||
|
|
||||||
|
module Test;
|
||||||
|
|
||||||
|
global seq = 0;
|
||||||
|
|
||||||
|
function my_seq(): count {
|
||||||
|
print seq, "my_seq()";
|
||||||
|
return ++seq;
|
||||||
|
}
|
||||||
|
|
||||||
|
type Inner: record { };
|
||||||
|
|
||||||
|
type State: record {
|
||||||
|
seq: count &default=my_seq();
|
||||||
|
inner: Inner;
|
||||||
|
};
|
||||||
|
|
||||||
|
redef record Inner += {
|
||||||
|
seq: count &default=my_seq();
|
||||||
|
};
|
||||||
|
|
||||||
|
global tbl: table[State] of State;
|
||||||
|
|
||||||
|
global s1 = State();
|
||||||
|
global s2 = State();
|
||||||
|
|
||||||
|
tbl[s1] = s1;
|
||||||
|
tbl[s2] = s2;
|
||||||
|
|
||||||
|
print seq, "printing";
|
||||||
|
print seq, "s1", s1;
|
||||||
|
print seq, "s2", s2;
|
||||||
|
print seq, "tbl", tbl;
|
||||||
|
print seq, "done";
|
||||||
|
|
||||||
|
# @TEST-START-NEXT
|
||||||
|
|
||||||
|
# Same as before, but redef after creating globals.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
module Test;
|
||||||
|
|
||||||
|
global seq = 0;
|
||||||
|
|
||||||
|
function my_seq(): count {
|
||||||
|
print seq, "my_seq()";
|
||||||
|
return ++seq;
|
||||||
|
}
|
||||||
|
|
||||||
|
type Inner: record { };
|
||||||
|
|
||||||
|
type State: record {
|
||||||
|
seq: count &default=my_seq();
|
||||||
|
inner: Inner;
|
||||||
|
};
|
||||||
|
|
||||||
|
global tbl: table[State] of State;
|
||||||
|
|
||||||
|
global s1 = State();
|
||||||
|
global s2 = State();
|
||||||
|
|
||||||
|
redef record Inner += {
|
||||||
|
seq: count &default=my_seq();
|
||||||
|
};
|
||||||
|
|
||||||
|
tbl[s1] = s1;
|
||||||
|
tbl[s2] = s2;
|
||||||
|
|
||||||
|
print seq, "printing";
|
||||||
|
print seq, "s1", s1;
|
||||||
|
print seq, "s2", s2;
|
||||||
|
print seq, "tbl", tbl;
|
||||||
|
print seq, "done";
|
||||||
|
|
||||||
|
# @TEST-START-NEXT
|
||||||
|
|
||||||
|
# Same as before, but in zeek_init() with locals.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
module Test;
|
||||||
|
|
||||||
|
global seq = 0;
|
||||||
|
|
||||||
|
function my_seq(): count {
|
||||||
|
print seq, "my_seq()";
|
||||||
|
return ++seq;
|
||||||
|
}
|
||||||
|
|
||||||
|
type Inner: record { };
|
||||||
|
|
||||||
|
type State: record {
|
||||||
|
seq: count &default=my_seq();
|
||||||
|
inner: Inner;
|
||||||
|
};
|
||||||
|
|
||||||
|
redef record Inner += {
|
||||||
|
seq: count &default=my_seq();
|
||||||
|
};
|
||||||
|
|
||||||
|
event zeek_init()
|
||||||
|
{
|
||||||
|
local tbl: table[State] of State;
|
||||||
|
local s1 = State();
|
||||||
|
local s2 = State();
|
||||||
|
tbl[s1] = s1;
|
||||||
|
tbl[s2] = s2;
|
||||||
|
print seq, "printing";
|
||||||
|
print seq, "s1", s1;
|
||||||
|
print seq, "s2", s2;
|
||||||
|
print seq, "tbl", tbl;
|
||||||
|
print seq, "done";
|
||||||
|
}
|
175
testing/btest/core/record-field-defer.zeek
Normal file
175
testing/btest/core/record-field-defer.zeek
Normal file
|
@ -0,0 +1,175 @@
|
||||||
|
# @TEST-DOC: Nested records with non-const &defaults are not deferred initialized. Regression test for #3260
|
||||||
|
# @TEST-EXEC: zeek -b -r $TRACES/http/get.trace %INPUT >output
|
||||||
|
# @TEST-EXEC: TEST_DIFF_CANONIFIER= btest-diff output
|
||||||
|
|
||||||
|
module Test;
|
||||||
|
|
||||||
|
global seq = 0;
|
||||||
|
|
||||||
|
function my_network_time(): time
|
||||||
|
{
|
||||||
|
++seq;
|
||||||
|
print seq, "my_network_time() called", network_time();
|
||||||
|
return network_time();
|
||||||
|
}
|
||||||
|
|
||||||
|
type Inner: record {
|
||||||
|
ts: time &default=my_network_time();
|
||||||
|
};
|
||||||
|
|
||||||
|
type State: record {
|
||||||
|
ts: time &default=my_network_time();
|
||||||
|
inner: Inner;
|
||||||
|
};
|
||||||
|
|
||||||
|
global tbl: table[string] of State;
|
||||||
|
|
||||||
|
event new_connection(c: connection)
|
||||||
|
{
|
||||||
|
print seq, "new_connection", c$uid, network_time();
|
||||||
|
tbl[c$uid] = State();
|
||||||
|
print seq, "new_connection done";
|
||||||
|
}
|
||||||
|
|
||||||
|
event connection_state_remove(c: connection)
|
||||||
|
{
|
||||||
|
print seq, "connection_state_remove", c$uid, network_time();
|
||||||
|
local s = tbl[c$uid];
|
||||||
|
print seq, "state", c$uid, s;
|
||||||
|
print seq, "connection_state_remove done";
|
||||||
|
}
|
||||||
|
|
||||||
|
# @TEST-START-NEXT
|
||||||
|
|
||||||
|
# Same as before, but Inner contains two default fields
|
||||||
|
|
||||||
|
module Test;
|
||||||
|
|
||||||
|
global seq = 0;
|
||||||
|
|
||||||
|
function my_network_time(): time
|
||||||
|
{
|
||||||
|
++seq;
|
||||||
|
print seq, "my_network_time() called", network_time();
|
||||||
|
return network_time();
|
||||||
|
}
|
||||||
|
|
||||||
|
type Inner: record {
|
||||||
|
ts: time &default=my_network_time();
|
||||||
|
ts_other: time &default=my_network_time();
|
||||||
|
};
|
||||||
|
|
||||||
|
type State: record {
|
||||||
|
ts: time &default=my_network_time();
|
||||||
|
inner: Inner;
|
||||||
|
};
|
||||||
|
|
||||||
|
global tbl: table[string] of State;
|
||||||
|
|
||||||
|
event new_connection(c: connection)
|
||||||
|
{
|
||||||
|
print seq, "new_connection", c$uid, network_time();
|
||||||
|
tbl[c$uid] = State();
|
||||||
|
print seq, "new_connection done";
|
||||||
|
}
|
||||||
|
|
||||||
|
event connection_state_remove(c: connection)
|
||||||
|
{
|
||||||
|
print seq, "connection_state_remove", c$uid, network_time();
|
||||||
|
local s = tbl[c$uid];
|
||||||
|
print seq, "state", c$uid, s;
|
||||||
|
print seq, "connection_state_remove done";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# @TEST-START-NEXT
|
||||||
|
|
||||||
|
# Same as before, but Inner is instead redef'ed with non-const &default
|
||||||
|
|
||||||
|
module Test;
|
||||||
|
|
||||||
|
global seq = 0;
|
||||||
|
|
||||||
|
function my_network_time(): time
|
||||||
|
{
|
||||||
|
++seq;
|
||||||
|
print seq, "my_network_time() called", network_time();
|
||||||
|
return network_time();
|
||||||
|
}
|
||||||
|
|
||||||
|
type Inner: record { };
|
||||||
|
|
||||||
|
type State: record {
|
||||||
|
ts: time &default=my_network_time();
|
||||||
|
inner: Inner;
|
||||||
|
};
|
||||||
|
|
||||||
|
redef record Inner += {
|
||||||
|
ts: time &default=my_network_time();
|
||||||
|
};
|
||||||
|
|
||||||
|
global tbl: table[string] of State;
|
||||||
|
|
||||||
|
event new_connection(c: connection)
|
||||||
|
{
|
||||||
|
print seq, "new_connection", c$uid, network_time();
|
||||||
|
tbl[c$uid] = State();
|
||||||
|
print seq, "new_connection done";
|
||||||
|
}
|
||||||
|
|
||||||
|
event connection_state_remove(c: connection)
|
||||||
|
{
|
||||||
|
print seq, "connection_state_remove", c$uid, network_time();
|
||||||
|
local s = tbl[c$uid];
|
||||||
|
print seq, "state", c$uid, s;
|
||||||
|
print seq, "connection_state_remove done";
|
||||||
|
}
|
||||||
|
|
||||||
|
# @TEST-START-NEXT
|
||||||
|
|
||||||
|
# Same as before, but State has two Inner fields and the Inner redef happens twice.
|
||||||
|
|
||||||
|
module Test;
|
||||||
|
|
||||||
|
global seq = 0;
|
||||||
|
|
||||||
|
function my_network_time(): time
|
||||||
|
{
|
||||||
|
++seq;
|
||||||
|
print seq, "my_network_time() called", network_time();
|
||||||
|
return network_time();
|
||||||
|
}
|
||||||
|
|
||||||
|
type Inner: record { };
|
||||||
|
|
||||||
|
type State: record {
|
||||||
|
ts: time &default=my_network_time();
|
||||||
|
inner: Inner;
|
||||||
|
inner_other: Inner;
|
||||||
|
};
|
||||||
|
|
||||||
|
redef record Inner += {
|
||||||
|
ts: time &default=my_network_time();
|
||||||
|
};
|
||||||
|
|
||||||
|
redef record Inner += {
|
||||||
|
ts_other: time &default=my_network_time();
|
||||||
|
};
|
||||||
|
|
||||||
|
global tbl: table[string] of State;
|
||||||
|
|
||||||
|
event new_connection(c: connection)
|
||||||
|
{
|
||||||
|
print seq, "new_connection", c$uid, network_time();
|
||||||
|
tbl[c$uid] = State();
|
||||||
|
print seq, "new_connection done";
|
||||||
|
}
|
||||||
|
|
||||||
|
event connection_state_remove(c: connection)
|
||||||
|
{
|
||||||
|
print seq, "connection_state_remove", c$uid, network_time();
|
||||||
|
local s = tbl[c$uid];
|
||||||
|
print seq, "state", c$uid, s;
|
||||||
|
print seq, "connection_state_remove done";
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue