1 AT_BANNER([OVSDB -- logging])
3 AT_SETUP([create empty, reread])
4 AT_KEYWORDS([ovsdb log])
7 [test-ovsdb log-io file create], [0],
11 [test-ovsdb log-io file read-only read], [0],
12 [file: open successful
13 file: read: end of log
15 AT_CHECK([test -f .file.~lock~])
18 AT_SETUP([write one, reread])
19 AT_KEYWORDS([ovsdb log])
20 AT_CAPTURE_FILE([file])
22 [[test-ovsdb log-io file create 'write:{"x":0}']], [0],
23 [[file: open successful
24 file: write:{"x":0} successful
27 [test-ovsdb log-io file read-only read read], [0],
28 [[file: open successful
30 file: read: end of log
32 AT_CHECK([test -f .file.~lock~])
35 AT_SETUP([check that create fails if file exists])
36 AT_KEYWORDS([ovsdb log])
37 AT_CAPTURE_FILE([file])
39 [[test-ovsdb log-io file create 'write:{"x":1}']], [0],
40 [[file: open successful
41 file: write:{"x":1} successful
44 [test-ovsdb log-io file read-only read], [0],
45 [[file: open successful
49 [test-ovsdb log-io file create-excl read], [1],
50 [], [test-ovsdb: I/O error: file: create failed (File exists)
53 [test-ovsdb log-io file create read], [0],
54 [file: open successful
57 AT_CHECK([test -f .file.~lock~])
60 AT_SETUP([write one, reread])
61 AT_KEYWORDS([ovsdb log])
62 AT_CAPTURE_FILE([file])
64 [[test-ovsdb log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
65 [[file: open successful
66 file: write:{"x":0} successful
67 file: write:{"x":1} successful
68 file: write:{"x":2} successful
71 [test-ovsdb log-io file read-only read read read read], [0],
72 [[file: open successful
76 file: read: end of log
78 AT_CHECK([test -f .file.~lock~])
81 AT_SETUP([write one, replace, commit])
82 AT_KEYWORDS([ovsdb log])
83 AT_CAPTURE_FILE([file])
84 for option in '' --no-rename-open-files; do
87 [[test-ovsdb $option log-io file create \
95 'write:{"x":3}']], [0],
96 [[file: open successful
97 file: write:{"x":0} successful
98 file: replace_start successful
99 (temp): write:{"x":1} successful
100 (temp): write:{"x":2} successful
101 file: write:{"x":4} successful
102 file: replace_commit successful
103 file: read: end of log
104 file: write:{"x":3} successful
107 [test-ovsdb log-io file read-only read read read read], [0],
108 [[file: open successful
112 file: read: end of log
115 AT_CHECK([test -f .file.~lock~])
118 AT_SETUP([write one, replace, abort])
119 AT_KEYWORDS([ovsdb log])
120 AT_CAPTURE_FILE([file])
121 for option in '' --no-rename-open-files; do
124 [[test-ovsdb $option log-io file create \
127 'new-write:{"x":1}' \
128 'new-write:{"x":2}' \
129 'old-write:{"x":4}' \
132 'write:{"x":3}']], [0],
133 [[file: open successful
134 file: write:{"x":0} successful
135 file: replace_start successful
136 (temp): write:{"x":1} successful
137 (temp): write:{"x":2} successful
138 file: write:{"x":4} successful
139 file: replace_abort successful
140 file: read: end of log
141 file: write:{"x":3} successful
144 [test-ovsdb log-io file read-only read read read read], [0],
145 [[file: open successful
149 file: read: end of log
152 AT_CHECK([test -f .file.~lock~])
155 AT_SETUP([write one, reread - alternative magic])
156 AT_KEYWORDS([ovsdb log])
157 AT_CAPTURE_FILE([file])
158 # Sometimes you just need more magic:
159 # http://www.catb.org/jargon/html/magic-story.html
161 [[test-ovsdb --magic="MORE_MAGIC" log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
162 [[file: open successful
163 file: write:{"x":0} successful
164 file: write:{"x":1} successful
165 file: write:{"x":2} successful
168 [test-ovsdb --magic="MORE_MAGIC" log-io file read-only read read read read], [0],
169 [[file: open successful
173 file: read: end of log
176 [test-ovsdb log-io file read-only], [1], [],
177 [test-ovsdb: ovsdb error: file: cannot identify file type
179 AT_CHECK([test -f .file.~lock~])
182 AT_SETUP([write one, reread, append])
183 AT_KEYWORDS([ovsdb log])
184 AT_CAPTURE_FILE([file])
186 [[test-ovsdb log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
187 [[file: open successful
188 file: write:{"x":0} successful
189 file: write:{"x":1} successful
190 file: write:{"x":2} successful
193 [[test-ovsdb log-io file read/write read read read 'write:{"append":0}']], [0],
194 [[file: open successful
198 file: write:{"append":0} successful
201 [test-ovsdb log-io file read-only read read read read read], [0],
202 [[file: open successful
206 file: read: {"append":0}
207 file: read: end of log
209 AT_CHECK([test -f .file.~lock~])
212 AT_SETUP([write, reread one, overwrite])
213 AT_KEYWORDS([ovsdb log])
214 AT_CAPTURE_FILE([file])
216 [[test-ovsdb log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
217 [[file: open successful
218 file: write:{"x":0} successful
219 file: write:{"x":1} successful
220 file: write:{"x":2} successful
223 [[test-ovsdb log-io file read/write read 'write:{"more data":0}']], [0],
224 [[file: open successful
226 file: write:{"more data":0} successful
229 [test-ovsdb log-io file read-only read read read], [0],
230 [[file: open successful
232 file: read: {"more data":0}
233 file: read: end of log
235 AT_CHECK([test -f .file.~lock~])
238 AT_SETUP([write, add corrupted data, read])
239 AT_KEYWORDS([ovsdb log])
240 AT_CAPTURE_FILE([file])
242 [[test-ovsdb log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
243 [[file: open successful
244 file: write:{"x":0} successful
245 file: write:{"x":1} successful
246 file: write:{"x":2} successful
248 AT_CHECK([echo 'xxx' >> file])
250 [test-ovsdb log-io file read-only read read read read], [0],
251 [[file: open successful
255 file: read failed: syntax error: file: parse error at offset 186 in header line "xxx"
257 AT_CHECK([test -f .file.~lock~])
260 AT_SETUP([write, add corrupted data, read, overwrite])
261 AT_KEYWORDS([ovsdb log])
262 AT_CAPTURE_FILE([file])
264 [[test-ovsdb log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
265 [[file: open successful
266 file: write:{"x":0} successful
267 file: write:{"x":1} successful
268 file: write:{"x":2} successful
270 AT_CHECK([echo 'xxx' >> file])
272 [[test-ovsdb log-io file read/write read read read read 'write:{"x":3}']], [0],
273 [[file: open successful
277 file: read failed: syntax error: file: parse error at offset 186 in header line "xxx"
278 file: write:{"x":3} successful
281 [test-ovsdb log-io file read-only read read read read read], [0],
282 [[file: open successful
287 file: read: end of log
289 AT_CHECK([test -f .file.~lock~])
292 AT_SETUP([write, corrupt some data, read, overwrite])
293 AT_KEYWORDS([ovsdb log])
294 AT_CAPTURE_FILE([file])
296 [[test-ovsdb log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
297 [[file: open successful
298 file: write:{"x":0} successful
299 file: write:{"x":1} successful
300 file: write:{"x":2} successful
302 AT_CHECK([[sed 's/{"x":2}/{"x":3}/' < file > file.tmp]])
303 AT_CHECK([mv file.tmp file])
304 AT_CHECK([[grep -c '{"x":3}' file]], [0], [1
307 [[test-ovsdb log-io file read/write read read read 'write:{"longer data":0}']], [0],
308 [[file: open successful
311 file: read failed: syntax error: file: 8 bytes starting at offset 178 have SHA-1 hash 2683fd63b5b9fd49df4f2aa25bf7db5cbbebbe6f but should have hash 3d8ed30f471ad1b7b4b571cb0c7d5ed3e81350aa
312 file: write:{"longer data":0} successful
315 [test-ovsdb log-io file read-only read read read read], [0],
316 [[file: open successful
319 file: read: {"longer data":0}
320 file: read: end of log
322 AT_CHECK([test -f .file.~lock~])
325 AT_SETUP([write, truncate file, read, overwrite])
326 AT_KEYWORDS([ovsdb log])
327 AT_CAPTURE_FILE([file])
329 [[test-ovsdb log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
330 [[file: open successful
331 file: write:{"x":0} successful
332 file: write:{"x":1} successful
333 file: write:{"x":2} successful
335 AT_CHECK([[sed 's/{"x":2}/2/' < file > file.tmp]])
336 AT_CHECK([mv file.tmp file])
337 AT_CHECK([[grep -c '^2$' file]], [0], [1
340 [[test-ovsdb log-io file read/write read read read 'write:{"longer data":0}']], [0],
341 [[file: open successful
344 file: read failed: I/O error: file: error reading 8 bytes starting at offset 178 (End of file)
345 file: write:{"longer data":0} successful
348 [test-ovsdb log-io file read-only read read read read], [0],
349 [[file: open successful
352 file: read: {"longer data":0}
353 file: read: end of log
355 AT_CHECK([test -f .file.~lock~])
358 AT_SETUP([write bad JSON, read, overwrite])
359 AT_KEYWORDS([ovsdb log])
360 AT_CAPTURE_FILE([file])
362 [[test-ovsdb log-io file create 'write:{"x":0}' 'write:{"x":1}' 'write:{"x":2}']], [0],
363 [[file: open successful
364 file: write:{"x":0} successful
365 file: write:{"x":1} successful
366 file: write:{"x":2} successful
368 AT_CHECK([[printf '%s\n%s\n' 'OVSDB JSON 5 d910b02871075d3156ec8675dfc95b7d5d640aa6' 'null' >> file]])
370 [[test-ovsdb log-io file read/write read read read read 'write:{"replacement data":0}']], [0],
371 [[file: open successful
375 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)
376 file: write:{"replacement data":0} successful
379 [test-ovsdb log-io file read-only read read read read read], [0],
380 [[file: open successful
384 file: read: {"replacement data":0}
385 file: read: end of log
387 AT_CHECK([test -f .file.~lock~])