diff options
Diffstat (limited to '')
-rw-r--r-- | debian/tests/control | 20 | ||||
-rwxr-xr-x | debian/tests/delay | 34 | ||||
-rwxr-xr-x | debian/tests/fence-aws | 47 | ||||
-rwxr-xr-x | debian/tests/fence-dummy | 14 | ||||
-rwxr-xr-x | debian/tests/metadata | 23 |
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 |