diff --git a/cib/regression.sh b/cib/regression.sh new file mode 100755 index 0000000000..14633c271e --- /dev/null +++ b/cib/regression.sh @@ -0,0 +1,142 @@ +#!/bin/bash + +num_errors=0 +num_passed=0 + +assert() { + rc=$1; shift + target=$1; shift + app=$1; shift + msg=$1; shift + exit_code=$1; shift + if [ $rc -ne $target ]; then + num_errors=`expr $num_errors + 1` + printf "* Failed (rc=%.3d): %-14s - %s\n" $rc $app "$msg" + cibadmin -Ql + if [ ! -z $exit_code ]; then + echo "Aborting tests" + exit $exit_code + fi + else + printf "* Passed: %-14s - %s\n" $app "$msg" + num_passed=`expr $num_passed + 1` + fi +} + +done=0 +cib_opts="" + +while test "$done" = "0"; do + case "$1" in + -v) verbose=1; shift;; + -l) cib_opts="$cib_opts -l"; shift;; + -x) set -x; shift;; + -?) usage 0;; + -*) echo "unknown option: $1"; usage 1;; + *) done=1;; + esac +done + +printf " %-9s %-16s %s\n" Result App Test + +# Save backup +cibadmin $cib_opts -Q > /tmp/$$.existing.xml +assert $? 0 cibadmin "Query CIB" + +# Create a combined backup + +echo '' > /tmp/$$.combined.xml +echo '' >> /tmp/$$.combined.xml + +cibadmin $cib_opts -Q -o crm_config >> /tmp/$$.combined.xml +assert $? 0 cibadmin "Query CIB for config options" + +cibadmin $cib_opts -Q -o nodes >> /tmp/$$.combined.xml +assert $? 0 cibadmin "Query CIB for nodes" + +cibadmin $cib_opts -Q -o resources >> /tmp/$$.combined.xml +assert $? 0 cibadmin "Query CIB for resources" + +cibadmin $cib_opts -Q -o constraints >> /tmp/$$.combined.xml +assert $? 0 cibadmin "Query CIB for constraints" + +echo '' >> /tmp/$$.combined.xml + +cibadmin $cib_opts -Q -o status >> /tmp/$$.combined.xml +assert $? 0 cibadmin "Query CIB for status" + +echo '' >> /tmp/$$.combined.xml + +# Test various tools and options + +cibadmin $cib_opts -E > /dev/null 2>&1 +assert $? 1 cibadmin "Require --force for CIB erasure" + +cibadmin $cib_opts -E --force +assert $? 0 cibadmin "Allow CIB erasure with --force" + +crm_attribute -n cluster-delay -v 60s +assert $? 0 crm_attribute "Set cluster option" + +cibadmin $cib_opts -Q -o crm_config | grep cib-bootstrap-options-cluster-delay > /dev/null 2>&1 +assert $? 0 cibadmin "Query new cluster option" + +cibadmin $cib_opts -Q -o crm_config > /tmp/$$.opt.xml +assert $? 0 cibadmin "Query cluster options" + +cibadmin $cib_opts -D -o crm_config -X '' +assert $? 0 cibadmin "Delete nvpair" + +cibadmin $cib_opts -C -o crm_config -x /tmp/$$.opt.xml > /dev/null 2>&1 +assert $? 21 cibadmin "Create operaton should fail with: -21, The object already exists" + +cibadmin $cib_opts -M -o crm_config -x /tmp/$$.opt.xml +assert $? 0 cibadmin "Modify cluster options section" + +cibadmin $cib_opts -Q -o crm_config | grep cib-bootstrap-options-cluster-delay > /dev/null 2>&1 +assert $? 0 cibadmin "Query updated cluster option" + +crm_attribute -n cluster-delay -v 40s -s duplicate > /dev/null 2>&1 +assert $? 0 crm_attribute "Set duplicate cluster option" + +crm_attribute -n cluster-delay -v 30s > /dev/null 2>&1 +assert $? 216 crm_attribute "Setting multiply defined cluster option should fail with -216, Could not set cluster option" + +crm_attribute -n cluster-delay -v 30s -s duplicate +assert $? 0 crm_attribute "Set cluster option with -s" + +crm_attribute -n cluster-delay -D -i cib-bootstrap-options-cluster-delay +assert $? 0 crm_attribute "Delete cluster option with -i" + +cibadmin -C -o nodes -X '' +assert $? 0 cibadmin "Create node entry" + +crm_attribute -n ram -v 1024M -U i-dont-exist-UNAME -t nodes +assert $? 0 crm_attribute "Create node attribute" + +cibadmin $cib_opts -Q -o nodes | grep i-dont-exist-UUID-ram > /dev/null 2>&1 +assert $? 0 cibadmin "Query new node attribute" + +cibadmin $cib_opts -Q | cibadmin -5 -p > /dev/null 2>&1 +assert $? 0 cibadmin "Digest calculation" + +# This update will fail because it has version numbers +cibadmin $cib_opts -R -x /tmp/$$.existing.xml > /dev/null 2>&1 +assert $? 45 cibadmin "Replace operation should fail with: -45, Update was older than existing configuration" + +# Restore the existing config +cibadmin $cib_opts -R -x /tmp/$$.combined.xml +assert $? 0 cibadmin "Version-less replace operation" + +set +x + +rm /tmp/$$.opt.xml +rm /tmp/$$.existing.xml + +if [ $num_errors -gt 0 ]; then + echo Tests failed: $agent failed $num_errors tests + exit 1 +else + echo All $num_passed tests completed successfully + exit 0 +fi