From b67b9c78f848a3bb1110be1eaf8bf93ac454b3aa Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Sun, 1 Mar 2015 19:34:14 +0100 Subject: [PATCH] t/integration: Split query.sh into multiple tests. --- t/Makefile.am | 5 +- t/integration/client.sh | 83 +++++++++++++++++ t/integration/{query.sh => query_fetch.sh} | 63 +------------ t/integration/query_list.sh | 102 +++++++++++++++++++++ t/integration/query_timeseries.sh | 90 ++++++++++++++++++ t/integration/ssl.sh | 3 + 6 files changed, 283 insertions(+), 63 deletions(-) create mode 100755 t/integration/client.sh rename t/integration/{query.sh => query_fetch.sh} (61%) create mode 100755 t/integration/query_list.sh create mode 100755 t/integration/query_timeseries.sh diff --git a/t/Makefile.am b/t/Makefile.am index 3218c7b..4b23319 100644 --- a/t/Makefile.am +++ b/t/Makefile.am @@ -133,9 +133,12 @@ endif if INTEGRATION_TESTING INTEGRATION_TESTS = \ + integration/client.sh \ integration/config.sh \ integration/ssl.sh \ - integration/query.sh \ + integration/query_fetch.sh \ + integration/query_list.sh \ + integration/query_timeseries.sh \ integration/matching.sh \ integration/filter.sh diff --git a/t/integration/client.sh b/t/integration/client.sh new file mode 100755 index 0000000..e7766ef --- /dev/null +++ b/t/integration/client.sh @@ -0,0 +1,83 @@ +#! /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 covering basic client functionality. +# + +set -ex + +source "$( dirname "$0" )/test_lib.sh" + +cat < "$SYSDBD_CONF" +Listen "$SOCKET_FILE" +PluginDir "$PLUGIN_DIR" +Interval 2 + +LoadBackend mock_plugin + + + +LoadPlugin mock_timeseries +EOF + +run_sysdbd -D -C "$SYSDBD_CONF" +wait_for_sysdbd + +# wait for initial data +sleep 3 + +# Usage errors. +output="$( run_sysdb -H "$SOCKET_FILE" --invalid 2>&1 )" && exit 1 +echo "$output" | grep -F 'Usage:' +output="$( run_sysdb -H "$SOCKET_FILE" extra 2>&1 )" && exit 1 +echo "$output" | grep -F 'Usage:' + +# Invalid user. +output="$( run_sysdb_nouser -H "$SOCKET_FILE" \ + -U $SYSDB_USER-invalid -c 'LIST hosts' 2>&1 )" && exit 1 +echo "$output" | grep -F 'Access denied' + +# Unreachable server. +output="$( run_sysdb -H "${SOCKET_FILE}.doesnotexist" -c '' 2>&1 )" && exit 1 +echo "$output" | grep "Failed to connect to SysDBd" + +# On parse errors, expect a non-zero exit code. +output="$( run_sysdb -H "$SOCKET_FILE" -c INVALID 2>&1 )" && exit 1 +echo "$output" | grep "Failed to parse query 'INVALID'" +echo "$output" | grep "parse error: syntax error" + +# Empty query. +output="$( run_sysdb -H "$SOCKET_FILE" -c '' )" +test -z "$output" + +# Default user. +output="$( run_sysdb_nouser -H "$SOCKET_FILE" -c '' )" + +stop_sysdbd + +# vim: set tw=78 sw=4 ts=4 noexpandtab : diff --git a/t/integration/query.sh b/t/integration/query_fetch.sh similarity index 61% rename from t/integration/query.sh rename to t/integration/query_fetch.sh index 4656856..b9c8ff9 100755 --- a/t/integration/query.sh +++ b/t/integration/query_fetch.sh @@ -67,50 +67,7 @@ wait_for_sysdbd "${SOCKET_FILE}.sender" # wait for initial data sleep 3 -# Invalid user. -output="$( run_sysdb_nouser -H "$SOCKET_FILE" \ - -U $SYSDB_USER-invalid -c 'LIST hosts' 2>&1 )" && exit 1 -echo "$output" | grep -F 'Access denied' - -# On parse errors, expect a non-zero exit code. -output="$( run_sysdb -H "$SOCKET_FILE" -c INVALID 2>&1 )" && exit 1 -echo "$output" | grep "Failed to parse query 'INVALID'" -echo "$output" | grep "parse error: syntax error" - -# Empty query. -output="$( run_sysdb -H "$SOCKET_FILE" -c '' )" -test -z "$output" - -# 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"' - +# FETCH commands. output="$( run_sysdb -H "$SOCKET_FILE" -c "FETCH host 'host1.example.com'" )" echo "$output" \ | grep -F '"host1.example.com"' \ @@ -138,24 +95,6 @@ output="$( run_sysdb -H "$SOCKET_FILE" \ -c "FETCH host 'does.not.exist'" 2>&1 )" && 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. -output="$( run_sysdb -H "$SOCKET_FILE" \ - -c "TIMESERIES 'some.host.name'.'foo/bar/qux'" )" -echo "$output" \ - | grep -F '"value": "1.000000"' \ - | grep -F '"value": "2.000000"' \ - | grep -F '"value": "3.000000"' \ - | grep -F '"value": "4.000000"' \ - | grep -F '"value": "5.000000"' \ - | grep -F '"value": "6.000000"' \ - | grep -F '"value": "7.000000"' \ - | grep -F '"value": "8.000000"' \ - | grep -F '"value": "9.000000"' \ - | grep -F '"value": "10.000000"' - stop_sysdbd # vim: set tw=78 sw=4 ts=4 noexpandtab : diff --git a/t/integration/query_list.sh b/t/integration/query_list.sh new file mode 100755 index 0000000..28c365b --- /dev/null +++ b/t/integration/query_list.sh @@ -0,0 +1,102 @@ +#! /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 + +LoadPlugin mock_timeseries +EOF + +run_sysdbd -D -C "$SYSDBD_CONF" +wait_for_sysdbd + +cat < "${SYSDBD_CONF}.sender" +Listen "${SOCKET_FILE}.sender" +PluginDir "$PLUGIN_DIR" +Interval 2 + +LoadPlugin "store::network" + + Server "$SOCKET_FILE" + + +LoadBackend mock_plugin + + +EOF + +run_sysdbd_foreground -D -C "${SYSDBD_CONF}.sender" & +SYSDBD_PID2=$! +trap "kill \$SYSDBD_PID2" EXIT +wait_for_sysdbd "${SOCKET_FILE}.sender" + +# wait for initial data +sleep 3 + +# LIST 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"' + +stop_sysdbd + +# vim: set tw=78 sw=4 ts=4 noexpandtab : diff --git a/t/integration/query_timeseries.sh b/t/integration/query_timeseries.sh new file mode 100755 index 0000000..e0eb9c8 --- /dev/null +++ b/t/integration/query_timeseries.sh @@ -0,0 +1,90 @@ +#! /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 + +LoadPlugin mock_timeseries +EOF + +run_sysdbd -D -C "$SYSDBD_CONF" +wait_for_sysdbd + +cat < "${SYSDBD_CONF}.sender" +Listen "${SOCKET_FILE}.sender" +PluginDir "$PLUGIN_DIR" +Interval 2 + +LoadPlugin "store::network" + + Server "$SOCKET_FILE" + + +LoadBackend mock_plugin + + +EOF + +run_sysdbd_foreground -D -C "${SYSDBD_CONF}.sender" & +SYSDBD_PID2=$! +trap "kill \$SYSDBD_PID2" EXIT +wait_for_sysdbd "${SOCKET_FILE}.sender" + +# wait for initial data +sleep 3 + +# TIMESERIES commands. +run_sysdb -H "$SOCKET_FILE" \ + -c "TIMESERIES 'invalid.host'.'invalid-metric'" && exit 1 + +output="$( run_sysdb -H "$SOCKET_FILE" \ + -c "TIMESERIES 'some.host.name'.'foo/bar/qux'" )" +echo "$output" \ + | grep -F '"value": "1.000000"' \ + | grep -F '"value": "2.000000"' \ + | grep -F '"value": "3.000000"' \ + | grep -F '"value": "4.000000"' \ + | grep -F '"value": "5.000000"' \ + | grep -F '"value": "6.000000"' \ + | grep -F '"value": "7.000000"' \ + | grep -F '"value": "8.000000"' \ + | grep -F '"value": "9.000000"' \ + | grep -F '"value": "10.000000"' + +stop_sysdbd + +# vim: set tw=78 sw=4 ts=4 noexpandtab : diff --git a/t/integration/ssl.sh b/t/integration/ssl.sh index c68494a..cea2380 100755 --- a/t/integration/ssl.sh +++ b/t/integration/ssl.sh @@ -48,6 +48,9 @@ wait_for_sysdbd_tcp localhost 12345 run_sysdb -H "localhost:12345" -c 'LIST hosts' -U "$SYSDB_USER-invalid" \ -A "$CA_CERT" -C "$CLIENT_CERT" -K "$CLIENT_KEY" && exit 1 +run_sysdb -H "localhost:12345" -c 'LIST hosts' -U "$SYSDB_USER-invalid" \ + -A "$CA_CERT" -C "${CLIENT_CERT}.doesnotexist" -K "$CLIENT_KEY" && exit 1 + run_sysdb -H "localhost:12345" -c 'LIST hosts' -U "$SYSDB_USER" \ -A "$CA_CERT" -C "$CLIENT_CERT" -K "$CLIENT_KEY" -- 2.30.2