]> git.proxmox.com Git - mirror_ovs.git/blame - tests/ovsdb-idl.at
tests: Fix double-rebuild of testsuite for "check-valgrind" and similar.
[mirror_ovs.git] / tests / ovsdb-idl.at
CommitLineData
c3bb4bd7
BP
1AT_BANNER([OVSDB -- interface description language (IDL)])
2
8cdf0349
BP
3# OVSDB_CHECK_IDL_C(TITLE, [PRE-IDL-TXN], TRANSACTIONS, OUTPUT, [KEYWORDS],
4# [FILTER])
c3bb4bd7
BP
5#
6# Creates a database with a schema derived from idltest.ovsidl, runs
7# each PRE-IDL-TXN (if any), starts an ovsdb-server on that database,
8# and runs "test-ovsdb idl" passing each of the TRANSACTIONS along.
9#
10# Checks that the overall output is OUTPUT. Before comparison, the
11# output is sorted (using "sort") and UUIDs in the output are replaced
12# by markers of the form <N> where N is a number. The first unique
13# UUID is replaced by <0>, the next by <1>, and so on. If a given
14# UUID appears more than once it is always replaced by the same
254604d8
BP
15# marker. If FILTER is supplied then the output is also filtered
16# through the specified program.
c3bb4bd7
BP
17#
18# TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS.
8cdf0349
BP
19m4_define([OVSDB_CHECK_IDL_C],
20 [AT_SETUP([$1 - C])
c3bb4bd7 21 AT_KEYWORDS([ovsdb server idl positive $5])
7c126fbb 22 AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
00732bf5 23 [0], [stdout], [ignore])
8a16ab90
LR
24 AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
25 on_exit 'kill `cat pid`'
c3bb4bd7 26 m4_if([$2], [], [],
7427f2a4 27 [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore])])
8cdf0349 28 AT_CHECK([test-ovsdb '-vPATTERN:console:test-ovsdb|%c|%m' -vjsonrpc -t10 idl unix:socket $3],
7427f2a4 29 [0], [stdout], [ignore])
5c6d0628 30 AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$6],,, [[| $6]]),
7427f2a4 31 [0], [$4])
028cbd99 32 OVSDB_SERVER_SHUTDOWN
c3bb4bd7
BP
33 AT_CLEANUP])
34
8cdf0349 35# same as OVSDB_CHECK_IDL but uses the Python IDL implementation.
963f66b5
RB
36m4_define([OVSDB_CHECK_IDL_PYN],
37 [AT_SETUP([$1])
38 AT_SKIP_IF([test $7 = no])
8cdf0349
BP
39 AT_KEYWORDS([ovsdb server idl positive Python $5])
40 AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
41 [0], [stdout], [ignore])
8a16ab90
LR
42 AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
43 on_exit 'kill `cat pid`'
8cdf0349 44 m4_if([$2], [], [],
7427f2a4 45 [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore])])
963f66b5 46 AT_CHECK([$8 $srcdir/test-ovsdb.py -t10 idl $srcdir/idltest.ovsschema unix:socket $3],
7427f2a4 47 [0], [stdout], [ignore])
5c6d0628 48 AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$6],,, [[| $6]]),
7427f2a4 49 [0], [$4])
8cdf0349
BP
50 OVSDB_SERVER_SHUTDOWN
51 AT_CLEANUP])
52
963f66b5
RB
53m4_define([OVSDB_CHECK_IDL_PY],
54 [OVSDB_CHECK_IDL_PYN([$1 - Python2], [$2], [$3], [$4], [$5], [$6],
55 [$HAVE_PYTHON], [$PYTHON])
56 OVSDB_CHECK_IDL_PYN([$1 - Python3], [$2], [$3], [$4], [$5], [$6],
57 [$HAVE_PYTHON3], [$PYTHON3])])
58
59m4_define([OVSDB_CHECK_IDL_REGISTER_COLUMNS_PYN],
60 [AT_SETUP([$1 - register_columns])
61 AT_SKIP_IF([test $7 = no])
01dc1516
SA
62 AT_KEYWORDS([ovsdb server idl positive Python register_columns $5])
63 AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
64 [0], [stdout], [ignore])
8a16ab90
LR
65 AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
66 on_exit 'kill `cat pid`'
01dc1516 67 m4_if([$2], [], [],
7427f2a4 68 [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore])])
963f66b5 69 AT_CHECK([$8 $srcdir/test-ovsdb.py -t10 idl $srcdir/idltest.ovsschema unix:socket ?simple:b,ba,i,ia,r,ra,s,sa,u,ua?link1:i,k,ka,l2?link2:i,l1 $3],
7427f2a4 70 [0], [stdout], [ignore])
01dc1516 71 AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$6],,, [[| $6]]),
7427f2a4 72 [0], [$4])
01dc1516
SA
73 OVSDB_SERVER_SHUTDOWN
74 AT_CLEANUP])
75
963f66b5
RB
76m4_define([OVSDB_CHECK_IDL_REGISTER_COLUMNS_PY],
77 [OVSDB_CHECK_IDL_REGISTER_COLUMNS_PYN([$1 - Python2], [$2], [$3], [$4], [$5], [$6],
78 [$HAVE_PYTHON], [$PYTHON])
79 OVSDB_CHECK_IDL_REGISTER_COLUMNS_PYN([$1 - Python3], [$2], [$3], [$4], [$5], [$6],
80 [$HAVE_PYTHON3], [$PYTHON3])])
81
e06d06a7 82# same as OVSDB_CHECK_IDL but uses the Python IDL implementation with tcp
963f66b5
RB
83m4_define([OVSDB_CHECK_IDL_TCP_PYN],
84 [AT_SETUP([$1 - tcp])
85 AT_SKIP_IF([test $7 = no])
e06d06a7
IY
86 AT_KEYWORDS([ovsdb server idl positive Python with tcp socket $5])
87 AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
88 [0], [stdout], [ignore])
8a16ab90
LR
89 AT_CHECK([ovsdb-server --log-file '-vPATTERN:console:ovsdb-server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --remote=ptcp:0:127.0.0.1 --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
90 on_exit 'kill `cat pid`'
fb28ef2d 91 PARSE_LISTENING_PORT([ovsdb-server.log], [TCP_PORT])
1e04fcc8 92
e06d06a7 93 m4_if([$2], [], [],
7427f2a4 94 [AT_CHECK([ovsdb-client transact tcp:127.0.0.1:$TCP_PORT $2], [0], [ignore], [ignore])])
963f66b5 95 AT_CHECK([$8 $srcdir/test-ovsdb.py -t10 idl $srcdir/idltest.ovsschema tcp:127.0.0.1:$TCP_PORT $3],
7427f2a4 96 [0], [stdout], [ignore])
5c6d0628 97 AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$6],,, [[| $6]]),
7427f2a4 98 [0], [$4])
e06d06a7
IY
99 OVSDB_SERVER_SHUTDOWN
100 AT_CLEANUP])
101
963f66b5
RB
102m4_define([OVSDB_CHECK_IDL_TCP_PY],
103 [OVSDB_CHECK_IDL_TCP_PYN([$1 - Python2], [$2], [$3], [$4], [$5], [$6],
104 [$HAVE_PYTHON], [$PYTHON])
105 OVSDB_CHECK_IDL_TCP_PYN([$1 - Python3], [$2], [$3], [$4], [$5], [$6],
106 [$HAVE_PYTHON3], [$PYTHON3])])
107
e731d71b 108# same as OVSDB_CHECK_IDL but uses the Python IDL implementation with tcp6
963f66b5
RB
109m4_define([OVSDB_CHECK_IDL_TCP6_PYN],
110 [AT_SETUP([$1 - tcp6])
111 AT_SKIP_IF([test $7 = no])
7b9d1b65 112 AT_SKIP_IF([test "$IS_WIN32" = "yes"])
4819b3a5 113 AT_SKIP_IF([test $HAVE_IPV6 = no])
e731d71b 114 AT_KEYWORDS([ovsdb server idl positive Python with tcp6 socket $5])
e731d71b
AS
115 AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
116 [0], [stdout], [ignore])
8a16ab90
LR
117 AT_CHECK([ovsdb-server --log-file '-vPATTERN:console:ovsdb-server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=ptcp:0:[[::1]] --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
118 on_exit 'kill `cat pid`'
fb28ef2d 119 PARSE_LISTENING_PORT([ovsdb-server.log], [TCP_PORT])
e731d71b
AS
120 echo "TCP_PORT=$TCP_PORT"
121
122 m4_if([$2], [], [],
7427f2a4 123 [AT_CHECK([ovsdb-client transact "tcp:[[::1]]:$TCP_PORT" $2], [0], [ignore], [ignore])])
963f66b5 124 AT_CHECK([$8 $srcdir/test-ovsdb.py -t10 idl $srcdir/idltest.ovsschema tcp:[[::1]]:$TCP_PORT $3],
7427f2a4 125 [0], [stdout], [ignore])
e731d71b 126 AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$6],,, [[| $6]]),
7427f2a4 127 [0], [$4])
e731d71b
AS
128 OVSDB_SERVER_SHUTDOWN
129 AT_CLEANUP])
130
963f66b5
RB
131m4_define([OVSDB_CHECK_IDL_TCP6_PY],
132 [OVSDB_CHECK_IDL_TCP6_PYN([$1 - Python2], [$2], [$3], [$4], [$5], [$6],
133 [$HAVE_PYTHON], [$PYTHON])
134 OVSDB_CHECK_IDL_TCP6_PYN([$1 - Python3], [$2], [$3], [$4], [$5], [$6],
135 [$HAVE_PYTHON3], [$PYTHON3])])
136
8cdf0349
BP
137m4_define([OVSDB_CHECK_IDL],
138 [OVSDB_CHECK_IDL_C($@)
e06d06a7 139 OVSDB_CHECK_IDL_PY($@)
01dc1516 140 OVSDB_CHECK_IDL_REGISTER_COLUMNS_PY($@)
e731d71b
AS
141 OVSDB_CHECK_IDL_TCP_PY($@)
142 OVSDB_CHECK_IDL_TCP6_PY($@)])
8cdf0349 143
af358237
OBY
144# This test uses the Python IDL implementation with passive tcp
145m4_define([OVSDB_CHECK_IDL_PASSIVE_TCP_PY],
146 [AT_SETUP([$1 - Python ptcp])
147 AT_SKIP_IF([test $HAVE_PYTHON = no])
148 AT_KEYWORDS([ovsdb server idl positive Python with tcp socket $5])
149 AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
150 [0], [stdout], [ignore])
151 # find free TCP port
8a16ab90
LR
152 AT_CHECK([ovsdb-server --log-file '-vPATTERN:console:ovsdb-server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=ptcp:0:127.0.0.1 --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
153 on_exit 'kill `cat pid`'
af358237 154 PARSE_LISTENING_PORT([ovsdb-server.log], [TCP_PORT])
7427f2a4 155 OVSDB_SERVER_SHUTDOWN
af358237
OBY
156
157 # start OVSDB server in passive mode
8a16ab90 158 AT_CHECK([ovsdb-server --log-file '-vPATTERN:console:ovsdb-server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --remote=tcp:127.0.0.1:$TCP_PORT --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
af358237 159 AT_CHECK([$PYTHON $srcdir/test-ovsdb.py -t10 idl_passive $srcdir/idltest.ovsschema ptcp:127.0.0.1:$TCP_PORT $3],
7427f2a4 160 [0], [stdout], [ignore])
af358237 161 AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$6],,, [[| $6]]),
7427f2a4
DDP
162 [0], [$4])
163 OVSDB_SERVER_SHUTDOWN
af358237
OBY
164 AT_CLEANUP
165 ])
166
167OVSDB_CHECK_IDL_PASSIVE_TCP_PY([simple passive idl, initially empty, select empty],
168 [],
169 [['["idltest",{"op":"select","table":"link1","where":[]}]']],
170 [[000: empty
171001: {"error":null,"result":[{"rows":[]}]}
172002: done
173]])
174
c3bb4bd7
BP
175OVSDB_CHECK_IDL([simple idl, initially empty, no ops],
176 [],
177 [],
178 [000: empty
179001: done
180])
181
182OVSDB_CHECK_IDL([simple idl, initially empty, various ops],
183 [],
9cb53f26
BP
184 [['["idltest",
185 {"op": "insert",
c3bb4bd7
BP
186 "table": "simple",
187 "row": {"i": 1,
188 "r": 2.0,
189 "b": true,
190 "s": "mystring",
191 "u": ["uuid", "84f5c8f5-ac76-4dbc-a24f-8860eb407fc1"],
192 "ia": ["set", [1, 2, 3]],
193 "ra": ["set", [-0.5]],
7fae24e6 194 "ba": ["set", [true]],
8cdf0349 195 "sa": ["set", ["abc", "def"]],
c3bb4bd7
BP
196 "ua": ["set", [["uuid", "69443985-7806-45e2-b35f-574a04e720f9"],
197 ["uuid", "aad11ef0-816a-4b01-93e6-03b8b4256b98"]]]}},
198 {"op": "insert",
199 "table": "simple",
200 "row": {}}]' \
9cb53f26
BP
201 '["idltest",
202 {"op": "update",
c3bb4bd7
BP
203 "table": "simple",
204 "where": [],
205 "row": {"b": true}}]' \
9cb53f26
BP
206 '["idltest",
207 {"op": "update",
c3bb4bd7
BP
208 "table": "simple",
209 "where": [],
210 "row": {"r": 123.5}}]' \
9cb53f26
BP
211 '["idltest",
212 {"op": "insert",
c3bb4bd7
BP
213 "table": "simple",
214 "row": {"i": -1,
215 "r": 125,
216 "b": false,
217 "s": "",
218 "ia": ["set", [1]],
219 "ra": ["set", [1.5]],
220 "ba": ["set", [false]],
8cdf0349 221 "sa": ["set", []],
c3bb4bd7 222 "ua": ["set", []]}}]' \
9cb53f26
BP
223 '["idltest",
224 {"op": "update",
c3bb4bd7
BP
225 "table": "simple",
226 "where": [["i", "<", 1]],
227 "row": {"s": "newstring"}}]' \
9cb53f26
BP
228 '["idltest",
229 {"op": "delete",
c3bb4bd7
BP
230 "table": "simple",
231 "where": [["i", "==", 0]]}]' \
232 'reconnect']],
233 [[000: empty
234001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]}]}
235002: i=0 r=0 b=false s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
7fae24e6 236002: i=1 r=2 b=true s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
c3bb4bd7
BP
237003: {"error":null,"result":[{"count":2}]}
238004: i=0 r=0 b=true s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
7fae24e6 239004: i=1 r=2 b=true s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
c3bb4bd7
BP
240005: {"error":null,"result":[{"count":2}]}
241006: i=0 r=123.5 b=true s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
7fae24e6 242006: i=1 r=123.5 b=true s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
c3bb4bd7
BP
243007: {"error":null,"result":[{"uuid":["uuid","<6>"]}]}
244008: i=-1 r=125 b=false s= u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>
245008: i=0 r=123.5 b=true s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
7fae24e6 246008: i=1 r=123.5 b=true s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
c3bb4bd7
BP
247009: {"error":null,"result":[{"count":2}]}
248010: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>
249010: i=0 r=123.5 b=true s=newstring u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
7fae24e6 250010: i=1 r=123.5 b=true s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
c3bb4bd7
BP
251011: {"error":null,"result":[{"count":1}]}
252012: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>
7fae24e6 253012: i=1 r=123.5 b=true s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
c3bb4bd7
BP
254013: reconnect
255014: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>
7fae24e6 256014: i=1 r=123.5 b=true s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
c3bb4bd7
BP
257015: done
258]])
259
260OVSDB_CHECK_IDL([simple idl, initially populated],
9cb53f26
BP
261 [['["idltest",
262 {"op": "insert",
c3bb4bd7
BP
263 "table": "simple",
264 "row": {"i": 1,
265 "r": 2.0,
266 "b": true,
267 "s": "mystring",
268 "u": ["uuid", "84f5c8f5-ac76-4dbc-a24f-8860eb407fc1"],
269 "ia": ["set", [1, 2, 3]],
270 "ra": ["set", [-0.5]],
7fae24e6 271 "ba": ["set", [true]],
8cdf0349 272 "sa": ["set", ["abc", "def"]],
c3bb4bd7
BP
273 "ua": ["set", [["uuid", "69443985-7806-45e2-b35f-574a04e720f9"],
274 ["uuid", "aad11ef0-816a-4b01-93e6-03b8b4256b98"]]]}},
275 {"op": "insert",
276 "table": "simple",
277 "row": {}}]']],
9cb53f26
BP
278 [['["idltest",
279 {"op": "update",
c3bb4bd7
BP
280 "table": "simple",
281 "where": [],
282 "row": {"b": true}}]']],
283 [[000: i=0 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
7fae24e6 284000: i=1 r=2 b=true s=mystring u=<2> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<3> <4>] uuid=<5>
c3bb4bd7
BP
285001: {"error":null,"result":[{"count":2}]}
286002: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
7fae24e6 287002: i=1 r=2 b=true s=mystring u=<2> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<3> <4>] uuid=<5>
c3bb4bd7
BP
288003: done
289]])
290
475281c0 291OVSDB_CHECK_IDL([simple idl, writing via IDL],
9cb53f26
BP
292 [['["idltest",
293 {"op": "insert",
475281c0
BP
294 "table": "simple",
295 "row": {"i": 1,
296 "r": 2.0,
297 "b": true,
298 "s": "mystring",
299 "u": ["uuid", "84f5c8f5-ac76-4dbc-a24f-8860eb407fc1"],
300 "ia": ["set", [1, 2, 3]],
301 "ra": ["set", [-0.5]],
7fae24e6 302 "ba": ["set", [true]],
8cdf0349 303 "sa": ["set", ["abc", "def"]],
475281c0
BP
304 "ua": ["set", [["uuid", "69443985-7806-45e2-b35f-574a04e720f9"],
305 ["uuid", "aad11ef0-816a-4b01-93e6-03b8b4256b98"]]]}},
306 {"op": "insert",
307 "table": "simple",
308 "row": {}}]']],
a91c6104
BP
309 [['verify 0 b, verify 1 r, set 0 b 1, set 1 r 3.5' \
310 'insert 2, verify 2 i, verify 1 b, delete 1']],
475281c0 311 [[000: i=0 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
7fae24e6 312000: i=1 r=2 b=true s=mystring u=<2> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<3> <4>] uuid=<5>
475281c0
BP
313001: commit, status=success
314002: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
7fae24e6 315002: i=1 r=3.5 b=true s=mystring u=<2> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<3> <4>] uuid=<5>
475281c0
BP
316003: commit, status=success
317004: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
318004: i=2 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<6>
319005: done
320]])
321
a91c6104
BP
322OVSDB_CHECK_IDL([simple idl, handling verification failure],
323 [['["idltest",
324 {"op": "insert",
325 "table": "simple",
326 "row": {"i": 1,
327 "r": 2.0}},
328 {"op": "insert",
329 "table": "simple",
330 "row": {}}]']],
331 [['set 0 b 1' \
332 '+["idltest",
333 {"op": "update",
334 "table": "simple",
335 "where": [["i", "==", 1]],
336 "row": {"r": 5.0}}]' \
337 '+verify 1 r, set 1 r 3' \
338 'verify 1 r, set 1 r 3' \
339 ]],
340 [[000: i=0 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
341000: i=1 r=2 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2>
342001: commit, status=success
343002: {"error":null,"result":[{"count":1}]}
94fbe1aa 344003: commit, status=try again
a91c6104
BP
345004: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
346004: i=1 r=5 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2>
347005: commit, status=success
348006: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
349006: i=1 r=3 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2>
350007: done
351]])
352
b54e22e9 353OVSDB_CHECK_IDL([simple idl, increment operation],
9cb53f26
BP
354 [['["idltest",
355 {"op": "insert",
b54e22e9
BP
356 "table": "simple",
357 "row": {}}]']],
94fbe1aa 358 [['set 0 r 2.0, increment 0']],
b54e22e9
BP
359 [[000: i=0 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
360001: commit, status=success, increment=1
361002: i=1 r=2 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
362003: done
363]])
364
2096903b
BP
365OVSDB_CHECK_IDL([simple idl, aborting],
366 [['["idltest",
367 {"op": "insert",
368 "table": "simple",
369 "row": {}}]']],
370 [['set 0 r 2.0, abort' \
371'+set 0 b 1']],
372 [[000: i=0 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
373001: commit, status=aborted
374002: commit, status=success
375003: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
376004: done
377]])
378
379OVSDB_CHECK_IDL([simple idl, destroy without commit or abort],
380 [['["idltest",
381 {"op": "insert",
382 "table": "simple",
383 "row": {}}]']],
384 [['set 0 r 2.0, destroy' \
385'+set 0 b 1']],
386 [[000: i=0 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
387001: destroy
388002: commit, status=success
389003: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
390004: done
391]])
392
16ebb90e
LS
393OVSDB_CHECK_IDL([simple idl, conditional, false condition],
394 [['["idltest",
395 {"op": "insert",
396 "table": "simple",
397 "row": {"i": 1,
398 "r": 2.0,
399 "b": true}}]']],
400 [['condition add simple [false]' \
401 'condition remove simple [false]']],
402 [[000: change conditions
403001: empty
404002: change conditions
405003: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
406004: done
407]])
408
409OVSDB_CHECK_IDL([simple idl, conditional, true condition],
410 [['["idltest",
411 {"op": "insert",
412 "table": "simple",
413 "row": {"i": 1,
414 "r": 2.0,
415 "b": true}}]']],
416 [['condition add simple [false]' \
417 'condition add simple [true]']],
418 [[000: change conditions
419001: empty
420002: change conditions
421003: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
422004: done
423]])
424
425OVSDB_CHECK_IDL([simple idl, conditional, multiple clauses in condition],
426 [['["idltest",
427 {"op": "insert",
428 "table": "simple",
429 "row": {"i": 1,
430 "r": 2.0,
431 "b": true}},
432 {"op": "insert",
433 "table": "simple",
434 "row": {"i": 2,
435 "r": 3.0,
436 "b": true}}]']],
437 [['condition add simple [false]' \
438 'condition add simple [["i","==",1],["i","==",2]]']],
439 [[000: change conditions
440001: empty
441002: change conditions
442003: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
443003: i=2 r=3 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2>
444004: done
445]])
446
447OVSDB_CHECK_IDL([simple idl, conditional, modify as insert due to condition],
448 [['["idltest",
449 {"op": "insert",
450 "table": "simple",
451 "row": {"i": 1,
452 "r": 2.0,
453 "b": true}}]']],
454 [['condition add simple [false]' \
455 'condition add simple [["i","==",1]]']],
456 [[000: change conditions
457001: empty
458002: change conditions
459003: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
460004: done
461]])
462
463OVSDB_CHECK_IDL([simple idl, conditional, modify as delete due to condition],
464 [['["idltest",
465 {"op": "insert",
466 "table": "simple",
467 "row": {"i": 1,
468 "r": 2.0,
469 "b": true}}]']],
470 [['condition add simple [false]' \
471 'condition add simple [["i","==",1],["i","==",2]]' \
472 'condition remove simple [["i","==",1]]' \
473 '["idltest",
474 {"op": "insert",
475 "table": "simple",
476 "row": {"i": 2,
477 "r": 3.0,
478 "b": true}}]']],
479 [[000: change conditions
480001: empty
481002: change conditions
482003: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
483004: change conditions
484005: empty
485006: {"error":null,"result":[{"uuid":["uuid","<2>"]}]}
486007: i=2 r=3 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2>
487008: done
488]])
489
490OVSDB_CHECK_IDL([simple idl, conditional, multiple tables],
491 [['["idltest",
492 {"op": "insert",
493 "table": "simple",
494 "row": {"i": 1,
495 "r": 2.0,
496 "b": true}},
497 {"op": "insert",
498 "table": "link1",
499 "row": {"i": 0, "k": ["named-uuid", "self"]},
500 "uuid-name": "self"},
501 {"op": "insert",
502 "table": "link2",
503 "row": {"i": 2},
504 "uuid-name": "row0"}]']],
505 [['condition add simple [false];condition add link1 [false];condition add link2 [false]' \
506 'condition add simple [["i","==",1]]' \
507 'condition add link1 [["i","==",0]]' \
508 'condition add link2 [["i","==",3]]' \
509 '+["idltest",
510 {"op": "insert",
511 "table": "link2",
512 "row": {"i": 3},
513 "uuid-name": "row0"}]']],
514 [[000: change conditions
515001: empty
516002: change conditions
517003: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
518004: change conditions
519005: i=0 k=0 ka=[] l2= uuid=<2>
520005: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
521006: change conditions
522007: {"error":null,"result":[{"uuid":["uuid","<3>"]}]}
523008: i=0 k=0 ka=[] l2= uuid=<2>
524008: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
525008: i=3 l1= uuid=<3>
526009: done
527]])
528
c3bb4bd7
BP
529OVSDB_CHECK_IDL([self-linking idl, consistent ops],
530 [],
9cb53f26
BP
531 [['["idltest",
532 {"op": "insert",
e9011ac8 533 "table": "link1",
c3bb4bd7
BP
534 "row": {"i": 0, "k": ["named-uuid", "self"]},
535 "uuid-name": "self"}]' \
9cb53f26
BP
536 '["idltest",
537 {"op": "insert",
e9011ac8 538 "table": "link1",
2d2d6d4a 539 "row": {"i": 1, "k": ["named-uuid", "row2"]},
c3bb4bd7
BP
540 "uuid-name": "row1"},
541 {"op": "insert",
e9011ac8 542 "table": "link1",
c3bb4bd7 543 "row": {"i": 2, "k": ["named-uuid", "row1"]},
2d2d6d4a 544 "uuid-name": "row2"}]' \
9cb53f26
BP
545 '["idltest",
546 {"op": "update",
e9011ac8 547 "table": "link1",
c3bb4bd7
BP
548 "where": [["i", "==", 1]],
549 "row": {"k": ["uuid", "#1#"]}}]' \
9cb53f26
BP
550 '["idltest",
551 {"op": "update",
e9011ac8 552 "table": "link1",
c3bb4bd7
BP
553 "where": [],
554 "row": {"k": ["uuid", "#0#"]}}]']],
555 [[000: empty
556001: {"error":null,"result":[{"uuid":["uuid","<0>"]}]}
e9011ac8 557002: i=0 k=0 ka=[] l2= uuid=<0>
fbf925e4 558003: {"error":null,"result":[{"uuid":["uuid","<1>"]},{"uuid":["uuid","<2>"]}]}
e9011ac8
BP
559004: i=0 k=0 ka=[] l2= uuid=<0>
560004: i=1 k=2 ka=[] l2= uuid=<1>
561004: i=2 k=1 ka=[] l2= uuid=<2>
c3bb4bd7 562005: {"error":null,"result":[{"count":1}]}
e9011ac8
BP
563006: i=0 k=0 ka=[] l2= uuid=<0>
564006: i=1 k=1 ka=[] l2= uuid=<1>
565006: i=2 k=1 ka=[] l2= uuid=<2>
c3bb4bd7 566007: {"error":null,"result":[{"count":3}]}
e9011ac8
BP
567008: i=0 k=0 ka=[] l2= uuid=<0>
568008: i=1 k=0 ka=[] l2= uuid=<1>
569008: i=2 k=0 ka=[] l2= uuid=<2>
c3bb4bd7
BP
570009: done
571]])
572
573OVSDB_CHECK_IDL([self-linking idl, inconsistent ops],
574 [],
9cb53f26
BP
575 [['["idltest",
576 {"op": "insert",
e9011ac8 577 "table": "link1",
c3bb4bd7 578 "row": {"i": 0, "k": ["uuid", "cf197cc5-c8c9-42f5-82d5-c71a9f2cb96b"]}}]' \
9cb53f26
BP
579 '+["idltest",
580 {"op": "insert",
e9011ac8 581 "table": "link1",
0d0f05b9
BP
582 "uuid-name": "one",
583 "row": {"i": 1, "k": ["named-uuid", "one"]}},
584 {"op": "insert",
585 "table": "link1",
586 "row": {"i": 2, "k": ["named-uuid", "one"]}}]' \
9cb53f26
BP
587 '["idltest",
588 {"op": "update",
e9011ac8 589 "table": "link1",
c3bb4bd7
BP
590 "where": [],
591 "row": {"k": ["uuid", "c2fca39a-e69a-42a4-9c56-5eca85839ce9"]}}]' \
9cb53f26
BP
592 '+["idltest",
593 {"op": "delete",
e9011ac8 594 "table": "link1",
0d0f05b9 595 "where": [["_uuid", "==", ["uuid", "#1#"]]]}]' \
9cb53f26
BP
596 '+["idltest",
597 {"op": "delete",
e9011ac8 598 "table": "link1",
0d0f05b9 599 "where": [["_uuid", "==", ["uuid", "#2#"]]]}]' \
9cb53f26
BP
600 '["idltest",
601 {"op": "delete",
0d0f05b9
BP
602 "table": "link1",
603 "where": []}]' \
c3bb4bd7
BP
604]],
605 [[000: empty
97f7803b 606001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"details":"Table link1 column k row <0> references nonexistent row <1> in table link1.","error":"referential integrity violation"}]}
0d0f05b9
BP
607002: {"error":null,"result":[{"uuid":["uuid","<2>"]},{"uuid":["uuid","<3>"]}]}
608003: i=1 k=1 ka=[] l2= uuid=<2>
609003: i=2 k=1 ka=[] l2= uuid=<3>
254604d8 610004: {"error":null,"result":[{"count":2},{"details":"Table link1 column k row <x> references nonexistent row <4> in table link1.","error":"referential integrity violation"}]}
0d0f05b9
BP
611005: {"error":null,"result":[{"count":1},{"details":"cannot delete link1 row <2> because of 1 remaining reference(s)","error":"referential integrity violation"}]}
612006: {"error":null,"result":[{"count":1}]}
613007: i=1 k=1 ka=[] l2= uuid=<2>
614008: {"error":null,"result":[{"count":1}]}
615009: empty
616010: done
254604d8
BP
617]],
618 [],
619 [[sed -e '/004:/s/row <[23]> references/row <x> references/']])
c3bb4bd7
BP
620
621OVSDB_CHECK_IDL([self-linking idl, sets],
622 [],
9cb53f26
BP
623 [['["idltest",
624 {"op": "insert",
e9011ac8 625 "table": "link1",
0d0f05b9 626 "row": {"i": 0, "k": ["named-uuid", "i0"], "ka": ["set", [["named-uuid", "i0"]]]},
c3bb4bd7
BP
627 "uuid-name": "i0"},
628 {"op": "insert",
e9011ac8 629 "table": "link1",
0d0f05b9 630 "row": {"i": 1, "k": ["named-uuid", "i0"], "ka": ["set", [["named-uuid", "i1"]]]},
c3bb4bd7
BP
631 "uuid-name": "i1"},
632 {"op": "insert",
e9011ac8 633 "table": "link1",
0d0f05b9 634 "row": {"i": 2, "k": ["named-uuid", "i0"], "ka": ["set", [["named-uuid", "i2"]]]},
c3bb4bd7
BP
635 "uuid-name": "i2"},
636 {"op": "insert",
e9011ac8 637 "table": "link1",
0d0f05b9 638 "row": {"i": 3, "k": ["named-uuid", "i0"], "ka": ["set", [["named-uuid", "i3"]]]},
c3bb4bd7 639 "uuid-name": "i3"}]' \
9cb53f26
BP
640 '["idltest",
641 {"op": "update",
e9011ac8 642 "table": "link1",
c3bb4bd7
BP
643 "where": [],
644 "row": {"ka": ["set", [["uuid", "#0#"], ["uuid", "#1#"], ["uuid", "#2#"], ["uuid", "#3#"]]]}}]' \
9cb53f26
BP
645 '["idltest",
646 {"op": "update",
e9011ac8 647 "table": "link1",
97f7803b
BP
648 "where": [["i", "==", 2]],
649 "row": {"ka": ["set", [["uuid", "#0#"], ["uuid", "88702e78-845b-4a6e-ad08-cf68922ae84a"], ["uuid", "#2#"]]]}}]' \
9cb53f26
BP
650 '+["idltest",
651 {"op": "delete",
0d0f05b9
BP
652 "table": "link1",
653 "where": []}]']],
c3bb4bd7
BP
654 [[000: empty
655001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"uuid":["uuid","<2>"]},{"uuid":["uuid","<3>"]}]}
0d0f05b9
BP
656002: i=0 k=0 ka=[0] l2= uuid=<0>
657002: i=1 k=0 ka=[1] l2= uuid=<1>
658002: i=2 k=0 ka=[2] l2= uuid=<2>
659002: i=3 k=0 ka=[3] l2= uuid=<3>
c3bb4bd7 660003: {"error":null,"result":[{"count":4}]}
0d0f05b9
BP
661004: i=0 k=0 ka=[0 1 2 3] l2= uuid=<0>
662004: i=1 k=0 ka=[0 1 2 3] l2= uuid=<1>
663004: i=2 k=0 ka=[0 1 2 3] l2= uuid=<2>
664004: i=3 k=0 ka=[0 1 2 3] l2= uuid=<3>
97f7803b 665005: {"error":null,"result":[{"count":1},{"details":"Table link1 column ka row <2> references nonexistent row <4> in table link1.","error":"referential integrity violation"}]}
0d0f05b9
BP
666006: {"error":null,"result":[{"count":4}]}
667007: empty
668008: done
c3bb4bd7
BP
669]])
670
e9011ac8
BP
671OVSDB_CHECK_IDL([external-linking idl, consistent ops],
672 [],
9cb53f26
BP
673 [['["idltest",
674 {"op": "insert",
e9011ac8
BP
675 "table": "link2",
676 "row": {"i": 0},
677 "uuid-name": "row0"},
678 {"op": "insert",
679 "table": "link1",
0d0f05b9 680 "row": {"i": 1, "k": ["named-uuid", "row1"], "l2": ["set", [["named-uuid", "row0"]]]},
e9011ac8
BP
681 "uuid-name": "row1"}]']],
682 [[000: empty
683001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]}]}
684002: i=0 l1= uuid=<0>
0d0f05b9 685002: i=1 k=1 ka=[] l2=0 uuid=<1>
e9011ac8
BP
686003: done
687]])
225b582a
IY
688
689OVSDB_CHECK_IDL_PY([external-linking idl, insert ops],
690 [],
691 [['linktest']],
692 [[000: empty
693001: commit, status=success
694002: i=1 k=1 ka=[1] l2= uuid=<0>
695002: i=2 k=1 ka=[1 2] l2= uuid=<1>
696003: done
697]])
3b4c362f
IY
698
699OVSDB_CHECK_IDL_PY([getattr idl, insert ops],
700 [],
701 [['getattrtest']],
702 [[000: empty
703001: commit, status=success
704002: i=2 k=2 ka=[] l2= uuid=<0>
705003: done
706]])
d18e52e3 707
d7d417fc
TW
708OVSDB_CHECK_IDL_PY([row-from-json idl, whats this],
709 [['["idltest",
710 {"op": "insert",
711 "table": "simple",
712 "row": {"i": 1}},
713 {"op": "insert",
714 "table": "simple",
715 "row": {}}]']],
716 [['notifytest insert 2, notifytest set 1 b 1, notifytest delete 0']],
717 [[000: i=0 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
718000: i=1 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2>
719001: commit, status=success, events=create|2|None, delete|0|None, update|1|b
720002: i=1 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2>
721002: i=2 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<3>
722003: done
723]])
724
d18e52e3
BP
725AT_SETUP([idl handling of missing tables and columns - C])
726AT_KEYWORDS([ovsdb server idl positive])
d18e52e3
BP
727
728# idltest2.ovsschema is the same as idltest.ovsschema, except that
729# table link2 and column l2 have been deleted. But the IDL still
730# expects them to be there, so this test checks that it properly
731# tolerates them being missing.
732AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest2.ovsschema],
733 [0], [stdout], [ignore])
8a16ab90
LR
734AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
735on_exit 'kill `cat pid`'
d18e52e3
BP
736AT_CHECK([test-ovsdb '-vPATTERN:console:test-ovsdb|%c|%m' -vjsonrpc -t10 idl unix:socket ['["idltest",
737 {"op": "insert",
738 "table": "link1",
739 "row": {"i": 0, "k": ["named-uuid", "self"]},
740 "uuid-name": "self"}]' \
741 '["idltest",
742 {"op": "insert",
743 "table": "link1",
744 "row": {"i": 1, "k": ["named-uuid", "row2"]},
745 "uuid-name": "row1"},
746 {"op": "insert",
747 "table": "link1",
748 "row": {"i": 2, "k": ["named-uuid", "row1"]},
749 "uuid-name": "row2"}]' \
750 '["idltest",
751 {"op": "update",
752 "table": "link1",
753 "where": [["i", "==", 1]],
754 "row": {"k": ["uuid", "#1#"]}}]' \
755 '["idltest",
756 {"op": "update",
757 "table": "link1",
758 "where": [],
759 "row": {"k": ["uuid", "#0#"]}}]']],
7427f2a4 760 [0], [stdout], [stderr])
d18e52e3
BP
761AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl], [0],
762 [[000: empty
763001: {"error":null,"result":[{"uuid":["uuid","<0>"]}]}
764002: i=0 k=0 ka=[] l2= uuid=<0>
765003: {"error":null,"result":[{"uuid":["uuid","<1>"]},{"uuid":["uuid","<2>"]}]}
766004: i=0 k=0 ka=[] l2= uuid=<0>
767004: i=1 k=2 ka=[] l2= uuid=<1>
768004: i=2 k=1 ka=[] l2= uuid=<2>
769005: {"error":null,"result":[{"count":1}]}
770006: i=0 k=0 ka=[] l2= uuid=<0>
771006: i=1 k=1 ka=[] l2= uuid=<1>
772006: i=2 k=1 ka=[] l2= uuid=<2>
773007: {"error":null,"result":[{"count":3}]}
774008: i=0 k=0 ka=[] l2= uuid=<0>
775008: i=1 k=0 ka=[] l2= uuid=<1>
776008: i=2 k=0 ka=[] l2= uuid=<2>
777009: done
7427f2a4 778]])
d18e52e3
BP
779
780# Check that ovsdb-idl figured out that table link2 and column l2 are missing.
781AT_CHECK([grep ovsdb_idl stderr | sort], [0], [dnl
782test-ovsdb|ovsdb_idl|idltest database lacks link2 table (database needs upgrade?)
783test-ovsdb|ovsdb_idl|link1 table in idltest database lacks l2 column (database needs upgrade?)
784])
785
786# Check that ovsdb-idl sent on "monitor" request and that it didn't
787# mention that table or column, and (for paranoia) that it did mention another
788# table and column.
c383f3bf 789AT_CHECK([grep -c '"monitor\|monitor_cond"' stderr], [0], [1
d18e52e3 790])
c383f3bf
LS
791AT_CHECK([grep '"monitor\|monitor_cond"' stderr | grep link2], [1])
792AT_CHECK([grep '"monitor\|monitor_cond"' stderr | grep l2], [1])
793AT_CHECK([grep '"monitor\|monitor_cond"' stderr | grep -c '"link1"'], [0], [1
d18e52e3 794])
c383f3bf 795AT_CHECK([grep '"monitor\|monitor_cond"' stderr | grep -c '"ua"'], [0], [1
d18e52e3
BP
796])
797OVSDB_SERVER_SHUTDOWN
798AT_CLEANUP
80c12152
SA
799
800m4_define([OVSDB_CHECK_IDL_FETCH_COLUMNS_PY],
801 [AT_SETUP([$1 - Python fetch])
802 AT_SKIP_IF([test $HAVE_PYTHON = no])
803 AT_KEYWORDS([ovsdb server idl positive Python increment fetch $6])
804 AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
805 [0], [stdout], [ignore])
8a16ab90
LR
806 AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
807 on_exit 'kill `cat pid`'
80c12152 808 m4_if([$2], [], [],
7427f2a4 809 [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore])])
80c12152 810 AT_CHECK([$PYTHON $srcdir/test-ovsdb.py -t10 idl $srcdir/idltest.ovsschema unix:socket [$3] $4],
7427f2a4 811 [0], [stdout], [ignore])
80c12152 812 AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$7],,, [[| $7]]),
7427f2a4 813 [0], [$5])
80c12152
SA
814 OVSDB_SERVER_SHUTDOWN
815 AT_CLEANUP])
816
817m4_define([OVSDB_CHECK_IDL_FETCH_COLUMNS],
818 [OVSDB_CHECK_IDL_FETCH_COLUMNS_PY($@)])
819
820OVSDB_CHECK_IDL_FETCH_COLUMNS([simple idl, initially populated],
821 [['["idltest",
822 {"op": "insert",
823 "table": "simple",
824 "row": {"i": 1,
825 "r": 2.0,
826 "b": true,
827 "s": "mystring",
828 "u": ["uuid", "84f5c8f5-ac76-4dbc-a24f-8860eb407fc1"],
829 "ia": ["set", [1, 2, 3]],
830 "ra": ["set", [-0.5]],
831 "ba": ["set", [true]],
832 "sa": ["set", ["abc", "def"]],
833 "ua": ["set", [["uuid", "69443985-7806-45e2-b35f-574a04e720f9"],
834 ["uuid", "aad11ef0-816a-4b01-93e6-03b8b4256b98"]]]}},
835 {"op": "insert",
836 "table": "simple",
837 "row": {}}]']],
838 [?simple:i,r!],
839 ['fetch 0 r'],
840 [[000: i=0 uuid=<0>
841000: i=1 uuid=<1>
842001: commit, status=success
843002: i=0 r=0 uuid=<0>
844002: i=1 uuid=<1>
845003: done
846]])
932104f4 847
897c8064
LS
848m4_define([OVSDB_CHECK_IDL_WO_MONITOR_COND_PY],
849 [AT_SETUP([$1 - Python])
850 AT_SKIP_IF([test $HAVE_PYTHON = no])
851 AT_KEYWORDS([ovsdb server idl Python monitor $4])
852 AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
853 [0], [stdout], [ignore])
854 AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
855 AT_CHECK([ovs-appctl -t "`pwd`"/unixctl ovsdb-server/disable-monitor-cond])
856 AT_CHECK([$PYTHON $srcdir/test-ovsdb.py -t10 idl $srcdir/idltest.ovsschema unix:socket $2],
857 [0], [stdout], [ignore], [kill `cat pid`])
858 AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$5],,, [[| $5]]),
859 [0], [$3], [], [kill `cat pid`])
860 OVSDB_SERVER_SHUTDOWN
861 AT_CLEANUP])
862
863
864m4_define([OVSDB_CHECK_IDL_WO_MONITOR_COND],
865 [OVSDB_CHECK_IDL_WO_MONITOR_COND_PY($@)])
866
867
868OVSDB_CHECK_IDL_WO_MONITOR_COND([simple idl disable monitor-cond],
869 [['["idltest",
870 {"op": "insert",
871 "table": "simple",
872 "row": {"i": 1,
873 "r": 2.0,
874 "b": true,
875 "s": "mystring",
876 "u": ["uuid", "84f5c8f5-ac76-4dbc-a24f-8860eb407fc1"],
877 "ia": ["set", [1, 2, 3]],
878 "ra": ["set", [-0.5]],
879 "ba": ["set", [true]],
880 "sa": ["set", ["abc", "def"]],
881 "ua": ["set", [["uuid", "69443985-7806-45e2-b35f-574a04e720f9"],
882 ["uuid", "aad11ef0-816a-4b01-93e6-03b8b4256b98"]]]}},
883 {"op": "insert",
884 "table": "simple",
885 "row": {}}]' \
886 '["idltest",
887 {"op": "update",
888 "table": "simple",
889 "where": [],
890 "row": {"b": true}}]' \
891 '["idltest",
892 {"op": "update",
893 "table": "simple",
894 "where": [],
895 "row": {"r": 123.5}}]' \
896 '["idltest",
897 {"op": "insert",
898 "table": "simple",
899 "row": {"i": -1,
900 "r": 125,
901 "b": false,
902 "s": "",
903 "ia": ["set", [1]],
904 "ra": ["set", [1.5]],
905 "ba": ["set", [false]],
906 "sa": ["set", []],
907 "ua": ["set", []]}}]' \
908 '["idltest",
909 {"op": "update",
910 "table": "simple",
911 "where": [["i", "<", 1]],
912 "row": {"s": "newstring"}}]' \
913 '["idltest",
914 {"op": "delete",
915 "table": "simple",
916 "where": [["i", "==", 0]]}]' \
917 'reconnect']],
918 [[000: empty
919001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]}]}
920002: i=0 r=0 b=false s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
921002: i=1 r=2 b=true s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
922003: {"error":null,"result":[{"count":2}]}
923004: i=0 r=0 b=true s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
924004: i=1 r=2 b=true s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
925005: {"error":null,"result":[{"count":2}]}
926006: i=0 r=123.5 b=true s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
927006: i=1 r=123.5 b=true s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
928007: {"error":null,"result":[{"uuid":["uuid","<6>"]}]}
929008: i=-1 r=125 b=false s= u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>
930008: i=0 r=123.5 b=true s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
931008: i=1 r=123.5 b=true s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
932009: {"error":null,"result":[{"count":2}]}
933010: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>
934010: i=0 r=123.5 b=true s=newstring u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
935010: i=1 r=123.5 b=true s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
936011: {"error":null,"result":[{"count":1}]}
937012: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>
938012: i=1 r=123.5 b=true s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
939013: reconnect
940014: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>
941014: i=1 r=123.5 b=true s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
942015: done
943]])
944
932104f4
SA
945m4_define([OVSDB_CHECK_IDL_TRACK_C],
946 [AT_SETUP([$1 - C])
947 AT_KEYWORDS([ovsdb server idl tracking positive $5])
948 AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
949 [0], [stdout], [ignore])
8a16ab90
LR
950 AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
951 on_exit 'kill `cat pid`'
932104f4 952 m4_if([$2], [], [],
7427f2a4 953 [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore])])
932104f4 954 AT_CHECK([test-ovsdb '-vPATTERN:console:test-ovsdb|%c|%m' -vjsonrpc -t10 -c idl unix:socket $3],
7427f2a4 955 [0], [stdout], [ignore])
932104f4 956 AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$6],,, [[| $6]]),
7427f2a4 957 [0], [$4])
932104f4
SA
958 OVSDB_SERVER_SHUTDOWN
959 AT_CLEANUP])
960
961m4_define([OVSDB_CHECK_IDL_TRACK],
962 [OVSDB_CHECK_IDL_TRACK_C($@)])
963
964OVSDB_CHECK_IDL_TRACK([track, simple idl, initially populated],
965 [['["idltest",
966 {"op": "insert",
967 "table": "simple",
968 "row": {"i": 1,
969 "r": 2.0,
970 "b": true,
971 "s": "mystring",
972 "u": ["uuid", "84f5c8f5-ac76-4dbc-a24f-8860eb407fc1"],
973 "ia": ["set", [1, 2, 3]],
974 "ra": ["set", [-0.5]],
975 "ba": ["set", [true]],
976 "sa": ["set", ["abc", "def"]],
977 "ua": ["set", [["uuid", "69443985-7806-45e2-b35f-574a04e720f9"],
978 ["uuid", "aad11ef0-816a-4b01-93e6-03b8b4256b98"]]]}},
979 {"op": "insert",
980 "table": "simple",
981 "row": {}}]']],
982 [['["idltest",
983 {"op": "update",
984 "table": "simple",
985 "where": [],
986 "row": {"b": true}}]']],
987 [[000: i=1 r=2 b=true s=mystring u=<0> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<1> <2>] uuid=<3>
32d37ce8 988000: updated columns: b ba i ia r ra s sa u ua
932104f4
SA
989001: {"error":null,"result":[{"count":2}]}
990002: i=0 r=0 b=true s= u=<4> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<5>
991002: i=1 r=2 b=true s=mystring u=<0> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<1> <2>] uuid=<3>
32d37ce8 992002: updated columns: b
932104f4
SA
993003: done
994]])
995
996OVSDB_CHECK_IDL_TRACK([track, simple idl, initially empty, various ops],
997 [],
998 [['["idltest",
999 {"op": "insert",
1000 "table": "simple",
1001 "row": {"i": 1,
1002 "r": 2.0,
1003 "b": true,
1004 "s": "mystring",
1005 "u": ["uuid", "84f5c8f5-ac76-4dbc-a24f-8860eb407fc1"],
1006 "ia": ["set", [1, 2, 3]],
1007 "ra": ["set", [-0.5]],
1008 "ba": ["set", [true]],
1009 "sa": ["set", ["abc", "def"]],
1010 "ua": ["set", [["uuid", "69443985-7806-45e2-b35f-574a04e720f9"],
1011 ["uuid", "aad11ef0-816a-4b01-93e6-03b8b4256b98"]]]}},
1012 {"op": "insert",
1013 "table": "simple",
1014 "row": {}}]' \
1015 '["idltest",
1016 {"op": "update",
1017 "table": "simple",
1018 "where": [],
1019 "row": {"b": true}}]' \
1020 '["idltest",
1021 {"op": "update",
1022 "table": "simple",
1023 "where": [],
1024 "row": {"r": 123.5}}]' \
1025 '["idltest",
1026 {"op": "insert",
1027 "table": "simple",
1028 "row": {"i": -1,
1029 "r": 125,
1030 "b": false,
1031 "s": "",
1032 "ia": ["set", [1]],
1033 "ra": ["set", [1.5]],
1034 "ba": ["set", [false]],
1035 "sa": ["set", []],
1036 "ua": ["set", []]}}]' \
1037 '["idltest",
1038 {"op": "update",
1039 "table": "simple",
1040 "where": [["i", "<", 1]],
1041 "row": {"s": "newstring"}}]' \
1042 '["idltest",
1043 {"op": "delete",
1044 "table": "simple",
1045 "where": [["i", "==", 0]]}]' \
1046 'reconnect']],
1047 [[000: empty
1048001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]}]}
1049002: i=1 r=2 b=true s=mystring u=<2> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<3> <4>] uuid=<0>
32d37ce8 1050002: updated columns: b ba i ia r ra s sa u ua
932104f4
SA
1051003: {"error":null,"result":[{"count":2}]}
1052004: i=0 r=0 b=true s= u=<5> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
32d37ce8 1053004: updated columns: b
932104f4
SA
1054005: {"error":null,"result":[{"count":2}]}
1055006: i=0 r=123.5 b=true s= u=<5> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
1056006: i=1 r=123.5 b=true s=mystring u=<2> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<3> <4>] uuid=<0>
32d37ce8
SA
1057006: updated columns: r
1058006: updated columns: r
932104f4
SA
1059007: {"error":null,"result":[{"uuid":["uuid","<6>"]}]}
1060008: i=-1 r=125 b=false s= u=<5> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>
32d37ce8 1061008: updated columns: ba i ia r ra
932104f4
SA
1062009: {"error":null,"result":[{"count":2}]}
1063010: i=-1 r=125 b=false s=newstring u=<5> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>
1064010: i=0 r=123.5 b=true s=newstring u=<5> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
32d37ce8
SA
1065010: updated columns: s
1066010: updated columns: s
932104f4
SA
1067011: {"error":null,"result":[{"count":1}]}
1068012: ##deleted## uuid=<1>
1069013: reconnect
1070014: i=-1 r=125 b=false s=newstring u=<5> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>
1071014: i=1 r=123.5 b=true s=mystring u=<2> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<3> <4>] uuid=<0>
32d37ce8
SA
1072014: updated columns: b ba i ia r ra s sa u ua
1073014: updated columns: ba i ia r ra s
932104f4
SA
1074015: done
1075]])
7251075c
EA
1076
1077m4_define([OVSDB_CHECK_IDL_PARTIAL_UPDATE_MAP_COLUMN],
1078 [AT_SETUP([$1 - C])
1079 AT_KEYWORDS([ovsdb server idl partial update map column positive $5])
1080 AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
1081 [0], [stdout], [ignore])
8a16ab90
LR
1082 AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
1083 on_exit 'kill `cat pid`'
7251075c 1084 m4_if([$2], [], [],
7427f2a4 1085 [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore])])
7251075c 1086 AT_CHECK([test-ovsdb '-vPATTERN:console:test-ovsdb|%c|%m' -vjsonrpc -t10 -c idl-partial-update-map-column unix:socket $3],
7427f2a4 1087 [0], [stdout], [ignore])
7251075c 1088 AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$6],,, [[| $6]]),
7427f2a4 1089 [0], [$4])
7251075c
EA
1090 OVSDB_SERVER_SHUTDOWN
1091 AT_CLEANUP])
1092
1093OVSDB_CHECK_IDL_PARTIAL_UPDATE_MAP_COLUMN([map, simple2 idl-partial-update-map-column, initially populated],
1094[['["idltest", {"op":"insert", "table":"simple2",
1095 "row":{"name":"myString1","smap":["map",[["key1","value1"],["key2","value2"]]]} }]']
1096],
1097[],
1098[[000: Getting records
1099001: name=myString1 smap=[[key1 : value1],[key2 : value2]] imap=[]
1100002: After insert element
1101003: name=String2 smap=[[key1 : myList1],[key2 : value2]] imap=[[3 : myids2]]
1102004: After insert duplicated element
1103005: name=String2 smap=[[key1 : myList1],[key2 : value2]] imap=[[3 : myids2]]
1104006: After delete element
1105007: name=String2 smap=[[key2 : value2]] imap=[[3 : myids2]]
1106008: After trying to delete a deleted element
1107009: name=String2 smap=[[key2 : value2]] imap=[[3 : myids2]]
1108010: End test
1109]])
a7261bf7 1110
a59912a0
RM
1111OVSDB_CHECK_IDL_PY([partial-map idl],
1112[['["idltest", {"op":"insert", "table":"simple2",
330b9c9c 1113 "row":{"name":"myString1","smap":["map",[["key1","value1"],["key2","value2"]]]} }]']
a59912a0 1114],
330b9c9c
AB
1115 [?simple2:name,smap,imap 'partialmapinsertelement' 'partialmapinsertmultipleelements' 'partialmapdelelements'],
1116[[000: name=myString1 smap=[(key1 value1) (key2 value2)] imap=[]
a59912a0 1117001: commit, status=success
330b9c9c 1118002: name=String2 smap=[(key1 myList1) (key2 value2)] imap=[(3 myids2)]
a59912a0 1119003: commit, status=success
330b9c9c
AB
1120004: name=String2 smap=[(key1 myList1) (key2 myList2) (key3 myList3)] imap=[(3 myids2)]
1121005: commit, status=success
1122006: name=String2 smap=[(key2 myList2)] imap=[(3 myids2)]
1123007: done
a59912a0
RM
1124]])
1125
f1ab6e06
RM
1126m4_define([OVSDB_CHECK_IDL_PARTIAL_UPDATE_SET_COLUMN],
1127 [AT_SETUP([$1 - C])
1128 AT_KEYWORDS([ovsdb server idl partial update set column positive $5])
1129 AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
1130 [0], [stdout], [ignore])
1131 AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
1132 on_exit 'kill `cat pid`'
1133 m4_if([$2], [], [],
1134 [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore])])
1135 AT_CHECK([test-ovsdb '-vPATTERN:console:test-ovsdb|%c|%m' -vjsonrpc -t10 -c idl-partial-update-set-column unix:socket $3],
1136 [0], [stdout], [ignore])
1137 AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$6],,, [[| $6]]),
1138 [0], [$4])
1139 OVSDB_SERVER_SHUTDOWN
1140 AT_CLEANUP])
1141
1142OVSDB_CHECK_IDL_PARTIAL_UPDATE_SET_COLUMN([set, simple3 idl-partial-update-set-column, initially populated],
1143[['["idltest", {"op":"insert", "table":"simple3",
1144 "row":{"name":"mySet1","uset":["set", [[ "uuid", "0005b872-f9e5-43be-ae02-3184b9680e75" ], [ "uuid", "000d2f6a-76af-412f-b59d-e7bcd3e84eff" ]]]} }]']
1145],
1146[],
1147[[000: Getting records
1148001: name=mySet1 uset=[[<0>],[<1>]] uref=[]
1149002: After rename+add new value
1150003: name=String2 uset=[[<0>],[<1>],[<2>]] uref=[]
1151004: After add new value
1152005: name=String2 uset=[[<0>],[<1>],[<2>],[<3>]] uref=[]
1153006: After delete value
1154007: name=String2 uset=[[<0>],[<1>],[<3>]] uref=[]
1155008: After trying to delete a deleted value
1156009: name=String2 uset=[[<0>],[<1>],[<3>]] uref=[]
1157010: After add to other table + set of strong ref
1158011: name=String2 uset=[[<0>],[<1>],[<3>]] uref=[[<4>]]
1159012: End test
1160]])
1161
a59912a0 1162OVSDB_CHECK_IDL_PY([partial-set idl],
b3220c67
AB
1163[['["idltest", {"op":"insert", "table":"simple3", "uuid-name":"newrow",
1164 "row":{"name":"mySet1","uset":["set", [[ "uuid", "0005b872-f9e5-43be-ae02-3184b9680e75" ]]]} },
1165 {"op":"insert", "table":"simple4", "row":{"name":"seed"}},
1166 {"op":"mutate", "table":"simple3", "where":[["_uuid", "==", ["named-uuid", "newrow"]]],
1167 "mutations": [["uset", "insert", ["set", [["uuid", "000d2f6a-76af-412f-b59d-e7bcd3e84eff"]]]]]}]']
a59912a0 1168],
b3220c67 1169 ['partialrenamesetadd' 'partialduplicateadd' 'partialsetdel' 'partialsetref' 'partialsetoverrideops' 'partialsetmutatenew'],
a59912a0
RM
1170[[000: name=mySet1 uset=[<0> <1>]
1171001: commit, status=success
1172002: name=String2 uset=[<0> <1> <2>]
1173003: commit, status=success
1174004: name=String2 uset=[<0> <1> <2> <3>]
1175005: commit, status=success
1176006: name=String2 uset=[<0> <1> <3>]
1177007: commit, status=success
1178008: name=String2 uset=[<0> <1> <3>]
330b9c9c
AB
1179009: commit, status=success
1180010: name=String2 uset=[<3>]
b3220c67
AB
1181011: commit, status=success
1182012: name=String2 uset=[<3>]
1183012: name=String3 uset=[<4>]
1184013: done
a59912a0
RM
1185]])
1186
a7261bf7
NS
1187m4_define([OVSDB_CHECK_IDL_NOTIFY_PY],
1188 [AT_SETUP([$1 - Python])
1189 AT_SKIP_IF([test $HAVE_PYTHON = no])
1190 AT_KEYWORDS([ovsdb server idl Python notify $4])
1191 AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
1192 [0], [stdout], [ignore])
1193 AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
1194 AT_CHECK([$PYTHON $srcdir/test-ovsdb.py -t10 idl $srcdir/idltest.ovsschema unix:socket $2],
1195 [0], [stdout], [ignore], [kill `cat pid`])
1196 AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$5],,, [[| $5]]),
1197 [0], [$3], [], [kill `cat pid`])
1198 OVSDB_SERVER_SHUTDOWN
1199 AT_CLEANUP])
1200
d90ed7d6
NS
1201# This test uses the Python IDL implementation with ssl
1202m4_define([OVSDB_CHECK_IDL_NOTIFY_SSL_PY],
1203 [AT_SETUP([$1 - SSL])
1204 AT_SKIP_IF([test $HAVE_PYTHON = no])
1205 $PYTHON -m OpenSSL.SSL
1206 SSL_PRESENT=$?
1207 AT_SKIP_IF([test $SSL_PRESENT != 0])
1208 AT_KEYWORDS([ovsdb server idl Python notify - ssl socket])
1209 AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
1210 [0], [stdout], [ignore])
1211 PKIDIR=$abs_top_builddir/tests
1212 AT_CHECK([ovsdb-server --log-file '-vPATTERN:console:ovsdb-server|%c|%m' \
1213 --detach --no-chdir --pidfile="`pwd`"/pid \
1214 --private-key=$PKIDIR/testpki-privkey2.pem \
1215 --certificate=$PKIDIR/testpki-cert2.pem \
1216 --ca-cert=$PKIDIR/testpki-cacert.pem \
1217 --remote=pssl:0:127.0.0.1 --unixctl="`pwd`"/unixctl db], [0], [ignore], [ignore])
1218 PARSE_LISTENING_PORT([ovsdb-server.log], [TCP_PORT])
1219 AT_CHECK([$PYTHON $srcdir/test-ovsdb.py -t10 idl $srcdir/idltest.ovsschema \
1220 ssl:127.0.0.1:$TCP_PORT $PKIDIR/testpki-privkey.pem \
1221 $PKIDIR/testpki-cert.pem $PKIDIR/testpki-cacert.pem $2],
1222 [0], [stdout], [ignore], [kill `cat pid`])
1223 AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$5],,, [[| $5]]),
1224 [0], [$3], [], [kill `cat pid`])
1225 OVSDB_SERVER_SHUTDOWN
1226 AT_CLEANUP])
a7261bf7
NS
1227
1228m4_define([OVSDB_CHECK_IDL_NOTIFY],
d90ed7d6
NS
1229 [OVSDB_CHECK_IDL_NOTIFY_PY($@)
1230 OVSDB_CHECK_IDL_NOTIFY_SSL_PY($@)])
a7261bf7
NS
1231
1232OVSDB_CHECK_IDL_NOTIFY([simple idl verify notify],
1233 [['track-notify' \
1234 '["idltest",
1235 {"op": "insert",
1236 "table": "simple",
1237 "row": {"i": 1,
1238 "r": 2.0,
1239 "b": true,
1240 "s": "mystring",
1241 "u": ["uuid", "84f5c8f5-ac76-4dbc-a24f-8860eb407fc1"],
1242 "ia": ["set", [1, 2, 3]],
1243 "ra": ["set", [-0.5]],
1244 "ba": ["set", [true]],
1245 "sa": ["set", ["abc", "def"]],
1246 "ua": ["set", [["uuid", "69443985-7806-45e2-b35f-574a04e720f9"],
1247 ["uuid", "aad11ef0-816a-4b01-93e6-03b8b4256b98"]]]}},
1248 {"op": "insert",
1249 "table": "simple",
1250 "row": {}}]' \
1251 '["idltest",
1252 {"op": "update",
1253 "table": "simple",
1254 "where": [],
1255 "row": {"b": false}}]' \
1256 '["idltest",
1257 {"op": "update",
1258 "table": "simple",
1259 "where": [],
1260 "row": {"r": 123.5}}]' \
1261 '["idltest",
1262 {"op": "insert",
1263 "table": "simple",
1264 "row": {"i": -1,
1265 "r": 125,
1266 "b": false,
1267 "s": "",
1268 "ia": ["set", [1]],
1269 "ra": ["set", [1.5]],
1270 "ba": ["set", [false]],
1271 "sa": ["set", []],
1272 "ua": ["set", []]}}]' \
1273 '["idltest",
1274 {"op": "update",
1275 "table": "simple",
1276 "where": [["i", "<", 1]],
1277 "row": {"s": "newstring"}}]' \
1278 '["idltest",
1279 {"op": "delete",
1280 "table": "simple",
1281 "where": [["i", "==", 0]]}]' \
1282 'reconnect']],
1283 [[000: empty
1284001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]}]}
1285002: event:create, row={i=0 r=0 b=false s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>}, updates=None
1286002: event:create, row={i=1 r=2 b=true s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>}, updates=None
1287002: i=0 r=0 b=false s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
1288002: i=1 r=2 b=true s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
1289003: {"error":null,"result":[{"count":2}]}
1290004: event:update, row={i=1 r=2 b=false s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>}, updates={b=true uuid=<0>}
1291004: i=0 r=0 b=false s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
1292004: i=1 r=2 b=false s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
1293005: {"error":null,"result":[{"count":2}]}
1294006: event:update, row={i=0 r=123.5 b=false s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>}, updates={r=0 uuid=<1>}
1295006: event:update, row={i=1 r=123.5 b=false s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>}, updates={r=2 uuid=<0>}
1296006: i=0 r=123.5 b=false s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
1297006: i=1 r=123.5 b=false s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
1298007: {"error":null,"result":[{"uuid":["uuid","<6>"]}]}
1299008: event:create, row={i=-1 r=125 b=false s= u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>}, updates=None
1300008: i=-1 r=125 b=false s= u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>
1301008: i=0 r=123.5 b=false s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
1302008: i=1 r=123.5 b=false s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
1303009: {"error":null,"result":[{"count":2}]}
1304010: event:update, row={i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>}, updates={s= uuid=<6>}
1305010: event:update, row={i=0 r=123.5 b=false s=newstring u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>}, updates={s= uuid=<1>}
1306010: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>
1307010: i=0 r=123.5 b=false s=newstring u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
1308010: i=1 r=123.5 b=false s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
1309011: {"error":null,"result":[{"count":1}]}
1310012: event:delete, row={i=0 r=123.5 b=false s=newstring u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>}, updates=None
1311012: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>
1312012: i=1 r=123.5 b=false s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
1313013: reconnect
1314014: event:create, row={i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>}, updates=None
1315014: event:create, row={i=1 r=123.5 b=false s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>}, updates=None
1316014: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6>
1317014: i=1 r=123.5 b=false s=mystring u=<3> ia=[1 2 3] ra=[-0.5] ba=[true] sa=[abc def] ua=[<4> <5>] uuid=<0>
1318015: done
1319]])