X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Fovsdb-idl.at;h=3b4cfc8061d51382ddb81df4653945b2a8a2b890;hb=7fae5e7bb62af3b8ac74fe20052064eb01feada0;hp=6fc57f372e6325009a486a994a18bf0c6ecf6a8a;hpb=fbf925e45da7100e5018bd3ad49532e407666f77;p=sliver-openvswitch.git diff --git a/tests/ovsdb-idl.at b/tests/ovsdb-idl.at index 6fc57f372..3b4cfc806 100644 --- a/tests/ovsdb-idl.at +++ b/tests/ovsdb-idl.at @@ -1,6 +1,7 @@ AT_BANNER([OVSDB -- interface description language (IDL)]) -# OVSDB_CHECK_IDL(TITLE, [PRE-IDL-TXN], TRANSACTIONS, OUTPUT, [KEYWORDS]) +# OVSDB_CHECK_IDL(TITLE, [PRE-IDL-TXN], TRANSACTIONS, OUTPUT, [KEYWORDS], +# [FILTER]) # # Creates a database with a schema derived from idltest.ovsidl, runs # each PRE-IDL-TXN (if any), starts an ovsdb-server on that database, @@ -11,7 +12,8 @@ AT_BANNER([OVSDB -- interface description language (IDL)]) # by markers of the form where N is a number. The first unique # UUID is replaced by <0>, the next by <1>, and so on. If a given # UUID appears more than once it is always replaced by the same -# marker. +# marker. If FILTER is supplied then the output is also filtered +# through the specified program. # # TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS. m4_define([OVSDB_CHECK_IDL], @@ -24,8 +26,8 @@ m4_define([OVSDB_CHECK_IDL], [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore], [kill `cat pid`])]) AT_CHECK([test-ovsdb '-vPATTERN:console:test-ovsdb|%c|%m' -vjsonrpc -t10 idl unix:socket $3], [0], [stdout], [ignore], [kill `cat pid`]) - AT_CHECK([sort stdout | perl $srcdir/uuidfilt.pl], [0], [$4], [], - [kill `cat pid`]) + AT_CHECK([sort stdout | perl $srcdir/uuidfilt.pl]m4_if([$6],,, [[| $6]]), + [0], [$4], [], [kill `cat pid`]) OVSDB_SERVER_SHUTDOWN AT_CLEANUP]) @@ -38,7 +40,8 @@ OVSDB_CHECK_IDL([simple idl, initially empty, no ops], OVSDB_CHECK_IDL([simple idl, initially empty, various ops], [], - [['[{"op": "insert", + [['["idltest", + {"op": "insert", "table": "simple", "row": {"i": 1, "r": 2.0, @@ -54,15 +57,18 @@ OVSDB_CHECK_IDL([simple idl, initially empty, various ops], {"op": "insert", "table": "simple", "row": {}}]' \ - '[{"op": "update", + '["idltest", + {"op": "update", "table": "simple", "where": [], "row": {"b": true}}]' \ - '[{"op": "update", + '["idltest", + {"op": "update", "table": "simple", "where": [], "row": {"r": 123.5}}]' \ - '[{"op": "insert", + '["idltest", + {"op": "insert", "table": "simple", "row": {"i": -1, "r": 125, @@ -73,11 +79,13 @@ OVSDB_CHECK_IDL([simple idl, initially empty, various ops], "ba": ["set", [false]], "sa": ["set", []], "ua": ["set", []]}}]' \ - '[{"op": "update", + '["idltest", + {"op": "update", "table": "simple", "where": [["i", "<", 1]], "row": {"s": "newstring"}}]' \ - '[{"op": "delete", + '["idltest", + {"op": "delete", "table": "simple", "where": [["i", "==", 0]]}]' \ 'reconnect']], @@ -109,7 +117,8 @@ OVSDB_CHECK_IDL([simple idl, initially empty, various ops], ]]) OVSDB_CHECK_IDL([simple idl, initially populated], - [['[{"op": "insert", + [['["idltest", + {"op": "insert", "table": "simple", "row": {"i": 1, "r": 2.0, @@ -125,7 +134,8 @@ OVSDB_CHECK_IDL([simple idl, initially populated], {"op": "insert", "table": "simple", "row": {}}]']], - [['[{"op": "update", + [['["idltest", + {"op": "update", "table": "simple", "where": [], "row": {"b": true}}]']], @@ -138,7 +148,8 @@ OVSDB_CHECK_IDL([simple idl, initially populated], ]]) OVSDB_CHECK_IDL([simple idl, writing via IDL], - [['[{"op": "insert", + [['["idltest", + {"op": "insert", "table": "simple", "row": {"i": 1, "r": 2.0, @@ -154,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 @@ -167,8 +178,40 @@ 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], - [['[{"op": "insert", + [['["idltest", + {"op": "insert", "table": "simple", "row": {}}]']], [['set 0 r 2.0, increment simple i']], @@ -180,11 +223,13 @@ OVSDB_CHECK_IDL([simple idl, increment operation], OVSDB_CHECK_IDL([self-linking idl, consistent ops], [], - [['[{"op": "insert", + [['["idltest", + {"op": "insert", "table": "link1", "row": {"i": 0, "k": ["named-uuid", "self"]}, "uuid-name": "self"}]' \ - '[{"op": "insert", + '["idltest", + {"op": "insert", "table": "link1", "row": {"i": 1, "k": ["named-uuid", "row2"]}, "uuid-name": "row1"}, @@ -192,11 +237,13 @@ OVSDB_CHECK_IDL([self-linking idl, consistent ops], "table": "link1", "row": {"i": 2, "k": ["named-uuid", "row1"]}, "uuid-name": "row2"}]' \ - '[{"op": "update", + '["idltest", + {"op": "update", "table": "link1", "where": [["i", "==", 1]], "row": {"k": ["uuid", "#1#"]}}]' \ - '[{"op": "update", + '["idltest", + {"op": "update", "table": "link1", "where": [], "row": {"k": ["uuid", "#0#"]}}]']], @@ -220,47 +267,56 @@ OVSDB_CHECK_IDL([self-linking idl, consistent ops], OVSDB_CHECK_IDL([self-linking idl, inconsistent ops], [], - [['[{"op": "insert", + [['["idltest", + {"op": "insert", "table": "link1", "row": {"i": 0, "k": ["uuid", "cf197cc5-c8c9-42f5-82d5-c71a9f2cb96b"]}}]' \ - '+[{"op": "insert", + '+["idltest", + {"op": "insert", "table": "link1", "uuid-name": "one", "row": {"i": 1, "k": ["named-uuid", "one"]}}, {"op": "insert", "table": "link1", "row": {"i": 2, "k": ["named-uuid", "one"]}}]' \ - '[{"op": "update", + '["idltest", + {"op": "update", "table": "link1", "where": [], "row": {"k": ["uuid", "c2fca39a-e69a-42a4-9c56-5eca85839ce9"]}}]' \ - '+[{"op": "delete", + '+["idltest", + {"op": "delete", "table": "link1", "where": [["_uuid", "==", ["uuid", "#1#"]]]}]' \ - '+[{"op": "delete", + '+["idltest", + {"op": "delete", "table": "link1", "where": [["_uuid", "==", ["uuid", "#2#"]]]}]' \ - '[{"op": "delete", + '["idltest", + {"op": "delete", "table": "link1", "where": []}]' \ ]], [[000: empty -001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"details":"reference to nonexistent row <1>","error":"referential integrity violation"}]} +001: {"error":null,"result":[{"uuid":["uuid","<0>"]},{"details":"Table link1 column k row <0> references nonexistent row <1> in table link1.","error":"referential integrity violation"}]} 002: {"error":null,"result":[{"uuid":["uuid","<2>"]},{"uuid":["uuid","<3>"]}]} 003: i=1 k=1 ka=[] l2= uuid=<2> 003: i=2 k=1 ka=[] l2= uuid=<3> -004: {"error":null,"result":[{"count":2},{"details":"reference to nonexistent row <4>","error":"referential integrity violation"}]} +004: {"error":null,"result":[{"count":2},{"details":"Table link1 column k row references nonexistent row <4> in table link1.","error":"referential integrity violation"}]} 005: {"error":null,"result":[{"count":1},{"details":"cannot delete link1 row <2> because of 1 remaining reference(s)","error":"referential integrity violation"}]} 006: {"error":null,"result":[{"count":1}]} 007: i=1 k=1 ka=[] l2= uuid=<2> 008: {"error":null,"result":[{"count":1}]} 009: empty 010: done -]]) +]], + [], + [[sed -e '/004:/s/row <[23]> references/row references/']]) OVSDB_CHECK_IDL([self-linking idl, sets], [], - [['[{"op": "insert", + [['["idltest", + {"op": "insert", "table": "link1", "row": {"i": 0, "k": ["named-uuid", "i0"], "ka": ["set", [["named-uuid", "i0"]]]}, "uuid-name": "i0"}, @@ -276,15 +332,18 @@ OVSDB_CHECK_IDL([self-linking idl, sets], "table": "link1", "row": {"i": 3, "k": ["named-uuid", "i0"], "ka": ["set", [["named-uuid", "i3"]]]}, "uuid-name": "i3"}]' \ - '[{"op": "update", + '["idltest", + {"op": "update", "table": "link1", "where": [], "row": {"ka": ["set", [["uuid", "#0#"], ["uuid", "#1#"], ["uuid", "#2#"], ["uuid", "#3#"]]]}}]' \ - '[{"op": "update", + '["idltest", + {"op": "update", "table": "link1", - "where": [], - "row": {"ka": ["set", [["uuid", "#0#"], ["uuid", "88702e78-845b-4a6e-ad08-cf68922ae84a"], ["uuid", "#2#"], ["uuid", "1ac2b12e-b767-4805-a55d-43976e40c465"]]]}}]' \ - '+[{"op": "delete", + "where": [["i", "==", 2]], + "row": {"ka": ["set", [["uuid", "#0#"], ["uuid", "88702e78-845b-4a6e-ad08-cf68922ae84a"], ["uuid", "#2#"]]]}}]' \ + '+["idltest", + {"op": "delete", "table": "link1", "where": []}]']], [[000: empty @@ -298,7 +357,7 @@ OVSDB_CHECK_IDL([self-linking idl, sets], 004: i=1 k=0 ka=[0 1 2 3] l2= uuid=<1> 004: i=2 k=0 ka=[0 1 2 3] l2= uuid=<2> 004: i=3 k=0 ka=[0 1 2 3] l2= uuid=<3> -005: {"error":null,"result":[{"count":4},{"details":"reference to nonexistent row <4>","error":"referential integrity violation"}]} +005: {"error":null,"result":[{"count":1},{"details":"Table link1 column ka row <2> references nonexistent row <4> in table link1.","error":"referential integrity violation"}]} 006: {"error":null,"result":[{"count":4}]} 007: empty 008: done @@ -306,7 +365,8 @@ OVSDB_CHECK_IDL([self-linking idl, sets], OVSDB_CHECK_IDL([external-linking idl, consistent ops], [], - [['[{"op": "insert", + [['["idltest", + {"op": "insert", "table": "link2", "row": {"i": 0}, "uuid-name": "row0"},