summaryrefslogtreecommitdiffstats
path: root/debian/tests
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--debian/tests/control20
-rwxr-xr-xdebian/tests/delay34
-rwxr-xr-xdebian/tests/fence-aws47
-rwxr-xr-xdebian/tests/fence-dummy14
-rwxr-xr-xdebian/tests/metadata23
5 files changed, 138 insertions, 0 deletions
diff --git a/debian/tests/control b/debian/tests/control
new file mode 100644
index 0000000..0abf418
--- /dev/null
+++ b/debian/tests/control
@@ -0,0 +1,20 @@
+Tests: metadata
+Depends: fence-agents, python3-openstackclient, xsltproc, libxml2-utils, gawk
+
+Tests: delay
+Depends: fence-agents, python3-openstackclient, time, iputils-ping
+
+Tests: fence-dummy
+Depends: fence-agents
+Restrictions: allow-stderr
+
+Tests: fence-aws
+Depends: fence-agents
+Restrictions: skippable
+
+Test-Command: /usr/sbin/fence_virt -h
+Depends: fence-virt
+
+Test-Command: service fence_virtd status
+Depends: fence-virtd
+Restrictions: needs-root, isolation-container
diff --git a/debian/tests/delay b/debian/tests/delay
new file mode 100755
index 0000000..ad0af03
--- /dev/null
+++ b/debian/tests/delay
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+set -e
+
+DEFAULT_ARGS='delay=10\n login=test\n passwd=test\n ipaddr=127.0.0.1\n port=1\n managed=1\n devices=test\n session_url=http://127.0.0.1\n email=test@test.te\n ping_targets=localhost'
+OUTPUT=$AUTOPKGTEST_TMP/delay
+mkdir -p $OUTPUT
+
+for agent in /usr/sbin/fence_*; do
+ [ "$agent" = "/usr/sbin/fence_ack_manual" ] && continue
+ [ "$agent" = "/usr/sbin/fence_kdump" ] && continue
+
+ ARGS="$DEFAULT_ARGS"
+ if [ "$agent" = "/usr/sbin/fence_cisco_mds" ]; then
+ ARGS=$(echo "$ARGS" | sed 's#port=1#port=fc1/1#')
+ fi
+ LOG="$OUTPUT/$(basename $agent)"
+
+ (
+ TIME=$(/usr/bin/time -p sh -c "printf '$ARGS' | $agent " 2>&1 | awk -F"[. ]" -vOFS= '/real/ {print $2,$3}')
+ if [ "$TIME" -lt 1000 ]; then
+ echo "$agent delay too low: $TIME" | tee $LOG
+ else
+ echo "$agent delay ok: $TIME" | tee $LOG
+ fi
+ ) &
+ pids="$pids $!"
+done
+
+wait $pids
+
+if grep -qr 'delay too low' $OUTPUT; then
+ exit 1
+fi
diff --git a/debian/tests/fence-aws b/debian/tests/fence-aws
new file mode 100755
index 0000000..21a3dab
--- /dev/null
+++ b/debian/tests/fence-aws
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+set -e
+
+if [ -z "$AWS_INSTANCE_ID" ] || [ -z "$AWS_REGION" ] || \
+ [ -z "$AWS_ACCESS_KEY" ] || [ -z "$AWS_SECRET_KEY" ];
+then
+ echo "AWS environment not found, skipping test."
+ exit 77
+fi
+
+test_aws() {
+ printf "\n=== $1 ===\n"
+ /usr/sbin/fence_aws -r $AWS_REGION -a $AWS_ACCESS_KEY -s $AWS_SECRET_KEY -n $AWS_INSTANCE_ID -o $1
+}
+
+printf "=== version ===\n"
+/usr/sbin/fence_aws -V
+
+test_aws list
+
+if test_aws status
+then # instance is running
+ test_aws reboot
+ sleep 30
+ test_aws status
+
+ test_aws off
+ sleep 30
+ test_aws status || true
+
+ test_aws on
+ sleep 30
+ test_aws status
+else # instance is stopped
+ test_aws on
+ sleep 30
+ test_aws status
+
+ test_aws reboot
+ sleep 30
+ test_aws status
+
+ test_aws off
+ sleep 30
+ test_aws status || true
+fi
diff --git a/debian/tests/fence-dummy b/debian/tests/fence-dummy
new file mode 100755
index 0000000..c0b2ba3
--- /dev/null
+++ b/debian/tests/fence-dummy
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+set -ex
+
+# clean up
+rm -f /tmp/fence_dummy.status
+trap "rm -f /tmp/fence_dummy.status" 0 2 3 15
+
+/usr/sbin/fence_dummy -V
+
+/usr/sbin/fence_dummy -v
+
+# show status from /tmp/fence_dummy.status
+/usr/sbin/fence_dummy -o status
diff --git a/debian/tests/metadata b/debian/tests/metadata
new file mode 100755
index 0000000..21c1ece
--- /dev/null
+++ b/debian/tests/metadata
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+set -e
+
+TMPXML=$AUTOPKGTEST_TMP/xml
+
+for agent in /usr/sbin/fence_*; do
+ [ "$agent" = "/usr/sbin/fence_ack_manual" ] && continue
+
+ printf '\nTesting %s...\n' "$agent"
+ $agent -o metadata > "$TMPXML" 2> /dev/null
+ cat "$TMPXML"
+
+ TESTXML=tests/data/metadata/${agent##*/}.xml
+ if [ -f "$TESTXML" ]; then
+ gawk 'BEGIN {store=-1} /name=".*_path"/ || /name=".*_file"/ {store=2} {if (store!=0) {print}; store--}' "$TMPXML" \
+ | diff -u "$TESTXML" -
+ fi
+
+ xsltproc lib/fence2rng.xsl "$TMPXML" \
+ | sed -e 's/ rha:description=/ description=/g' -e 's/ rha:name=/ name=/g' \
+ | xmllint --nsclean --noout -
+done