X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Fovsdb-schema.at;h=00da808391d64c0a77c16868078b14eb6f940bdd;hb=e379e4d167e31d1cd5f7b86fff091a2e09ff6e45;hp=6cd2fa20fc2efe59fd379805c657585f67696253;hpb=c69ee87c10818267f991236201150b1fa51ae519;p=sliver-openvswitch.git diff --git a/tests/ovsdb-schema.at b/tests/ovsdb-schema.at index 6cd2fa20f..00da80839 100644 --- a/tests/ovsdb-schema.at +++ b/tests/ovsdb-schema.at @@ -1,8 +1,9 @@ AT_BANNER([OVSDB -- schemas]) -OVSDB_CHECK_POSITIVE([schema with valid refTables], +OVSDB_CHECK_POSITIVE_CPY([schema with valid refTables], [[parse-schema \ '{"name": "mydb", + "version": "4.2.1", "tables": { "a": { "columns": { @@ -21,9 +22,53 @@ OVSDB_CHECK_POSITIVE([schema with valid refTables], "key": { "type": "uuid", "refTable": "a"}}}}}}}']], - [[{"name":"mydb","tables":{"a":{"columns":{"map":{"type":{"key":{"refTable":"b","type":"uuid"},"value":{"refTable":"a","type":"uuid"}}}}},"b":{"columns":{"aRef":{"type":{"key":{"refTable":"a","type":"uuid"}}}}}}}]]) + [[{"name":"mydb","tables":{"a":{"columns":{"map":{"type":{"key":{"refTable":"b","type":"uuid"},"value":{"refTable":"a","type":"uuid"}}}}},"b":{"columns":{"aRef":{"type":{"key":{"refTable":"a","type":"uuid"}}}}}},"version":"4.2.1"}]]) + +dnl Ephemeral strong references to root set tables are OK. +dnl Ephemeral strong references to non-root set tables are forced to be +dnl persistent. +OVSDB_CHECK_POSITIVE_CPY([schema with ephemeral strong references], + [[parse-schema \ + '{"name": "mydb", + "version": "4.2.1", + "tables": { + "a": { + "columns": { + "x": { + "type": { + "key": { + "type": "uuid", + "refTable": "b"}}, + "ephemeral": true}, + "y": { + "type": { + "key": { + "type": "uuid", + "refTable": "a"}}, + "ephemeral": true}}}, + "b": { + "columns": { + "aRef": { + "type": { + "key": { + "type": "uuid", + "refTable": "a"}}}}, + "isRoot": true}}}']], + [[{"name":"mydb","tables":{"a":{"columns":{"x":{"ephemeral":true,"type":{"key":{"refTable":"b","type":"uuid"}}},"y":{"type":{"key":{"refTable":"a","type":"uuid"}}}}},"b":{"columns":{"aRef":{"type":{"key":{"refTable":"a","type":"uuid"}}}},"isRoot":true}},"version":"4.2.1"}]]) + +dnl Schemas without version numbers are accepted for backward +dnl compatibility, but this is a deprecated feature. +OVSDB_CHECK_POSITIVE_CPY([schema without version number], + [[parse-schema \ + '{"name": "mydb", + "tables": { + "x": { + "columns": { + "y": { + "type": "integer"}}}}}']], + [{"name":"mydb","tables":{"x":{"columns":{"y":{"type":"integer"}}}}}]) -OVSDB_CHECK_NEGATIVE([schema with invalid refTables], +OVSDB_CHECK_NEGATIVE_CPY([schema with invalid refTables], [[parse-schema \ '{"name": "mydb", "tables": { @@ -44,4 +89,15 @@ OVSDB_CHECK_NEGATIVE([schema with invalid refTables], "key": { "type": "uuid", "refTable": "a"}}}}}}}']], - [[test-ovsdb: syntax error: column map key refers to undefined table c]]) + [[syntax error: column map key refers to undefined table c]]) + +OVSDB_CHECK_NEGATIVE_CPY([schema with invalid version number], + [[parse-schema \ + '{"name": "mydb", + "tables": { + "x": { + "columns": { + "y": { + "type": "integer"}}}}, + "version": "xxx"}']], + [[schema version "xxx" not in format x.y.z]])