1 AT_BANNER([OVSDB -- execution])
3 m4_define([ORDINAL_SCHEMA],
8 "number": {"type": "integer"},
9 "name": {"type": "string"}}}}}]])
11 m4_define([CONSTRAINT_SCHEMA],
12 [[{"name": "constraints",
16 "positive": {"type": {"key": {"type": "integer",
17 "minInteger": 1}}}}}}}]])
19 # OVSDB_CHECK_EXECUTION(TITLE, SCHEMA, TRANSACTIONS, OUTPUT, [KEYWORDS])
21 # Runs "test-ovsdb execute" with the given SCHEMA and each of the
22 # TRANSACTIONS (which should be a quoted list of quoted strings).
24 # Checks that the overall output is OUTPUT, but UUIDs in the output
25 # are replaced by markers of the form <N> where N is a number. The
26 # first unique UUID is replaced by <0>, the next by <1>, and so on.
27 # If a given UUID appears more than once it is always replaced by the
30 # TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS.
31 m4_define([OVSDB_CHECK_EXECUTION],
33 AT_KEYWORDS([ovsdb execute execution positive $5])
34 AT_CHECK([test-ovsdb execute '$2' m4_foreach([txn], [$3], [ 'txn'])],
36 AT_CHECK([perl $srcdir/uuidfilt.pl stdout], [0], [$4])
39 m4_define([EXECUTION_EXAMPLES], [
40 OVSDB_CHECK_EXECUTION([insert row, query table],
44 "row": {"number": 0, "name": "zero"}}]]],
48 [[[{"uuid":["uuid","<0>"]}]
49 [{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<1>"],"name":"zero","number":0}]}]
52 OVSDB_CHECK_EXECUTION([insert rows, query by value],
56 "row": {"number": 0, "name": "zero"}}]]],
59 "row": {"number": 1, "name": "one"}}]]],
62 "where": [["name", "==", "zero"]]}]]],
65 "where": [["name", "==", "one"]]}]]]],
66 [[[{"uuid":["uuid","<0>"]}]
67 [{"uuid":["uuid","<1>"]}]
68 [{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<2>"],"name":"zero","number":0}]}]
69 [{"rows":[{"_uuid":["uuid","<1>"],"_version":["uuid","<3>"],"name":"one","number":1}]}]
72 OVSDB_CHECK_EXECUTION([insert rows, query by named-uuid],
76 "row": {"number": 0, "name": "zero"},
77 "uuid-name": "first"},
80 "row": {"number": 1, "name": "one"},
81 "uuid-name": "second"},
84 "where": [["_uuid", "==", ["named-uuid", "first"]]]},
87 "where": [["_uuid", "==", ["named-uuid", "second"]]]}]]]],
88 [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<2>"],"name":"zero","number":0}]},{"rows":[{"_uuid":["uuid","<1>"],"_version":["uuid","<3>"],"name":"one","number":1}]}]
91 OVSDB_CHECK_EXECUTION([insert rows, update rows by value],
95 "row": {"number": 0, "name": "zero"},
96 "uuid-name": "first"}]]],
99 "row": {"number": 1, "name": "one"},
100 "uuid-name": "first"}]]],
103 "where": [["name", "==", "zero"]],
104 "row": {"name": "nought"}}]]],
108 "sort": ["number"]}]]]],
109 [[[{"uuid":["uuid","<0>"]}]
110 [{"uuid":["uuid","<1>"]}]
112 [{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<2>"],"name":"nought","number":0},{"_uuid":["uuid","<1>"],"_version":["uuid","<3>"],"name":"one","number":1}]}]
115 OVSDB_CHECK_EXECUTION([insert rows, mutate rows],
119 "row": {"number": 0, "name": "zero"},
120 "uuid-name": "first"}]]],
123 "row": {"number": 1, "name": "one"},
124 "uuid-name": "first"}]]],
127 "where": [["name", "==", "zero"]],
128 "mutations": [["number", "+=", 2]]}]]],
132 "sort": ["number"]}]]]],
133 [[[{"uuid":["uuid","<0>"]}]
134 [{"uuid":["uuid","<1>"]}]
136 [{"rows":[{"_uuid":["uuid","<1>"],"_version":["uuid","<2>"],"name":"one","number":1},{"_uuid":["uuid","<0>"],"_version":["uuid","<3>"],"name":"zero","number":2}]}]
139 OVSDB_CHECK_EXECUTION([insert rows, delete by named-uuid],
143 "row": {"number": 0, "name": "zero"},
144 "uuid-name": "first"},
147 "row": {"number": 1, "name": "one"},
148 "uuid-name": "second"},
151 "where": [["_uuid", "==", ["named-uuid", "first"]]]},
155 "columns": ["name","number"]}]]]],
156 [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"count":1},{"rows":[{"name":"one","number":1}]}]
159 OVSDB_CHECK_EXECUTION([insert rows, delete rows by value],
163 "row": {"number": 0, "name": "zero"},
164 "uuid-name": "first"}]]],
167 "row": {"number": 1, "name": "one"},
168 "uuid-name": "first"}]]],
171 "where": [["name", "==", "zero"]]}]]],
175 [[[{"uuid":["uuid","<0>"]}]
176 [{"uuid":["uuid","<1>"]}]
178 [{"rows":[{"_uuid":["uuid","<1>"],"_version":["uuid","<2>"],"name":"one","number":1}]}]
181 OVSDB_CHECK_EXECUTION([insert rows, delete by (non-matching) value],
185 "row": {"number": 0, "name": "zero"},
186 "uuid-name": "first"}]]],
189 "row": {"number": 1, "name": "one"},
190 "uuid-name": "first"}]]],
193 "where": [["name", "==", "nought"]]}]]],
197 "sort": ["number"]}]]]],
198 [[[{"uuid":["uuid","<0>"]}]
199 [{"uuid":["uuid","<1>"]}]
201 [{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<2>"],"name":"zero","number":0},{"_uuid":["uuid","<1>"],"_version":["uuid","<3>"],"name":"one","number":1}]}]
204 OVSDB_CHECK_EXECUTION([insert rows, delete all],
208 "row": {"number": 0, "name": "zero"},
209 "uuid-name": "first"},
212 "row": {"number": 1, "name": "one"},
213 "uuid-name": "second"},
220 "columns": ["name","number"]}]]]],
221 [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"count":2},{"rows":[]}]
224 OVSDB_CHECK_EXECUTION([insert row, query table, commit],
228 "row": {"number": 0, "name": "zero"}},
233 "durable": false}]]]],
234 [[[{"uuid":["uuid","<0>"]},{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<1>"],"name":"zero","number":0}]},{}]
237 OVSDB_CHECK_EXECUTION([insert row, query table, commit durably],
241 "row": {"number": 0, "name": "zero"}},
246 "durable": true}]]]],
247 [[[{"uuid":["uuid","<0>"]},{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<1>"],"name":"zero","number":0}]},{}]
250 OVSDB_CHECK_EXECUTION([equality wait with correct rows],
254 "row": {"number": 0, "name": "zero"}},
257 "row": {"number": 1, "name": "one"}},
262 "columns": ["name", "number"],
264 "rows": [{"name": "zero", "number": 0},
265 {"name": "one", "number": 1}]}]]]],
266 [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{}]
269 OVSDB_CHECK_EXECUTION([equality wait with extra row],
273 "row": {"number": 0, "name": "zero"}},
276 "row": {"number": 1, "name": "one"}},
281 "columns": ["name", "number"],
283 "rows": [{"name": "zero", "number": 0},
284 {"name": "one", "number": 1},
285 {"name": "two", "number": 2}]}]]]],
286 [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"details":"\"wait\" timed out","error":"timed out"}]
289 OVSDB_CHECK_EXECUTION([equality wait with missing row],
293 "row": {"number": 0, "name": "zero"}},
296 "row": {"number": 1, "name": "one"}},
301 "columns": ["name", "number"],
303 "rows": [{"name": "one", "number": 1}]}]]]],
304 [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"details":"\"wait\" timed out","error":"timed out"}]
307 OVSDB_CHECK_EXECUTION([inequality wait with correct rows],
311 "row": {"number": 0, "name": "zero"}},
314 "row": {"number": 1, "name": "one"}},
319 "columns": ["name", "number"],
321 "rows": [{"name": "zero", "number": 0},
322 {"name": "one", "number": 1}]}]]]],
323 [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"details":"\"wait\" timed out","error":"timed out"}]
326 OVSDB_CHECK_EXECUTION([inequality wait with extra row],
330 "row": {"number": 0, "name": "zero"}},
333 "row": {"number": 1, "name": "one"}},
338 "columns": ["name", "number"],
340 "rows": [{"name": "zero", "number": 0},
341 {"name": "one", "number": 1},
342 {"name": "two", "number": 2}]}]]]],
343 [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{}]
346 OVSDB_CHECK_EXECUTION([inequality wait with missing row],
350 "row": {"number": 0, "name": "zero"}},
353 "row": {"number": 1, "name": "one"}},
358 "columns": ["name", "number"],
360 "rows": [{"name": "one", "number": 1}]}]]]],
361 [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{}]
364 OVSDB_CHECK_EXECUTION([insert and update constraints],
367 "table": "constrained",
370 "table": "constrained",
371 "row": {"positive": -1}}]]],
373 "table": "constrained",
375 "row": {"positive": -2}}]]]],
376 [[[{"details":"0 is less than minimum allowed value 1","error":"constraint violation"}]
377 [{"details":"-1 is less than minimum allowed value 1","error":"constraint violation"}]
378 [{"details":"-2 is less than minimum allowed value 1","error":"constraint violation"}]