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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
|
AT_BANNER([unixctl])
m4_define([APPCTL], [ovs-appctl --timeout 20])
m4_define([PYAPPCTL_PYN], [$1 $srcdir/appctl.py --timeout 20])
m4_define([UNIXCTL_EXIT_PYN],
[AT_SETUP([unixctl ovs-vswitchd exit - $1])
AT_SKIP_IF([test $2 = no])
AT_KEYWORDS([python unixctl])
OVS_VSWITCHD_START
AT_CHECK([PYAPPCTL_PYN([$3]) -t ovs-vswitchd exit], [0], [])
OVS_WAIT_WHILE([test -s ovs-vswitchd.pid])
AT_CHECK([PYAPPCTL_PYN([$3]) -t ovsdb-server exit], [0], [])
OVS_WAIT_WHILE([test -s ovsdb-server.pid])
AT_CLEANUP])
UNIXCTL_EXIT_PYN([Python2], [$HAVE_PYTHON2], [$PYTHON2])
UNIXCTL_EXIT_PYN([Python3], [$HAVE_PYTHON3], [$PYTHON3])
m4_define([UNIXCTL_LIST_COMMANDS_PYN],
[AT_SETUP([unixctl ovs-vswitchd list-commands - $1])
AT_SKIP_IF([test $2 = no])
OVS_VSWITCHD_START
AT_CHECK([APPCTL list-commands], [0], [stdout])
AT_CHECK([head -1 stdout], [0], [dnl
The available commands are:
])
mv stdout expout
AT_CHECK([PYAPPCTL_PYN([$3]) list-commands], [0], [expout])
OVS_VSWITCHD_STOP
AT_CLEANUP])
UNIXCTL_LIST_COMMANDS_PYN([Python2], [$HAVE_PYTHON2], [$PYTHON2])
UNIXCTL_LIST_COMMANDS_PYN([Python3], [$HAVE_PYTHON3], [$PYTHON3])
m4_define([UNIXCTL_ARGS_PYN],
[AT_SETUP([unixctl ovs-vswitchd arguments - $1])
AT_SKIP_IF([test $2 = no])
OVS_VSWITCHD_START
AT_CHECK([APPCTL bond/hash], [2], [], [stderr])
AT_CHECK([head -1 stderr], [0], [dnl
"bond/hash" command requires at least 1 arguments
])
sed 's/ovs-appctl/appctl.py/' stderr > experr
AT_CHECK([PYAPPCTL_PYN([$3]) bond/hash], [2], [], [experr])
AT_CHECK([APPCTL bond/hash mac], [2], [], [stderr])
AT_CHECK([head -1 stderr], [0], [dnl
invalid mac
])
sed 's/ovs-appctl/appctl.py/' stderr > experr
AT_CHECK([PYAPPCTL_PYN([$3]) bond/hash mac], [2], [], [experr])
AT_CHECK([APPCTL bond/hash mac vlan], [2], [], [stderr])
AT_CHECK([head -1 stderr], [0], [dnl
invalid vlan
])
sed 's/ovs-appctl/appctl.py/' stderr > experr
AT_CHECK([PYAPPCTL_PYN([$3]) bond/hash mac vlan], [2], [], [experr])
AT_CHECK([APPCTL bond/hash mac vlan basis], [2], [], [stderr])
AT_CHECK([head -1 stderr], [0], [dnl
invalid vlan
])
sed 's/ovs-appctl/appctl.py/' stderr > experr
AT_CHECK([PYAPPCTL_PYN([$3]) bond/hash vlan basis], [2], [], [experr])
AT_CHECK([APPCTL bond/hash mac vlan basis extra], [2], [], [stderr])
AT_CHECK([head -1 stderr], [0], [dnl
"bond/hash" command takes at most 3 arguments
])
sed 's/ovs-appctl/appctl.py/' stderr > experr
AT_CHECK([PYAPPCTL_PYN([$3]) bond/hash mac vlan basis extra], [2], [], [experr])
OVS_VSWITCHD_STOP
AT_CLEANUP])
UNIXCTL_ARGS_PYN([Python2], [$HAVE_PYTHON2], [$PYTHON2])
UNIXCTL_ARGS_PYN([Python3], [$HAVE_PYTHON3], [$PYTHON3])
m4_define([UNIXCTL_BAD_TARGET_PYN],
[AT_SETUP([unixctl bad target - $1])
AT_SKIP_IF([test $2 = no])
AT_CHECK([PYAPPCTL_PYN([$3]) -t bogus doit], [1], [], [stderr])
AT_CHECK_UNQUOTED([tail -1 stderr], [0], [dnl
appctl.py: cannot read pidfile "`pwd`/bogus.pid" (No such file or directory)
])
if test "$IS_WIN32" = "no"; then
AT_CHECK([PYAPPCTL_PYN([$3]) -t /bogus/path.pid doit], [1], [], [stderr])
AT_CHECK([tail -1 stderr], [0], [dnl
appctl.py: cannot connect to "/bogus/path.pid" (No such file or directory)
])
else
AT_CHECK([PYAPPCTL_PYN([$3]) -t c:/bogus/path.pid doit], [1], [], [stderr])
AT_CHECK([tail -1 stderr], [0], [dnl
appctl.py: cannot connect to "c:/bogus/path.pid" (No such file or directory)
])
fi
AT_CLEANUP])
UNIXCTL_BAD_TARGET_PYN([Python2], [$HAVE_PYTHON2], [$PYTHON2])
UNIXCTL_BAD_TARGET_PYN([Python3], [$HAVE_PYTHON3], [$PYTHON3])
m4_define([UNIXCTL_SERVER_PYN],
[AT_SETUP([unixctl server - $1])
AT_SKIP_IF([test $2 = no])
on_exit 'kill `cat test-unixctl.py.pid`'
AT_CAPTURE_FILE([`pwd`/test-unixctl.py.log])
AT_CHECK([$3 $srcdir/test-unixctl.py --log-file --pidfile --detach])
AT_CHECK([APPCTL -t test-unixctl.py help], [0], [stdout])
AT_CHECK([cat stdout], [0], [dnl
The available commands are:
block
echo [[arg ...]]
echo_error [[arg ...]]
exit
help
log [[arg ...]]
version
vlog/close
vlog/list
vlog/reopen
vlog/set spec
])
mv stdout expout
AT_CHECK([PYAPPCTL_PYN([$3]) -t test-unixctl.py help], [0], [expout])
AT_CHECK([ovs-vsctl --version | sed 's/ovs-vsctl/test-unixctl.py/' | head -1 > expout])
AT_CHECK([APPCTL -t test-unixctl.py version], [0], [expout])
AT_CHECK([PYAPPCTL_PYN([$3]) -t test-unixctl.py version], [0], [expout])
AT_CHECK([APPCTL -t test-unixctl.py echo robot ninja], [0], [stdout])
AT_CHECK([cat stdout | sed -e "s/u'/'/g"], [0], [dnl
[['robot', 'ninja']]
])
mv stdout expout
AT_CHECK([PYAPPCTL_PYN([$3]) -t test-unixctl.py echo robot ninja], [0], [expout])
AT_CHECK([APPCTL -t test-unixctl.py echo_error robot ninja], [2], [], [stderr])
AT_CHECK([cat stderr | sed -e "s/u'/'/g"], [0], [dnl
[['robot', 'ninja']]
ovs-appctl: test-unixctl.py: server returned an error
])
sed 's/ovs-appctl/appctl.py/' stderr > experr
AT_CHECK([PYAPPCTL_PYN([$3]) -t test-unixctl.py echo_error robot ninja], [2], [], [experr])
AT_CHECK([APPCTL -t test-unixctl.py echo], [2], [], [stderr])
AT_CHECK([cat stderr], [0], [dnl
"echo" command requires at least 1 arguments
ovs-appctl: test-unixctl.py: server returned an error
])
sed 's/ovs-appctl/appctl.py/' stderr > experr
AT_CHECK([PYAPPCTL_PYN([$3]) -t test-unixctl.py echo], [2], [], [experr])
AT_CHECK([APPCTL -t test-unixctl.py echo robot ninja pirates], [2], [], [stderr])
AT_CHECK([cat stderr], [0], [dnl
"echo" command takes at most 2 arguments
ovs-appctl: test-unixctl.py: server returned an error
])
sed 's/ovs-appctl/appctl.py/' stderr > experr
AT_CHECK([PYAPPCTL_PYN([$3]) -t test-unixctl.py echo robot ninja pirates], [2], [], [experr])
AT_CHECK([APPCTL -t test-unixctl.py bogus], [2], [], [stderr])
AT_CHECK([cat stderr], [0], [dnl
"bogus" is not a valid command
ovs-appctl: test-unixctl.py: server returned an error
])
sed 's/ovs-appctl/appctl.py/' stderr > experr
AT_CHECK([PYAPPCTL_PYN([$3]) -t test-unixctl.py bogus], [2], [], [experr])
AT_CHECK([APPCTL -t test-unixctl.py exit])
AT_CLEANUP])
UNIXCTL_SERVER_PYN([Python2], [$HAVE_PYTHON2], [$PYTHON2])
UNIXCTL_SERVER_PYN([Python3], [$HAVE_PYTHON3], [$PYTHON3])
m4_define([UNIXCTL_SERVER_ERRORS_PYN],
[AT_SETUP([unixctl server errors - $1])
AT_SKIP_IF([test $2 = no])
AT_CHECK($3 $srcdir/test-unixctl.py --unixctl "`pwd`"/bogus/path, [1], [], [ignore])
AT_CLEANUP])
UNIXCTL_SERVER_ERRORS_PYN([Python2], [$HAVE_PYTHON2], [$PYTHON2])
UNIXCTL_SERVER_ERRORS_PYN([Python3], [$HAVE_PYTHON3], [$PYTHON3])
|