Code

integration/query.sh: Check that empty commands work fine.
[sysdb.git] / t / integration / query.sh
index f8287b45a645adac6798dbb611b092279e070d4f..46568569a57c307d9672a66472ce5f5456679ded 100755 (executable)
@@ -38,21 +38,49 @@ Listen "$SOCKET_FILE"
 PluginDir "$PLUGIN_DIR"
 Interval 2
 
+LoadPlugin mock_timeseries
+EOF
+
+run_sysdbd -D -C "$SYSDBD_CONF"
+wait_for_sysdbd
+
+cat <<EOF > "${SYSDBD_CONF}.sender"
+Listen "${SOCKET_FILE}.sender"
+PluginDir "$PLUGIN_DIR"
+Interval 2
+
+LoadPlugin "store::network"
+<Plugin "store::network">
+  Server "$SOCKET_FILE"
+</Plugin>
+
 LoadBackend mock_plugin
 <Backend "mock_plugin">
 </Backend>
 EOF
 
-run_sysdbd -D -C "$SYSDBD_CONF"
+run_sysdbd_foreground -D -C "${SYSDBD_CONF}.sender" &
+SYSDBD_PID2=$!
+trap "kill \$SYSDBD_PID2" EXIT
+wait_for_sysdbd "${SOCKET_FILE}.sender"
 
-wait_for_sysdbd
+# 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" \
@@ -94,13 +122,17 @@ 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 "FETCH host 'host1.example.com' FILTER last_update < 0" 2>&1 )" \
+  -c "FETCH host 'host1.example.com' FILTER last_update < 0s" 2>&1 )" \
   && exit 1
 echo "$output" | grep -F 'not found'
 
 (echo 'LIST hosts;'; sleep 1; echo "FETCH host 'host1.example.com'") \
        | run_sysdb -H "$SOCKET_FILE"
 
+output="$( run_sysdb -H "$SOCKET_FILE" \
+       -c "FETCH host 'host1.example.com' FILTER age < 0s" 2>&1 )" && exit 1
+echo "$output" | grep -F 'not found'
+
 # When requesting information for unknown hosts, expect a non-zero exit code.
 output="$( run_sysdb -H "$SOCKET_FILE" \
        -c "FETCH host 'does.not.exist'" 2>&1 )" && exit 1
@@ -110,8 +142,20 @@ 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
+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 :