2009-11-04 15:11:44 -08:00
|
|
|
AT_BANNER([OVSDB -- execution])
|
|
|
|
|
|
|
|
m4_define([ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[{"name": "ordinals",
|
2009-11-04 15:11:44 -08:00
|
|
|
"tables": {
|
|
|
|
"ordinals": {
|
|
|
|
"columns": {
|
|
|
|
"number": {"type": "integer"},
|
2009-11-16 15:13:00 -08:00
|
|
|
"name": {"type": "string"}}}}}]])
|
2009-11-04 15:11:44 -08:00
|
|
|
|
2010-02-08 14:09:36 -08:00
|
|
|
m4_define([CONSTRAINT_SCHEMA],
|
|
|
|
[[{"name": "constraints",
|
|
|
|
"tables": {
|
2010-02-08 14:09:41 -08:00
|
|
|
"a": {
|
|
|
|
"columns": {
|
|
|
|
"a": {"type": "integer"},
|
|
|
|
"a2a": {"type": {"key": {"type": "uuid", "refTable": "a"},
|
|
|
|
"min": 0, "max": "unlimited"}},
|
|
|
|
"a2b": {"type": {"key": {"type": "uuid", "refTable": "b"},
|
|
|
|
"min": 0, "max": "unlimited"}}}},
|
|
|
|
"b": {
|
|
|
|
"columns": {
|
|
|
|
"b": {"type": "integer"},
|
|
|
|
"b2a": {"type": {"key": {"type": "uuid", "refTable": "a"},
|
|
|
|
"min": 0, "max": "unlimited"}},
|
|
|
|
"b2b": {"type": {"key": {"type": "uuid", "refTable": "b"},
|
|
|
|
"min": 0, "max": "unlimited"}}}},
|
2010-02-08 14:09:36 -08:00
|
|
|
"constrained": {
|
|
|
|
"columns": {
|
|
|
|
"positive": {"type": {"key": {"type": "integer",
|
|
|
|
"minInteger": 1}}}}}}}]])
|
|
|
|
|
2009-11-16 15:13:00 -08:00
|
|
|
# OVSDB_CHECK_EXECUTION(TITLE, SCHEMA, TRANSACTIONS, OUTPUT, [KEYWORDS])
|
|
|
|
#
|
|
|
|
# Runs "test-ovsdb execute" with the given SCHEMA and each of the
|
|
|
|
# TRANSACTIONS (which should be a quoted list of quoted strings).
|
|
|
|
#
|
|
|
|
# Checks that the overall output is OUTPUT, but UUIDs in the output
|
2009-11-04 15:11:44 -08:00
|
|
|
# are replaced by markers of the form <N> where N is a number. The
|
|
|
|
# first unique UUID is replaced by <0>, the next by <1>, and so on.
|
|
|
|
# If a given UUID appears more than once it is always replaced by the
|
|
|
|
# same marker.
|
2009-11-16 15:13:00 -08:00
|
|
|
#
|
|
|
|
# TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS.
|
2009-11-04 15:11:44 -08:00
|
|
|
m4_define([OVSDB_CHECK_EXECUTION],
|
|
|
|
[AT_SETUP([$1])
|
2009-11-16 15:13:00 -08:00
|
|
|
AT_KEYWORDS([ovsdb execute execution positive $5])
|
2010-02-01 14:04:25 -08:00
|
|
|
AT_CHECK([test-ovsdb execute '$2' m4_foreach([txn], [$3], [ 'txn'])],
|
2009-11-16 15:13:00 -08:00
|
|
|
[0], [stdout], [])
|
|
|
|
AT_CHECK([perl $srcdir/uuidfilt.pl stdout], [0], [$4])
|
2009-11-04 15:11:44 -08:00
|
|
|
AT_CLEANUP])
|
|
|
|
|
2009-11-16 15:13:00 -08:00
|
|
|
m4_define([EXECUTION_EXAMPLES], [
|
2009-11-04 15:11:44 -08:00
|
|
|
OVSDB_CHECK_EXECUTION([insert row, query table],
|
2009-11-16 15:13:00 -08:00
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
2009-11-16 15:13:00 -08:00
|
|
|
"row": {"number": 0, "name": "zero"}}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["ordinals",
|
|
|
|
{"op": "select",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
2009-11-16 15:13:00 -08:00
|
|
|
"where": []}]]]],
|
2009-11-04 15:11:44 -08:00
|
|
|
[[[{"uuid":["uuid","<0>"]}]
|
|
|
|
[{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<1>"],"name":"zero","number":0}]}]
|
|
|
|
]])
|
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([insert rows, query by value],
|
2009-11-16 15:13:00 -08:00
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
2009-11-16 15:13:00 -08:00
|
|
|
"row": {"number": 0, "name": "zero"}}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
2009-11-16 15:13:00 -08:00
|
|
|
"row": {"number": 1, "name": "one"}}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["ordinals",
|
|
|
|
{"op": "select",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
2009-11-16 15:13:00 -08:00
|
|
|
"where": [["name", "==", "zero"]]}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["ordinals",
|
|
|
|
{"op": "select",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
2009-11-16 15:13:00 -08:00
|
|
|
"where": [["name", "==", "one"]]}]]]],
|
2009-11-04 15:11:44 -08:00
|
|
|
[[[{"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}]}]
|
|
|
|
]])
|
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([insert rows, query by named-uuid],
|
2009-11-16 15:13:00 -08:00
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 0, "name": "zero"},
|
|
|
|
"uuid-name": "first"},
|
|
|
|
{"op": "insert",
|
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 1, "name": "one"},
|
|
|
|
"uuid-name": "second"},
|
|
|
|
{"op": "select",
|
|
|
|
"table": "ordinals",
|
|
|
|
"where": [["_uuid", "==", ["named-uuid", "first"]]]},
|
|
|
|
{"op": "select",
|
|
|
|
"table": "ordinals",
|
2009-11-16 15:13:00 -08:00
|
|
|
"where": [["_uuid", "==", ["named-uuid", "second"]]]}]]]],
|
2009-11-04 15:11:44 -08:00
|
|
|
[[[{"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}]}]
|
|
|
|
]])
|
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([insert rows, update rows by value],
|
2009-11-16 15:13:00 -08:00
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 0, "name": "zero"},
|
2009-11-16 15:13:00 -08:00
|
|
|
"uuid-name": "first"}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 1, "name": "one"},
|
2009-11-16 15:13:00 -08:00
|
|
|
"uuid-name": "first"}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["ordinals",
|
|
|
|
{"op": "update",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"where": [["name", "==", "zero"]],
|
2009-11-16 15:13:00 -08:00
|
|
|
"row": {"name": "nought"}}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["ordinals",
|
|
|
|
{"op": "select",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"where": [],
|
2009-11-16 15:13:00 -08:00
|
|
|
"sort": ["number"]}]]]],
|
2009-11-04 15:11:44 -08:00
|
|
|
[[[{"uuid":["uuid","<0>"]}]
|
|
|
|
[{"uuid":["uuid","<1>"]}]
|
|
|
|
[{"count":1}]
|
|
|
|
[{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<2>"],"name":"nought","number":0},{"_uuid":["uuid","<1>"],"_version":["uuid","<3>"],"name":"one","number":1}]}]
|
|
|
|
]])
|
|
|
|
|
2009-12-16 10:49:31 -08:00
|
|
|
OVSDB_CHECK_EXECUTION([insert rows, mutate rows],
|
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-12-16 10:49:31 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 0, "name": "zero"},
|
|
|
|
"uuid-name": "first"}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-12-16 10:49:31 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 1, "name": "one"},
|
|
|
|
"uuid-name": "first"}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["ordinals",
|
|
|
|
{"op": "mutate",
|
2009-12-16 10:49:31 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"where": [["name", "==", "zero"]],
|
|
|
|
"mutations": [["number", "+=", 2]]}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["ordinals",
|
|
|
|
{"op": "select",
|
2009-12-16 10:49:31 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"where": [],
|
|
|
|
"sort": ["number"]}]]]],
|
|
|
|
[[[{"uuid":["uuid","<0>"]}]
|
|
|
|
[{"uuid":["uuid","<1>"]}]
|
|
|
|
[{"count":1}]
|
|
|
|
[{"rows":[{"_uuid":["uuid","<1>"],"_version":["uuid","<2>"],"name":"one","number":1},{"_uuid":["uuid","<0>"],"_version":["uuid","<3>"],"name":"zero","number":2}]}]
|
|
|
|
]])
|
|
|
|
|
2009-11-04 15:11:44 -08:00
|
|
|
OVSDB_CHECK_EXECUTION([insert rows, delete by named-uuid],
|
2009-11-16 15:13:00 -08:00
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 0, "name": "zero"},
|
|
|
|
"uuid-name": "first"},
|
|
|
|
{"op": "insert",
|
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 1, "name": "one"},
|
|
|
|
"uuid-name": "second"},
|
|
|
|
{"op": "delete",
|
|
|
|
"table": "ordinals",
|
|
|
|
"where": [["_uuid", "==", ["named-uuid", "first"]]]},
|
|
|
|
{"op": "select",
|
|
|
|
"table": "ordinals",
|
|
|
|
"where": [],
|
2009-11-16 15:13:00 -08:00
|
|
|
"columns": ["name","number"]}]]]],
|
2009-11-04 15:11:44 -08:00
|
|
|
[[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"count":1},{"rows":[{"name":"one","number":1}]}]
|
|
|
|
]])
|
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([insert rows, delete rows by value],
|
2009-11-16 15:13:00 -08:00
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 0, "name": "zero"},
|
2009-11-16 15:13:00 -08:00
|
|
|
"uuid-name": "first"}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 1, "name": "one"},
|
2009-11-16 15:13:00 -08:00
|
|
|
"uuid-name": "first"}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["ordinals",
|
|
|
|
{"op": "delete",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
2009-11-16 15:13:00 -08:00
|
|
|
"where": [["name", "==", "zero"]]}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["ordinals",
|
|
|
|
{"op": "select",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
2009-11-16 15:13:00 -08:00
|
|
|
"where": []}]]]],
|
2009-11-04 15:11:44 -08:00
|
|
|
[[[{"uuid":["uuid","<0>"]}]
|
|
|
|
[{"uuid":["uuid","<1>"]}]
|
|
|
|
[{"count":1}]
|
|
|
|
[{"rows":[{"_uuid":["uuid","<1>"],"_version":["uuid","<2>"],"name":"one","number":1}]}]
|
|
|
|
]])
|
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([insert rows, delete by (non-matching) value],
|
2009-11-16 15:13:00 -08:00
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 0, "name": "zero"},
|
2009-11-16 15:13:00 -08:00
|
|
|
"uuid-name": "first"}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 1, "name": "one"},
|
2009-11-16 15:13:00 -08:00
|
|
|
"uuid-name": "first"}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["ordinals",
|
|
|
|
{"op": "delete",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
2009-11-16 15:13:00 -08:00
|
|
|
"where": [["name", "==", "nought"]]}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["ordinals",
|
|
|
|
{"op": "select",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"where": [],
|
2009-11-16 15:13:00 -08:00
|
|
|
"sort": ["number"]}]]]],
|
2009-11-04 15:11:44 -08:00
|
|
|
[[[{"uuid":["uuid","<0>"]}]
|
|
|
|
[{"uuid":["uuid","<1>"]}]
|
|
|
|
[{"count":0}]
|
|
|
|
[{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<2>"],"name":"zero","number":0},{"_uuid":["uuid","<1>"],"_version":["uuid","<3>"],"name":"one","number":1}]}]
|
|
|
|
]])
|
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([insert rows, delete all],
|
2009-11-16 15:13:00 -08:00
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 0, "name": "zero"},
|
|
|
|
"uuid-name": "first"},
|
|
|
|
{"op": "insert",
|
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 1, "name": "one"},
|
|
|
|
"uuid-name": "second"},
|
|
|
|
{"op": "delete",
|
|
|
|
"table": "ordinals",
|
|
|
|
"where": []},
|
|
|
|
{"op": "select",
|
|
|
|
"table": "ordinals",
|
|
|
|
"where": [],
|
2009-11-16 15:13:00 -08:00
|
|
|
"columns": ["name","number"]}]]]],
|
2009-11-04 15:11:44 -08:00
|
|
|
[[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"count":2},{"rows":[]}]
|
|
|
|
]])
|
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([insert row, query table, commit],
|
2009-11-16 15:13:00 -08:00
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 0, "name": "zero"}},
|
|
|
|
{"op": "select",
|
|
|
|
"table": "ordinals",
|
|
|
|
"where": []},
|
|
|
|
{"op": "commit",
|
2009-11-16 15:13:00 -08:00
|
|
|
"durable": false}]]]],
|
2009-11-04 15:11:44 -08:00
|
|
|
[[[{"uuid":["uuid","<0>"]},{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<1>"],"name":"zero","number":0}]},{}]
|
|
|
|
]])
|
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([insert row, query table, commit durably],
|
2009-11-16 15:13:00 -08:00
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 0, "name": "zero"}},
|
|
|
|
{"op": "select",
|
|
|
|
"table": "ordinals",
|
|
|
|
"where": []},
|
|
|
|
{"op": "commit",
|
2009-11-16 15:13:00 -08:00
|
|
|
"durable": true}]]]],
|
2009-11-04 15:11:44 -08:00
|
|
|
[[[{"uuid":["uuid","<0>"]},{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<1>"],"name":"zero","number":0}]},{}]
|
|
|
|
]])
|
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([equality wait with correct rows],
|
2009-11-16 15:13:00 -08:00
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 0, "name": "zero"}},
|
|
|
|
{"op": "insert",
|
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 1, "name": "one"}},
|
|
|
|
{"op": "wait",
|
|
|
|
"timeout": 0,
|
|
|
|
"table": "ordinals",
|
|
|
|
"where": [],
|
|
|
|
"columns": ["name", "number"],
|
|
|
|
"until": "==",
|
|
|
|
"rows": [{"name": "zero", "number": 0},
|
2009-11-16 15:13:00 -08:00
|
|
|
{"name": "one", "number": 1}]}]]]],
|
2009-11-04 15:11:44 -08:00
|
|
|
[[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{}]
|
|
|
|
]])
|
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([equality wait with extra row],
|
2009-11-16 15:13:00 -08:00
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 0, "name": "zero"}},
|
|
|
|
{"op": "insert",
|
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 1, "name": "one"}},
|
|
|
|
{"op": "wait",
|
|
|
|
"timeout": 0,
|
|
|
|
"table": "ordinals",
|
|
|
|
"where": [],
|
|
|
|
"columns": ["name", "number"],
|
|
|
|
"until": "==",
|
|
|
|
"rows": [{"name": "zero", "number": 0},
|
|
|
|
{"name": "one", "number": 1},
|
2009-11-16 15:13:00 -08:00
|
|
|
{"name": "two", "number": 2}]}]]]],
|
2009-11-04 15:11:44 -08:00
|
|
|
[[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"details":"\"wait\" timed out","error":"timed out"}]
|
|
|
|
]])
|
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([equality wait with missing row],
|
2009-11-16 15:13:00 -08:00
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 0, "name": "zero"}},
|
|
|
|
{"op": "insert",
|
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 1, "name": "one"}},
|
|
|
|
{"op": "wait",
|
|
|
|
"timeout": 0,
|
|
|
|
"table": "ordinals",
|
|
|
|
"where": [],
|
|
|
|
"columns": ["name", "number"],
|
|
|
|
"until": "==",
|
2009-11-16 15:13:00 -08:00
|
|
|
"rows": [{"name": "one", "number": 1}]}]]]],
|
2009-11-04 15:11:44 -08:00
|
|
|
[[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"details":"\"wait\" timed out","error":"timed out"}]
|
|
|
|
]])
|
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([inequality wait with correct rows],
|
2009-11-16 15:13:00 -08:00
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 0, "name": "zero"}},
|
|
|
|
{"op": "insert",
|
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 1, "name": "one"}},
|
|
|
|
{"op": "wait",
|
|
|
|
"timeout": 0,
|
|
|
|
"table": "ordinals",
|
|
|
|
"where": [],
|
|
|
|
"columns": ["name", "number"],
|
|
|
|
"until": "!=",
|
|
|
|
"rows": [{"name": "zero", "number": 0},
|
2009-11-16 15:13:00 -08:00
|
|
|
{"name": "one", "number": 1}]}]]]],
|
2009-11-04 15:11:44 -08:00
|
|
|
[[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"details":"\"wait\" timed out","error":"timed out"}]
|
|
|
|
]])
|
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([inequality wait with extra row],
|
2009-11-16 15:13:00 -08:00
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 0, "name": "zero"}},
|
|
|
|
{"op": "insert",
|
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 1, "name": "one"}},
|
|
|
|
{"op": "wait",
|
|
|
|
"timeout": 0,
|
|
|
|
"table": "ordinals",
|
|
|
|
"where": [],
|
|
|
|
"columns": ["name", "number"],
|
|
|
|
"until": "!=",
|
|
|
|
"rows": [{"name": "zero", "number": 0},
|
|
|
|
{"name": "one", "number": 1},
|
2009-11-16 15:13:00 -08:00
|
|
|
{"name": "two", "number": 2}]}]]]],
|
2009-11-04 15:11:44 -08:00
|
|
|
[[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{}]
|
|
|
|
]])
|
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([inequality wait with missing row],
|
2009-11-16 15:13:00 -08:00
|
|
|
[ORDINAL_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["ordinals",
|
|
|
|
{"op": "insert",
|
2009-11-04 15:11:44 -08:00
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 0, "name": "zero"}},
|
|
|
|
{"op": "insert",
|
|
|
|
"table": "ordinals",
|
|
|
|
"row": {"number": 1, "name": "one"}},
|
|
|
|
{"op": "wait",
|
|
|
|
"timeout": 0,
|
|
|
|
"table": "ordinals",
|
|
|
|
"where": [],
|
|
|
|
"columns": ["name", "number"],
|
|
|
|
"until": "!=",
|
2009-11-16 15:13:00 -08:00
|
|
|
"rows": [{"name": "one", "number": 1}]}]]]],
|
2009-11-04 15:11:44 -08:00
|
|
|
[[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{}]
|
|
|
|
]])
|
2010-02-08 14:09:36 -08:00
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([insert and update constraints],
|
|
|
|
[CONSTRAINT_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["constraints",
|
|
|
|
{"op": "insert",
|
2010-02-08 14:09:36 -08:00
|
|
|
"table": "constrained",
|
|
|
|
"row": {}}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["constraints",
|
|
|
|
{"op": "insert",
|
2010-02-08 14:09:36 -08:00
|
|
|
"table": "constrained",
|
|
|
|
"row": {"positive": -1}}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["constraints",
|
|
|
|
{"op": "update",
|
2010-02-08 14:09:36 -08:00
|
|
|
"table": "constrained",
|
|
|
|
"where": [],
|
|
|
|
"row": {"positive": -2}}]]]],
|
|
|
|
[[[{"details":"0 is less than minimum allowed value 1","error":"constraint violation"}]
|
|
|
|
[{"details":"-1 is less than minimum allowed value 1","error":"constraint violation"}]
|
|
|
|
[{"details":"-2 is less than minimum allowed value 1","error":"constraint violation"}]
|
2010-02-08 14:09:41 -08:00
|
|
|
]])
|
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([referential integrity -- simple],
|
|
|
|
[CONSTRAINT_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["constraints",
|
|
|
|
{"op": "insert",
|
2010-02-08 14:09:41 -08:00
|
|
|
"table": "b",
|
|
|
|
"row": {"b": 1},
|
|
|
|
"uuid-name": "brow"},
|
|
|
|
{"op": "insert",
|
|
|
|
"table": "a",
|
|
|
|
"row": {"a": 0,
|
|
|
|
"a2b": ["set", [["named-uuid", "brow"]]]}},
|
|
|
|
{"op": "insert",
|
|
|
|
"table": "a",
|
|
|
|
"row": {"a": 1,
|
|
|
|
"a2b": ["set", [["named-uuid", "brow"]]]}},
|
|
|
|
{"op": "insert",
|
|
|
|
"table": "a",
|
|
|
|
"row": {"a": 2,
|
|
|
|
"a2b": ["set", [["named-uuid", "brow"]]]}}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["constraints",
|
|
|
|
{"op": "delete",
|
2010-02-08 14:09:41 -08:00
|
|
|
"table": "b",
|
|
|
|
"where": []}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["constraints",
|
|
|
|
{"op": "delete",
|
2010-02-08 14:09:41 -08:00
|
|
|
"table": "a",
|
|
|
|
"where": [["a", "==", 0]]}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["constraints",
|
|
|
|
{"op": "delete",
|
2010-02-08 14:09:41 -08:00
|
|
|
"table": "b",
|
|
|
|
"where": []}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["constraints",
|
|
|
|
{"op": "delete",
|
2010-02-08 14:09:41 -08:00
|
|
|
"table": "a",
|
|
|
|
"where": [["a", "==", 1]]}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["constraints",
|
|
|
|
{"op": "delete",
|
2010-02-08 14:09:41 -08:00
|
|
|
"table": "b",
|
|
|
|
"where": []}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["constraints",
|
|
|
|
{"op": "delete",
|
2010-02-08 14:09:41 -08:00
|
|
|
"table": "a",
|
|
|
|
"where": [["a", "==", 2]]}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["constraints",
|
|
|
|
{"op": "delete",
|
2010-02-08 14:09:41 -08:00
|
|
|
"table": "b",
|
|
|
|
"where": []}]]]],
|
|
|
|
[[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"uuid":["uuid","<2>"]},{"uuid":["uuid","<3>"]}]
|
|
|
|
[{"count":1},{"details":"cannot delete b row <0> because of 3 remaining reference(s)","error":"referential integrity violation"}]
|
|
|
|
[{"count":1}]
|
|
|
|
[{"count":1},{"details":"cannot delete b row <0> because of 2 remaining reference(s)","error":"referential integrity violation"}]
|
|
|
|
[{"count":1}]
|
|
|
|
[{"count":1},{"details":"cannot delete b row <0> because of 1 remaining reference(s)","error":"referential integrity violation"}]
|
|
|
|
[{"count":1}]
|
|
|
|
[{"count":1}]
|
|
|
|
]])
|
|
|
|
|
|
|
|
OVSDB_CHECK_EXECUTION([referential integrity -- mutual references],
|
|
|
|
[CONSTRAINT_SCHEMA],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[[["constraints",
|
|
|
|
{"op": "insert",
|
2010-02-08 14:09:41 -08:00
|
|
|
"table": "a",
|
|
|
|
"row": {"a": 0,
|
|
|
|
"a2b": ["set", [["named-uuid", "row2"]]],
|
|
|
|
"a2a": ["set", [["named-uuid", "row1"]]]},
|
|
|
|
"uuid-name": "row1"},
|
|
|
|
{"op": "insert",
|
|
|
|
"table": "b",
|
|
|
|
"row": {"b": 1,
|
|
|
|
"b2b": ["set", [["named-uuid", "row2"]]],
|
|
|
|
"b2a": ["set", [["named-uuid", "row1"]]]},
|
|
|
|
"uuid-name": "row2"}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["constraints",
|
|
|
|
{"op": "insert",
|
2010-02-08 14:09:41 -08:00
|
|
|
"table": "a",
|
|
|
|
"row": {"a2b": ["set", [["uuid", "b516b960-5b19-4fc2-bb82-fe1cbd6d0241"]]]}}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["constraints",
|
|
|
|
{"op": "delete",
|
2010-02-08 14:09:41 -08:00
|
|
|
"table": "a",
|
|
|
|
"where": [["a", "==", 0]]}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["constraints",
|
|
|
|
{"op": "delete",
|
2010-02-08 14:09:41 -08:00
|
|
|
"table": "b",
|
|
|
|
"where": [["b", "==", 1]]}]]],
|
|
|
|
dnl Try the deletions again to make sure that the refcounts got rolled back.
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["constraints",
|
|
|
|
{"op": "delete",
|
2010-02-08 14:09:41 -08:00
|
|
|
"table": "a",
|
|
|
|
"where": [["a", "==", 0]]}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["constraints",
|
|
|
|
{"op": "delete",
|
2010-02-08 14:09:41 -08:00
|
|
|
"table": "b",
|
|
|
|
"where": [["b", "==", 1]]}]]],
|
2010-02-09 10:17:58 -08:00
|
|
|
[[["constraints",
|
|
|
|
{"op": "delete",
|
2010-02-08 14:09:41 -08:00
|
|
|
"table": "a",
|
|
|
|
"where": [["a", "==", 0]]},
|
|
|
|
{"op": "delete",
|
|
|
|
"table": "b",
|
|
|
|
"where": [["b", "==", 1]]}]]]],
|
2010-02-08 16:03:21 -08:00
|
|
|
[[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]}]
|
2010-02-08 14:09:41 -08:00
|
|
|
[{"uuid":["uuid","<2>"]},{"details":"reference to nonexistent row <3>","error":"referential integrity violation"}]
|
|
|
|
[{"count":1},{"details":"cannot delete a row <0> because of 1 remaining reference(s)","error":"referential integrity violation"}]
|
|
|
|
[{"count":1},{"details":"cannot delete b row <1> because of 1 remaining reference(s)","error":"referential integrity violation"}]
|
|
|
|
[{"count":1},{"details":"cannot delete a row <0> because of 1 remaining reference(s)","error":"referential integrity violation"}]
|
|
|
|
[{"count":1},{"details":"cannot delete b row <1> because of 1 remaining reference(s)","error":"referential integrity violation"}]
|
|
|
|
[{"count":1},{"count":1}]
|
2010-02-08 14:09:36 -08:00
|
|
|
]])])
|
2009-11-16 15:13:00 -08:00
|
|
|
|
|
|
|
EXECUTION_EXAMPLES
|