AT_TESTED([ovs-vswitchd]) AT_TESTED([ovs-vsctl]) AT_TESTED([perl]) m4_include([m4/compat.at]) m4_divert_push([PREPARE_TESTS]) [ ovs_wait () { # First try a quick sleep, so that the test completes very quickly # in the normal case. POSIX doesn't require fractional times to # work, so this might not work. sleep 0.1 ovs_wait_cond && exit 0 # Then wait up to 10 seconds. for d in 0 1 2 3 4 5 6 7 8 9; do sleep 1 ovs_wait_cond && exit 0 done exit 1 } # Prints the integers from $1 to $2, increasing by $3 (default 1) on stdout. seq () { while test $1 -le $2; do echo $1 set `expr $1 + ${3-1}` $2 $3 done } if test "$IS_WIN32" = "yes"; then pwd () { command pwd -W "$@" } diff () { command diff --strip-trailing-cr "$@" } kill () { case "$1" in -0) shift for i in $*; do # tasklist will always have return code 0. # If pid does exist, there will be a line with the pid. if tasklist //fi "PID eq $i" | grep $i >/dev/null; then : else return 1 fi done return 0 ;; -[1-9]*) shift for i in $*; do taskkill //F //PID $i >/dev/null done ;; [1-9][0-9]*) for i in $*; do taskkill //F //PID $i >/dev/null done ;; esac } fi ] m4_divert_pop([PREPARE_TESTS]) m4_define([OVS_WAIT], [AT_CHECK( [ovs_wait_cond () { $1 } ovs_wait], [0], [ignore], [ignore], [$2])]) m4_define([OVS_WAIT_UNTIL], [OVS_WAIT([$1], [$2])]) m4_define([OVS_WAIT_WHILE], [OVS_WAIT([if $1; then return 1; else return 0; fi], [$2])]) dnl OVS_APP_EXIT_AND_WAIT(DAEMON) dnl dnl Ask the daemon named DAEMON to exit, via ovs-appctl, and then waits for it dnl to exit. m4_define([OVS_APP_EXIT_AND_WAIT], [ovs-appctl -t $1 exit OVS_WAIT_WHILE([test -e $1.pid])]) dnl ON_EXIT([COMMANDS]) dnl dnl Adds the shell COMMANDS to a collection executed when the current test dnl completes, as a cleanup action. (The most common use is to kill a dnl daemon started by the test. This is important to prevent tests that dnl start daemons from hanging at exit.) m4_define([ON_EXIT], [trap '. ./cleanup' 0; cat >>cleanup <<'EOF' $1 EOF ])