devstack/tests/test_functions.sh
Ian Wienand 09f4ad2279 Convert test_functions.sh to use unittest helpers
This currently does not exit with any failure code when tests are
failing.  Convert it to use the helper functions from unittest.sh so
it correctly reports failures.

Change-Id: I2062d9c00ebffcc98ba75a12f480e4dd728ee080
2015-04-17 13:23:25 +10:00

219 lines
5.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Tests for DevStack functions
TOP=$(cd $(dirname "$0")/.. && pwd)
# Import common functions
source $TOP/functions
# Import configuration
source $TOP/openrc
source $TOP/tests/unittest.sh
echo "Testing die_if_not_set()"
bash -c "source $TOP/functions; X=`echo Y && true`; die_if_not_set $LINENO X 'not OK'"
if [[ $? != 0 ]]; then
failed "die_if_not_set [X='Y' true] Failed"
else
passed 'OK'
fi
bash -c "source $TOP/functions; X=`true`; die_if_not_set $LINENO X 'OK'" > /dev/null 2>&1
if [[ $? = 0 ]]; then
failed "die_if_not_set [X='' true] Failed"
fi
bash -c "source $TOP/functions; X=`echo Y && false`; die_if_not_set $LINENO X 'not OK'"
if [[ $? != 0 ]]; then
failed "die_if_not_set [X='Y' false] Failed"
else
passed 'OK'
fi
bash -c "source $TOP/functions; X=`false`; die_if_not_set $LINENO X 'OK'" > /dev/null 2>&1
if [[ $? = 0 ]]; then
failed "die_if_not_set [X='' false] Failed"
fi
# Enabling/disabling services
echo "Testing enable_service()"
function test_enable_service {
local start="$1"
local add="$2"
local finish="$3"
ENABLED_SERVICES="$start"
enable_service $add
if [ "$ENABLED_SERVICES" = "$finish" ]; then
passed "OK: $start + $add -> $ENABLED_SERVICES"
else
failed "changing $start to $finish with $add failed: $ENABLED_SERVICES"
fi
}
test_enable_service '' a 'a'
test_enable_service 'a' b 'a,b'
test_enable_service 'a,b' c 'a,b,c'
test_enable_service 'a,b' c 'a,b,c'
test_enable_service 'a,b,' c 'a,b,c'
test_enable_service 'a,b' c,d 'a,b,c,d'
test_enable_service 'a,b' "c d" 'a,b,c,d'
test_enable_service 'a,b,c' c 'a,b,c'
test_enable_service 'a,b,-c' c 'a,b'
test_enable_service 'a,b,c' -c 'a,b'
function test_disable_service {
local start="$1"
local del="$2"
local finish="$3"
ENABLED_SERVICES="$start"
disable_service "$del"
if [ "$ENABLED_SERVICES" = "$finish" ]; then
passed "OK: $start - $del -> $ENABLED_SERVICES"
else
failed "changing $start to $finish with $del failed: $ENABLED_SERVICES"
fi
}
echo "Testing disable_service()"
test_disable_service 'a,b,c' a 'b,c'
test_disable_service 'a,b,c' b 'a,c'
test_disable_service 'a,b,c' c 'a,b'
test_disable_service 'a,b,c' a 'b,c'
test_disable_service 'b,c' b 'c'
test_disable_service 'c' c ''
test_disable_service '' d ''
test_disable_service 'a,b,c,' c 'a,b'
test_disable_service 'a,b' c 'a,b'
echo "Testing disable_all_services()"
ENABLED_SERVICES=a,b,c
disable_all_services
if [[ -z "$ENABLED_SERVICES" ]]; then
passed "OK"
else
failed "disabling all services FAILED: $ENABLED_SERVICES"
fi
echo "Testing disable_negated_services()"
function test_disable_negated_services {
local start="$1"
local finish="$2"
ENABLED_SERVICES="$start"
disable_negated_services
if [ "$ENABLED_SERVICES" = "$finish" ]; then
passed "OK: $start + $add -> $ENABLED_SERVICES"
else
failed "changing $start to $finish failed: $ENABLED_SERVICES"
fi
}
test_disable_negated_services '-a' ''
test_disable_negated_services '-a,a' ''
test_disable_negated_services '-a,-a' ''
test_disable_negated_services 'a,-a' ''
test_disable_negated_services 'b,a,-a' 'b'
test_disable_negated_services 'a,b,-a' 'b'
test_disable_negated_services 'a,-a,b' 'b'
echo "Testing is_package_installed()"
if [[ -z "$os_PACKAGE" ]]; then
GetOSVersion
fi
if [[ "$os_PACKAGE" = "deb" ]]; then
is_package_installed dpkg
VAL=$?
elif [[ "$os_PACKAGE" = "rpm" ]]; then
is_package_installed rpm
VAL=$?
else
VAL=1
fi
if [[ "$VAL" -eq 0 ]]; then
passed "OK"
else
failed "is_package_installed() on existing package failed"
fi
if [[ "$os_PACKAGE" = "deb" ]]; then
is_package_installed dpkg bash
VAL=$?
elif [[ "$os_PACKAGE" = "rpm" ]]; then
is_package_installed rpm bash
VAL=$?
else
VAL=1
fi
if [[ "$VAL" -eq 0 ]]; then
passed "OK"
else
failed "is_package_installed() on more than one existing package failed"
fi
is_package_installed zzzZZZzzz
VAL=$?
if [[ "$VAL" -ne 0 ]]; then
passed "OK"
else
failed "is_package_installed() on non-existing package failed"
fi
# test against removed package...was a bug on Ubuntu
if is_ubuntu; then
PKG=cowsay
if ! (dpkg -s $PKG >/dev/null 2>&1); then
# it was never installed...set up the condition
sudo apt-get install -y cowsay >/dev/null 2>&1
fi
if (dpkg -s $PKG >/dev/null 2>&1); then
# remove it to create the 'un' status
sudo dpkg -P $PKG >/dev/null 2>&1
fi
# now test the installed check on a deleted package
is_package_installed $PKG
VAL=$?
if [[ "$VAL" -ne 0 ]]; then
passed "OK"
else
failed "is_package_installed() on deleted package failed"
fi
fi
# test isset function
echo "Testing isset()"
you_should_not_have_this_variable=42
if isset "you_should_not_have_this_variable"; then
passed "OK"
else
failed "\"you_should_not_have_this_variable\" not declared. failed"
fi
unset you_should_not_have_this_variable
if isset "you_should_not_have_this_variable"; then
failed "\"you_should_not_have_this_variable\" looks like declared variable."
else
passed "OK"
fi
report_results