autotest: refactor OVS_VSWITCHD_START MACRO
[cascardo/ovs.git] / tests / ovs-macros.at
1 AT_TESTED([ovs-vswitchd])
2 AT_TESTED([ovs-vsctl])
3 AT_TESTED([perl])
4
5 m4_include([m4/compat.at])
6
7 m4_divert_push([PREPARE_TESTS])
8 [
9 ovs_wait () {
10     # First try a quick sleep, so that the test completes very quickly
11     # in the normal case.  POSIX doesn't require fractional times to
12     # work, so this might not work.
13     sleep 0.1
14     ovs_wait_cond && exit 0
15     # Then wait up to 10 seconds.
16     for d in 0 1 2 3 4 5 6 7 8 9; do
17         sleep 1
18         ovs_wait_cond && exit 0
19     done
20     exit 1
21 }
22
23 # Prints the integers from $1 to $2, increasing by $3 (default 1) on stdout.
24 seq () {
25     while test $1 -le $2; do
26         echo $1
27         set `expr $1 + ${3-1}` $2 $3
28     done
29 }
30
31 if test "$IS_WIN32" = "yes"; then
32     pwd () {
33         command pwd -W "$@"
34     }
35
36     diff () {
37         command diff --strip-trailing-cr "$@"
38     }
39
40     kill () {
41         case "$1" in
42             -0)
43                 shift
44                 for i in $*; do
45                     # tasklist will always have return code 0.
46                     # If pid does exist, there will be a line with the pid.
47                     if tasklist //fi "PID eq $i" | grep $i >/dev/null; then
48                         :
49                     else
50                         return 1
51                     fi
52                 done
53                 return 0
54                 ;;
55             -[1-9]*)
56                 shift
57                 for i in $*; do
58                     taskkill //F //PID $i >/dev/null
59                 done
60                 ;;
61             [1-9][0-9]*)
62                 for i in $*; do
63                     taskkill //F //PID $i >/dev/null
64                 done
65                 ;;
66         esac
67     }
68 fi
69 ]
70 m4_divert_pop([PREPARE_TESTS])
71
72 m4_define([OVS_WAIT],
73   [AT_CHECK(
74      [ovs_wait_cond () { $1
75 }
76 ovs_wait], [0], [ignore], [ignore], [$2])])
77 m4_define([OVS_WAIT_UNTIL], [OVS_WAIT([$1], [$2])])
78 m4_define([OVS_WAIT_WHILE],
79   [OVS_WAIT([if $1; then return 1; else return 0; fi], [$2])])
80
81 dnl OVS_APP_EXIT_AND_WAIT(DAEMON)
82 dnl
83 dnl Ask the daemon named DAEMON to exit, via ovs-appctl, and then waits for it
84 dnl to exit.
85 m4_define([OVS_APP_EXIT_AND_WAIT],
86   [ovs-appctl -t $1 exit
87    OVS_WAIT_WHILE([test -e $1.pid])])
88
89 dnl ON_EXIT([COMMANDS])
90 dnl
91 dnl Adds the shell COMMANDS to a collection executed when the current test
92 dnl completes, as a cleanup action.  (The most common use is to kill a
93 dnl daemon started by the test.  This is important to prevent tests that
94 dnl start daemons from hanging at exit.)
95 m4_define([ON_EXIT], [trap '. ./cleanup' 0; cat >>cleanup <<'EOF'
96 $1
97 EOF
98 ])