forked from openvswitch/ovs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ovs-macros.at
117 lines (107 loc) · 3.29 KB
/
ovs-macros.at
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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
if tasklist //fi "PID eq $i" | grep $i >/dev/null; then
tskill $i
fi
done
;;
[1-9][0-9]*)
for i in $*; do
if tasklist //fi "PID eq $i" | grep $i >/dev/null; then
tskill $i
fi
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])])
m4_define([ON_EXIT__], [trap '. ./cleanup' 0; cat - cleanup << $2 > __cleanup
$1
EOF
mv __cleanup cleanup
])
dnl ON_EXIT([COMMANDS])
dnl ON_EXIT_UNQUOTED([COMMANDS])
dnl
dnl Add 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.)
dnl
dnl The only difference between ON_EXIT and ON_EXIT_UNQUOTED is that only the
dnl latter performs shell variable (e.g. $var) substitution, command
dnl substitution (e.g. `command`), and backslash escaping (e.g. \\ becomes \)
dnl in COMMANDS at the time that ON_EXIT_UNQUOTED is encountered. ON_EXIT,
dnl in contrast, copies the literal COMMANDS and only executes shell expansion
dnl at cleanup time.
dnl
dnl Cleanup commands are executed in the reverse order of execution of
dnl these macros.
m4_define([ON_EXIT], [ON_EXIT__([$1], ['EOF'])])
m4_define([ON_EXIT_UNQUOTED], [ON_EXIT__([$1], [EOF])])