From ccc66402ce78e1cdaa75b6f66f503769d24ac854 Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Fri, 10 Oct 2014 13:02:57 +0200 Subject: [PATCH] integration tests: Split simple_query into query, matching, and filter. --- t/Makefile.am | 12 +- t/integration/{simple_config.sh => config.sh} | 0 t/integration/filter.sh | 79 ++++++++++++ .../{simple_query.sh => matching.sh} | 91 +------------- t/integration/query.sh | 112 ++++++++++++++++++ 5 files changed, 202 insertions(+), 92 deletions(-) rename t/integration/{simple_config.sh => config.sh} (100%) create mode 100755 t/integration/filter.sh rename t/integration/{simple_query.sh => matching.sh} (55%) create mode 100755 t/integration/query.sh diff --git a/t/Makefile.am b/t/Makefile.am index 61328af..454e4c4 100644 --- a/t/Makefile.am +++ b/t/Makefile.am @@ -1,8 +1,10 @@ EXTRA_DIST = \ coverage.sh \ testwrapper.sh \ - integration/simple_config.sh \ - integration/simple_query.sh \ + integration/config.sh \ + integration/query.sh \ + integration/matching.sh \ + integration/filter.sh \ integration/test_lib.sh \ valgrind.suppress @@ -60,7 +62,11 @@ unit_libsysdb_net_test_LDADD = $(top_builddir)/src/libsysdb.la @CHECK_LIBS@ # if INTEGRATION_TESTING -TESTS += integration/simple_config.sh integration/simple_query.sh +TESTS += \ + integration/config.sh \ + integration/query.sh \ + integration/matching.sh \ + integration/filter.sh endif check_LTLIBRARIES += integration/mock_plugin.la diff --git a/t/integration/simple_config.sh b/t/integration/config.sh similarity index 100% rename from t/integration/simple_config.sh rename to t/integration/config.sh diff --git a/t/integration/filter.sh b/t/integration/filter.sh new file mode 100755 index 0000000..025cd57 --- /dev/null +++ b/t/integration/filter.sh @@ -0,0 +1,79 @@ +#! /bin/bash +# +# SysDB -- t/integration/simple_query.sh +# Copyright (C) 2012 Sebastian 'tokkee' Harl +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# +# Integration tests using simple queries. +# + +set -ex + +source "$( dirname "$0" )/test_lib.sh" + +cat < "$SYSDBD_CONF" +Listen "$SOCKET_FILE" +PluginDir "$PLUGIN_DIR" +Interval 2 + +LoadBackend mock_plugin + + +EOF + +run_sysdbd -D -C "$SYSDBD_CONF" + +wait_for_sysdbd +sleep 3 + +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 FILTER .backend = 'backend::mock_plugin'" )" +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 "LOOKUP hosts FILTER .backend = 'invalid'" )" +echo $output | grep -E '^\[\]$' + +stop_sysdbd + diff --git a/t/integration/simple_query.sh b/t/integration/matching.sh similarity index 55% rename from t/integration/simple_query.sh rename to t/integration/matching.sh index 677ce2f..d42044b 100755 --- a/t/integration/simple_query.sh +++ b/t/integration/matching.sh @@ -1,6 +1,6 @@ #! /bin/bash # -# SysDB -- t/integration/simple_query.sh +# SysDB -- t/integration/basic_matching.sh # Copyright (C) 2012 Sebastian 'tokkee' Harl # All rights reserved. # @@ -26,7 +26,7 @@ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -# Integration tests using simple queries. +# Integration tests for matching clauses. # set -ex @@ -48,59 +48,6 @@ run_sysdbd -D -C "$SYSDBD_CONF" wait_for_sysdbd sleep 3 -# 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 '"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" \ @@ -137,33 +84,6 @@ 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 FILTER .backend = 'backend::mock_plugin'" )" -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 "LOOKUP hosts FILTER .backend = 'invalid'" )" -echo $output | grep -E '^\[\]$' - output="$( run_sysdb -H "$SOCKET_FILE" \ -c "LOOKUP hosts MATCHING service = 'sysdbd'" )" echo "$output" | grep -F '"localhost"' @@ -186,12 +106,5 @@ 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 diff --git a/t/integration/query.sh b/t/integration/query.sh new file mode 100755 index 0000000..e034e7c --- /dev/null +++ b/t/integration/query.sh @@ -0,0 +1,112 @@ +#! /bin/bash +# +# SysDB -- t/integration/basic_query.sh +# Copyright (C) 2012 Sebastian 'tokkee' Harl +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# +# Integration tests using basic queries. +# + +set -ex + +source "$( dirname "$0" )/test_lib.sh" + +cat < "$SYSDBD_CONF" +Listen "$SOCKET_FILE" +PluginDir "$PLUGIN_DIR" +Interval 2 + +LoadBackend mock_plugin + + +EOF + +run_sysdbd -D -C "$SYSDBD_CONF" + +wait_for_sysdbd +sleep 3 + +# 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 '"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' + +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 + -- 2.30.2