X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Fovsdb-execution.at;h=949ed5982966142762d837d8af0bb6774d27d4bd;hb=0ef165ecb57943e17a8ee8270df68ffb8d032e29;hp=480f61016ffa26a252b2c191b91edd8cf7a705d1;hpb=39ab07affb2d155aaabfdecaec2ec908f9d05a3a;p=sliver-openvswitch.git diff --git a/tests/ovsdb-execution.at b/tests/ovsdb-execution.at index 480f61016..949ed5982 100644 --- a/tests/ovsdb-execution.at +++ b/tests/ovsdb-execution.at @@ -111,6 +111,15 @@ gc_schema () { "isRoot": false}}} EOF } + +immutable_schema () { + cat <<'EOF' +{"name": "immutable", + "tables": { + "a": { + "columns": {"i": {"type": "integer", "mutable": false}}}}} +EOF +} ] m4_divert_pop([PREPARE_TESTS]) @@ -129,9 +138,10 @@ m4_divert_pop([PREPARE_TESTS]) m4_define([OVSDB_CHECK_EXECUTION], [AT_SETUP([$1]) AT_KEYWORDS([ovsdb execute execution positive $5]) + 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 ], @@ -167,7 +177,7 @@ 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], @@ -183,7 +193,10 @@ 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], [[[["ordinals", @@ -908,6 +921,40 @@ 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], [dnl Check that inserting a row without any references is a no-op.