2015-01-13 14:57:14 -08:00
|
|
|
AT_TESTED([ovs-vswitchd])
|
|
|
|
AT_TESTED([ovs-vsctl])
|
|
|
|
AT_TESTED([perl])
|
|
|
|
|
|
|
|
m4_include([m4/compat.at])
|
|
|
|
|
2015-09-09 10:20:14 -07:00
|
|
|
dnl Make AT_SETUP automatically run the ovs_init() shell function
|
|
|
|
dnl as the first step in every test.
|
|
|
|
m4_rename([AT_SETUP], [OVS_AT_SETUP])
|
|
|
|
m4_define([AT_SETUP], [OVS_AT_SETUP($@)
|
|
|
|
ovs_init
|
|
|
|
])
|
2015-01-13 14:57:14 -08:00
|
|
|
m4_divert_push([PREPARE_TESTS])
|
|
|
|
[
|
2015-09-09 10:20:14 -07:00
|
|
|
# Set ovs_base to the base directory in which the test is running and
|
|
|
|
# initialize the OVS_*DIR environment variables to point to this
|
|
|
|
# directory.
|
|
|
|
ovs_init() {
|
|
|
|
ovs_base=`pwd`
|
2015-09-09 10:26:11 -07:00
|
|
|
trap '. "$ovs_base/cleanup"' 0
|
|
|
|
: > cleanup
|
2015-09-29 15:40:22 -07:00
|
|
|
ovs_setenv
|
|
|
|
}
|
|
|
|
|
|
|
|
# With no parameter or an empty parameter, sets the OVS_*DIR
|
|
|
|
# environment variables to point to $ovs_base, the base directory in
|
|
|
|
# which the test is running.
|
|
|
|
#
|
|
|
|
# With a parameter, sets them to $ovs_base/$1.
|
|
|
|
ovs_setenv() {
|
|
|
|
sandbox=$1
|
|
|
|
ovs_dir=$ovs_base${1:+/$1}
|
|
|
|
OVS_RUNDIR=$ovs_dir; export OVS_RUNDIR
|
|
|
|
OVS_LOGDIR=$ovs_dir; export OVS_LOGDIR
|
|
|
|
OVS_DBDIR=$ovs_dir; export OVS_DBDIR
|
|
|
|
OVS_SYSCONFDIR=$ovs_dir; export OVS_SYSCONFDIR
|
|
|
|
OVS_PKGDATADIR=$ovs_dir; export OVS_PKGDATADIR
|
2015-09-09 10:20:14 -07:00
|
|
|
}
|
|
|
|
|
2015-01-13 14:57:14 -08:00
|
|
|
ovs_wait () {
|
2015-07-05 10:20:35 -07:00
|
|
|
# First try the condition without waiting.
|
|
|
|
ovs_wait_cond && return 0
|
|
|
|
|
|
|
|
# Try a quick sleep, so that the test completes very quickly
|
2015-01-13 14:57:14 -08:00
|
|
|
# in the normal case. POSIX doesn't require fractional times to
|
|
|
|
# work, so this might not work.
|
|
|
|
sleep 0.1
|
2015-07-05 10:19:30 -07:00
|
|
|
ovs_wait_cond && return 0
|
|
|
|
|
2015-01-13 14:57:14 -08:00
|
|
|
# Then wait up to 10 seconds.
|
|
|
|
for d in 0 1 2 3 4 5 6 7 8 9; do
|
|
|
|
sleep 1
|
2015-07-05 10:19:30 -07:00
|
|
|
ovs_wait_cond && return 0
|
2015-01-13 14:57:14 -08:00
|
|
|
done
|
2015-07-05 10:19:30 -07:00
|
|
|
return 1
|
2015-01-13 14:57:14 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
# 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 "$@"
|
|
|
|
}
|
|
|
|
|
2015-06-25 08:34:39 -07:00
|
|
|
# tskill is more effective than taskkill but it isn't always installed.
|
|
|
|
if (tskill //?) >/dev/null 2>&1; then :; else
|
|
|
|
tskill () { taskkill //F //PID $1 >/dev/null; }
|
|
|
|
fi
|
|
|
|
|
2015-01-13 14:57:14 -08:00
|
|
|
kill () {
|
2015-06-25 08:34:39 -07:00
|
|
|
signal=
|
|
|
|
retval=0
|
|
|
|
for arg; do
|
|
|
|
case $arg in
|
|
|
|
-*) signal=$arg ;;
|
2015-01-13 14:57:14 -08:00
|
|
|
[1-9][0-9]*)
|
2015-06-25 08:34:39 -07:00
|
|
|
# tasklist always returns 0.
|
|
|
|
# If pid does exist, there will be a line with the pid.
|
|
|
|
if tasklist //fi "PID eq $arg" | grep $arg >/dev/null; then
|
|
|
|
if test "X$signal" != "X-0"; then
|
|
|
|
tskill $arg
|
2015-04-07 17:17:39 -07:00
|
|
|
fi
|
2015-06-25 08:34:39 -07:00
|
|
|
else
|
|
|
|
retval=1
|
|
|
|
fi
|
2015-01-13 14:57:14 -08:00
|
|
|
;;
|
2015-06-25 08:34:39 -07:00
|
|
|
esac
|
|
|
|
done
|
|
|
|
return $retval
|
2015-01-13 14:57:14 -08:00
|
|
|
}
|
|
|
|
fi
|
|
|
|
]
|
|
|
|
m4_divert_pop([PREPARE_TESTS])
|
|
|
|
|
2015-07-05 10:19:30 -07:00
|
|
|
m4_define([OVS_WAIT], [dnl
|
|
|
|
ovs_wait_cond () {
|
|
|
|
$1
|
2015-01-13 14:57:14 -08:00
|
|
|
}
|
2015-07-05 10:19:30 -07:00
|
|
|
if ovs_wait; then :
|
|
|
|
else
|
|
|
|
$2
|
|
|
|
AT_FAIL_IF([:])
|
|
|
|
fi
|
|
|
|
])
|
2015-11-03 15:29:32 -08:00
|
|
|
|
|
|
|
dnl OVS_WAIT_UNTIL(COMMAND)
|
|
|
|
dnl
|
|
|
|
dnl Executes shell COMMAND in a loop until it returns
|
|
|
|
dnl zero return code. If COMMAND did not return
|
|
|
|
dnl zero code within reasonable time limit, then
|
|
|
|
dnl the test fails.
|
2015-01-13 14:57:14 -08:00
|
|
|
m4_define([OVS_WAIT_UNTIL], [OVS_WAIT([$1], [$2])])
|
2015-11-03 15:29:32 -08:00
|
|
|
|
|
|
|
dnl OVS_WAIT_WHILE(COMMAND)
|
|
|
|
dnl
|
|
|
|
dnl Executes shell COMMAND in a loop until it returns
|
|
|
|
dnl non-zero return code. If COMMAND did not return
|
|
|
|
dnl non-zero code within reasonable time limit, then
|
|
|
|
dnl the test fails.
|
2015-01-13 14:57:14 -08:00
|
|
|
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])])
|
|
|
|
|
2015-09-09 10:26:11 -07:00
|
|
|
dnl on_exit "COMMAND"
|
2015-01-13 14:57:14 -08:00
|
|
|
dnl
|
2015-09-09 10:26:11 -07:00
|
|
|
dnl Add the shell COMMAND to a collection executed when the current test
|
2015-01-13 14:57:14 -08:00
|
|
|
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.)
|
2015-04-07 17:17:39 -07:00
|
|
|
dnl
|
2015-09-09 10:26:11 -07:00
|
|
|
dnl Cleanup commands are executed in the reverse order of calls to this
|
|
|
|
dnl function.
|
|
|
|
m4_divert_text([PREPARE_TESTS], [dnl
|
|
|
|
on_exit () {
|
|
|
|
(echo "$1"; cat cleanup) > cleanup.tmp
|
|
|
|
mv cleanup.tmp cleanup
|
|
|
|
}
|
|
|
|
])
|
2016-02-26 12:46:48 -08:00
|
|
|
|
|
|
|
dnl Autoconf 2.63 compatibility verison of macro introduced in Autoconf 2.64:
|
|
|
|
m4_ifndef([AS_VAR_APPEND],
|
|
|
|
[m4_divert_text([PREPARE_TESTS],
|
|
|
|
[as_var_append () {
|
|
|
|
eval $1=\$$1\$2
|
|
|
|
}
|
|
|
|
])
|
|
|
|
m4_define([AS_VAR_APPEND], [as_var_append $1 $2])])
|