ovs_base=`pwd`
trap '. "$ovs_base/cleanup"' 0
: > cleanup
- OVS_RUNDIR=$ovs_base; export OVS_RUNDIR
- OVS_LOGDIR=$ovs_base; export OVS_LOGDIR
- OVS_DBDIR=$ovs_base; export OVS_DBDIR
- OVS_SYSCONFDIR=$ovs_base; export OVS_SYSCONFDIR
- OVS_PKGDATADIR=$ovs_base; export OVS_PKGDATADIR
+ 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
}
ovs_wait () {
- # First try a quick sleep, so that the test completes very quickly
+ # First try the condition without waiting.
+ ovs_wait_cond && return 0
+
+ # 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
+ ovs_wait_cond && return 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
+ ovs_wait_cond && return 0
done
- exit 1
+ return 1
}
# Prints the integers from $1 to $2, increasing by $3 (default 1) on stdout.
]
m4_divert_pop([PREPARE_TESTS])
-m4_define([OVS_WAIT],
- [AT_CHECK(
- [ovs_wait_cond () { $1
+m4_define([OVS_WAIT], [dnl
+ovs_wait_cond () {
+ $1
}
-ovs_wait], [0], [ignore], [ignore], [$2])])
+if ovs_wait; then :
+else
+ $2
+ AT_FAIL_IF([:])
+fi
+])
+
+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.
m4_define([OVS_WAIT_UNTIL], [OVS_WAIT([$1], [$2])])
+
+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.
m4_define([OVS_WAIT_WHILE],
[OVS_WAIT([if $1; then return 1; else return 0; fi], [$2])])