X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=t%2Fintegration%2Fsimple_query.sh;h=b6394432d1111cd9e9aa58ee7f58a9329dcaee83;hb=ef3e099a424694e6247252a40c7b3be343f3cebd;hp=d091e2b4b8d375d4bbf00c738de0c51792ac9e68;hpb=70f2bd7d997c5b53681e4e5a7e0d02124c306bd0;p=sysdb.git diff --git a/t/integration/simple_query.sh b/t/integration/simple_query.sh index d091e2b..b639443 100755 --- a/t/integration/simple_query.sh +++ b/t/integration/simple_query.sh @@ -29,7 +29,7 @@ # Integration tests using simple queries. # -set -e +set -ex source "$( dirname "$0" )/test_lib.sh" @@ -39,20 +39,147 @@ PluginDir "$PLUGIN_DIR" Interval 2 LoadBackend mock_plugin - + EOF -"$SYSDBD" -D -C "$SYSDBD_CONF" & -sysdbd_pid=$! +run_sysdbd -D -C "$SYSDBD_CONF" wait_for_sysdbd sleep 3 -"$SYSDB" -H "$SOCKET_FILE" -c LIST \ +# On parse errors, expect a non-zero exit code. +output="$( run_sysdb -H "$SOCKET_FILE" -c INVALID )" && exit 1 +echo "$output" | grep "Failed to parse query 'INVALID'" +echo "$output" | grep "parse error: syntax error" + +# Simple, successful commands. +output="$( run_sysdb -H "$SOCKET_FILE" -c 'LIST hosts' )" +echo "$output" \ + | grep -F '"host1.example.com"' \ + | grep -F '"host2.example.com"' \ + | grep -F '"localhost"' \ + | grep -F '"other.host.name"' \ + | grep -F '"some.host.name"' + +output="$( echo 'LIST hosts;' | run_sysdb -H "$SOCKET_FILE" )" || echo $? +echo "$output" \ + | grep -F '"host1.example.com"' \ + | grep -F '"host2.example.com"' \ + | grep -F '"localhost"' \ + | grep -F '"other.host.name"' \ + | grep -F '"some.host.name"' + +output="$( run_sysdb -H "$SOCKET_FILE" -c 'LIST services' )" +echo "$output" \ + | grep -F '"host1.example.com"' \ + | grep -F '"host2.example.com"' \ + | grep -F '"localhost"' \ + | grep -F '"some.host.name"' \ + | grep -F '"mock service"' \ + | grep -F '"other service"' \ + | grep -F '"database"' \ + | grep -F '"example service one"' \ + | grep -F '"example service two"' \ + | grep -F '"example service three"' + +output="$( run_sysdb -H "$SOCKET_FILE" -c "FETCH host 'host1.example.com'" )" +echo "$output" \ | grep -F '"host1.example.com"' \ - | grep -F "host2.example.com" \ - | grep -F "localhost" \ - | grep -F "other.host.name" \ - | grep -F "some.host.name" -kill $! + | grep -F '"mock service"' \ + | grep -E '"other attribute".*"special value"' +echo "$output" | grep -F 'host2.example.com' && exit 1 +echo "$output" | grep -F 'localhost' && exit 1 +echo "$output" | grep -F 'other.host.name' && exit 1 +echo "$output" | grep -F 'some.host.name' && exit 1 + +(echo 'LIST hosts;'; sleep 1; echo "FETCH host 'host1.example.com'") \ + | run_sysdb -H "$SOCKET_FILE" + +# When requesting information for unknown hosts, expect a non-zero exit code. +output="$( run_sysdb -H "$SOCKET_FILE" -c "FETCH host 'does.not.exist'" )" \ + && exit 1 +echo "$output" | grep -F 'not found' + +output="$( run_sysdb -H "$SOCKET_FILE" \ + -c "LOOKUP hosts MATCHING metric = 'foo/bar/qux'" )" +echo "$output" \ + | grep -F '"some.host.name"' \ + | grep -F '"other.host.name"' +echo "$output" | grep -F 'localhost' && exit 1 +echo "$output" | grep -F 'host1.example.com' && exit 1 +echo "$output" | grep -F 'host2.example.com' && exit 1 + +output="$( run_sysdb -H "$SOCKET_FILE" \ + -c "LOOKUP hosts MATCHING service = 'mock service'" )" +echo "$output" \ + | grep -F '"some.host.name"' \ + | grep -F '"host1.example.com"' \ + | grep -F '"host2.example.com"' +echo "$output" | grep -F 'localhost' && exit 1 +echo "$output" | grep -F 'other.host.name' && exit 1 + +output="$( run_sysdb -H "$SOCKET_FILE" \ + -c "LOOKUP hosts MATCHING attribute.architecture = 'x42'" )" +echo "$output" \ + | grep -F '"host1.example.com"' \ + | grep -F '"host2.example.com"' +echo "$output" | grep -F 'localhost' && exit 1 +echo "$output" | grep -F 'other.host.name' && exit 1 +echo "$output" | grep -F 'some.host.name' && exit 1 + +output="$( run_sysdb -H "$SOCKET_FILE" \ + -c "LOOKUP hosts MATCHING attribute != 'architecture'" )" +echo "$output" \ + | grep -F '"some.host.name"' \ + | grep -F '"localhost"' +echo "$output" | grep -F 'other.host.name' && exit 1 +echo "$output" | grep -F 'host1.example.com' && exit 1 +echo "$output" | grep -F 'host2.example.com' && exit 1 + +output="$( run_sysdb -H "$SOCKET_FILE" \ + -c "LOOKUP hosts MATCHING attribute != 'architecture' + FILTER :age >= 0s" )" +echo "$output" \ + | grep -F '"some.host.name"' \ + | grep -F '"localhost"' +echo "$output" | grep -F 'other.host.name' && exit 1 +echo "$output" | grep -F 'host1.example.com' && exit 1 +echo "$output" | grep -F 'host2.example.com' && exit 1 + +output="$( run_sysdb -H "$SOCKET_FILE" \ + -c "LOOKUP hosts MATCHING attribute != 'architecture' + FILTER :last_update < 2Y" )" +echo $output | grep -E '^\[\]$' + +output="$( run_sysdb -H "$SOCKET_FILE" \ + -c "LOOKUP hosts MATCHING service = 'sysdbd'" )" +echo "$output" | grep -F '"localhost"' +echo "$output" | grep -F 'some.host.name' && exit 1 +echo "$output" | grep -F 'other.host.name' && exit 1 +echo "$output" | grep -F 'host1.example.com' && exit 1 +echo "$output" | grep -F 'host2.example.com' && exit 1 + +output="$( run_sysdb -H "$SOCKET_FILE" \ + -c "LOOKUP hosts MATCHING host =~ 'example.com'" )" +echo "$output" \ + | grep -F '"host1.example.com"' \ + | grep -F '"host2.example.com"' +echo "$output" | grep -F 'some.host.name' && exit 1 +echo "$output" | grep -F 'other.host.name' && exit 1 +echo "$output" | grep -F 'localhost' && exit 1 + +# When querying hosts that don't exist, expect a zero exit code. +output="$( run_sysdb -H "$SOCKET_FILE" \ + -c "LOOKUP hosts MATCHING attribute.invalid = 'none'" )" +echo $output | grep -E '^\[\]$' + +run_sysdb -H "$SOCKET_FILE" \ + -c "TIMESERIES 'invalid.host'.'invalid-metric'" && exit 1 + +# Does not work yet since there is no fetcher plugin. +run_sysdb -H "$SOCKET_FILE" \ + -c "TIMESERIES 'some.host.name'.'foo/bar/qux'" && exit 1 + +stop_sysdbd +