ofproto: Fix potential leak during flow mods.
[sliver-openvswitch.git] / tests / ovsdb-table.at
index ebc5992..26ff90e 100644 (file)
@@ -1,31 +1,76 @@
 AT_BANNER([OVSDB -- tables])
 
-OVSDB_CHECK_POSITIVE([table with one column],
+OVSDB_CHECK_POSITIVE_CPY([non-root table with one column],
   [[parse-table mytable '{"columns": {"name": {"type": "string"}}}']],
   [[{"columns":{"name":{"type":"string"}}}]])
 
-OVSDB_CHECK_POSITIVE([immutable table with one column],
+OVSDB_CHECK_POSITIVE_CPY([immutable table with one column],
   [[parse-table mytable \
     '{"columns": {"name": {"type": "string"}},
       "mutable": false}']],
   [[{"columns":{"name":{"type":"string"}},"mutable":false}]])
 
-OVSDB_CHECK_POSITIVE([table with comment],
+OVSDB_CHECK_POSITIVE_CPY([root table with one column],
   [[parse-table mytable \
     '{"columns": {"name": {"type": "string"}},
-      "comment": "description of table"}']],
-  [[{"columns":{"name":{"type":"string"}},"comment":"description of table"}]])
+      "isRoot": true}']],
+  [[{"columns":{"name":{"type":"string"}},"isRoot":true}]])
 
-OVSDB_CHECK_NEGATIVE([column names may not begin with _],
+OVSDB_CHECK_POSITIVE_CPY([non-root table with default_is_root=true],
+  [[parse-table mytable '{"columns": {"name": {"type": "string"}}}' true]],
+  [[{"columns":{"name":{"type":"string"}},"isRoot":false}]])
+
+OVSDB_CHECK_POSITIVE_CPY([root table with default_is_root=true],
+  [[parse-table mytable \
+    '{"columns": {"name": {"type": "string"}},
+      "isRoot": true}' true]],
+  [[{"columns":{"name":{"type":"string"}}}]])
+
+OVSDB_CHECK_POSITIVE_CPY([table with maxRows of 2],
+  [[parse-table mytable '{"columns": {"name": {"type": "string"}}, 
+                          "maxRows": 2}']],
+  [[{"columns":{"name":{"type":"string"}},"maxRows":2}]])
+
+OVSDB_CHECK_POSITIVE_CPY([table with index],
+  [[parse-table mytable '{"columns": {"a": {"type": "integer"},
+                                      "b": {"type": "string"}},
+                          "indexes": [["b", "a"]]}']],
+  [[{"columns":{"a":{"type":"integer"},"b":{"type":"string"}},"indexes":[["b","a"]]}]])
+
+OVSDB_CHECK_NEGATIVE_CPY([table with syntax error in index],
+  [[parse-table mytable '{"columns": {"a": {"type": "integer"},
+                                      "b": {"type": "string"}},
+                          "indexes": [["b", "a"], [0]]}']],
+  [[array of distinct column names expected]])
+
+OVSDB_CHECK_NEGATIVE_CPY([table with empty index],
+  [[parse-table mytable '{"columns": {"a": {"type": "integer"},
+                                      "b": {"type": "string"}},
+                          "indexes": [[]]}']],
+  [[index must have at least one column]])
+
+OVSDB_CHECK_NEGATIVE_CPY([table with index of ephemeral column],
+  [[parse-table mytable '{"columns": {"a": {"type": "integer",
+                                            "ephemeral": true},
+                                      "b": {"type": "string"}},
+                          "indexes": [["b", "a"]]}']],
+  [[ephemeral columns (such as a) may not be indexed]])
+
+OVSDB_CHECK_NEGATIVE_CPY([column names may not begin with _],
   [[parse-table mytable \
     '{"columns": {"_column": {"type": "integer"}}}']],
   [[names beginning with "_" are reserved]],
   [table])
 
-OVSDB_CHECK_NEGATIVE([table must have at least one column (1)],
+OVSDB_CHECK_NEGATIVE_CPY([table must have at least one column (1)],
   [[parse-table mytable '{}']],
   [[Parsing table schema for table mytable failed: Required 'columns' member is missing.]])
 
-OVSDB_CHECK_NEGATIVE([table must have at least one column (2)],
+OVSDB_CHECK_NEGATIVE_CPY([table must have at least one column (2)],
   [[parse-table mytable '{"columns": {}}']],
   [[table must have at least one column]])
+
+OVSDB_CHECK_NEGATIVE_CPY([table maxRows must be positive],
+  [[parse-table mytable '{"columns": {"name": {"type": "string"}}, 
+                          "maxRows": 0}']],
+  [[syntax "{"columns":{"name":{"type":"string"}},"maxRows":0}": syntax error: maxRows must be at least 1]])