testing: Override user environment PATH in chroot
[strongswan.git] / testing / scripts / function.sh
index d727082..c512b8a 100755 (executable)
@@ -17,6 +17,7 @@
 export TERM=xterm
 RED=$(tput setaf 1)
 GREEN=$(tput setaf 2)
+YELLOW=$(tput setaf 3)
 NORMAL=$(tput op)
 
 # exit with given error message
@@ -26,9 +27,6 @@ die() {
        exit 1
 }
 
-[ -f testing.conf ] || die "Configuration file 'testing.conf' not found"
-. testing.conf
-
 # execute command
 # $1 - command to execute
 # $2 - whether or not to log command exit status
@@ -52,7 +50,7 @@ execute()
 # $1 - command to execute
 execute_chroot()
 {
-       execute "chroot $LOOPDIR $@"
+       execute "chroot $LOOPDIR env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin $@"
 }
 
 # write green status message to console
@@ -69,6 +67,13 @@ echo_failed()
        echo -e "${RED}$1${NORMAL}"
 }
 
+# write yellow status message to console
+# $1 - msg
+echo_warn()
+{
+       echo -e "${YELLOW}$1${NORMAL}"
+}
+
 # log an action
 # $1 - current action description
 log_action()
@@ -97,16 +102,17 @@ declare -a on_exit_items
 # perform registered actions on exit
 on_exit()
 {
-       for i in "${on_exit_items[@]}"
+       for ((onex=${#on_exit_items[@]}-1; onex>=0; onex--))
        do
-               eval $i >>$LOGFILE 2>&1
+               echo "On_Exit: ${on_exit_items[$onex]}" >>$LOGFILE
+               ${on_exit_items[$onex]} >>$LOGFILE 2>&1
        done
        on_exit_items=""
        trap - EXIT
 }
 
 # register a command to execute when the calling script terminates. The
-# registered commands are called in FIFO order.
+# registered commands are called in FILO order.
 # $* - command to register
 do_on_exit()
 {
@@ -126,7 +132,7 @@ graceful_umount()
        [ ! $secs ] && secs=5
 
        let steps=$secs*100
-       for i in `seq 1 $steps`
+       for st in `seq 1 $steps`
        do
                umount $1 >>$LOGFILE 2>&1
                mount | grep $1 >/dev/null 2>&1
@@ -148,6 +154,28 @@ load_qemu_nbd()
        fi
 }
 
+# check if given commands exist in $PATH
+# $* - commands to check
+check_commands()
+{
+       for i in $*
+       do
+               command -v $i >/dev/null || { die "Required command $i not found"; exit 1; }
+       done
+}
+
+# check if any of the given virtual guests are running
+# $* - names of guests to check
+running_any()
+{
+       command -v virsh >/dev/null || return 1
+       for host in $*
+       do
+               virsh list --name 2>/dev/null | grep "^$host$" >/dev/null && return 0
+       done
+       return 1
+}
+
 #############################################
 # search and replace strings throughout a
 # whole directory
@@ -173,47 +201,3 @@ function searchandreplace {
     done
 
 }
-
-#############################################
-# add a bridge
-#
-
-function umlbr_add {
-       brctl addbr     "umlbr$1"
-       brctl setfd     "umlbr$1" 0
-       brctl setageing "umlbr$1" 3600
-       brctl stp       "umlbr$1" off
-       ifconfig        "umlbr$1" "$2" netmask "$3" up 
-}
-
-#############################################
-# delete a bridge
-#
-
-function umlbr_del {
-       ifconfig    "umlbr$1" down                     &> /dev/null 2>&1
-       brctl delbr "umlbr$1"                          &> /dev/null 2>&1
-}
-
-#############################################
-# add a tap interface to a bridge
-#
-
-function umlbr_add_tap {
-       tunctl -t "tap$1_$2"                           &> /dev/null 2>&1
-       ifconfig "tap$1_$2" 0.0.0.0 promisc up         &> /dev/null 2>&1
-       brctl addif "umlbr$1" "tap$1_$2"               &> /dev/null 2>&1
-       cecho-n "$2.."
- }
-
-#############################################
-# delete a tap interface from a bridge
-#
-
-function umlbr_del_tap {
-       ifconfig "umlbr$2" down                        &> /dev/null 2>&1
-       brctl delif "umlbr$1" "tap$1_$2"               &> /dev/null 2>&1
-       tunctl -d "tap$1_$2"                           &> /dev/null 2>&1
-       cecho-n "$2.."
- }
-