X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Fovsdb-execution.at;h=949ed5982966142762d837d8af0bb6774d27d4bd;hb=003ce655b7116d18c86a74c50391e54990346931;hp=90f20ff6caa79bba68e3075706d2905a13513ebe;hpb=6910a6e6f25f7fe7adfd93c8405671e72d4d156b;p=sliver-openvswitch.git diff --git a/tests/ovsdb-execution.at b/tests/ovsdb-execution.at index 90f20ff6c..949ed5982 100644 --- a/tests/ovsdb-execution.at +++ b/tests/ovsdb-execution.at @@ -1,7 +1,11 @@ AT_BANNER([OVSDB -- execution]) -m4_define([ORDINAL_SCHEMA], - [[{"name": "ordinals", +m4_divert_push([PREPARE_TESTS]) +[ + +ordinal_schema () { + cat <<'EOF' + {"name": "ordinals", "tables": { "ordinals": { "columns": { @@ -9,10 +13,13 @@ m4_define([ORDINAL_SCHEMA], "name": {"type": "string"}}, "indexes": [["number"]]}}, "version": "5.1.3", - "cksum": "12345678 9"}]]) + "cksum": "12345678 9"} +EOF +} -m4_define([CONSTRAINT_SCHEMA], - [[{"name": "constraints", +constraint_schema () { + cat << 'EOF' + {"name": "constraints", "tables": { "a": { "columns": { @@ -33,10 +40,13 @@ m4_define([CONSTRAINT_SCHEMA], "columns": { "positive": {"type": {"key": {"type": "integer", "minInteger": 1}}}}, - "maxRows": 1}}}]]) + "maxRows": 1}}} +EOF +} -m4_define([WEAK_SCHEMA], - [[{"name": "weak", +weak_schema () { + cat <<'EOF' + {"name": "weak", "tables": { "a": { "columns": { @@ -57,10 +67,13 @@ m4_define([WEAK_SCHEMA], "b2a": {"type": {"key": {"type": "uuid", "refTable": "a", "refType": "weak"}, - "min": 0, "max": "unlimited"}}}}}}]]) + "min": 0, "max": "unlimited"}}}}}} +EOF +} -m4_define([GC_SCHEMA], - [[{"name": "gc", +gc_schema () { + cat <<'EOF' + {"name": "gc", "tables": { "root": { "columns": { @@ -95,7 +108,20 @@ m4_define([GC_SCHEMA], "refTable": "a", "refType": "weak"}, "min": 0, "max": "unlimited"}}}, - "isRoot": false}}}]]) + "isRoot": false}}} +EOF +} + +immutable_schema () { + cat <<'EOF' +{"name": "immutable", + "tables": { + "a": { + "columns": {"i": {"type": "integer", "mutable": false}}}}} +EOF +} +] +m4_divert_pop([PREPARE_TESTS]) # OVSDB_CHECK_EXECUTION(TITLE, SCHEMA, TRANSACTIONS, OUTPUT, [KEYWORDS]) # @@ -109,16 +135,17 @@ m4_define([GC_SCHEMA], # same marker. # # TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS. -m4_define([OVSDB_CHECK_EXECUTION], +m4_define([OVSDB_CHECK_EXECUTION], [AT_SETUP([$1]) AT_KEYWORDS([ovsdb execute execution positive $5]) - AT_CHECK([test-ovsdb execute '$2' m4_foreach([txn], [$3], [ 'txn'])], + OVS_RUNDIR=`pwd`; export OVS_RUNDIR + AT_CHECK([test-ovsdb execute "`$2`" m4_foreach([txn], [$3], [ 'txn'])], [0], [stdout], []) - AT_CHECK([perl $srcdir/uuidfilt.pl stdout], [0], [$4]) + AT_CHECK([${PERL} $srcdir/uuidfilt.pl stdout], [0], [$4]) AT_CLEANUP]) OVSDB_CHECK_EXECUTION([uuid-name must be ], - [CONSTRAINT_SCHEMA], + [constraint_schema], [[[["constraints", {"op": "insert", "table": "a", @@ -128,7 +155,7 @@ OVSDB_CHECK_EXECUTION([uuid-name must be ], ]]) OVSDB_CHECK_EXECUTION([named-uuid must be ], - [CONSTRAINT_SCHEMA], + [constraint_schema], [[[["constraints", {"op": "insert", "table": "a", @@ -137,7 +164,7 @@ OVSDB_CHECK_EXECUTION([named-uuid must be ], ]]) OVSDB_CHECK_EXECUTION([duplicate uuid-name not allowed], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -150,11 +177,11 @@ OVSDB_CHECK_EXECUTION([duplicate uuid-name not allowed], [[[{"uuid":["uuid","<0>"]},{"details":"This \"uuid-name\" appeared on an earlier \"insert\" operation.","error":"duplicate uuid-name","syntax":"\"x\""}] ]]) -m4_define([EXECUTION_EXAMPLES], [ +m4_define([ONE_EXECUTION_EXAMPLE], [dnl dnl At one point the "commit" code ignored new rows with all-default values, dnl so this checks for that problem. OVSDB_CHECK_EXECUTION([insert default row, query table], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -166,9 +193,12 @@ OVSDB_CHECK_EXECUTION([insert default row, query table], [[[{"uuid":["uuid","<0>"]}] [{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<1>"],"name":"","number":0}]}] ]]) +]) +m4_define([EXECUTION_EXAMPLES], [ +ONE_EXECUTION_EXAMPLE OVSDB_CHECK_EXECUTION([insert row, query table], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -182,7 +212,7 @@ OVSDB_CHECK_EXECUTION([insert row, query table], ]]) OVSDB_CHECK_EXECUTION([insert rows, query by value], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -206,7 +236,7 @@ OVSDB_CHECK_EXECUTION([insert rows, query by value], ]]) OVSDB_CHECK_EXECUTION([insert rows, query by named-uuid], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -226,7 +256,7 @@ OVSDB_CHECK_EXECUTION([insert rows, query by named-uuid], ]]) OVSDB_CHECK_EXECUTION([insert rows, update rows by value], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -254,7 +284,7 @@ OVSDB_CHECK_EXECUTION([insert rows, update rows by value], ]]) OVSDB_CHECK_EXECUTION([insert rows, mutate rows], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -282,7 +312,7 @@ OVSDB_CHECK_EXECUTION([insert rows, mutate rows], ]]) OVSDB_CHECK_EXECUTION([insert rows, delete by named-uuid], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -303,7 +333,7 @@ OVSDB_CHECK_EXECUTION([insert rows, delete by named-uuid], ]]) OVSDB_CHECK_EXECUTION([insert rows, delete rows by value], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -329,7 +359,7 @@ OVSDB_CHECK_EXECUTION([insert rows, delete rows by value], ]]) OVSDB_CHECK_EXECUTION([insert rows, delete by (non-matching) value], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -356,7 +386,7 @@ OVSDB_CHECK_EXECUTION([insert rows, delete by (non-matching) value], ]]) OVSDB_CHECK_EXECUTION([insert rows, delete all], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -377,7 +407,7 @@ OVSDB_CHECK_EXECUTION([insert rows, delete all], ]]) OVSDB_CHECK_EXECUTION([insert row, query table, commit], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -391,7 +421,7 @@ OVSDB_CHECK_EXECUTION([insert row, query table, commit], ]]) OVSDB_CHECK_EXECUTION([insert row, query table, commit durably], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -405,7 +435,7 @@ OVSDB_CHECK_EXECUTION([insert row, query table, commit durably], ]]) OVSDB_CHECK_EXECUTION([equality wait with correct rows], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -425,7 +455,7 @@ OVSDB_CHECK_EXECUTION([equality wait with correct rows], ]]) OVSDB_CHECK_EXECUTION([equality wait with extra row], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -446,7 +476,7 @@ OVSDB_CHECK_EXECUTION([equality wait with extra row], ]]) OVSDB_CHECK_EXECUTION([equality wait with missing row], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -465,7 +495,7 @@ OVSDB_CHECK_EXECUTION([equality wait with missing row], ]]) OVSDB_CHECK_EXECUTION([inequality wait with correct rows], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -485,7 +515,7 @@ OVSDB_CHECK_EXECUTION([inequality wait with correct rows], ]]) OVSDB_CHECK_EXECUTION([inequality wait with extra row], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -506,7 +536,7 @@ OVSDB_CHECK_EXECUTION([inequality wait with extra row], ]]) OVSDB_CHECK_EXECUTION([inequality wait with missing row], - [ORDINAL_SCHEMA], + [ordinal_schema], [[[["ordinals", {"op": "insert", "table": "ordinals", @@ -525,7 +555,7 @@ OVSDB_CHECK_EXECUTION([inequality wait with missing row], ]]) OVSDB_CHECK_EXECUTION([insert and update constraints], - [CONSTRAINT_SCHEMA], + [constraint_schema], [[[["constraints", {"op": "insert", "table": "constrained", @@ -555,7 +585,7 @@ OVSDB_CHECK_EXECUTION([insert and update constraints], ]]) OVSDB_CHECK_EXECUTION([index uniqueness checking], - [ORDINAL_SCHEMA], + [ordinal_schema], dnl Insert initial row. [[[["ordinals", {"op": "insert", @@ -637,7 +667,7 @@ dnl collide (only) with their previous values (succeeds). ]]) OVSDB_CHECK_EXECUTION([referential integrity -- simple], - [CONSTRAINT_SCHEMA], + [constraint_schema], [[[["constraints", {"op": "insert", "table": "b", @@ -701,7 +731,7 @@ dnl Check that "mutate" honors number-of-elements constraints on sets and maps. ]]) OVSDB_CHECK_EXECUTION([referential integrity -- mutual references], - [CONSTRAINT_SCHEMA], + [constraint_schema], [[[["constraints", {"op": "insert", "table": "a", @@ -753,7 +783,7 @@ OVSDB_CHECK_EXECUTION([referential integrity -- mutual references], ]]) OVSDB_CHECK_EXECUTION([weak references], - [WEAK_SCHEMA], + [weak_schema], [[[["weak", {"op": "insert", "table": "a", @@ -891,8 +921,42 @@ OVSDB_CHECK_EXECUTION([weak references], [{"rows":[{"_uuid":["uuid","<3>"],"b":2,"b2a":["set",[]]},{"_uuid":["uuid","<4>"],"b":3,"b2a":["set",[]]}]}] ]]) +OVSDB_CHECK_EXECUTION([immutable columns], + [immutable_schema], + [[[["immutable", + {"op": "insert", + "table": "a", + "row": {"i": 5}, + "uuid-name": "row1"}]]], + [[["immutable", + {"op": "update", + "table": "a", + "row": {"i": 10}, + "where": []}]]], + [[["immutable", + {"op": "update", + "table": "a", + "row": {"i": 5}, + "where": []}]]], + [[["immutable", + {"op": "mutate", + "table": "a", + "where": [], + "mutations": [["i", "-=", 5]]}]]], + [[["immutable", + {"op": "mutate", + "table": "a", + "where": [], + "mutations": [["i", "*=", 1]]}]]]], + [[[{"uuid":["uuid","<0>"]}] +[{"details":"Cannot update immutable column i in table a.","error":"constraint violation","syntax":"{\"op\":\"update\",\"row\":{\"i\":10},\"table\":\"a\",\"where\":[]}"}] +[{"details":"Cannot update immutable column i in table a.","error":"constraint violation","syntax":"{\"op\":\"update\",\"row\":{\"i\":5},\"table\":\"a\",\"where\":[]}"}] +[{"details":"Cannot mutate immutable column i in table a.","error":"constraint violation","syntax":"[\"i\",\"-=\",5]"}] +[{"details":"Cannot mutate immutable column i in table a.","error":"constraint violation","syntax":"[\"i\",\"*=\",1]"}] +]]) + OVSDB_CHECK_EXECUTION([garbage collection], - [GC_SCHEMA], + [gc_schema], [dnl Check that inserting a row without any references is a no-op. [[["gc", {"op": "insert",