bridge: Make configuration database records valid all the time.
[openvswitch] / tests / test-ovsdb.c
index 672759be8be49fe3e1336b518cc24a3028d081b1..2c8470e1a449d1818ff912a0bca3d11eb582bd34 100644 (file)
@@ -396,7 +396,7 @@ do_parse_atom_strings(int argc, char *argv[])
         union ovsdb_atom atom;
         struct ds out;
 
-        die_if_error(ovsdb_atom_from_string(&atom, &base, argv[i]));
+        die_if_error(ovsdb_atom_from_string(&atom, &base, argv[i], NULL));
 
         ds_init(&out);
         ovsdb_atom_to_string(&atom, base.type, &out);
@@ -448,7 +448,7 @@ do_parse_data_strings(int argc, char *argv[])
         struct ovsdb_datum datum;
         struct ds out;
 
-        die_if_error(ovsdb_datum_from_string(&datum, &type, argv[i]));
+        die_if_error(ovsdb_datum_from_string(&datum, &type, argv[i], NULL));
 
         ds_init(&out);
         ovsdb_datum_to_string(&datum, &type, &out);
@@ -1565,31 +1565,6 @@ print_idl(struct ovsdb_idl *idl, int step)
     }
 }
 
-static unsigned int
-print_updated_idl(struct ovsdb_idl *idl, struct jsonrpc *rpc,
-                  int step, unsigned int seqno)
-{
-    for (;;) {
-        unsigned int new_seqno;
-
-        if (rpc) {
-            jsonrpc_run(rpc);
-        }
-        ovsdb_idl_run(idl);
-        new_seqno = ovsdb_idl_get_seqno(idl);
-        if (new_seqno != seqno) {
-            print_idl(idl, step);
-            return new_seqno;
-        }
-
-        if (rpc) {
-            jsonrpc_wait(rpc);
-        }
-        ovsdb_idl_wait(idl);
-        poll_block();
-    }
-}
-
 static void
 parse_uuids(const struct json *json, struct ovsdb_symbol_table *symtab,
             size_t *n)
@@ -1786,8 +1761,19 @@ do_idl(int argc, char *argv[])
             /* The previous transaction didn't change anything. */
             arg++;
         } else {
-            seqno = print_updated_idl(idl, rpc, step++, seqno);
+            /* Wait for update. */
+            while (ovsdb_idl_get_seqno(idl) == seqno && !ovsdb_idl_run(idl)) {
+                jsonrpc_run(rpc);
+
+                ovsdb_idl_wait(idl);
+                jsonrpc_wait(rpc);
+                poll_block();
+            }
+
+            /* Print update. */
+            print_idl(idl, step++);
         }
+        seqno = ovsdb_idl_get_seqno(idl);
 
         if (!strcmp(arg, "reconnect")) {
             printf("%03d: reconnect\n", step++);
@@ -1816,7 +1802,11 @@ do_idl(int argc, char *argv[])
     if (rpc) {
         jsonrpc_close(rpc);
     }
-    print_updated_idl(idl, NULL, step++, seqno);
+    while (ovsdb_idl_get_seqno(idl) == seqno && !ovsdb_idl_run(idl)) {
+        ovsdb_idl_wait(idl);
+        poll_block();
+    }
+    print_idl(idl, step++);
     ovsdb_idl_destroy(idl);
     printf("%03d: done\n", step);
 }