]>
Commit | Line | Data |
---|---|---|
1 | AT_BANNER([OVSDB -- interface description language (IDL)]) | |
2 | ||
3 | OVS_RUNDIR=`pwd`; export OVS_RUNDIR | |
4 | # OVSDB_CHECK_IDL_C(TITLE, [PRE-IDL-TXN], TRANSACTIONS, OUTPUT, [KEYWORDS], | |
5 | # [FILTER]) | |
6 | # | |
7 | # Creates a database with a schema derived from idltest.ovsidl, runs | |
8 | # each PRE-IDL-TXN (if any), starts an ovsdb-server on that database, | |
9 | # and runs "test-ovsdb idl" passing each of the TRANSACTIONS along. | |
10 | # | |
11 | # Checks that the overall output is OUTPUT. Before comparison, the | |
12 | # output is sorted (using "sort") and UUIDs in the output are replaced | |
13 | # by markers of the form <N> where N is a number. The first unique | |
14 | # UUID is replaced by <0>, the next by <1>, and so on. If a given | |
15 | # UUID appears more than once it is always replaced by the same | |
16 | # marker. If FILTER is supplied then the output is also filtered | |
17 | # through the specified program. | |
18 | # | |
19 | # TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS. | |
20 | m4_define([OVSDB_CHECK_IDL_C], | |
21 | [AT_SETUP([$1 - C]) | |
22 | AT_KEYWORDS([ovsdb server idl positive $5]) | |
23 | OVS_RUNDIR=`pwd`; export OVS_RUNDIR | |
24 | AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema], | |
25 | [0], [stdout], [ignore]) | |
26 | 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]) | |
27 | m4_if([$2], [], [], | |
28 | [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore], [kill `cat pid`])]) | |
29 | AT_CHECK([test-ovsdb '-vPATTERN:console:test-ovsdb|%c|%m' -vjsonrpc -t10 idl unix:socket $3], | |
30 | [0], [stdout], [ignore], [kill `cat pid`]) | |
31 | AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$6],,, [[| $6]]), | |
32 | [0], [$4], [], [kill `cat pid`]) | |
33 | OVSDB_SERVER_SHUTDOWN | |
34 | AT_CLEANUP]) | |
35 | ||
36 | # same as OVSDB_CHECK_IDL but uses the Python IDL implementation. | |
37 | m4_define([OVSDB_CHECK_IDL_PY], | |
38 | [AT_SETUP([$1 - Python]) | |
39 | AT_SKIP_IF([test $HAVE_PYTHON = no]) | |
40 | AT_KEYWORDS([ovsdb server idl positive Python $5]) | |
41 | OVS_RUNDIR=`pwd`; export OVS_RUNDIR | |
42 | AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema], | |
43 | [0], [stdout], [ignore]) | |
44 | 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]) | |
45 | m4_if([$2], [], [], | |
46 | [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore], [kill `cat pid`])]) | |
47 | AT_CHECK([$PYTHON $srcdir/test-ovsdb.py -t10 idl $srcdir/idltest.ovsschema unix:socket $3], | |
48 | [0], [stdout], [ignore], [kill `cat pid`]) | |
49 | AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$6],,, [[| $6]]), | |
50 | [0], [$4], [], [kill `cat pid`]) | |
51 | OVSDB_SERVER_SHUTDOWN | |
52 | AT_CLEANUP]) | |
53 | ||
54 | # same as OVSDB_CHECK_IDL but uses the Python IDL implementation with tcp | |
55 | m4_define([OVSDB_CHECK_IDL_TCP_PY], | |
56 | [AT_SETUP([$1 - Python tcp]) | |
57 | AT_SKIP_IF([test $HAVE_PYTHON = no]) | |
58 | AT_KEYWORDS([ovsdb server idl positive Python with tcp socket $5]) | |
59 | OVS_RUNDIR=`pwd`; export OVS_RUNDIR | |
60 | OVS_LOGDIR=`pwd`; export OVS_LOGDIR | |
61 | AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema], | |
62 | [0], [stdout], [ignore]) | |
63 | 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]) | |
64 | TCP_PORT=`parse_listening_port ovsdb-server.log` | |
65 | ||
66 | m4_if([$2], [], [], | |
67 | [AT_CHECK([ovsdb-client transact tcp:127.0.0.1:$TCP_PORT $2], [0], [ignore], [ignore], [kill `cat pid`])]) | |
68 | AT_CHECK([$PYTHON $srcdir/test-ovsdb.py -t10 idl $srcdir/idltest.ovsschema tcp:127.0.0.1:$TCP_PORT $3], | |
69 | [0], [stdout], [ignore], [kill `cat pid`]) | |
70 | AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$6],,, [[| $6]]), | |
71 | [0], [$4], [], [kill `cat pid`]) | |
72 | OVSDB_SERVER_SHUTDOWN | |
73 | AT_CLEANUP]) | |
74 | ||
75 | # same as OVSDB_CHECK_IDL but uses the Python IDL implementation with tcp6 | |
76 | m4_define([OVSDB_CHECK_IDL_TCP6_PY], | |
77 | [AT_SETUP([$1 - Python tcp6]) | |
78 | AT_SKIP_IF([test $HAVE_PYTHON = no]) | |
79 | AT_KEYWORDS([ovsdb server idl positive Python with tcp6 socket $5]) | |
80 | OVS_RUNDIR=`pwd`; export OVS_RUNDIR | |
81 | OVS_LOGDIR=`pwd`; export OVS_LOGDIR | |
82 | AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema], | |
83 | [0], [stdout], [ignore]) | |
84 | 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]) | |
85 | TCP_PORT=`parse_listening_port ovsdb-server.log` | |
86 | echo "TCP_PORT=$TCP_PORT" | |
87 | ||
88 | m4_if([$2], [], [], | |
89 | [AT_CHECK([ovsdb-client transact "tcp:[[::1]]:$TCP_PORT" $2], [0], [ignore], [ignore], [kill `cat pid`])]) | |
90 | AT_CHECK([$PYTHON $srcdir/test-ovsdb.py -t10 idl $srcdir/idltest.ovsschema tcp:[[::1]]:$TCP_PORT $3], | |
91 | [0], [stdout], [ignore], [kill `cat pid`]) | |
92 | AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl]m4_if([$6],,, [[| $6]]), | |
93 | [0], [$4], [], [kill `cat pid`]) | |
94 | OVSDB_SERVER_SHUTDOWN | |
95 | AT_CLEANUP]) | |
96 | ||
97 | m4_define([OVSDB_CHECK_IDL], | |
98 | [OVSDB_CHECK_IDL_C($@) | |
99 | OVSDB_CHECK_IDL_PY($@) | |
100 | OVSDB_CHECK_IDL_TCP_PY($@) | |
101 | OVSDB_CHECK_IDL_TCP6_PY($@)]) | |
102 | ||
103 | OVSDB_CHECK_IDL([simple idl, initially empty, no ops], | |
104 | [], | |
105 | [], | |
106 | [000: empty | |
107 | 001: done | |
108 | ]) | |
109 | ||
110 | OVSDB_CHECK_IDL([simple idl, initially empty, various ops], | |
111 | [], | |
112 | [['["idltest", | |
113 | {"op": "insert", | |
114 | "table": "simple", | |
115 | "row": {"i": 1, | |
116 | "r": 2.0, | |
117 | "b": true, | |
118 | "s": "mystring", | |
119 | "u": ["uuid", "84f5c8f5-ac76-4dbc-a24f-8860eb407fc1"], | |
120 | "ia": ["set", [1, 2, 3]], | |
121 | "ra": ["set", [-0.5]], | |
122 | "ba": ["set", [true]], | |
123 | "sa": ["set", ["abc", "def"]], | |
124 | "ua": ["set", [["uuid", "69443985-7806-45e2-b35f-574a04e720f9"], | |
125 | ["uuid", "aad11ef0-816a-4b01-93e6-03b8b4256b98"]]]}}, | |
126 | {"op": "insert", | |
127 | "table": "simple", | |
128 | "row": {}}]' \ | |
129 | '["idltest", | |
130 | {"op": "update", | |
131 | "table": "simple", | |
132 | "where": [], | |
133 | "row": {"b": true}}]' \ | |
134 | '["idltest", | |
135 | {"op": "update", | |
136 | "table": "simple", | |
137 | "where": [], | |
138 | "row": {"r": 123.5}}]' \ | |
139 | '["idltest", | |
140 | {"op": "insert", | |
141 | "table": "simple", | |
142 | "row": {"i": -1, | |
143 | "r": 125, | |
144 | "b": false, | |
145 | "s": "", | |
146 | "ia": ["set", [1]], | |
147 | "ra": ["set", [1.5]], | |
148 | "ba": ["set", [false]], | |
149 | "sa": ["set", []], | |
150 | "ua": ["set", []]}}]' \ | |
151 | '["idltest", | |
152 | {"op": "update", | |
153 | "table": "simple", | |
154 | "where": [["i", "<", 1]], | |
155 | "row": {"s": "newstring"}}]' \ | |
156 | '["idltest", | |
157 | {"op": "delete", | |
158 | "table": "simple", | |
159 | "where": [["i", "==", 0]]}]' \ | |
160 | 'reconnect']], | |
161 | [[000: empty | |
162 | 001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]}]} | |
163 | 002: i=0 r=0 b=false s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
164 | 002: 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> | |
165 | 003: {"error":null,"result":[{"count":2}]} | |
166 | 004: i=0 r=0 b=true s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
167 | 004: 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> | |
168 | 005: {"error":null,"result":[{"count":2}]} | |
169 | 006: i=0 r=123.5 b=true s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
170 | 006: 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> | |
171 | 007: {"error":null,"result":[{"uuid":["uuid","<6>"]}]} | |
172 | 008: i=-1 r=125 b=false s= u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
173 | 008: i=0 r=123.5 b=true s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
174 | 008: 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> | |
175 | 009: {"error":null,"result":[{"count":2}]} | |
176 | 010: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
177 | 010: i=0 r=123.5 b=true s=newstring u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
178 | 010: 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> | |
179 | 011: {"error":null,"result":[{"count":1}]} | |
180 | 012: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
181 | 012: 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> | |
182 | 013: reconnect | |
183 | 014: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
184 | 014: 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> | |
185 | 015: done | |
186 | ]]) | |
187 | ||
188 | OVSDB_CHECK_IDL([simple idl, initially populated], | |
189 | [['["idltest", | |
190 | {"op": "insert", | |
191 | "table": "simple", | |
192 | "row": {"i": 1, | |
193 | "r": 2.0, | |
194 | "b": true, | |
195 | "s": "mystring", | |
196 | "u": ["uuid", "84f5c8f5-ac76-4dbc-a24f-8860eb407fc1"], | |
197 | "ia": ["set", [1, 2, 3]], | |
198 | "ra": ["set", [-0.5]], | |
199 | "ba": ["set", [true]], | |
200 | "sa": ["set", ["abc", "def"]], | |
201 | "ua": ["set", [["uuid", "69443985-7806-45e2-b35f-574a04e720f9"], | |
202 | ["uuid", "aad11ef0-816a-4b01-93e6-03b8b4256b98"]]]}}, | |
203 | {"op": "insert", | |
204 | "table": "simple", | |
205 | "row": {}}]']], | |
206 | [['["idltest", | |
207 | {"op": "update", | |
208 | "table": "simple", | |
209 | "where": [], | |
210 | "row": {"b": true}}]']], | |
211 | [[000: i=0 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
212 | 000: 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> | |
213 | 001: {"error":null,"result":[{"count":2}]} | |
214 | 002: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
215 | 002: 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> | |
216 | 003: done | |
217 | ]]) | |
218 | ||
219 | OVSDB_CHECK_IDL([simple idl, writing via IDL], | |
220 | [['["idltest", | |
221 | {"op": "insert", | |
222 | "table": "simple", | |
223 | "row": {"i": 1, | |
224 | "r": 2.0, | |
225 | "b": true, | |
226 | "s": "mystring", | |
227 | "u": ["uuid", "84f5c8f5-ac76-4dbc-a24f-8860eb407fc1"], | |
228 | "ia": ["set", [1, 2, 3]], | |
229 | "ra": ["set", [-0.5]], | |
230 | "ba": ["set", [true]], | |
231 | "sa": ["set", ["abc", "def"]], | |
232 | "ua": ["set", [["uuid", "69443985-7806-45e2-b35f-574a04e720f9"], | |
233 | ["uuid", "aad11ef0-816a-4b01-93e6-03b8b4256b98"]]]}}, | |
234 | {"op": "insert", | |
235 | "table": "simple", | |
236 | "row": {}}]']], | |
237 | [['verify 0 b, verify 1 r, set 0 b 1, set 1 r 3.5' \ | |
238 | 'insert 2, verify 2 i, verify 1 b, delete 1']], | |
239 | [[000: i=0 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
240 | 000: 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> | |
241 | 001: commit, status=success | |
242 | 002: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
243 | 002: 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> | |
244 | 003: commit, status=success | |
245 | 004: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
246 | 004: i=2 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<6> | |
247 | 005: done | |
248 | ]]) | |
249 | ||
250 | OVSDB_CHECK_IDL([simple idl, handling verification failure], | |
251 | [['["idltest", | |
252 | {"op": "insert", | |
253 | "table": "simple", | |
254 | "row": {"i": 1, | |
255 | "r": 2.0}}, | |
256 | {"op": "insert", | |
257 | "table": "simple", | |
258 | "row": {}}]']], | |
259 | [['set 0 b 1' \ | |
260 | '+["idltest", | |
261 | {"op": "update", | |
262 | "table": "simple", | |
263 | "where": [["i", "==", 1]], | |
264 | "row": {"r": 5.0}}]' \ | |
265 | '+verify 1 r, set 1 r 3' \ | |
266 | 'verify 1 r, set 1 r 3' \ | |
267 | ]], | |
268 | [[000: i=0 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
269 | 000: i=1 r=2 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2> | |
270 | 001: commit, status=success | |
271 | 002: {"error":null,"result":[{"count":1}]} | |
272 | 003: commit, status=try again | |
273 | 004: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
274 | 004: i=1 r=5 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2> | |
275 | 005: commit, status=success | |
276 | 006: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
277 | 006: i=1 r=3 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2> | |
278 | 007: done | |
279 | ]]) | |
280 | ||
281 | OVSDB_CHECK_IDL([simple idl, increment operation], | |
282 | [['["idltest", | |
283 | {"op": "insert", | |
284 | "table": "simple", | |
285 | "row": {}}]']], | |
286 | [['set 0 r 2.0, increment 0']], | |
287 | [[000: i=0 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
288 | 001: commit, status=success, increment=1 | |
289 | 002: i=1 r=2 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
290 | 003: done | |
291 | ]]) | |
292 | ||
293 | OVSDB_CHECK_IDL([simple idl, aborting], | |
294 | [['["idltest", | |
295 | {"op": "insert", | |
296 | "table": "simple", | |
297 | "row": {}}]']], | |
298 | [['set 0 r 2.0, abort' \ | |
299 | '+set 0 b 1']], | |
300 | [[000: i=0 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
301 | 001: commit, status=aborted | |
302 | 002: commit, status=success | |
303 | 003: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
304 | 004: done | |
305 | ]]) | |
306 | ||
307 | OVSDB_CHECK_IDL([simple idl, destroy without commit or abort], | |
308 | [['["idltest", | |
309 | {"op": "insert", | |
310 | "table": "simple", | |
311 | "row": {}}]']], | |
312 | [['set 0 r 2.0, destroy' \ | |
313 | '+set 0 b 1']], | |
314 | [[000: i=0 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
315 | 001: destroy | |
316 | 002: commit, status=success | |
317 | 003: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
318 | 004: done | |
319 | ]]) | |
320 | ||
321 | OVSDB_CHECK_IDL([self-linking idl, consistent ops], | |
322 | [], | |
323 | [['["idltest", | |
324 | {"op": "insert", | |
325 | "table": "link1", | |
326 | "row": {"i": 0, "k": ["named-uuid", "self"]}, | |
327 | "uuid-name": "self"}]' \ | |
328 | '["idltest", | |
329 | {"op": "insert", | |
330 | "table": "link1", | |
331 | "row": {"i": 1, "k": ["named-uuid", "row2"]}, | |
332 | "uuid-name": "row1"}, | |
333 | {"op": "insert", | |
334 | "table": "link1", | |
335 | "row": {"i": 2, "k": ["named-uuid", "row1"]}, | |
336 | "uuid-name": "row2"}]' \ | |
337 | '["idltest", | |
338 | {"op": "update", | |
339 | "table": "link1", | |
340 | "where": [["i", "==", 1]], | |
341 | "row": {"k": ["uuid", "#1#"]}}]' \ | |
342 | '["idltest", | |
343 | {"op": "update", | |
344 | "table": "link1", | |
345 | "where": [], | |
346 | "row": {"k": ["uuid", "#0#"]}}]']], | |
347 | [[000: empty | |
348 | 001: {"error":null,"result":[{"uuid":["uuid","<0>"]}]} | |
349 | 002: i=0 k=0 ka=[] l2= uuid=<0> | |
350 | 003: {"error":null,"result":[{"uuid":["uuid","<1>"]},{"uuid":["uuid","<2>"]}]} | |
351 | 004: i=0 k=0 ka=[] l2= uuid=<0> | |
352 | 004: i=1 k=2 ka=[] l2= uuid=<1> | |
353 | 004: i=2 k=1 ka=[] l2= uuid=<2> | |
354 | 005: {"error":null,"result":[{"count":1}]} | |
355 | 006: i=0 k=0 ka=[] l2= uuid=<0> | |
356 | 006: i=1 k=1 ka=[] l2= uuid=<1> | |
357 | 006: i=2 k=1 ka=[] l2= uuid=<2> | |
358 | 007: {"error":null,"result":[{"count":3}]} | |
359 | 008: i=0 k=0 ka=[] l2= uuid=<0> | |
360 | 008: i=1 k=0 ka=[] l2= uuid=<1> | |
361 | 008: i=2 k=0 ka=[] l2= uuid=<2> | |
362 | 009: done | |
363 | ]]) | |
364 | ||
365 | OVSDB_CHECK_IDL([self-linking idl, inconsistent ops], | |
366 | [], | |
367 | [['["idltest", | |
368 | {"op": "insert", | |
369 | "table": "link1", | |
370 | "row": {"i": 0, "k": ["uuid", "cf197cc5-c8c9-42f5-82d5-c71a9f2cb96b"]}}]' \ | |
371 | '+["idltest", | |
372 | {"op": "insert", | |
373 | "table": "link1", | |
374 | "uuid-name": "one", | |
375 | "row": {"i": 1, "k": ["named-uuid", "one"]}}, | |
376 | {"op": "insert", | |
377 | "table": "link1", | |
378 | "row": {"i": 2, "k": ["named-uuid", "one"]}}]' \ | |
379 | '["idltest", | |
380 | {"op": "update", | |
381 | "table": "link1", | |
382 | "where": [], | |
383 | "row": {"k": ["uuid", "c2fca39a-e69a-42a4-9c56-5eca85839ce9"]}}]' \ | |
384 | '+["idltest", | |
385 | {"op": "delete", | |
386 | "table": "link1", | |
387 | "where": [["_uuid", "==", ["uuid", "#1#"]]]}]' \ | |
388 | '+["idltest", | |
389 | {"op": "delete", | |
390 | "table": "link1", | |
391 | "where": [["_uuid", "==", ["uuid", "#2#"]]]}]' \ | |
392 | '["idltest", | |
393 | {"op": "delete", | |
394 | "table": "link1", | |
395 | "where": []}]' \ | |
396 | ]], | |
397 | [[000: empty | |
398 | 001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"details":"Table link1 column k row <0> references nonexistent row <1> in table link1.","error":"referential integrity violation"}]} | |
399 | 002: {"error":null,"result":[{"uuid":["uuid","<2>"]},{"uuid":["uuid","<3>"]}]} | |
400 | 003: i=1 k=1 ka=[] l2= uuid=<2> | |
401 | 003: i=2 k=1 ka=[] l2= uuid=<3> | |
402 | 004: {"error":null,"result":[{"count":2},{"details":"Table link1 column k row <x> references nonexistent row <4> in table link1.","error":"referential integrity violation"}]} | |
403 | 005: {"error":null,"result":[{"count":1},{"details":"cannot delete link1 row <2> because of 1 remaining reference(s)","error":"referential integrity violation"}]} | |
404 | 006: {"error":null,"result":[{"count":1}]} | |
405 | 007: i=1 k=1 ka=[] l2= uuid=<2> | |
406 | 008: {"error":null,"result":[{"count":1}]} | |
407 | 009: empty | |
408 | 010: done | |
409 | ]], | |
410 | [], | |
411 | [[sed -e '/004:/s/row <[23]> references/row <x> references/']]) | |
412 | ||
413 | OVSDB_CHECK_IDL([self-linking idl, sets], | |
414 | [], | |
415 | [['["idltest", | |
416 | {"op": "insert", | |
417 | "table": "link1", | |
418 | "row": {"i": 0, "k": ["named-uuid", "i0"], "ka": ["set", [["named-uuid", "i0"]]]}, | |
419 | "uuid-name": "i0"}, | |
420 | {"op": "insert", | |
421 | "table": "link1", | |
422 | "row": {"i": 1, "k": ["named-uuid", "i0"], "ka": ["set", [["named-uuid", "i1"]]]}, | |
423 | "uuid-name": "i1"}, | |
424 | {"op": "insert", | |
425 | "table": "link1", | |
426 | "row": {"i": 2, "k": ["named-uuid", "i0"], "ka": ["set", [["named-uuid", "i2"]]]}, | |
427 | "uuid-name": "i2"}, | |
428 | {"op": "insert", | |
429 | "table": "link1", | |
430 | "row": {"i": 3, "k": ["named-uuid", "i0"], "ka": ["set", [["named-uuid", "i3"]]]}, | |
431 | "uuid-name": "i3"}]' \ | |
432 | '["idltest", | |
433 | {"op": "update", | |
434 | "table": "link1", | |
435 | "where": [], | |
436 | "row": {"ka": ["set", [["uuid", "#0#"], ["uuid", "#1#"], ["uuid", "#2#"], ["uuid", "#3#"]]]}}]' \ | |
437 | '["idltest", | |
438 | {"op": "update", | |
439 | "table": "link1", | |
440 | "where": [["i", "==", 2]], | |
441 | "row": {"ka": ["set", [["uuid", "#0#"], ["uuid", "88702e78-845b-4a6e-ad08-cf68922ae84a"], ["uuid", "#2#"]]]}}]' \ | |
442 | '+["idltest", | |
443 | {"op": "delete", | |
444 | "table": "link1", | |
445 | "where": []}]']], | |
446 | [[000: empty | |
447 | 001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"uuid":["uuid","<2>"]},{"uuid":["uuid","<3>"]}]} | |
448 | 002: i=0 k=0 ka=[0] l2= uuid=<0> | |
449 | 002: i=1 k=0 ka=[1] l2= uuid=<1> | |
450 | 002: i=2 k=0 ka=[2] l2= uuid=<2> | |
451 | 002: i=3 k=0 ka=[3] l2= uuid=<3> | |
452 | 003: {"error":null,"result":[{"count":4}]} | |
453 | 004: i=0 k=0 ka=[0 1 2 3] l2= uuid=<0> | |
454 | 004: i=1 k=0 ka=[0 1 2 3] l2= uuid=<1> | |
455 | 004: i=2 k=0 ka=[0 1 2 3] l2= uuid=<2> | |
456 | 004: i=3 k=0 ka=[0 1 2 3] l2= uuid=<3> | |
457 | 005: {"error":null,"result":[{"count":1},{"details":"Table link1 column ka row <2> references nonexistent row <4> in table link1.","error":"referential integrity violation"}]} | |
458 | 006: {"error":null,"result":[{"count":4}]} | |
459 | 007: empty | |
460 | 008: done | |
461 | ]]) | |
462 | ||
463 | OVSDB_CHECK_IDL([external-linking idl, consistent ops], | |
464 | [], | |
465 | [['["idltest", | |
466 | {"op": "insert", | |
467 | "table": "link2", | |
468 | "row": {"i": 0}, | |
469 | "uuid-name": "row0"}, | |
470 | {"op": "insert", | |
471 | "table": "link1", | |
472 | "row": {"i": 1, "k": ["named-uuid", "row1"], "l2": ["set", [["named-uuid", "row0"]]]}, | |
473 | "uuid-name": "row1"}]']], | |
474 | [[000: empty | |
475 | 001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]}]} | |
476 | 002: i=0 l1= uuid=<0> | |
477 | 002: i=1 k=1 ka=[] l2=0 uuid=<1> | |
478 | 003: done | |
479 | ]]) | |
480 | ||
481 | OVSDB_CHECK_IDL_PY([external-linking idl, insert ops], | |
482 | [], | |
483 | [['linktest']], | |
484 | [[000: empty | |
485 | 001: commit, status=success | |
486 | 002: i=1 k=1 ka=[1] l2= uuid=<0> | |
487 | 002: i=2 k=1 ka=[1 2] l2= uuid=<1> | |
488 | 003: done | |
489 | ]]) | |
490 | ||
491 | OVSDB_CHECK_IDL_PY([getattr idl, insert ops], | |
492 | [], | |
493 | [['getattrtest']], | |
494 | [[000: empty | |
495 | 001: commit, status=success | |
496 | 002: i=2 k=2 ka=[] l2= uuid=<0> | |
497 | 003: done | |
498 | ]]) |