Prepare for post-2.2.0 (2.2.90).
[sliver-openvswitch.git] / tests / ovsdb-schema.at
index 6cd2fa2..00da808 100644 (file)
@@ -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]])