devstack/tests/test_functions.sh
Sean Dague 7efba991f7 don't source openrc
There is actually no reason why we need openrc for these tests, don't
source it as it prevents some ip math errors from randomly killing
tests.

Change-Id: Iface7c21898d92e14e840379938b25844cd85565
2015-04-28 13:15:22 -04:00

216 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
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