]> git.proxmox.com Git - mirror_ovs.git/blobdiff - tests/ovsdb-log.at
ofp-print: Abbreviate lists of fields in table features output.
[mirror_ovs.git] / tests / ovsdb-log.at
index 8aeb33b56ffae11466aecce841164c57bdcb2586..00a244ba4adbcb070e3fad18043e7f0ca3035d95 100644 (file)
@@ -4,11 +4,11 @@ AT_SETUP([create empty, reread])
 AT_KEYWORDS([ovsdb log])
 AT_CAPTURE_FILE([log])
 AT_CHECK(
-  [test-ovsdb log-io file 'O_CREAT|O_RDWR'], [0], 
+  [test-ovsdb log-io file create], [0], 
   [file: open successful
 ], [ignore])
 AT_CHECK(
-  [test-ovsdb log-io file 'O_RDONLY' read], [0], 
+  [test-ovsdb log-io file read-only read], [0], 
   [file: open successful
 file: read: end of log
 ], [ignore])
@@ -19,35 +19,40 @@ AT_SETUP([write one, reread])
 AT_KEYWORDS([ovsdb log])
 AT_CAPTURE_FILE([file])
 AT_CHECK(
-  [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]']], [0], 
+  [[test-ovsdb log-io file create 'write:{"x":0}']], [0],
   [[file: open successful
-file: write:[0] successful
+file: write:{"x":0} successful
 ]], [ignore])
 AT_CHECK(
-  [test-ovsdb log-io file 'O_RDONLY' read read], [0], 
+  [test-ovsdb log-io file read-only read read], [0], 
   [[file: open successful
-file: read: [0]
+file: read: {"x":0}
 file: read: end of log
 ]], [ignore])
 AT_CHECK([test -f .file.~lock~])
 AT_CLEANUP
 
