X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Fovsdb-file.at;h=d08b6de87daa664668bc3eaf1ac102a5c3afb2b4;hb=0d0f05b909b6428d44eb147bd4edd73782d2a137;hp=c85b29e2daaff8e7377f46729eca7b8c1f5e6cd4;hpb=f85f8ebbfac946c19b3c6eb0f4170f579d0a4d25;p=openvswitch diff --git a/tests/ovsdb-file.at b/tests/ovsdb-file.at index c85b29e2..d08b6de8 100644 --- a/tests/ovsdb-file.at +++ b/tests/ovsdb-file.at @@ -1,282 +1,48 @@ -AT_BANNER([OVSDB -- file I/O]) - -AT_SETUP([create empty, reread]) -AT_KEYWORDS([ovsdb file]) -AT_CAPTURE_FILE([file]) -OVS_CHECK_LCOV( - [test-ovsdb file-io file 'O_CREAT|O_RDWR'], [0], - [file: open successful -], [ignore]) -OVS_CHECK_LCOV( - [test-ovsdb file-io file 'O_RDONLY' read], [0], - [file: open successful -file: read: end of file -], [ignore]) -AT_CHECK([test -f .file.~lock~]) -AT_CLEANUP - -AT_SETUP([write one, reread]) -AT_KEYWORDS([ovsdb file]) -AT_CAPTURE_FILE([file]) -OVS_CHECK_LCOV( - [[test-ovsdb file-io file 'O_CREAT|O_RDWR' 'write:[0]']], [0], - [[file: open successful -file: write:[0] successful -]], [ignore]) -OVS_CHECK_LCOV( - [test-ovsdb file-io file 'O_RDONLY' read read], [0], - [[file: open successful -file: read: [0] -file: read: end of file -]], [ignore]) -AT_CHECK([test -f .file.~lock~]) -AT_CLEANUP - -AT_SETUP([check that O_EXCL works]) -AT_KEYWORDS([ovsdb file]) -AT_CAPTURE_FILE([file]) -OVS_CHECK_LCOV( - [[test-ovsdb file-io file 'O_CREAT|O_RDWR' 'write:[1]']], [0], - [[file: open successful -file: write:[1] successful -]], [ignore]) -OVS_CHECK_LCOV( - [test-ovsdb file-io file 'O_RDONLY' read], [0], - [[file: open successful -file: read: [1] -]], [ignore]) -OVS_CHECK_LCOV( - [test-ovsdb file-io file 'O_CREAT|O_RDWR|O_EXCL' read], [1], - [], [test-ovsdb: I/O error: create: file failed (File exists) +AT_BANNER([OVSDB -- file storage]) + +# OVSDB_CHECK_EXECUTION(TITLE, SCHEMA, TRANSACTIONS, OUTPUT, [KEYWORDS]) +# +# Creates a database with the given SCHEMA and runs each of the +# TRANSACTIONS (which should be a quoted list of quoted strings) +# against it with ovsdb-tool one at a time. +# +# Checks that the overall output is OUTPUT, but UUIDs in the output +# are replaced 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. +# +# TITLE is provided to AT_SETUP and KEYWORDS to AT_KEYWORDS. +m4_define([OVSDB_CHECK_EXECUTION], + [AT_SETUP([$1]) + AT_KEYWORDS([ovsdb file positive $5]) + AT_DATA([schema], [$2 ]) -AT_CHECK([test -f .file.~lock~]) -AT_CLEANUP - -AT_SETUP([write one, reread]) -AT_KEYWORDS([ovsdb file]) -AT_CAPTURE_FILE([file]) -OVS_CHECK_LCOV( - [[test-ovsdb file-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], - [[file: open successful -file: write:[0] successful -file: write:[1] successful -file: write:[2] successful -]], [ignore]) -OVS_CHECK_LCOV( - [test-ovsdb file-io file 'O_RDONLY' read read read read], [0], - [[file: open successful -file: read: [0] -file: read: [1] -file: read: [2] -file: read: end of file -]], [ignore]) -AT_CHECK([test -f .file.~lock~]) -AT_CLEANUP - -AT_SETUP([write one, reread, append]) -AT_KEYWORDS([ovsdb file]) -AT_CAPTURE_FILE([file]) -OVS_CHECK_LCOV( - [[test-ovsdb file-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], - [[file: open successful -file: write:[0] successful -file: write:[1] successful -file: write:[2] successful -]], [ignore]) -OVS_CHECK_LCOV( - [[test-ovsdb file-io file 'O_RDWR' read read read 'write:["append"]']], [0], - [[file: open successful -file: read: [0] -file: read: [1] -file: read: [2] -file: write:["append"] successful -]], [ignore]) -OVS_CHECK_LCOV( - [test-ovsdb file-io file 'O_RDONLY' read read read read read], [0], - [[file: open successful -file: read: [0] -file: read: [1] -file: read: [2] -file: read: ["append"] -file: read: end of file -]], [ignore]) -AT_CHECK([test -f .file.~lock~]) -AT_CLEANUP - -AT_SETUP([write, reread one, overwrite]) -AT_KEYWORDS([ovsdb file]) -AT_CAPTURE_FILE([file]) -OVS_CHECK_LCOV( - [[test-ovsdb file-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], - [[file: open successful -file: write:[0] successful -file: write:[1] successful -file: write:[2] successful -]], [ignore]) -OVS_CHECK_LCOV( - [[test-ovsdb file-io file 'O_RDWR' read 'write:["more data"]']], [0], - [[file: open successful -file: read: [0] -file: write:["more data"] successful -]], [ignore]) -OVS_CHECK_LCOV( - [test-ovsdb file-io file 'O_RDONLY' read read read], [0], - [[file: open successful -file: read: [0] -file: read: ["more data"] -file: read: end of file -]], [ignore]) -AT_CHECK([test -f .file.~lock~]) -AT_CLEANUP - -AT_SETUP([write, add corrupted data, read]) -AT_KEYWORDS([ovsdb file]) -AT_CAPTURE_FILE([file]) -OVS_CHECK_LCOV( - [[test-ovsdb file-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], - [[file: open successful -file: write:[0] successful -file: write:[1] successful -file: write:[2] successful -]], [ignore]) -AT_CHECK([echo 'xxx' >> file]) -OVS_CHECK_LCOV( - [test-ovsdb file-io file 'O_RDONLY' read read read read], [0], - [[file: open successful -file: read: [0] -file: read: [1] -file: read: [2] -file: read failed: syntax error: file: parse error at offset 174 in header line "xxx" -]], [ignore]) -AT_CHECK([test -f .file.~lock~]) -AT_CLEANUP - -AT_SETUP([write, add corrupted data, read, overwrite]) -AT_KEYWORDS([ovsdb file]) -AT_CAPTURE_FILE([file]) -OVS_CHECK_LCOV( - [[test-ovsdb file-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], - [[file: open successful -file: write:[0] successful -file: write:[1] successful -file: write:[2] successful -]], [ignore]) -AT_CHECK([echo 'xxx' >> file]) -OVS_CHECK_LCOV( - [[test-ovsdb file-io file 'O_RDWR' read read read read 'write:[3]']], [0], - [[file: open successful -file: read: [0] -file: read: [1] -file: read: [2] -file: read failed: syntax error: file: parse error at offset 174 in header line "xxx" -file: write:[3] successful -]], [ignore]) -OVS_CHECK_LCOV( - [test-ovsdb file-io file 'O_RDONLY' read read read read read], [0], - [[file: open successful -file: read: [0] -file: read: [1] -file: read: [2] -file: read: [3] -file: read: end of file -]], [ignore]) -AT_CHECK([test -f .file.~lock~]) -AT_CLEANUP - -AT_SETUP([write, corrupt some data, read, overwrite]) -AT_KEYWORDS([ovsdb file]) -AT_CAPTURE_FILE([file]) -OVS_CHECK_LCOV( - [[test-ovsdb file-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], - [[file: open successful -file: write:[0] successful -file: write:[1] successful -file: write:[2] successful -]], [ignore]) -AT_CHECK([[sed 's/\[2]/[3]/' < file > file.tmp]]) -AT_CHECK([mv file.tmp file]) -AT_CHECK([[grep -c '\[3]' file]], [0], [1 + touch .db.~lock~ + AT_CHECK([ovsdb-tool create db schema], [0], [stdout], [ignore]) + m4_foreach([txn], [$3], + [AT_CHECK([ovsdb-tool transact db 'txn'], [0], [stdout], [ignore]) +cat stdout >> output ]) -OVS_CHECK_LCOV( - [[test-ovsdb file-io file 'O_RDWR' read read read 'write:["longer data"]']], [0], - [[file: open successful -file: read: [0] -file: read: [1] -file: read failed: syntax error: file: 4 bytes starting at offset 170 have SHA-1 hash 5c031e5c0d3a9338cc127ebe40bb2748b6a67e78 but should have hash 98f55556e7ffd432381b56a19bd485b3e6446442 -file: write:["longer data"] successful -]], [ignore]) -OVS_CHECK_LCOV( - [test-ovsdb file-io file 'O_RDONLY' read read read read], [0], - [[file: open successful -file: read: [0] -file: read: [1] -file: read: ["longer data"] -file: read: end of file -]], [ignore]) -AT_CHECK([test -f .file.~lock~]) -AT_CLEANUP + AT_CHECK([perl $srcdir/uuidfilt.pl output], [0], [$4]) + AT_CLEANUP]) -AT_SETUP([write, truncate file, read, overwrite]) -AT_KEYWORDS([ovsdb file]) -AT_CAPTURE_FILE([file]) -OVS_CHECK_LCOV( - [[test-ovsdb file-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], - [[file: open successful -file: write:[0] successful -file: write:[1] successful -file: write:[2] successful -]], [ignore]) -AT_CHECK([[sed 's/\[2]/2/' < file > file.tmp]]) -AT_CHECK([mv file.tmp file]) -AT_CHECK([[grep -c '^2$' file]], [0], [1 -]) -OVS_CHECK_LCOV( - [[test-ovsdb file-io file 'O_RDWR' read read read 'write:["longer data"]']], [0], - [[file: open successful -file: read: [0] -file: read: [1] -file: read failed: I/O error: file: error reading 4 bytes starting at offset 170 (unexpected end of file) -file: write:["longer data"] successful -]], [ignore]) -OVS_CHECK_LCOV( - [test-ovsdb file-io file 'O_RDONLY' read read read read], [0], - [[file: open successful -file: read: [0] -file: read: [1] -file: read: ["longer data"] -file: read: end of file -]], [ignore]) -AT_CHECK([test -f .file.~lock~]) -AT_CLEANUP +EXECUTION_EXAMPLES -AT_SETUP([write bad JSON, read, overwrite]) -AT_KEYWORDS([ovsdb file]) -AT_CAPTURE_FILE([file]) -OVS_CHECK_LCOV( - [[test-ovsdb file-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], - [[file: open successful -file: write:[0] successful -file: write:[1] successful -file: write:[2] successful -]], [ignore]) -AT_CHECK([[printf '%s\n%s\n' 'OVSDB JSON 5 d910b02871075d3156ec8675dfc95b7d5d640aa6' 'null' >> file]]) -OVS_CHECK_LCOV( - [[test-ovsdb file-io file 'O_RDWR' read read read read 'write:["replacement data"]']], [0], - [[file: open successful -file: read: [0] -file: read: [1] -file: read: [2] -file: read failed: syntax error: file: 5 bytes starting at offset 228 are not valid JSON (syntax error at beginning of input) -file: write:["replacement data"] successful -]], [ignore]) -OVS_CHECK_LCOV( - [test-ovsdb file-io file 'O_RDONLY' read read read read read], [0], - [[file: open successful -file: read: [0] -file: read: [1] -file: read: [2] -file: read: ["replacement data"] -file: read: end of file -]], [ignore]) -AT_CHECK([test -f .file.~lock~]) +AT_SETUP([transaction comments]) +AT_KEYWORDS([ovsdb file positive]) +AT_DATA([schema], [ORDINAL_SCHEMA +]) +touch .db.~lock~ +AT_CHECK([ovsdb-tool create db schema], [0], [], [ignore]) +AT_CHECK([[ovsdb-tool transact db ' + [{"op": "insert", + "table": "ordinals", + "row": {"name": "five", "number": 5}}, + {"op": "comment", + "comment": "add row for 5"}]']], [0], [stdout], [ignore]) +AT_CHECK([perl $srcdir/uuidfilt.pl stdout], [0], + [[[{"uuid":["uuid","<0>"]},{}] +]]) +AT_CHECK([grep -q "add row for 5" db]) AT_CLEANUP