Code

integration tests: Split simple_query into query, matching, and filter.
authorSebastian Harl <sh@tokkee.org>
Fri, 10 Oct 2014 11:02:57 +0000 (13:02 +0200)
committerSebastian Harl <sh@tokkee.org>
Fri, 10 Oct 2014 11:02:57 +0000 (13:02 +0200)
t/Makefile.am
t/integration/config.sh [new file with mode: 0755]
t/integration/filter.sh [new file with mode: 0755]
t/integration/matching.sh [new file with mode: 0755]
t/integration/query.sh [new file with mode: 0755]
t/integration/simple_config.sh [deleted file]
t/integration/simple_query.sh [deleted file]

index 61328af23eded6b65a7e3a94f86b926d9e7d584f..454e4c4731ca0b0d6c2501cfca5d56eef2a52bb5 100644 (file)
@@ -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/config.sh b/t/integration/config.sh
new file mode 100755 (executable)
index 0000000..3bdb104
--- /dev/null
@@ -0,0 +1,93 @@
+#! /bin/bash
+#
+# SysDB -- t/integration/simple_config.sh
+# Copyright (C) 2012 Sebastian 'tokkee' Harl <sh@tokkee.org>
+# 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 configuration snippets.
+#
+
+set -ex
+
+source "$( dirname "$0" )/test_lib.sh"
+
+# Very basics ;-)
+run_sysdb -V
+run_sysdb -h
+
+run_sysdbd -V
+run_sysdbd -h
+
+# Simple invalid configuration examples.
+cat <<EOF > "$SYSDBD_CONF"
+Invalid "option"
+EOF
+if run_sysdbd_foreground -D -C "$SYSDBD_CONF"; then
+       echo 'SysDBd accepted invalid option; expected: failure' >&2
+       exit 1
+fi
+
+cat <<EOF > "$SYSDBD_CONF"
+Listen "invalid://address"
+EOF
+if run_sysdbd_foreground -D -C "$SYSDBD_CONF"; then
+       echo 'SysDBd accepted invalid listen address; expected: failure' >&2
+       exit 1
+fi
+
+cat <<EOF > "$SYSDBD_CONF"
+Interval "foo"
+EOF
+if run_sysdbd_foreground -D -C "$SYSDBD_CONF"; then
+       echo 'SysDBd accepted invalid interval; expected: failure' >&2
+       exit 1
+fi
+
+cat <<EOF > "$SYSDBD_CONF"
+Interval -3.0
+EOF
+if run_sysdbd_foreground -D -C "$SYSDBD_CONF"; then
+       echo 'SysDBd accepted invalid interval; expected: failure' >&2
+       exit 1
+fi
+
+# Simple configuration examples.
+cat <<EOF > "$SYSDBD_CONF"
+Listen "$SOCKET_FILE"
+EOF
+
+run_sysdbd -D -C "$SYSDBD_CONF"
+wait_for_sysdbd
+
+# reconfigure
+SOCKET_FILE="$SOCKET_FILE-2"
+cat <<EOF > "$SYSDBD_CONF"
+Listen "${SOCKET_FILE}"
+EOF
+kill -HUP $SYSDBD_PID
+wait_for_sysdbd
+
+stop_sysdbd
+
diff --git a/t/integration/filter.sh b/t/integration/filter.sh
new file mode 100755 (executable)
index 0000000..025cd57
--- /dev/null
@@ -0,0 +1,79 @@
+#! /bin/bash
+#
+# SysDB -- t/integration/simple_query.sh
+# Copyright (C) 2012 Sebastian 'tokkee' Harl <sh@tokkee.org>
+# 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 <<EOF > "$SYSDBD_CONF"
+Listen "$SOCKET_FILE"
+PluginDir "$PLUGIN_DIR"
+Interval 2
+
+LoadBackend mock_plugin
+<Backend "mock_plugin">
+</Backend>
+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/matching.sh b/t/integration/matching.sh
new file mode 100755 (executable)
index 0000000..d42044b
--- /dev/null
@@ -0,0 +1,110 @@
+#! /bin/bash
+#
+# SysDB -- t/integration/basic_matching.sh
+# Copyright (C) 2012 Sebastian 'tokkee' Harl <sh@tokkee.org>
+# 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 for matching clauses.
+#
+
+set -ex
+
+source "$( dirname "$0" )/test_lib.sh"
+
+cat <<EOF > "$SYSDBD_CONF"
+Listen "$SOCKET_FILE"
+PluginDir "$PLUGIN_DIR"
+Interval 2
+
+LoadBackend mock_plugin
+<Backend "mock_plugin">
+</Backend>
+EOF
+
+run_sysdbd -D -C "$SYSDBD_CONF"
+
+wait_for_sysdbd
+sleep 3
+
+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 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 '^\[\]$'
+
+stop_sysdbd
+
diff --git a/t/integration/query.sh b/t/integration/query.sh
new file mode 100755 (executable)
index 0000000..e034e7c
--- /dev/null
@@ -0,0 +1,112 @@
+#! /bin/bash
+#
+# SysDB -- t/integration/basic_query.sh
+# Copyright (C) 2012 Sebastian 'tokkee' Harl <sh@tokkee.org>
+# 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 <<EOF > "$SYSDBD_CONF"
+Listen "$SOCKET_FILE"
+PluginDir "$PLUGIN_DIR"
+Interval 2
+
+LoadBackend mock_plugin
+<Backend "mock_plugin">
+</Backend>
+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
+
diff --git a/t/integration/simple_config.sh b/t/integration/simple_config.sh
deleted file mode 100755 (executable)
index 3bdb104..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-#! /bin/bash
-#
-# SysDB -- t/integration/simple_config.sh
-# Copyright (C) 2012 Sebastian 'tokkee' Harl <sh@tokkee.org>
-# 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 configuration snippets.
-#
-
-set -ex
-
-source "$( dirname "$0" )/test_lib.sh"
-
-# Very basics ;-)
-run_sysdb -V
-run_sysdb -h
-
-run_sysdbd -V
-run_sysdbd -h
-
-# Simple invalid configuration examples.
-cat <<EOF > "$SYSDBD_CONF"
-Invalid "option"
-EOF
-if run_sysdbd_foreground -D -C "$SYSDBD_CONF"; then
-       echo 'SysDBd accepted invalid option; expected: failure' >&2
-       exit 1
-fi
-
-cat <<EOF > "$SYSDBD_CONF"
-Listen "invalid://address"
-EOF
-if run_sysdbd_foreground -D -C "$SYSDBD_CONF"; then
-       echo 'SysDBd accepted invalid listen address; expected: failure' >&2
-       exit 1
-fi
-
-cat <<EOF > "$SYSDBD_CONF"
-Interval "foo"
-EOF
-if run_sysdbd_foreground -D -C "$SYSDBD_CONF"; then
-       echo 'SysDBd accepted invalid interval; expected: failure' >&2
-       exit 1
-fi
-
-cat <<EOF > "$SYSDBD_CONF"
-Interval -3.0
-EOF
-if run_sysdbd_foreground -D -C "$SYSDBD_CONF"; then
-       echo 'SysDBd accepted invalid interval; expected: failure' >&2
-       exit 1
-fi
-
-# Simple configuration examples.
-cat <<EOF > "$SYSDBD_CONF"
-Listen "$SOCKET_FILE"
-EOF
-
-run_sysdbd -D -C "$SYSDBD_CONF"
-wait_for_sysdbd
-
-# reconfigure
-SOCKET_FILE="$SOCKET_FILE-2"
-cat <<EOF > "$SYSDBD_CONF"
-Listen "${SOCKET_FILE}"
-EOF
-kill -HUP $SYSDBD_PID
-wait_for_sysdbd
-
-stop_sysdbd
-
diff --git a/t/integration/simple_query.sh b/t/integration/simple_query.sh
deleted file mode 100755 (executable)
index 677ce2f..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-#! /bin/bash
-#
-# SysDB -- t/integration/simple_query.sh
-# Copyright (C) 2012 Sebastian 'tokkee' Harl <sh@tokkee.org>
-# 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 <<EOF > "$SYSDBD_CONF"
-Listen "$SOCKET_FILE"
-PluginDir "$PLUGIN_DIR"
-Interval 2
-
-LoadBackend mock_plugin
-<Backend "mock_plugin">
-</Backend>
-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'
-
-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 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"'
-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
-