diff options
Diffstat (limited to 'tests/rscript_get_property.sh')
-rwxr-xr-x | tests/rscript_get_property.sh | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/tests/rscript_get_property.sh b/tests/rscript_get_property.sh new file mode 100755 index 0000000..03302bc --- /dev/null +++ b/tests/rscript_get_property.sh @@ -0,0 +1,70 @@ +#!/bin/bash +# released under ASL 2.0 +. ${srcdir:=.}/diag.sh init +generate_conf +add_conf ' +module(load="../plugins/imtcp/.libs/imtcp") +input(type="imtcp" port="0" listenPortFileName="'$RSYSLOG_DYNNAME'.tcpflood_port") +template(name="outfmt" type="string" string="%$!%\n") +template(name="outlocal" type="string" string="%$.%\n") + +if $msg contains "msgnum" then { + set $.ret = parse_json("{\"offsets\": [ { \"a\": 9, \"b\": 0, \"c\": \"boo\", \"d\": null },\ + { \"a\": 9, \"b\": 3, \"c\": null, \"d\": null } ],\ + \"booltest\": true,\ + \"int64\": 1234567890,\ + \"nulltest\": null,\ + \"double\": 12345.67890,\ + \"foo\": 3, \"bar\": 28 }", "\$!parsed"); + + if $.ret == 0 then { + # set up some locals + set $!foo!bar = 3; + set $.index = "1"; + set $.test = "a"; + + # evaluate + set $.res1 = get_property($!parsed!offsets, $.index); + set $.res2 = get_property($!parsed!offsets[1], $.test); + reset $.test = "bar"; + set $.res3 = get_property($!foo, $.test); + reset $.index = 5; + set $.res4 = get_property($!parsed!offsets, $.index); + set $.key = "test"; + set $.res5 = get_property($., $.key); + reset $.key = "foo"; + set $.res6 = get_property($!, $.key); + set $.res7 = get_property($!foo, "bar"); + reset $.key = "ar"; + set $.res8 = get_property($!foo, "b" & $.key); + set $.res9 = get_property($!foo!bar, ""); + reset $.key = ""; + set $.res10 = get_property($!foo!bar, $.key); + set $.res11 = get_property($!parsed!booltest, ""); + reset $.key = "int64"; + set $.res12 = get_property($!parsed, $.key); + reset $.key = "nulltest"; + set $.res13 = get_property($!parsed, $.key); + reset $.key = "double"; + set $.res14 = get_property($!parsed, $.key); + set $.res15 = get_property($msg, ""); + set $.res16 = get_property("string literal", ""); + + # output result + unset $.key; + action(type="omfile" file=`echo $RSYSLOG_OUT_LOG` template="outfmt") + action(type="omfile" file=`echo $RSYSLOG_OUT_LOG` template="outlocal") + } +} +' + +startup +injectmsg 0 1 +shutdown_when_empty +wait_shutdown + +EXPECTED='{ "parsed": { "offsets": [ { "a": 9, "b": 0, "c": "boo", "d": null }, { "a": 9, "b": 3, "c": null, "d": null } ], "booltest": true, "int64": 1234567890, "nulltest": null, "double": 12345.67890, "foo": 3, "bar": 28 }, "foo": { "bar": 3 } } +{ "ret": 0, "index": 5, "test": "bar", "res1": { "a": 9, "b": 3, "c": null, "d": null }, "res2": 9, "res3": 3, "res4": "", "res5": "bar", "res6": { "bar": 3 }, "res7": 3, "res8": 3, "res9": 3, "res10": 3, "res11": 1, "res12": 1234567890, "res13": "", "res14": 12345.678900000001, "res15": " msgnum:00000000:", "res16": "" }' +cmp_exact + +exit_test |