-AT_SETUP([check that O_EXCL works])
+AT_SETUP([check that create fails if file exists])
 AT_KEYWORDS([ovsdb log])
 AT_CAPTURE_FILE([file])
 AT_CHECK(
-  [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[1]']], [0], 
+  [[test-ovsdb log-io file create 'write:{"x":1}']], [0],
   [[file: open successful
-file: write:[1] successful
+file: write:{"x":1} successful
 ]], [ignore])
 AT_CHECK(
-  [test-ovsdb log-io file 'O_RDONLY' read], [0], 
+  [test-ovsdb log-io file read-only read], [0], 
   [[file: open successful
-file: read: [1]
+file: read: {"x":1}
 ]], [ignore])
 AT_CHECK(
-  [test-ovsdb -vlockfile:console:emer log-io file 'O_CREAT|O_RDWR|O_EXCL' read], [1], 
-  [], [test-ovsdb: I/O error: create: file failed (File exists)
+  [test-ovsdb log-io file create-excl read], [1],
+  [], [test-ovsdb: I/O error: file: create failed (File exists)
+])
+AT_CHECK(
+  [test-ovsdb log-io file create read], [0],
+  [file: open successful
+file: read: {"x":1}
 ])
 AT_CHECK([test -f .file.~lock~])
 AT_CLEANUP
@@ -56,48 +61,149 @@ AT_SETUP([write one, reread])
 AT_KEYWORDS([ovsdb log])
 AT_CAPTURE_FILE([file])
 AT_CHECK(
-  [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], 
+  [[test-ovsdb log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
   [[file: open successful
-file: write:[0] successful
-file: write:[1] successful
-file: write:[2] successful
+file: write:{"x":0} successful
+file: write:{"x":1} successful
+file: write:{"x":2} successful
 ]], [ignore])
 AT_CHECK(
-  [test-ovsdb log-io file 'O_RDONLY' read read read read], [0], 
+  [test-ovsdb log-io file read-only read read read read], [0], 
   [[file: open successful
-file: read: [0]
-file: read: [1]
-file: read: [2]
+file: read: {"x":0}
+file: read: {"x":1}
+file: read: {"x":2}
 file: read: end of log
 ]], [ignore])
 AT_CHECK([test -f .file.~lock~])
 AT_CLEANUP
 
+AT_SETUP([write one, replace, commit])
+AT_KEYWORDS([ovsdb log])
+AT_CAPTURE_FILE([file])
+for option in '' --no-rename-open-files; do
+    rm -f file
+    AT_CHECK(
+      [[test-ovsdb $option log-io file create \
+          'write:{"x":0}' \
+          'replace_start' \
+          'new-write:{"x":1}' \
+          'new-write:{"x":2}' \
+          'old-write:{"x":4}' \
+          'replace_commit' \
+          'read' \
+          'write:{"x":3}']], [0],
+      [[file: open successful
+file: write:{"x":0} successful
+file: replace_start successful
+(temp): write:{"x":1} successful
+(temp): write:{"x":2} successful
+file: write:{"x":4} successful
+file: replace_commit successful
+file: read: end of log
+file: write:{"x":3} successful
+]])
+    AT_CHECK(
+      [test-ovsdb log-io file read-only read read read read], [0],
+      [[file: open successful
+file: read: {"x":1}
+file: read: {"x":2}
+file: read: {"x":3}
+file: read: end of log
+]], [ignore])
+done
+AT_CHECK([test -f .file.~lock~])
+AT_CLEANUP
+
+AT_SETUP([write one, replace, abort])
+AT_KEYWORDS([ovsdb log])
+AT_CAPTURE_FILE([file])
+for option in '' --no-rename-open-files; do
+    rm -f file
+    AT_CHECK(
+      [[test-ovsdb $option log-io file create \
+          'write:{"x":0}' \
+          'replace_start' \
+          'new-write:{"x":1}' \
+          'new-write:{"x":2}' \
+          'old-write:{"x":4}' \
+          'replace_abort' \
+          'read' \
+          'write:{"x":3}']], [0],
+      [[file: open successful
+file: write:{"x":0} successful
+file: replace_start successful
+(temp): write:{"x":1} successful
+(temp): write:{"x":2} successful
+file: write:{"x":4} successful
+file: replace_abort successful
+file: read: end of log
+file: write:{"x":3} successful
+]])
+    AT_CHECK(
+      [test-ovsdb log-io file read-only read read read read], [0],
+      [[file: open successful
+file: read: {"x":0}
+file: read: {"x":4}
+file: read: {"x":3}
+file: read: end of log
+]], [ignore])
+done
+AT_CHECK([test -f .file.~lock~])
+AT_CLEANUP
+
+AT_SETUP([write one, reread - alternative magic])
+AT_KEYWORDS([ovsdb log])
+AT_CAPTURE_FILE([file])
+# Sometimes you just need more magic:
+# http://www.catb.org/jargon/html/magic-story.html
+AT_CHECK(
+  [[test-ovsdb --magic="MORE_MAGIC" log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
+  [[file: open successful
+file: write:{"x":0} successful
+file: write:{"x":1} successful
+file: write:{"x":2} successful
+]], [ignore])
+AT_CHECK(
+  [test-ovsdb --magic="MORE_MAGIC" log-io file read-only read read read read], [0],
+  [[file: open successful
+file: read: {"x":0}
+file: read: {"x":1}
+file: read: {"x":2}
+file: read: end of log
+]], [ignore])
+AT_CHECK(
+  [test-ovsdb log-io file read-only], [1], [],
+  [test-ovsdb: ovsdb error: file: cannot identify file type
+])
+AT_CHECK([test -f .file.~lock~])
+AT_CLEANUP
+
 AT_SETUP([write one, reread, append])
 AT_KEYWORDS([ovsdb log])
 AT_CAPTURE_FILE([file])
 AT_CHECK(
-  [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], 
+  [[test-ovsdb log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
   [[file: open successful
-file: write:[0] successful
-file: write:[1] successful
-file: write:[2] successful
+file: write:{"x":0} successful
+file: write:{"x":1} successful
+file: write:{"x":2} successful
 ]], [ignore])
 AT_CHECK(
-  [[test-ovsdb log-io file 'O_RDWR' read read read 'write:["append"]']], [0], 
+  [[test-ovsdb log-io file read/write read read read 'write:{"append":0}']], [0],
   [[file: open successful
-file: read: [0]
-file: read: [1]
-file: read: [2]
-file: write:["append"] successful
+file: read: {"x":0}
+file: read: {"x":1}
+file: read: {"x":2}
+file: write:{"append":0} successful
 ]], [ignore])
 AT_CHECK(
-  [test-ovsdb log-io file 'O_RDONLY' read read read read read], [0], 
+  [test-ovsdb log-io file read-only read read read read read], [0], 
   [[file: open successful
-file: read: [0]
-file: read: [1]
-file: read: [2]
-file: read: ["append"]
+file: read: {"x":0}
+file: read: {"x":1}
+file: read: {"x":2}
+file: read: {"append":0}
 file: read: end of log
 ]], [ignore])
 AT_CHECK([test -f .file.~lock~])
@@ -107,23 +213,23 @@ AT_SETUP([write, reread one, overwrite])
 AT_KEYWORDS([ovsdb log])
 AT_CAPTURE_FILE([file])
 AT_CHECK(
-  [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], 
+  [[test-ovsdb log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
   [[file: open successful
-file: write:[0] successful
-file: write:[1] successful
-file: write:[2] successful
+file: write:{"x":0} successful
+file: write:{"x":1} successful
+file: write:{"x":2} successful
 ]], [ignore])
 AT_CHECK(
-  [[test-ovsdb log-io file 'O_RDWR' read 'write:["more data"]']], [0], 
+  [[test-ovsdb log-io file read/write read 'write:{"more data":0}']], [0],
   [[file: open successful
-file: read: [0]
-file: write:["more data"] successful
+file: read: {"x":0}
+file: write:{"more data":0} successful
 ]], [ignore])
 AT_CHECK(
-  [test-ovsdb log-io file 'O_RDONLY' read read read], [0], 
+  [test-ovsdb log-io file read-only read read read], [0], 
   [[file: open successful
-file: read: [0]
-file: read: ["more data"]
+file: read: {"x":0}
+file: read: {"more data":0}
 file: read: end of log
 ]], [ignore])
 AT_CHECK([test -f .file.~lock~])
@@ -133,20 +239,20 @@ AT_SETUP([write, add corrupted data, read])
 AT_KEYWORDS([ovsdb log])
 AT_CAPTURE_FILE([file])
 AT_CHECK(
-  [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], 
+  [[test-ovsdb log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
   [[file: open successful
-file: write:[0] successful
-file: write:[1] successful
-file: write:[2] successful
+file: write:{"x":0} successful
+file: write:{"x":1} successful
+file: write:{"x":2} successful
 ]], [ignore])
 AT_CHECK([echo 'xxx' >> file])
 AT_CHECK(
-  [test-ovsdb log-io file 'O_RDONLY' read read read read], [0], 
+  [test-ovsdb log-io file read-only 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"
+file: read: {"x":0}
+file: read: {"x":1}
+file: read: {"x":2}
+file: read failed: syntax error: file: parse error at offset 186 in header line "xxx"
 ]], [ignore])
 AT_CHECK([test -f .file.~lock~])
 AT_CLEANUP
@@ -155,29 +261,29 @@ AT_SETUP([write, add corrupted data, read, overwrite])
 AT_KEYWORDS([ovsdb log])
 AT_CAPTURE_FILE([file])
 AT_CHECK(
-  [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], 
+  [[test-ovsdb log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
   [[file: open successful
-file: write:[0] successful
-file: write:[1] successful
-file: write:[2] successful
+file: write:{"x":0} successful
+file: write:{"x":1} successful
+file: write:{"x":2} successful
 ]], [ignore])
 AT_CHECK([echo 'xxx' >> file])
 AT_CHECK(
-  [[test-ovsdb log-io file 'O_RDWR' read read read read 'write:[3]']], [0], 
+  [[test-ovsdb log-io file read/write read read read read 'write:{"x":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
+file: read: {"x":0}
+file: read: {"x":1}
+file: read: {"x":2}
+file: read failed: syntax error: file: parse error at offset 186 in header line "xxx"
+file: write:{"x":3} successful
 ]], [ignore])
 AT_CHECK(
-  [test-ovsdb log-io file 'O_RDONLY' read read read read read], [0], 
+  [test-ovsdb log-io file read-only read read read read read], [0], 
   [[file: open successful
-file: read: [0]
-file: read: [1]
-file: read: [2]
-file: read: [3]
+file: read: {"x":0}
+file: read: {"x":1}
+file: read: {"x":2}
+file: read: {"x":3}
 file: read: end of log
 ]], [ignore])
 AT_CHECK([test -f .file.~lock~])
@@ -187,30 +293,30 @@ AT_SETUP([write, corrupt some data, read, overwrite])
 AT_KEYWORDS([ovsdb log])
 AT_CAPTURE_FILE([file])
 AT_CHECK(
-  [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], 
+  [[test-ovsdb log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
   [[file: open successful
-file: write:[0] successful
-file: write:[1] successful
-file: write:[2] successful
+file: write:{"x":0} successful
+file: write:{"x":1} successful
+file: write:{"x":2} successful
 ]], [ignore])
-AT_CHECK([[sed 's/\[2]/[3]/' < file > file.tmp]])
+AT_CHECK([[sed 's/{"x":2}/{"x":3}/' < file > file.tmp]])
 AT_CHECK([mv file.tmp file])
-AT_CHECK([[grep -c '\[3]' file]], [0], [1
+AT_CHECK([[grep -c '{"x":3}' file]], [0], [1
 ])
 AT_CHECK(
-  [[test-ovsdb log-io file 'O_RDWR' read read read 'write:["longer data"]']], [0], 
+  [[test-ovsdb log-io file read/write read read read 'write:{"longer data":0}']], [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
+file: read: {"x":0}
+file: read: {"x":1}
+file: read failed: syntax error: file: 8 bytes starting at offset 178 have SHA-1 hash 2683fd63b5b9fd49df4f2aa25bf7db5cbbebbe6f but should have hash 3d8ed30f471ad1b7b4b571cb0c7d5ed3e81350aa
+file: write:{"longer data":0} successful
 ]], [ignore])
 AT_CHECK(
-  [test-ovsdb log-io file 'O_RDONLY' read read read read], [0], 
+  [test-ovsdb log-io file read-only read read read read], [0], 
   [[file: open successful
-file: read: [0]
-file: read: [1]
-file: read: ["longer data"]
+file: read: {"x":0}
+file: read: {"x":1}
+file: read: {"longer data":0}
 file: read: end of log
 ]], [ignore])
 AT_CHECK([test -f .file.~lock~])
@@ -220,30 +326,30 @@ AT_SETUP([write, truncate file, read, overwrite])
 AT_KEYWORDS([ovsdb log])
 AT_CAPTURE_FILE([file])
 AT_CHECK(
-  [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], 
+  [[test-ovsdb log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
   [[file: open successful
-file: write:[0] successful
-file: write:[1] successful
-file: write:[2] successful
+file: write:{"x":0} successful
+file: write:{"x":1} successful
+file: write:{"x":2} successful
 ]], [ignore])
-AT_CHECK([[sed 's/\[2]/2/' < file > file.tmp]])
+AT_CHECK([[sed 's/{"x":2}/2/' < file > file.tmp]])
 AT_CHECK([mv file.tmp file])
 AT_CHECK([[grep -c '^2$' file]], [0], [1
 ])
 AT_CHECK(
-  [[test-ovsdb log-io file 'O_RDWR' read read read 'write:["longer data"]']], [0], 
+  [[test-ovsdb log-io file read/write read read read 'write:{"longer data":0}']], [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
+file: read: {"x":0}
+file: read: {"x":1}
+file: read failed: I/O error: file: error reading 8 bytes starting at offset 178 (End of file)
+file: write:{"longer data":0} successful
 ]], [ignore])
 AT_CHECK(
-  [test-ovsdb log-io file 'O_RDONLY' read read read read], [0], 
+  [test-ovsdb log-io file read-only read read read read], [0], 
   [[file: open successful
-file: read: [0]
-file: read: [1]
-file: read: ["longer data"]
+file: read: {"x":0}
+file: read: {"x":1}
+file: read: {"longer data":0}
 file: read: end of log
 ]], [ignore])
 AT_CHECK([test -f .file.~lock~])
@@ -253,29 +359,29 @@ AT_SETUP([write bad JSON, read, overwrite])
 AT_KEYWORDS([ovsdb log])
 AT_CAPTURE_FILE([file])
 AT_CHECK(
-  [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], 
+  [[test-ovsdb log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
   [[file: open successful
-file: write:[0] successful
-file: write:[1] successful
-file: write:[2] successful
+file: write:{"x":0} successful
+file: write:{"x":1} successful
+file: write:{"x":2} successful
 ]], [ignore])
 AT_CHECK([[printf '%s\n%s\n' 'OVSDB JSON 5 d910b02871075d3156ec8675dfc95b7d5d640aa6' 'null' >> file]])
 AT_CHECK(
-  [[test-ovsdb log-io file 'O_RDWR' read read read read 'write:["replacement data"]']], [0], 
+  [[test-ovsdb log-io file read/write read read read read 'write:{"replacement data":0}']], [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 (line 1, column 0, byte 5: syntax error at beginning of input)
-file: write:["replacement data"] successful
+file: read: {"x":0}
+file: read: {"x":1}
+file: read: {"x":2}
+file: read failed: syntax error: file: 5 bytes starting at offset 240 are not valid JSON (line 0, column 4, byte 4: syntax error at beginning of input)
+file: write:{"replacement data":0} successful
 ]], [ignore])
 AT_CHECK(
-  [test-ovsdb log-io file 'O_RDONLY' read read read read read], [0], 
+  [test-ovsdb log-io file read-only read read read read read], [0], 
   [[file: open successful
-file: read: [0]
-file: read: [1]
-file: read: [2]
-file: read: ["replacement data"]
+file: read: {"x":0}
+file: read: {"x":1}
+file: read: {"x":2}
+file: read: {"replacement data":0}
 file: read: end of log
 ]], [ignore])
 AT_CHECK([test -f .file.~lock~])