summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorChris Akritidis <43294513+cakrit@users.noreply.github.com>2019-06-04 11:51:42 +0200
committerGitHub <noreply@github.com>2019-06-04 11:51:42 +0200
commitfd976d40e2d90e31af4a6c34726f13dcf562e824 (patch)
treecc3edeab5c023e3aecd44033f7975b1e0a2adfd0 /tests
parent11f0f553a05915ff80b92402bcb69465e5845d9f (diff)
Simplify health cmdapi tester - no setup/cleanup needed (#6210)
Diffstat (limited to 'tests')
-rw-r--r--tests/health_mgmtapi/README.md5
-rwxr-xr-xtests/health_mgmtapi/health-cmdapi-test.sh.in138
-rw-r--r--tests/health_mgmtapi/python-example.conf16
3 files changed, 34 insertions, 125 deletions
diff --git a/tests/health_mgmtapi/README.md b/tests/health_mgmtapi/README.md
index 278c72dc16..8473b35eab 100644
--- a/tests/health_mgmtapi/README.md
+++ b/tests/health_mgmtapi/README.md
@@ -4,9 +4,8 @@ The directory `tests/health_cmdapi` contains the test script `health-cmdapi-test
The script can be executed with options to prepare the system for the tests, run them and restore the system to its previous state.
-It depends on the management API being accessible and on the responses to the api/v1/alarms?all requests being functional.
-
-Run it with `tests/health_mgmtapi/health-cmdapi-test.sh -h` to see the options.
+It depends on the management API being accessible on localhost:19999 and on the responses to the api/v1/alarms?all requests being functional.
+It also requires read access to the management API key that is usually under `/var/lib/netdata/netdata.api.key` (`@varlibdir_POST@/netdata.api.key`).
[![analytics](https://www.google-analytics.com/collect?v=1&aip=1&t=pageview&_s=1&ds=github&dr=https%3A%2F%2Fgithub.com%2Fnetdata%2Fnetdata&dl=https%3A%2F%2Fmy-netdata.io%2Fgithub%2Ftests%2Fhealth_mgmtapi%2FREADME&_u=MAC~&cid=5792dfd7-8dc4-476b-af31-da2fdb9f93d2&tid=UA-64295674-3)]()
diff --git a/tests/health_mgmtapi/health-cmdapi-test.sh.in b/tests/health_mgmtapi/health-cmdapi-test.sh.in
index 1bbe269d5d..26279cac97 100755
--- a/tests/health_mgmtapi/health-cmdapi-test.sh.in
+++ b/tests/health_mgmtapi/health-cmdapi-test.sh.in
@@ -1,50 +1,52 @@
#!/usr/bin/env bash
# shellcheck disable=SC1117,SC2034,SC2059,SC2086,SC2181
-NETDATA_USER_CONFIG_DIR="@configdir_POST@"
-NETDATA_STOCK_CONFIG_DIR="@libconfigdir_POST@"
NETDATA_VARLIB_DIR="@varlibdir_POST@"
-printhelp () {
- echo "Usage: health-cmdapi-test.sh [OPTIONS]
- -s SETUP config files for python example tests
- -c CLEANUP config files from python example tests
- -r RESTART netdata after SETUP and CLEANUP, using systemctl restart netdata.
- -t TEST scenarios execution
- -u <URL> changes the host:port from localhost:19999 to <URL>
- "
-}
-
check () {
- echo -e "${GRAY}Check: '${1}' in 2 sec"
- sleep 2
- resp=$(curl -s "http://$URL/api/v1/alarms?all")
+ sec=1
+ echo -e " ${GRAY}Check: '${1}' in $sec sec"
+ sleep $sec
+ number=$RANDOM
+ resp=$(curl -s "http://$URL/api/v1/alarms?all&$number")
r=$(echo "${resp}" | \
python3 -c "import sys, json; d=json.load(sys.stdin); \
print(\
- d['alarms']['example.random.example_alarm1']['disabled'], \
- d['alarms']['example.random.example_alarm1']['silenced'] , \
- d['alarms']['example.random.example_alarm2']['disabled'], \
- d['alarms']['example.random.example_alarm2']['silenced'], \
+ d['alarms']['system.cpu.10min_cpu_usage']['disabled'], \
+ d['alarms']['system.cpu.10min_cpu_usage']['silenced'] , \
+ d['alarms']['system.cpu.10min_cpu_iowait']['disabled'], \
+ d['alarms']['system.cpu.10min_cpu_iowait']['silenced'], \
d['alarms']['system.load.load_trigger']['disabled'], \
d['alarms']['system.load.load_trigger']['silenced'], \
);" 2>&1)
if [ $? -ne 0 ] ; then
- echo -e "${RED}ERROR: Unexpected response '$resp'"
+ echo -e " ${RED}ERROR: Unexpected response stored in /tmp/resp-$number.json"
+ echo "$resp" > /tmp/resp-$number.json
err=$((err+1))
+ iter=0
elif [ "${r}" != "${2}" ] ; then
- echo -e "${RED}ERROR: 'Got ${r}'. Expected '${2}'"
- err=$((err+1))
+ echo -e " ${GRAY}WARNING: 'Got ${r}'. Expected '${2}'"
+ iter=$((iter+1))
+ if [ $iter -lt 10 ] ; then
+ echo -e " ${GRAY}Repeating test "
+ check "$1" "$2"
+ else
+ echo -e " ${RED}ERROR: 'Got ${r}'. Expected '${2}'"
+ iter=0
+ err=$((err+1))
+ fi
else
- echo -e "${GREEN}Success"
+ echo -e " ${GREEN}Success"
+ iter=0
fi
}
cmd () {
- echo -e "${WHITE}Cmd '${1}', expecting '${2}'"
+ echo -e "${WHITE}Cmd '${1}'"
+ echo -en " ${GRAY}Expecting '${2}' : "
RESPONSE=$(curl -s "http://$URL/api/v1/manage/health?${1}" -H "X-Auth-Token: $TOKEN" 2>&1)
if [ "${RESPONSE}" != "${2}" ] ; then
- echo -e "${RED}ERROR: Response '${RESPONSE}' != '${2}'"
+ echo -e "${RED}ERROR: Response '${RESPONSE}'"
err=$((err+1))
else
echo -e "${GREEN}Success"
@@ -62,63 +64,8 @@ CLEANUP=0
TEST=0
URL="localhost:19999"
-while getopts :srctu: option
-do
- case "$option" in
- s)
- SETUP=1
- ;;
- r)
- RESTART=1
- ;;
- c)
- CLEANUP=1
- ;;
- t)
- TEST=1
- ;;
- u)
- URL=$OPTARG
- ;;
- *)
- printhelp
- exit 1
- ;;
- esac
-done
-
-if [ $SETUP -eq 1 ] ; then
- echo "Preparing netdata configuration for testing"
- # Prep netdata for tests
- if [ -f "${NETDATA_USER_CONFIG_DIR}/python.d.conf" ] ; then
- cp -f "${NETDATA_USER_CONFIG_DIR}/python.d.conf" /tmp/python.d.conf
- else
- cp "${NETDATA_STOCK_CONFIG_DIR}/python.d.conf" "${NETDATA_USER_CONFIG_DIR}/"
- fi
- sed -i -e "s/example: no/example: yes/g" "${NETDATA_USER_CONFIG_DIR}/python.d.conf"
-
- mypath=$(cd ${0%/*} && echo $PWD)
-
- cp -f "${mypath}/python-example.conf" "${NETDATA_USER_CONFIG_DIR}/health.d/"
-
- # netdata.conf
- if [ -f "${NETDATA_USER_CONFIG_DIR}/netdata.conf" ] ; then
- cp -f "${NETDATA_USER_CONFIG_DIR}/netdata.conf" /tmp/netdata.conf
- fi
- printf "[health]\nrun at least every seconds = 1\n" > "${NETDATA_USER_CONFIG_DIR}/netdata.conf"
-
- chmod +r "${NETDATA_USER_CONFIG_DIR}/python.d.conf" "${NETDATA_USER_CONFIG_DIR}/netdata.conf" "${NETDATA_USER_CONFIG_DIR}/health.d/python-example.conf" "${NETDATA_STOCK_CONFIG_DIR}/health.d/load.conf"
- # Restart netdata
- if [ $RESTART -eq 1 ] ; then
- echo "Restarting netdata"
- systemctl restart netdata
- fi
-fi
-
err=0
-# Execute tests
-if [ $TEST -eq 1 ] ; then
HEALTH_CMDAPI_MSG_AUTHERROR="Auth Error"
HEALTH_CMDAPI_MSG_SILENCEALL="All alarm notifications are silenced"
@@ -170,7 +117,7 @@ if [ $TEST -eq 1 ] ; then
# Add silencer by name
printf -v resp "$HEALTH_CMDAPI_MSG_SILENCE\n$HEALTH_CMDAPI_MSG_ADDED"
- cmd "cmd=SILENCE&alarm=*example_alarm1 *load_trigger" "${resp}"
+ cmd "cmd=SILENCE&alarm=*10min_cpu_usage *load_trigger" "${resp}"
check "Silence notifications for alarm1 and load_trigger" "False True False False False True"
# Convert to disable health checks
@@ -182,7 +129,7 @@ if [ $TEST -eq 1 ] ; then
check "Silence notifications for alarm1 and load_trigger" "False True False False False True"
# Add second silencer by name
- cmd "alarm=*example_alarm2" "$HEALTH_CMDAPI_MSG_ADDED"
+ cmd "alarm=*10min_cpu_iowait" "$HEALTH_CMDAPI_MSG_ADDED"
check "Silence notifications for alarm1,alarm2 and load_trigger" "False True False True False True"
# Reset
@@ -194,7 +141,7 @@ if [ $TEST -eq 1 ] ; then
check "Default State" "False False False False True False"
# Add silencer by context
- cmd "context=random" "$HEALTH_CMDAPI_MSG_ADDED"
+ cmd "context=system.cpu" "$HEALTH_CMDAPI_MSG_ADDED"
check "Default State" "True False True False True False"
# Reset
@@ -202,11 +149,11 @@ if [ $TEST -eq 1 ] ; then
# Add second condition to a selector (AND)
printf -v resp "$HEALTH_CMDAPI_MSG_SILENCE\n$HEALTH_CMDAPI_MSG_ADDED"
- cmd "cmd=SILENCE&alarm=*example_alarm1 *load_trigger&chart=system.load" "${resp}"
+ cmd "cmd=SILENCE&alarm=*10min_cpu_usage *load_trigger&chart=system.load" "${resp}"
check "Silence notifications load_trigger" "False False False False False True"
# Add second selector with two conditions
- cmd "alarm=*example_alarm1 *load_trigger&context=random" "$HEALTH_CMDAPI_MSG_ADDED"
+ cmd "alarm=*10min_cpu_usage *load_trigger&context=system.cpu" "$HEALTH_CMDAPI_MSG_ADDED"
check "Silence notifications load_trigger" "False True False False False True"
# Reset
@@ -236,27 +183,6 @@ if [ $TEST -eq 1 ] ; then
# Reset
cmd "cmd=RESET" "$HEALTH_CMDAPI_MSG_RESET"
-fi
-
-# Cleanup
-if [ $CLEANUP -eq 1 ] ; then
- echo -e "${WHITE}Restoring netdata configuration"
- for f in "python.d.conf" "netdata.conf" ; do
- if [ -f "/tmp/$f" ] ; then
- mv -f "/tmp/$f" "${NETDATA_USER_CONFIG_DIR}/"
- else
- rm -f "${NETDATA_USER_CONFIG_DIR}/$f"
- fi
- done
-
- rm -f "${NETDATA_USER_CONFIG_DIR}/health.d/python-example.conf"
-
- # Restart netdata
- if [ $RESTART -eq 1 ] ; then
- echo "Restarting netdata"
- systemctl restart netdata
- fi
-fi
if [ $err -gt 0 ] ; then
echo "$err error(s) found"
diff --git a/tests/health_mgmtapi/python-example.conf b/tests/health_mgmtapi/python-example.conf
deleted file mode 100644
index 66713208c1..0000000000
--- a/tests/health_mgmtapi/python-example.conf
+++ /dev/null
@@ -1,16 +0,0 @@
-alarm: example_alarm1
- on: example.random
- every: 2s
- warn: $random1 > (($status >= $WARNING) ? (55) : (75))
- crit: $random1 > (($status == $CRITICAL) ? (75) : (95))
- info: random
- to: sysadmin
-
-alarm: example_alarm2
- on: example.random
- every: 2s
- warn: $random2 > (($status >= $WARNING) ? (55) : (75))
- crit: $random2 > (($status == $CRITICAL) ? (75) : (95))
- info: random
- to: sysadmin
-