ovsdb-idl: Test prerequisite checking.
authorBen Pfaff <blp@nicira.com>
Fri, 22 Oct 2010 19:52:44 +0000 (12:52 -0700)
committerBen Pfaff <blp@nicira.com>
Fri, 22 Oct 2010 21:48:09 +0000 (14:48 -0700)
tests/ovsdb-idl.at
tests/test-ovsdb.c

index b184e9d95a70a026b85bcce7c93960a6160e8779..3b4cfc8061d51382ddb81df4653945b2a8a2b890 100644 (file)
@@ -165,8 +165,8 @@ OVSDB_CHECK_IDL([simple idl, writing via IDL],
       {"op": "insert",
        "table": "simple",
        "row": {}}]']],
-  [['set 0 b 1, set 1 r 3.5' \
-    'insert 2, delete 1']],
+  [['verify 0 b, verify 1 r, set 0 b 1, set 1 r 3.5' \
+    'insert 2, verify 2 i, verify 1 b, delete 1']],
   [[000: i=0 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
 000: i=1 r=2 b=true s=mystring u=<2> ia=[1 2 3] ra=[-0.5] ba=[false true] sa=[abc def] ua=[<3> <4>] uuid=<5>
 001: commit, status=success
@@ -178,6 +178,37 @@ OVSDB_CHECK_IDL([simple idl, writing via IDL],
 005: done
 ]])
 
+OVSDB_CHECK_IDL([simple idl, handling verification failure],
+  [['["idltest",
+      {"op": "insert",
+       "table": "simple",
+       "row": {"i": 1,
+               "r": 2.0}},
+      {"op": "insert",
+       "table": "simple",
+       "row": {}}]']],
+  [['set 0 b 1' \
+    '+["idltest",
+       {"op": "update",
+        "table": "simple",
+        "where": [["i", "==", 1]],
+        "row": {"r": 5.0}}]' \
+    '+verify 1 r, set 1 r 3' \
+    'verify 1 r, set 1 r 3' \
+    ]],
+  [[000: i=0 r=0 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
+000: i=1 r=2 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2>
+001: commit, status=success
+002: {"error":null,"result":[{"count":1}]}
+003: commit, status=try again
+004: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
+004: i=1 r=5 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2>
+005: commit, status=success
+006: i=0 r=0 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<1>
+006: i=1 r=3 b=false s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[] uuid=<2>
+007: done
+]])
+
 OVSDB_CHECK_IDL([simple idl, increment operation],
   [['["idltest",
       {"op": "insert",
index cdc939bb4dfa777f24eeb8b78cb6a96516c2deaa..5a5a9083d4525b6e10e489f53e32a45b678e1870 100644 (file)
@@ -1779,9 +1779,36 @@ idl_set(struct ovsdb_idl *idl, char *commands, int step)
                           "i=%d", atoi(arg1));
             }
             idltest_simple_delete(s);
+        } else if (!strcmp(name, "verify")) {
+            const struct idltest_simple *s;
+
+            if (!arg2 || arg3) {
+                ovs_fatal(0, "\"verify\" command requires 2 arguments");
+            }
+
+            s = idltest_find_simple(idl, atoi(arg1));
+            if (!s) {
+                ovs_fatal(0, "\"verify\" command asks for nonexistent "
+                          "i=%d", atoi(arg1));
+            }
+
+            if (!strcmp(arg2, "i")) {
+                idltest_simple_verify_i(s);
+            } else if (!strcmp(arg2, "b")) {
+                idltest_simple_verify_b(s);
+            } else if (!strcmp(arg2, "s")) {
+                idltest_simple_verify_s(s);
+            } else if (!strcmp(arg2, "u")) {
+                idltest_simple_verify_s(s);
+            } else if (!strcmp(arg2, "r")) {
+                idltest_simple_verify_r(s);
+            } else {
+                ovs_fatal(0, "\"verify\" command asks for unknown column %s",
+                          arg2);
+            }
         } else if (!strcmp(name, "increment")) {
             if (!arg2 || arg3) {
-                ovs_fatal(0, "\"set\" command requires 2 arguments");
+                ovs_fatal(0, "\"increment\" command requires 2 arguments");
             }
             ovsdb_idl_txn_increment(txn, arg1, arg2, NULL);
             increment = true;