]>
Commit | Line | Data |
---|---|---|
c3bb4bd7 BP |
1 | AT_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 |
19 | m4_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 |
36 | m4_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 |
53 | m4_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 | ||
59 | m4_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 |
76 | m4_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 |
83 | m4_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 |
102 | m4_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 |
109 | m4_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 |
131 | m4_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 |
137 | m4_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 |
145 | m4_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 | ||
167 | OVSDB_CHECK_IDL_PASSIVE_TCP_PY([simple passive idl, initially empty, select empty], | |
168 | [], | |
169 | [['["idltest",{"op":"select","table":"link1","where":[]}]']], | |
170 | [[000: empty | |
171 | 001: {"error":null,"result":[{"rows":[]}]} | |
172 | 002: done | |
173 | ]]) | |
174 | ||
c3bb4bd7 BP |
175 | OVSDB_CHECK_IDL([simple idl, initially empty, no ops], |
176 | [], | |
177 | [], | |
178 | [000: empty | |
179 | 001: done | |
180 | ]) | |
181 | ||
182 | OVSDB_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 | |
234 | 001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]}]} | |
235 | 002: i=0 r=0 b=false s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
7fae24e6 | 236 | 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> |
c3bb4bd7 BP |
237 | 003: {"error":null,"result":[{"count":2}]} |
238 | 004: i=0 r=0 b=true s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
7fae24e6 | 239 | 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> |
c3bb4bd7 BP |
240 | 005: {"error":null,"result":[{"count":2}]} |
241 | 006: i=0 r=123.5 b=true s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
7fae24e6 | 242 | 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> |
c3bb4bd7 BP |
243 | 007: {"error":null,"result":[{"uuid":["uuid","<6>"]}]} |
244 | 008: i=-1 r=125 b=false s= u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
245 | 008: i=0 r=123.5 b=true s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
7fae24e6 | 246 | 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> |
c3bb4bd7 BP |
247 | 009: {"error":null,"result":[{"count":2}]} |
248 | 010: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
249 | 010: i=0 r=123.5 b=true s=newstring u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
7fae24e6 | 250 | 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> |
c3bb4bd7 BP |
251 | 011: {"error":null,"result":[{"count":1}]} |
252 | 012: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
7fae24e6 | 253 | 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> |
c3bb4bd7 BP |
254 | 013: reconnect |
255 | 014: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
7fae24e6 | 256 | 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> |
c3bb4bd7 BP |
257 | 015: done |
258 | ]]) | |
259 | ||
260 | OVSDB_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 | 284 | 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> |
c3bb4bd7 BP |
285 | 001: {"error":null,"result":[{"count":2}]} |
286 | 002: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
7fae24e6 | 287 | 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> |
c3bb4bd7 BP |
288 | 003: done |
289 | ]]) | |
290 | ||
475281c0 | 291 | OVSDB_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 | 312 | 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> |
475281c0 BP |
313 | 001: commit, status=success |
314 | 002: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
7fae24e6 | 315 | 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> |
475281c0 BP |
316 | 003: commit, status=success |
317 | 004: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
318 | 004: i=2 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<6> | |
319 | 005: done | |
320 | ]]) | |
321 | ||
a91c6104 BP |
322 | OVSDB_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> | |
341 | 000: i=1 r=2 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2> | |
342 | 001: commit, status=success | |
343 | 002: {"error":null,"result":[{"count":1}]} | |
94fbe1aa | 344 | 003: commit, status=try again |
a91c6104 BP |
345 | 004: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> |
346 | 004: i=1 r=5 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2> | |
347 | 005: commit, status=success | |
348 | 006: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
349 | 006: i=1 r=3 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2> | |
350 | 007: done | |
351 | ]]) | |
352 | ||
b54e22e9 | 353 | OVSDB_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> |
360 | 001: commit, status=success, increment=1 | |
361 | 002: i=1 r=2 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
362 | 003: done | |
363 | ]]) | |
364 | ||
2096903b BP |
365 | OVSDB_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> | |
373 | 001: commit, status=aborted | |
374 | 002: commit, status=success | |
375 | 003: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
376 | 004: done | |
377 | ]]) | |
378 | ||
379 | OVSDB_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> | |
387 | 001: destroy | |
388 | 002: commit, status=success | |
389 | 003: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
390 | 004: done | |
391 | ]]) | |
392 | ||
16ebb90e LS |
393 | OVSDB_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 | |
403 | 001: empty | |
404 | 002: change conditions | |
405 | 003: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
406 | 004: done | |
407 | ]]) | |
408 | ||
409 | OVSDB_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 | |
419 | 001: empty | |
420 | 002: change conditions | |
421 | 003: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
422 | 004: done | |
423 | ]]) | |
424 | ||
425 | OVSDB_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 | |
440 | 001: empty | |
441 | 002: change conditions | |
442 | 003: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
443 | 003: i=2 r=3 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2> | |
444 | 004: done | |
445 | ]]) | |
446 | ||
447 | OVSDB_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 | |
457 | 001: empty | |
458 | 002: change conditions | |
459 | 003: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
460 | 004: done | |
461 | ]]) | |
462 | ||
463 | OVSDB_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 | |
480 | 001: empty | |
481 | 002: change conditions | |
482 | 003: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
483 | 004: change conditions | |
484 | 005: empty | |
485 | 006: {"error":null,"result":[{"uuid":["uuid","<2>"]}]} | |
486 | 007: i=2 r=3 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2> | |
487 | 008: done | |
488 | ]]) | |
489 | ||
490 | OVSDB_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 | |
515 | 001: empty | |
516 | 002: change conditions | |
517 | 003: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
518 | 004: change conditions | |
519 | 005: i=0 k=0 ka=[] l2= uuid=<2> | |
520 | 005: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
521 | 006: change conditions | |
522 | 007: {"error":null,"result":[{"uuid":["uuid","<3>"]}]} | |
523 | 008: i=0 k=0 ka=[] l2= uuid=<2> | |
524 | 008: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
525 | 008: i=3 l1= uuid=<3> | |
526 | 009: done | |
527 | ]]) | |
528 | ||
c3bb4bd7 BP |
529 | OVSDB_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 | |
556 | 001: {"error":null,"result":[{"uuid":["uuid","<0>"]}]} | |
e9011ac8 | 557 | 002: i=0 k=0 ka=[] l2= uuid=<0> |
fbf925e4 | 558 | 003: {"error":null,"result":[{"uuid":["uuid","<1>"]},{"uuid":["uuid","<2>"]}]} |
e9011ac8 BP |
559 | 004: i=0 k=0 ka=[] l2= uuid=<0> |
560 | 004: i=1 k=2 ka=[] l2= uuid=<1> | |
561 | 004: i=2 k=1 ka=[] l2= uuid=<2> | |
c3bb4bd7 | 562 | 005: {"error":null,"result":[{"count":1}]} |
e9011ac8 BP |
563 | 006: i=0 k=0 ka=[] l2= uuid=<0> |
564 | 006: i=1 k=1 ka=[] l2= uuid=<1> | |
565 | 006: i=2 k=1 ka=[] l2= uuid=<2> | |
c3bb4bd7 | 566 | 007: {"error":null,"result":[{"count":3}]} |
e9011ac8 BP |
567 | 008: i=0 k=0 ka=[] l2= uuid=<0> |
568 | 008: i=1 k=0 ka=[] l2= uuid=<1> | |
569 | 008: i=2 k=0 ka=[] l2= uuid=<2> | |
c3bb4bd7 BP |
570 | 009: done |
571 | ]]) | |
572 | ||
573 | OVSDB_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 | 606 | 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"}]} |
0d0f05b9 BP |
607 | 002: {"error":null,"result":[{"uuid":["uuid","<2>"]},{"uuid":["uuid","<3>"]}]} |
608 | 003: i=1 k=1 ka=[] l2= uuid=<2> | |
609 | 003: i=2 k=1 ka=[] l2= uuid=<3> | |
254604d8 | 610 | 004: {"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 |
611 | 005: {"error":null,"result":[{"count":1},{"details":"cannot delete link1 row <2> because of 1 remaining reference(s)","error":"referential integrity violation"}]} |
612 | 006: {"error":null,"result":[{"count":1}]} | |
613 | 007: i=1 k=1 ka=[] l2= uuid=<2> | |
614 | 008: {"error":null,"result":[{"count":1}]} | |
615 | 009: empty | |
616 | 010: done | |
254604d8 BP |
617 | ]], |
618 | [], | |
619 | [[sed -e '/004:/s/row <[23]> references/row <x> references/']]) | |
c3bb4bd7 BP |
620 | |
621 | OVSDB_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 |
655 | 001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"uuid":["uuid","<2>"]},{"uuid":["uuid","<3>"]}]} | |
0d0f05b9 BP |
656 | 002: i=0 k=0 ka=[0] l2= uuid=<0> |
657 | 002: i=1 k=0 ka=[1] l2= uuid=<1> | |
658 | 002: i=2 k=0 ka=[2] l2= uuid=<2> | |
659 | 002: i=3 k=0 ka=[3] l2= uuid=<3> | |
c3bb4bd7 | 660 | 003: {"error":null,"result":[{"count":4}]} |
0d0f05b9 BP |
661 | 004: i=0 k=0 ka=[0 1 2 3] l2= uuid=<0> |
662 | 004: i=1 k=0 ka=[0 1 2 3] l2= uuid=<1> | |
663 | 004: i=2 k=0 ka=[0 1 2 3] l2= uuid=<2> | |
664 | 004: i=3 k=0 ka=[0 1 2 3] l2= uuid=<3> | |
97f7803b | 665 | 005: {"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 |
666 | 006: {"error":null,"result":[{"count":4}]} |
667 | 007: empty | |
668 | 008: done | |
c3bb4bd7 BP |
669 | ]]) |
670 | ||
e9011ac8 BP |
671 | OVSDB_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 | |
683 | 001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]}]} | |
684 | 002: i=0 l1= uuid=<0> | |
0d0f05b9 | 685 | 002: i=1 k=1 ka=[] l2=0 uuid=<1> |
e9011ac8 BP |
686 | 003: done |
687 | ]]) | |
225b582a IY |
688 | |
689 | OVSDB_CHECK_IDL_PY([external-linking idl, insert ops], | |
690 | [], | |
691 | [['linktest']], | |
692 | [[000: empty | |
693 | 001: commit, status=success | |
694 | 002: i=1 k=1 ka=[1] l2= uuid=<0> | |
695 | 002: i=2 k=1 ka=[1 2] l2= uuid=<1> | |
696 | 003: done | |
697 | ]]) | |
3b4c362f IY |
698 | |
699 | OVSDB_CHECK_IDL_PY([getattr idl, insert ops], | |
700 | [], | |
701 | [['getattrtest']], | |
702 | [[000: empty | |
703 | 001: commit, status=success | |
704 | 002: i=2 k=2 ka=[] l2= uuid=<0> | |
705 | 003: done | |
706 | ]]) | |
d18e52e3 | 707 | |
d7d417fc TW |
708 | OVSDB_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> | |
718 | 000: i=1 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2> | |
719 | 001: commit, status=success, events=create|2|None, delete|0|None, update|1|b | |
720 | 002: i=1 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2> | |
721 | 002: i=2 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<3> | |
722 | 003: done | |
723 | ]]) | |
724 | ||
d18e52e3 BP |
725 | AT_SETUP([idl handling of missing tables and columns - C]) |
726 | AT_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. | |
732 | AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest2.ovsschema], | |
733 | [0], [stdout], [ignore]) | |
8a16ab90 LR |
734 | 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]) |
735 | on_exit 'kill `cat pid`' | |
d18e52e3 BP |
736 | AT_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 |
761 | AT_CHECK([sort stdout | ${PERL} $srcdir/uuidfilt.pl], [0], |
762 | [[000: empty | |
763 | 001: {"error":null,"result":[{"uuid":["uuid","<0>"]}]} | |
764 | 002: i=0 k=0 ka=[] l2= uuid=<0> | |
765 | 003: {"error":null,"result":[{"uuid":["uuid","<1>"]},{"uuid":["uuid","<2>"]}]} | |
766 | 004: i=0 k=0 ka=[] l2= uuid=<0> | |
767 | 004: i=1 k=2 ka=[] l2= uuid=<1> | |
768 | 004: i=2 k=1 ka=[] l2= uuid=<2> | |
769 | 005: {"error":null,"result":[{"count":1}]} | |
770 | 006: i=0 k=0 ka=[] l2= uuid=<0> | |
771 | 006: i=1 k=1 ka=[] l2= uuid=<1> | |
772 | 006: i=2 k=1 ka=[] l2= uuid=<2> | |
773 | 007: {"error":null,"result":[{"count":3}]} | |
774 | 008: i=0 k=0 ka=[] l2= uuid=<0> | |
775 | 008: i=1 k=0 ka=[] l2= uuid=<1> | |
776 | 008: i=2 k=0 ka=[] l2= uuid=<2> | |
777 | 009: done | |
7427f2a4 | 778 | ]]) |
d18e52e3 BP |
779 | |
780 | # Check that ovsdb-idl figured out that table link2 and column l2 are missing. | |
781 | AT_CHECK([grep ovsdb_idl stderr | sort], [0], [dnl | |
782 | test-ovsdb|ovsdb_idl|idltest database lacks link2 table (database needs upgrade?) | |
783 | test-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 | 789 | AT_CHECK([grep -c '"monitor\|monitor_cond"' stderr], [0], [1 |
d18e52e3 | 790 | ]) |
c383f3bf LS |
791 | AT_CHECK([grep '"monitor\|monitor_cond"' stderr | grep link2], [1]) |
792 | AT_CHECK([grep '"monitor\|monitor_cond"' stderr | grep l2], [1]) | |
793 | AT_CHECK([grep '"monitor\|monitor_cond"' stderr | grep -c '"link1"'], [0], [1 | |
d18e52e3 | 794 | ]) |
c383f3bf | 795 | AT_CHECK([grep '"monitor\|monitor_cond"' stderr | grep -c '"ua"'], [0], [1 |
d18e52e3 BP |
796 | ]) |
797 | OVSDB_SERVER_SHUTDOWN | |
798 | AT_CLEANUP | |
80c12152 SA |
799 | |
800 | m4_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 | ||
817 | m4_define([OVSDB_CHECK_IDL_FETCH_COLUMNS], | |
818 | [OVSDB_CHECK_IDL_FETCH_COLUMNS_PY($@)]) | |
819 | ||
820 | OVSDB_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> | |
841 | 000: i=1 uuid=<1> | |
842 | 001: commit, status=success | |
843 | 002: i=0 r=0 uuid=<0> | |
844 | 002: i=1 uuid=<1> | |
845 | 003: done | |
846 | ]]) | |
932104f4 | 847 | |
897c8064 LS |
848 | m4_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 | ||
864 | m4_define([OVSDB_CHECK_IDL_WO_MONITOR_COND], | |
865 | [OVSDB_CHECK_IDL_WO_MONITOR_COND_PY($@)]) | |
866 | ||
867 | ||
868 | OVSDB_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 | |
919 | 001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]}]} | |
920 | 002: i=0 r=0 b=false s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
921 | 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> | |
922 | 003: {"error":null,"result":[{"count":2}]} | |
923 | 004: i=0 r=0 b=true s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
924 | 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> | |
925 | 005: {"error":null,"result":[{"count":2}]} | |
926 | 006: i=0 r=123.5 b=true s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
927 | 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> | |
928 | 007: {"error":null,"result":[{"uuid":["uuid","<6>"]}]} | |
929 | 008: i=-1 r=125 b=false s= u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
930 | 008: i=0 r=123.5 b=true s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
931 | 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> | |
932 | 009: {"error":null,"result":[{"count":2}]} | |
933 | 010: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
934 | 010: i=0 r=123.5 b=true s=newstring u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
935 | 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> | |
936 | 011: {"error":null,"result":[{"count":1}]} | |
937 | 012: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
938 | 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> | |
939 | 013: reconnect | |
940 | 014: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
941 | 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> | |
942 | 015: done | |
943 | ]]) | |
944 | ||
932104f4 SA |
945 | m4_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 | ||
961 | m4_define([OVSDB_CHECK_IDL_TRACK], | |
962 | [OVSDB_CHECK_IDL_TRACK_C($@)]) | |
963 | ||
964 | OVSDB_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 | 988 | 000: updated columns: b ba i ia r ra s sa u ua |
932104f4 SA |
989 | 001: {"error":null,"result":[{"count":2}]} |
990 | 002: i=0 r=0 b=true s= u=<4> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<5> | |
991 | 002: 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 | 992 | 002: updated columns: b |
932104f4 SA |
993 | 003: done |
994 | ]]) | |
995 | ||
996 | OVSDB_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 | |
1048 | 001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]}]} | |
1049 | 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=<0> | |
32d37ce8 | 1050 | 002: updated columns: b ba i ia r ra s sa u ua |
932104f4 SA |
1051 | 003: {"error":null,"result":[{"count":2}]} |
1052 | 004: i=0 r=0 b=true s= u=<5> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
32d37ce8 | 1053 | 004: updated columns: b |
932104f4 SA |
1054 | 005: {"error":null,"result":[{"count":2}]} |
1055 | 006: i=0 r=123.5 b=true s= u=<5> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
1056 | 006: 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 |
1057 | 006: updated columns: r |
1058 | 006: updated columns: r | |
932104f4 SA |
1059 | 007: {"error":null,"result":[{"uuid":["uuid","<6>"]}]} |
1060 | 008: i=-1 r=125 b=false s= u=<5> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
32d37ce8 | 1061 | 008: updated columns: ba i ia r ra |
932104f4 SA |
1062 | 009: {"error":null,"result":[{"count":2}]} |
1063 | 010: i=-1 r=125 b=false s=newstring u=<5> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
1064 | 010: i=0 r=123.5 b=true s=newstring u=<5> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
32d37ce8 SA |
1065 | 010: updated columns: s |
1066 | 010: updated columns: s | |
932104f4 SA |
1067 | 011: {"error":null,"result":[{"count":1}]} |
1068 | 012: ##deleted## uuid=<1> | |
1069 | 013: reconnect | |
1070 | 014: i=-1 r=125 b=false s=newstring u=<5> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
1071 | 014: 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 |
1072 | 014: updated columns: b ba i ia r ra s sa u ua |
1073 | 014: updated columns: ba i ia r ra s | |
932104f4 SA |
1074 | 015: done |
1075 | ]]) | |
7251075c EA |
1076 | |
1077 | m4_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 | ||
1093 | OVSDB_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 | |
1099 | 001: name=myString1 smap=[[key1 : value1],[key2 : value2]] imap=[] | |
1100 | 002: After insert element | |
1101 | 003: name=String2 smap=[[key1 : myList1],[key2 : value2]] imap=[[3 : myids2]] | |
1102 | 004: After insert duplicated element | |
1103 | 005: name=String2 smap=[[key1 : myList1],[key2 : value2]] imap=[[3 : myids2]] | |
1104 | 006: After delete element | |
1105 | 007: name=String2 smap=[[key2 : value2]] imap=[[3 : myids2]] | |
1106 | 008: After trying to delete a deleted element | |
1107 | 009: name=String2 smap=[[key2 : value2]] imap=[[3 : myids2]] | |
1108 | 010: End test | |
1109 | ]]) | |
a7261bf7 | 1110 | |
a59912a0 RM |
1111 | OVSDB_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 | 1117 | 001: commit, status=success |
330b9c9c | 1118 | 002: name=String2 smap=[(key1 myList1) (key2 value2)] imap=[(3 myids2)] |
a59912a0 | 1119 | 003: commit, status=success |
330b9c9c AB |
1120 | 004: name=String2 smap=[(key1 myList1) (key2 myList2) (key3 myList3)] imap=[(3 myids2)] |
1121 | 005: commit, status=success | |
1122 | 006: name=String2 smap=[(key2 myList2)] imap=[(3 myids2)] | |
1123 | 007: done | |
a59912a0 RM |
1124 | ]]) |
1125 | ||
f1ab6e06 RM |
1126 | m4_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 | ||
1142 | OVSDB_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 | |
1148 | 001: name=mySet1 uset=[[<0>],[<1>]] uref=[] | |
1149 | 002: After rename+add new value | |
1150 | 003: name=String2 uset=[[<0>],[<1>],[<2>]] uref=[] | |
1151 | 004: After add new value | |
1152 | 005: name=String2 uset=[[<0>],[<1>],[<2>],[<3>]] uref=[] | |
1153 | 006: After delete value | |
1154 | 007: name=String2 uset=[[<0>],[<1>],[<3>]] uref=[] | |
1155 | 008: After trying to delete a deleted value | |
1156 | 009: name=String2 uset=[[<0>],[<1>],[<3>]] uref=[] | |
1157 | 010: After add to other table + set of strong ref | |
1158 | 011: name=String2 uset=[[<0>],[<1>],[<3>]] uref=[[<4>]] | |
1159 | 012: End test | |
1160 | ]]) | |
1161 | ||
a59912a0 | 1162 | OVSDB_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>] |
1171 | 001: commit, status=success | |
1172 | 002: name=String2 uset=[<0> <1> <2>] | |
1173 | 003: commit, status=success | |
1174 | 004: name=String2 uset=[<0> <1> <2> <3>] | |
1175 | 005: commit, status=success | |
1176 | 006: name=String2 uset=[<0> <1> <3>] | |
1177 | 007: commit, status=success | |
1178 | 008: name=String2 uset=[<0> <1> <3>] | |
330b9c9c AB |
1179 | 009: commit, status=success |
1180 | 010: name=String2 uset=[<3>] | |
b3220c67 AB |
1181 | 011: commit, status=success |
1182 | 012: name=String2 uset=[<3>] | |
1183 | 012: name=String3 uset=[<4>] | |
1184 | 013: done | |
a59912a0 RM |
1185 | ]]) |
1186 | ||
a7261bf7 NS |
1187 | m4_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 | ||
1201 | ||
1202 | m4_define([OVSDB_CHECK_IDL_NOTIFY], | |
1203 | [OVSDB_CHECK_IDL_NOTIFY_PY($@)]) | |
1204 | ||
1205 | ||
1206 | OVSDB_CHECK_IDL_NOTIFY([simple idl verify notify], | |
1207 | [['track-notify' \ | |
1208 | '["idltest", | |
1209 | {"op": "insert", | |
1210 | "table": "simple", | |
1211 | "row": {"i": 1, | |
1212 | "r": 2.0, | |
1213 | "b": true, | |
1214 | "s": "mystring", | |
1215 | "u": ["uuid", "84f5c8f5-ac76-4dbc-a24f-8860eb407fc1"], | |
1216 | "ia": ["set", [1, 2, 3]], | |
1217 | "ra": ["set", [-0.5]], | |
1218 | "ba": ["set", [true]], | |
1219 | "sa": ["set", ["abc", "def"]], | |
1220 | "ua": ["set", [["uuid", "69443985-7806-45e2-b35f-574a04e720f9"], | |
1221 | ["uuid", "aad11ef0-816a-4b01-93e6-03b8b4256b98"]]]}}, | |
1222 | {"op": "insert", | |
1223 | "table": "simple", | |
1224 | "row": {}}]' \ | |
1225 | '["idltest", | |
1226 | {"op": "update", | |
1227 | "table": "simple", | |
1228 | "where": [], | |
1229 | "row": {"b": false}}]' \ | |
1230 | '["idltest", | |
1231 | {"op": "update", | |
1232 | "table": "simple", | |
1233 | "where": [], | |
1234 | "row": {"r": 123.5}}]' \ | |
1235 | '["idltest", | |
1236 | {"op": "insert", | |
1237 | "table": "simple", | |
1238 | "row": {"i": -1, | |
1239 | "r": 125, | |
1240 | "b": false, | |
1241 | "s": "", | |
1242 | "ia": ["set", [1]], | |
1243 | "ra": ["set", [1.5]], | |
1244 | "ba": ["set", [false]], | |
1245 | "sa": ["set", []], | |
1246 | "ua": ["set", []]}}]' \ | |
1247 | '["idltest", | |
1248 | {"op": "update", | |
1249 | "table": "simple", | |
1250 | "where": [["i", "<", 1]], | |
1251 | "row": {"s": "newstring"}}]' \ | |
1252 | '["idltest", | |
1253 | {"op": "delete", | |
1254 | "table": "simple", | |
1255 | "where": [["i", "==", 0]]}]' \ | |
1256 | 'reconnect']], | |
1257 | [[000: empty | |
1258 | 001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]}]} | |
1259 | 002: event:create, row={i=0 r=0 b=false s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>}, updates=None | |
1260 | 002: 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 | |
1261 | 002: i=0 r=0 b=false s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
1262 | 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> | |
1263 | 003: {"error":null,"result":[{"count":2}]} | |
1264 | 004: 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>} | |
1265 | 004: i=0 r=0 b=false s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
1266 | 004: 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> | |
1267 | 005: {"error":null,"result":[{"count":2}]} | |
1268 | 006: 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>} | |
1269 | 006: 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>} | |
1270 | 006: i=0 r=123.5 b=false s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
1271 | 006: 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> | |
1272 | 007: {"error":null,"result":[{"uuid":["uuid","<6>"]}]} | |
1273 | 008: 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 | |
1274 | 008: i=-1 r=125 b=false s= u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
1275 | 008: i=0 r=123.5 b=false s= u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
1276 | 008: 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> | |
1277 | 009: {"error":null,"result":[{"count":2}]} | |
1278 | 010: 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>} | |
1279 | 010: 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>} | |
1280 | 010: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
1281 | 010: i=0 r=123.5 b=false s=newstring u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1> | |
1282 | 010: 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> | |
1283 | 011: {"error":null,"result":[{"count":1}]} | |
1284 | 012: event:delete, row={i=0 r=123.5 b=false s=newstring u=<2> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>}, updates=None | |
1285 | 012: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
1286 | 012: 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> | |
1287 | 013: reconnect | |
1288 | 014: 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 | |
1289 | 014: 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 | |
1290 | 014: i=-1 r=125 b=false s=newstring u=<2> ia=[1] ra=[1.5] ba=[false] sa=[] ua=[] uuid=<6> | |
1291 | 014: 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> | |
1292 | 015: done | |
1293 | ]]) |