]> git.proxmox.com Git - mirror_ovs.git/blame - tests/ovsdb-query.at
db-ctl-base: Add {in} and {not-in} set relational operators.
[mirror_ovs.git] / tests / ovsdb-query.at
CommitLineData
f85f8ebb
BP
1AT_BANNER([OVSDB -- queries])
2
3OVSDB_CHECK_POSITIVE([queries on scalars],
4 [[query \
5 '{"columns":
6 {"i": {"type": "integer"},
7 "r": {"type": "real"},
8 "b": {"type": "boolean"},
5a0e4aec 9 "s": {"type": "string"},
f85f8ebb
BP
10 "u": {"type": "uuid"}}}' \
11 '[{"i": 0,
12 "r": 0.5,
13 "b": true,
14 "s": "a",
15 "u": ["uuid", "b10d28f7-af18-4a67-9e78-2a6394516c59"]},
16 {"i": 1,
17 "r": 1.5,
18 "b": false,
19 "s": "b",
20 "u": ["uuid", "9179ca6d-6d65-400a-b455-3ad92783a099"]},
21 {"i": 2,
22 "r": 2.5,
23 "b": true,
24 "s": "c",
25 "u": ["uuid", "ad0fa355-8b84-4a36-a4b5-b2c1bfd91758"]},
26 {"i": 3,
27 "r": 3.5,
28 "b": false,
29 "s": "d",
30 "u": ["uuid", "62315898-64e0-40b9-b26f-ff74225303e6"]},
31 {"i": 4,
32 "r": 4.5,
33 "b": true,
34 "s": "e",
35 "u": ["uuid", "4a5127e2-0256-4a72-a7dc-6246213967c7"]}]' \
36 '[[],
37 [["i", "==", 0]],
38 [["i", "!=", 1]],
39 [["i", "<", 2]],
40 [["i", "<=", 3]],
41 [["i", ">", 2]],
42 [["i", ">=", 4]],
43 [["i", "includes", 3]],
44 [["i", "excludes", 2]],
45 [["r", "==", 0.5]],
46 [["r", "!=", 1.5]],
47 [["r", "<", 2.5]],
48 [["r", "<=", 3.5]],
49 [["r", ">", 4.5]],
50 [["r", ">=", 5.5]],
51 [["r", "includes", 1]],
52 [["r", "excludes", 3]],
53 [["b", "==", true]],
54 [["b", "!=", true]],
55 [["b", "includes", false]],
56 [["b", "excludes", true]],
57 [["s", "==", "a"]],
58 [["s", "!=", "b"]],
59 [["s", "includes", "c"]],
60 [["s", "excludes", "d"]],
61 [["u", "==", ["uuid", "b10d28f7-af18-4a67-9e78-2a6394516c59"]]],
62 [["u", "!=", ["uuid", "9179ca6d-6d65-400a-b455-3ad92783a099"]]],
63 [["u", "includes",["uuid", "ad0fa355-8b84-4a36-a4b5-b2c1bfd91758"]]]]']],
64 [dnl
65query 0: 11111
66query 1: 1----
67query 2: 1-111
68query 3: 11---
69query 4: 1111-
70query 5: ---11
71query 6: ----1
72query 7: ---1-
73query 8: 11-11
74query 9: 1----
75query 10: 1-111
76query 11: 11---
77query 12: 1111-
78query 13: -----
79query 14: -----
80query 15: -----
81query 16: 11111
82query 17: 1-1-1
83query 18: -1-1-
84query 19: -1-1-
85query 20: -1-1-
86query 21: 1----
87query 22: 1-111
88query 23: --1--
89query 24: 111-1
90query 25: 1----
91query 26: 1-111
92query 27: --1--],
93 [query])
94
95OVSDB_CHECK_POSITIVE([queries on sets],
96 [[query \
97 '{"columns": {"i": {"type": {"key": "integer", "min": 0, "max": "unlimited"}}}}' \
98 '[{"i": ["set", []]},
99 {"i": ["set", [0]]},
100 {"i": ["set", [1]]},
101 {"i": ["set", [0, 1]]},
102 {"i": ["set", [2]]},
103 {"i": ["set", [2, 0]]},
104 {"i": ["set", [2, 1]]},
105 {"i": ["set", [2, 1, 0]]}]' \
106 '[[],
107 [["i", "==", ["set", []]]],
108 [["i", "==", ["set", [0]]]],
109 [["i", "==", ["set", [1]]]],
110 [["i", "==", ["set", [0, 1]]]],
111 [["i", "==", ["set", [2]]]],
112 [["i", "==", ["set", [2, 0]]]],
113 [["i", "==", ["set", [2, 1]]]],
114 [["i", "==", ["set", [2, 1, 0]]]],
115 [["i", "!=", ["set", []]]],
116 [["i", "!=", ["set", [0]]]],
117 [["i", "!=", ["set", [1]]]],
118 [["i", "!=", ["set", [0, 1]]]],
119 [["i", "!=", ["set", [2]]]],
120 [["i", "!=", ["set", [2, 0]]]],
121 [["i", "!=", ["set", [2, 1]]]],
122 [["i", "!=", ["set", [2, 1, 0]]]],
123 [["i", "includes", ["set", []]]],
124 [["i", "includes", ["set", [0]]]],
125 [["i", "includes", ["set", [1]]]],
126 [["i", "includes", ["set", [0, 1]]]],
127 [["i", "includes", ["set", [2]]]],
128 [["i", "includes", ["set", [2, 0]]]],
129 [["i", "includes", ["set", [2, 1]]]],
130 [["i", "includes", ["set", [2, 1, 0]]]],
131 [["i", "excludes", ["set", []]]],
132 [["i", "excludes", ["set", [0]]]],
133 [["i", "excludes", ["set", [1]]]],
134 [["i", "excludes", ["set", [0, 1]]]],
135 [["i", "excludes", ["set", [2]]]],
136 [["i", "excludes", ["set", [2, 0]]]],
137 [["i", "excludes", ["set", [2, 1]]]],
138 [["i", "excludes", ["set", [2, 1, 0]]]]]']],
139 [dnl
140query 0: 11111 111
141query 1: 1---- ---
142query 2: -1--- ---
143query 3: --1-- ---
144query 4: ---1- ---
145query 5: ----1 ---
146query 6: ----- 1--
147query 7: ----- -1-
148query 8: ----- --1
149query 9: -1111 111
150query 10: 1-111 111
151query 11: 11-11 111
152query 12: 111-1 111
153query 13: 1111- 111
154query 14: 11111 -11
155query 15: 11111 1-1
156query 16: 11111 11-
157query 17: 11111 111
158query 18: -1-1- 1-1
159query 19: --11- -11
160query 20: ---1- --1
161query 21: ----1 111
162query 22: ----- 1-1
163query 23: ----- -11
164query 24: ----- --1
165query 25: 11111 111
166query 26: 1-1-1 -1-
167query 27: 11--1 1--
168query 28: 1---1 ---
169query 29: 1111- ---
170query 30: 1-1-- ---
171query 31: 11--- ---
172query 32: 1---- ---], [query])
173
174# This is the same as the "set" test except that it adds values,
175# all of which always match.
176OVSDB_CHECK_POSITIVE([queries on maps (1)],
177 [[query \
178 '{"columns": {"i": {"type": {"key": "integer",
179 "value": "boolean",
180 "min": 0,
181 "max": "unlimited"}}}}' \
182 '[{"i": ["map", []]},
183 {"i": ["map", [[0, true]]]},
184 {"i": ["map", [[1, false]]]},
185 {"i": ["map", [[0, true], [1, false]]]},
186 {"i": ["map", [[2, true]]]},
187 {"i": ["map", [[2, true], [0, true]]]},
188 {"i": ["map", [[2, true], [1, false]]]},
189 {"i": ["map", [[2, true], [1, false], [0, true]]]}]' \
190 '[[],
191 [["i", "==", ["map", []]]],
192 [["i", "==", ["map", [[0, true]]]]],
193 [["i", "==", ["map", [[1, false]]]]],
194 [["i", "==", ["map", [[0, true], [1, false]]]]],
195 [["i", "==", ["map", [[2, true]]]]],
196 [["i", "==", ["map", [[2, true], [0, true]]]]],
197 [["i", "==", ["map", [[2, true], [1, false]]]]],
198 [["i", "==", ["map", [[2, true], [1, false], [0, true]]]]],
199 [["i", "!=", ["map", []]]],
200 [["i", "!=", ["map", [[0, true]]]]],
201 [["i", "!=", ["map", [[1, false]]]]],
202 [["i", "!=", ["map", [[0, true], [1, false]]]]],
203 [["i", "!=", ["map", [[2, true]]]]],
204 [["i", "!=", ["map", [[2, true], [0, true]]]]],
205 [["i", "!=", ["map", [[2, true], [1, false]]]]],
206 [["i", "!=", ["map", [[2, true], [1, false], [0, true]]]]],
207 [["i", "includes", ["map", []]]],
208 [["i", "includes", ["map", [[0, true]]]]],
209 [["i", "includes", ["map", [[1, false]]]]],
210 [["i", "includes", ["map", [[0, true], [1, false]]]]],
211 [["i", "includes", ["map", [[2, true]]]]],
212 [["i", "includes", ["map", [[2, true], [0, true]]]]],
213 [["i", "includes", ["map", [[2, true], [1, false]]]]],
214 [["i", "includes", ["map", [[2, true], [1, false], [0, true]]]]],
215 [["i", "excludes", ["map", []]]],
216 [["i", "excludes", ["map", [[0, true]]]]],
217 [["i", "excludes", ["map", [[1, false]]]]],
218 [["i", "excludes", ["map", [[0, true], [1, false]]]]],
219 [["i", "excludes", ["map", [[2, true]]]]],
220 [["i", "excludes", ["map", [[2, true], [0, true]]]]],
221 [["i", "excludes", ["map", [[2, true], [1, false]]]]],
222 [["i", "excludes", ["map", [[2, true], [1, false], [0, true]]]]]]']],
223 [dnl
224query 0: 11111 111
225query 1: 1---- ---
226query 2: -1--- ---
227query 3: --1-- ---
228query 4: ---1- ---
229query 5: ----1 ---
230query 6: ----- 1--
231query 7: ----- -1-
232query 8: ----- --1
233query 9: -1111 111
234query 10: 1-111 111
235query 11: 11-11 111
236query 12: 111-1 111
237query 13: 1111- 111
238query 14: 11111 -11
239query 15: 11111 1-1
240query 16: 11111 11-
241query 17: 11111 111
242query 18: -1-1- 1-1
243query 19: --11- -11
244query 20: ---1- --1
245query 21: ----1 111
246query 22: ----- 1-1
247query 23: ----- -11
248query 24: ----- --1
249query 25: 11111 111
250query 26: 1-1-1 -1-
251query 27: 11--1 1--
252query 28: 1---1 ---
253query 29: 1111- ---
254query 30: 1-1-- ---
255query 31: 11--- ---
256query 32: 1---- ---], [query])
257
258# This is the same as the "set" test except that it adds values,
259# and those values don't always match.
260OVSDB_CHECK_POSITIVE([queries on maps (2)],
261 [[query \
262 '{"columns": {"i": {"type": {"key": "integer",
263 "value": "boolean",
264 "min": 0,
265 "max": "unlimited"}}}}' \
266 '[{"i": ["map", []]},
267 {"i": ["map", [[0, true]]]},
268 {"i": ["map", [[0, false]]]},
269 {"i": ["map", [[1, false]]]},
270 {"i": ["map", [[1, true]]]},
271
272 {"i": ["map", [[0, true], [1, false]]]},
273 {"i": ["map", [[0, true], [1, true]]]},
274 {"i": ["map", [[2, true]]]},
275 {"i": ["map", [[2, false]]]},
276 {"i": ["map", [[2, true], [0, true]]]},
277
278 {"i": ["map", [[2, false], [0, true]]]},
279 {"i": ["map", [[2, true], [1, false]]]},
280 {"i": ["map", [[2, true], [1, true]]]},
281 {"i": ["map", [[2, true], [1, false], [0, true]]]},
282 {"i": ["map", [[2, true], [1, false], [0, false]]]}]' \
283 '[[],
284 [["i", "==", ["map", []]]],
285 [["i", "==", ["map", [[0, true]]]]],
286 [["i", "==", ["map", [[1, false]]]]],
287 [["i", "==", ["map", [[0, true], [1, false]]]]],
288 [["i", "==", ["map", [[2, true]]]]],
289 [["i", "==", ["map", [[2, true], [0, true]]]]],
290 [["i", "==", ["map", [[2, true], [1, false]]]]],
291 [["i", "==", ["map", [[2, true], [1, false], [0, true]]]]],
292 [["i", "!=", ["map", []]]],
293 [["i", "!=", ["map", [[0, true]]]]],
294 [["i", "!=", ["map", [[1, false]]]]],
295 [["i", "!=", ["map", [[0, true], [1, false]]]]],
296 [["i", "!=", ["map", [[2, true]]]]],
297 [["i", "!=", ["map", [[2, true], [0, true]]]]],
298 [["i", "!=", ["map", [[2, true], [1, false]]]]],
299 [["i", "!=", ["map", [[2, true], [1, false], [0, true]]]]],
300 [["i", "includes", ["map", []]]],
301 [["i", "includes", ["map", [[0, true]]]]],
302 [["i", "includes", ["map", [[1, false]]]]],
303 [["i", "includes", ["map", [[0, true], [1, false]]]]],
304 [["i", "includes", ["map", [[2, true]]]]],
305 [["i", "includes", ["map", [[2, true], [0, true]]]]],
306 [["i", "includes", ["map", [[2, true], [1, false]]]]],
307 [["i", "includes", ["map", [[2, true], [1, false], [0, true]]]]],
308 [["i", "excludes", ["map", []]]],
309 [["i", "excludes", ["map", [[0, true]]]]],
310 [["i", "excludes", ["map", [[1, false]]]]],
311 [["i", "excludes", ["map", [[0, true], [1, false]]]]],
312 [["i", "excludes", ["map", [[2, true]]]]],
313 [["i", "excludes", ["map", [[2, true], [0, true]]]]],
314 [["i", "excludes", ["map", [[2, true], [1, false]]]]],
315 [["i", "excludes", ["map", [[2, true], [1, false], [0, true]]]]]]']],
316 [dnl
317query 0: 11111 11111 11111
318query 1: 1---- ----- -----
319query 2: -1--- ----- -----
320query 3: ---1- ----- -----
321query 4: ----- 1---- -----
322query 5: ----- --1-- -----
323query 6: ----- ----1 -----
324query 7: ----- ----- -1---
325query 8: ----- ----- ---1-
326query 9: -1111 11111 11111
327query 10: 1-111 11111 11111
328query 11: 111-1 11111 11111
329query 12: 11111 -1111 11111
330query 13: 11111 11-11 11111
331query 14: 11111 1111- 11111
332query 15: 11111 11111 1-111
333query 16: 11111 11111 111-1
334query 17: 11111 11111 11111
335query 18: -1--- 11--1 1--1-
336query 19: ---1- 1---- -1-11
337query 20: ----- 1---- ---1-
338query 21: ----- --1-1 -1111
339query 22: ----- ----1 ---1-
340query 23: ----- ----- -1-11
341query 24: ----- ----- ---1-
342query 25: 11111 11111 11111
343query 26: 1-111 --11- -11-1
344query 27: 111-1 -1111 1-1--
345query 28: 1-1-1 --11- --1--
346query 29: 11111 11-1- 1----
347query 30: 1-111 ---1- -----
348query 31: 111-1 -1-1- 1----
349query 32: 1-1-1 ---1- -----], [query])
350
351OVSDB_CHECK_POSITIVE([UUID-distinct queries on scalars],
352 [[query-distinct \
353 '{"columns":
354 {"i": {"type": "integer"},
355 "r": {"type": "real"},
356 "b": {"type": "boolean"},
5a0e4aec 357 "s": {"type": "string"},
f85f8ebb
BP
358 "u": {"type": "uuid"}}}' \
359 '[{"i": 0,
360 "r": 0.5,
361 "b": true,
362 "s": "a",
363 "u": ["uuid", "b10d28f7-af18-4a67-9e78-2a6394516c59"]},
364 {"i": 1,
365 "r": 1.5,
366 "b": false,
367 "s": "b",
368 "u": ["uuid", "9179ca6d-6d65-400a-b455-3ad92783a099"]},
369 {"i": 2,
370 "r": 2.5,
371 "b": true,
372 "s": "c",
373 "u": ["uuid", "ad0fa355-8b84-4a36-a4b5-b2c1bfd91758"]},
374 {"i": 3,
375 "r": 3.5,
376 "b": false,
377 "s": "d",
378 "u": ["uuid", "62315898-64e0-40b9-b26f-ff74225303e6"]},
379 {"i": 4,
380 "r": 4.5,
381 "b": true,
382 "s": "e",
383 "u": ["uuid", "4a5127e2-0256-4a72-a7dc-6246213967c7"]}]' \
384 '[[],
385 [["i", "==", 0]],
386 [["i", "!=", 1]],
387 [["i", "<", 2]],
388 [["i", "<=", 3]],
389 [["i", ">", 2]],
390 [["i", ">=", 4]],
391 [["i", "includes", 3]],
392 [["i", "excludes", 2]],
393 [["r", "==", 0.5]],
394 [["r", "!=", 1.5]],
395 [["r", "<", 2.5]],
396 [["r", "<=", 3.5]],
397 [["r", ">", 4.5]],
398 [["r", ">=", 5.5]],
399 [["r", "includes", 1]],
400 [["r", "excludes", 3]],
401 [["b", "==", true]],
402 [["b", "!=", true]],
403 [["b", "includes", false]],
404 [["b", "excludes", true]],
405 [["s", "==", "a"]],
406 [["s", "!=", "b"]],
407 [["s", "includes", "c"]],
408 [["s", "excludes", "d"]],
409 [["u", "==", ["uuid", "b10d28f7-af18-4a67-9e78-2a6394516c59"]]],
410 [["u", "!=", ["uuid", "9179ca6d-6d65-400a-b455-3ad92783a099"]]],
411 [["u", "includes",["uuid", "ad0fa355-8b84-4a36-a4b5-b2c1bfd91758"]]]]' \
412 '["_uuid"]']],
413 [dnl
414query 0: abcde
415query 1: a----
416query 2: a-cde
417query 3: ab---
418query 4: abcd-
419query 5: ---de
420query 6: ----e
421query 7: ---d-
422query 8: ab-de
423query 9: a----
424query 10: a-cde
425query 11: ab---
426query 12: abcd-
427query 13: -----
428query 14: -----
429query 15: -----
430query 16: abcde
431query 17: a-c-e
432query 18: -b-d-
433query 19: -b-d-
434query 20: -b-d-
435query 21: a----
436query 22: a-cde
437query 23: --c--
438query 24: abc-e
439query 25: a----
440query 26: a-cde
441query 27: --c--],
442 [query])
443
444OVSDB_CHECK_POSITIVE([Boolean-distinct queries on scalars],
445 [[query-distinct \
446 '{"columns":
447 {"i": {"type": "integer"},
448 "r": {"type": "real"},
449 "b": {"type": "boolean"},
5a0e4aec 450 "s": {"type": "string"},
f85f8ebb
BP
451 "u": {"type": "uuid"}}}' \
452 '[{"i": 0,
453 "r": 0.5,
454 "b": true,
455 "s": "a",
456 "u": ["uuid", "b10d28f7-af18-4a67-9e78-2a6394516c59"]},
457 {"i": 1,
458 "r": 1.5,
459 "b": false,
460 "s": "b",
461 "u": ["uuid", "9179ca6d-6d65-400a-b455-3ad92783a099"]},
462 {"i": 2,
463 "r": 2.5,
464 "b": true,
465 "s": "c",
466 "u": ["uuid", "ad0fa355-8b84-4a36-a4b5-b2c1bfd91758"]},
467 {"i": 3,
468 "r": 3.5,
469 "b": false,
470 "s": "d",
471 "u": ["uuid", "62315898-64e0-40b9-b26f-ff74225303e6"]},
472 {"i": 4,
473 "r": 4.5,
474 "b": true,
475 "s": "e",
476 "u": ["uuid", "4a5127e2-0256-4a72-a7dc-6246213967c7"]}]' \
477 '[[],
478 [["i", "==", 0]],
479 [["i", "!=", 1]],
480 [["i", "<", 2]],
481 [["i", "<=", 3]],
482 [["i", ">", 2]],
483 [["i", ">=", 4]],
484 [["i", "includes", 3]],
485 [["i", "excludes", 2]],
486 [["r", "==", 0.5]],
487 [["r", "!=", 1.5]],
488 [["r", "<", 2.5]],
489 [["r", "<=", 3.5]],
490 [["r", ">", 4.5]],
491 [["r", ">=", 5.5]],
492 [["r", "includes", 1]],
493 [["r", "excludes", 3]],
494 [["b", "==", true]],
495 [["b", "!=", true]],
496 [["b", "includes", false]],
497 [["b", "excludes", true]],
498 [["s", "==", "a"]],
499 [["s", "!=", "b"]],
500 [["s", "includes", "c"]],
501 [["s", "excludes", "d"]],
502 [["u", "==", ["uuid", "b10d28f7-af18-4a67-9e78-2a6394516c59"]]],
503 [["u", "!=", ["uuid", "9179ca6d-6d65-400a-b455-3ad92783a099"]]],
504 [["u", "includes",["uuid", "ad0fa355-8b84-4a36-a4b5-b2c1bfd91758"]]]]' \
505 '["b"]']],
506 [dnl
507query 0: ababa
508query 1: a-a-a
509query 2: ababa
510query 3: ababa
511query 4: ababa
512query 5: ababa
513query 6: a-a-a
514query 7: -b-b-
515query 8: ababa
516query 9: a-a-a
517query 10: ababa
518query 11: ababa
519query 12: ababa
520query 13: -----
521query 14: -----
522query 15: -----
523query 16: ababa
524query 17: a-a-a
525query 18: -b-b-
526query 19: -b-b-
527query 20: -b-b-
528query 21: a-a-a
529query 22: ababa
530query 23: a-a-a
531query 24: ababa
532query 25: a-a-a
533query 26: ababa
534query 27: a-a-a],
535 [query])
99b2042d
BP
536
537OVSDB_CHECK_NEGATIVE([parse colunn set containing bad name],
538 [[query-distinct \
539 '{"columns": {"i": {"type": "integer"}}}' \
540 '[{"i": 0}]' \
541 '[[]]' \
542 '["i", "bad"]']],
543 [bad is not a valid column name])