AT_BANNER([OVSDB -- execution]) m4_define([ORDINAL_SCHEMA], [['{"name": "mydb", "tables": { "ordinals": { "columns": { "number": {"type": "integer"}, "name": {"type": "string"}}}}}']]) # This is like OVSDB_CHECK_POSITIVE, except that UUIDs in the output # are replaced by markers of the form 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. m4_define([OVSDB_CHECK_EXECUTION], [AT_SETUP([$1]) AT_KEYWORDS([ovsdb execute execution positive $4]) OVS_CHECK_LCOV([test-ovsdb execute $2], [0], [stdout], []) AT_CHECK([perl $srcdir/uuidfilt.pl stdout], [0], [$3]) AT_CLEANUP]) OVSDB_CHECK_EXECUTION([insert row, query table], [ORDINAL_SCHEMA [\ '[{"op": "insert", "table": "ordinals", "row": {"number": 0, "name": "zero"}}]' \ '[{"op": "select", "table": "ordinals", "where": []}]']], [[[{"uuid":["uuid","<0>"]}] [{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<1>"],"name":"zero","number":0}]}] ]]) OVSDB_CHECK_EXECUTION([insert rows, query by value], [ORDINAL_SCHEMA [\ '[{"op": "insert", "table": "ordinals", "row": {"number": 0, "name": "zero"}}]' \ '[{"op": "insert", "table": "ordinals", "row": {"number": 1, "name": "one"}}]' \ '[{"op": "select", "table": "ordinals", "where": [["name", "==", "zero"]]}]'\ '[{"op": "select", "table": "ordinals", "where": [["name", "==", "one"]]}]']], [[[{"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], [ORDINAL_SCHEMA [\ '[{"op": "insert", "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", "where": [["_uuid", "==", ["named-uuid", "second"]]]}]']], [[[{"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], [ORDINAL_SCHEMA [\ '[{"op": "insert", "table": "ordinals", "row": {"number": 0, "name": "zero"}, "uuid-name": "first"}]' \ '[{"op": "insert", "table": "ordinals", "row": {"number": 1, "name": "one"}, "uuid-name": "first"}]' \ '[{"op": "update", "table": "ordinals", "where": [["name", "==", "zero"]], "row": {"name": "nought"}}]' \ '[{"op": "select", "table": "ordinals", "where": [], "sort": ["number"]}]']], [[[{"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}]}] ]]) OVSDB_CHECK_EXECUTION([insert rows, delete by named-uuid], [ORDINAL_SCHEMA [\ '[{"op": "insert", "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": [], "columns": ["name","number"]}]']], [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"count":1},{"rows":[{"name":"one","number":1}]}] ]]) OVSDB_CHECK_EXECUTION([insert rows, delete rows by value], [ORDINAL_SCHEMA [\ '[{"op": "insert", "table": "ordinals", "row": {"number": 0, "name": "zero"}, "uuid-name": "first"}]' \ '[{"op": "insert", "table": "ordinals", "row": {"number": 1, "name": "one"}, "uuid-name": "first"}]' \ '[{"op": "delete", "table": "ordinals", "where": [["name", "==", "zero"]]}]' \ '[{"op": "select", "table": "ordinals", "where": []}]']], [[[{"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], [ORDINAL_SCHEMA [\ '[{"op": "insert", "table": "ordinals", "row": {"number": 0, "name": "zero"}, "uuid-name": "first"}]' \ '[{"op": "insert", "table": "ordinals", "row": {"number": 1, "name": "one"}, "uuid-name": "first"}]' \ '[{"op": "delete", "table": "ordinals", "where": [["name", "==", "nought"]]}]' \ '[{"op": "select", "table": "ordinals", "where": [], "sort": ["number"]}]']], [[[{"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], [ORDINAL_SCHEMA [\ '[{"op": "insert", "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": [], "columns": ["name","number"]}]']], [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"count":2},{"rows":[]}] ]]) OVSDB_CHECK_EXECUTION([insert row, query table, commit], [ORDINAL_SCHEMA [\ '[{"op": "insert", "table": "ordinals", "row": {"number": 0, "name": "zero"}}, {"op": "select", "table": "ordinals", "where": []}, {"op": "commit", "durable": false}]']], [[[{"uuid":["uuid","<0>"]},{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<1>"],"name":"zero","number":0}]},{}] ]]) OVSDB_CHECK_EXECUTION([insert row, query table, commit durably], [ORDINAL_SCHEMA [\ '[{"op": "insert", "table": "ordinals", "row": {"number": 0, "name": "zero"}}, {"op": "select", "table": "ordinals", "where": []}, {"op": "commit", "durable": true}]']], [[[{"uuid":["uuid","<0>"]},{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<1>"],"name":"zero","number":0}]},{}] ]]) OVSDB_CHECK_EXECUTION([equality wait with correct rows], [ORDINAL_SCHEMA [\ '[{"op": "insert", "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}]}]']], [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{}] ]]) OVSDB_CHECK_EXECUTION([equality wait with extra row], [ORDINAL_SCHEMA [\ '[{"op": "insert", "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}, {"name": "two", "number": 2}]}]']], [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"details":"\"wait\" timed out","error":"timed out"}] ]]) OVSDB_CHECK_EXECUTION([equality wait with missing row], [ORDINAL_SCHEMA [\ '[{"op": "insert", "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": "one", "number": 1}]}]']], [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"details":"\"wait\" timed out","error":"timed out"}] ]]) OVSDB_CHECK_EXECUTION([inequality wait with correct rows], [ORDINAL_SCHEMA [\ '[{"op": "insert", "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}]}]']], [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{"details":"\"wait\" timed out","error":"timed out"}] ]]) OVSDB_CHECK_EXECUTION([inequality wait with extra row], [ORDINAL_SCHEMA [\ '[{"op": "insert", "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}, {"name": "two", "number": 2}]}]']], [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{}] ]]) OVSDB_CHECK_EXECUTION([inequality wait with missing row], [ORDINAL_SCHEMA [\ '[{"op": "insert", "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": "one", "number": 1}]}]']], [[[{"uuid":["uuid","<0>"]},{"uuid":["uuid","<1>"]},{}] ]])