]> git.proxmox.com Git - mirror_ovs.git/blob - tests/ovsdb-log.at
treewide: Convert leading tabs to spaces.
[mirror_ovs.git] / tests / ovsdb-log.at
1 AT_BANNER([OVSDB -- logging])
2
3 AT_SETUP([create empty, reread])
4 AT_KEYWORDS([ovsdb log])
5 AT_CAPTURE_FILE([log])
6 AT_CHECK(
7 [test-ovsdb log-io file create], [0],
8 [file: open successful
9 ], [ignore])
10 AT_CHECK(
11 [test-ovsdb log-io file read-only read], [0],
12 [file: open successful
13 file: read: end of log
14 ], [ignore])
15 AT_CHECK([test -f .file.~lock~])
16 AT_CLEANUP
17
18 AT_SETUP([write one, reread])
19 AT_KEYWORDS([ovsdb log])
20 AT_CAPTURE_FILE([file])
21 AT_CHECK(
22 [[test-ovsdb log-io file create 'write:{"x":0}']], [0],
23 [[file: open successful
24 file: write:{"x":0} successful
25 ]], [ignore])
26 AT_CHECK(
27 [test-ovsdb log-io file read-only read read], [0],
28 [[file: open successful
29 file: read: {"x":0}
30 file: read: end of log
31 ]], [ignore])
32 AT_CHECK([test -f .file.~lock~])
33 AT_CLEANUP
34
35 AT_SETUP([check that create fails if file exists])
36 AT_KEYWORDS([ovsdb log])
37 AT_CAPTURE_FILE([file])
38 AT_CHECK(
39 [[test-ovsdb log-io file create 'write:{"x":1}']], [0],
40 [[file: open successful
41 file: write:{"x":1} successful
42 ]], [ignore])
43 AT_CHECK(
44 [test-ovsdb log-io file read-only read], [0],
45 [[file: open successful
46 file: read: {"x":1}
47 ]], [ignore])
48 AT_CHECK(
49 [test-ovsdb log-io file create-excl read], [1],
50 [], [test-ovsdb: I/O error: file: create failed (File exists)
51 ])
52 AT_CHECK(
53 [test-ovsdb log-io file create read], [0],
54 [file: open successful
55 file: read: {"x":1}
56 ])
57 AT_CHECK([test -f .file.~lock~])
58 AT_CLEANUP
59
60 AT_SETUP([write one, reread])
61 AT_KEYWORDS([ovsdb log])
62 AT_CAPTURE_FILE([file])
63 AT_CHECK(
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
69 ]], [ignore])
70 AT_CHECK(
71 [test-ovsdb log-io file read-only read read read read], [0],
72 [[file: open successful
73 file: read: {"x":0}
74 file: read: {"x":1}
75 file: read: {"x":2}
76 file: read: end of log
77 ]], [ignore])
78 AT_CHECK([test -f .file.~lock~])
79 AT_CLEANUP
80
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
85 rm -f file
86 AT_CHECK(
87 [[test-ovsdb $option log-io file create \
88 'write:{"x":0}' \
89 'replace_start' \
90 'new-write:{"x":1}' \
91 'new-write:{"x":2}' \
92 'old-write:{"x":4}' \
93 'replace_commit' \
94 'read' \
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
105 ]])
106 AT_CHECK(
107 [test-ovsdb log-io file read-only read read read read], [0],
108 [[file: open successful
109 file: read: {"x":1}
110 file: read: {"x":2}
111 file: read: {"x":3}
112 file: read: end of log
113 ]], [ignore])
114 done
115 AT_CHECK([test -f .file.~lock~])
116 AT_CLEANUP
117
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
122 rm -f file
123 AT_CHECK(
124 [[test-ovsdb $option log-io file create \
125 'write:{"x":0}' \
126 'replace_start' \
127 'new-write:{"x":1}' \
128 'new-write:{"x":2}' \
129 'old-write:{"x":4}' \
130 'replace_abort' \
131 'read' \
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
142 ]])
143 AT_CHECK(
144 [test-ovsdb log-io file read-only read read read read], [0],
145 [[file: open successful
146 file: read: {"x":0}
147 file: read: {"x":4}
148 file: read: {"x":3}
149 file: read: end of log
150 ]], [ignore])
151 done
152 AT_CHECK([test -f .file.~lock~])
153 AT_CLEANUP
154
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
160 AT_CHECK(
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
166 ]], [ignore])
167 AT_CHECK(
168 [test-ovsdb --magic="MORE_MAGIC" log-io file read-only read read read read], [0],
169 [[file: open successful
170 file: read: {"x":0}
171 file: read: {"x":1}
172 file: read: {"x":2}
173 file: read: end of log
174 ]], [ignore])
175 AT_CHECK(
176 [test-ovsdb log-io file read-only], [1], [],
177 [test-ovsdb: ovsdb error: file: cannot identify file type
178 ])
179 AT_CHECK([test -f .file.~lock~])
180 AT_CLEANUP
181
182 AT_SETUP([write one, reread, append])
183 AT_KEYWORDS([ovsdb log])
184 AT_CAPTURE_FILE([file])
185 AT_CHECK(
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
191 ]], [ignore])
192 AT_CHECK(
193 [[test-ovsdb log-io file read/write read read read 'write:{"append":0}']], [0],
194 [[file: open successful
195 file: read: {"x":0}
196 file: read: {"x":1}
197 file: read: {"x":2}
198 file: write:{"append":0} successful
199 ]], [ignore])
200 AT_CHECK(
201 [test-ovsdb log-io file read-only read read read read read], [0],
202 [[file: open successful
203 file: read: {"x":0}
204 file: read: {"x":1}
205 file: read: {"x":2}
206 file: read: {"append":0}
207 file: read: end of log
208 ]], [ignore])
209 AT_CHECK([test -f .file.~lock~])
210 AT_CLEANUP
211
212 AT_SETUP([write, reread one, overwrite])
213 AT_KEYWORDS([ovsdb log])
214 AT_CAPTURE_FILE([file])
215 AT_CHECK(
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
221 ]], [ignore])
222 AT_CHECK(
223 [[test-ovsdb log-io file read/write read 'write:{"more data":0}']], [0],
224 [[file: open successful
225 file: read: {"x":0}
226 file: write:{"more data":0} successful
227 ]], [ignore])
228 AT_CHECK(
229 [test-ovsdb log-io file read-only read read read], [0],
230 [[file: open successful
231 file: read: {"x":0}
232 file: read: {"more data":0}
233 file: read: end of log
234 ]], [ignore])
235 AT_CHECK([test -f .file.~lock~])
236 AT_CLEANUP
237
238 AT_SETUP([write, add corrupted data, read])
239 AT_KEYWORDS([ovsdb log])
240 AT_CAPTURE_FILE([file])
241 AT_CHECK(
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
247 ]], [ignore])
248 AT_CHECK([echo 'xxx' >> file])
249 AT_CHECK(
250 [test-ovsdb log-io file read-only read read read read], [0],
251 [[file: open successful
252 file: read: {"x":0}
253 file: read: {"x":1}
254 file: read: {"x":2}
255 file: read failed: syntax error: file: parse error at offset 186 in header line "xxx"
256 ]], [ignore])
257 AT_CHECK([test -f .file.~lock~])
258 AT_CLEANUP
259
260 AT_SETUP([write, add corrupted data, read, overwrite])
261 AT_KEYWORDS([ovsdb log])
262 AT_CAPTURE_FILE([file])
263 AT_CHECK(
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
269 ]], [ignore])
270 AT_CHECK([echo 'xxx' >> file])
271 AT_CHECK(
272 [[test-ovsdb log-io file read/write read read read read 'write:{"x":3}']], [0],
273 [[file: open successful
274 file: read: {"x":0}
275 file: read: {"x":1}
276 file: read: {"x":2}
277 file: read failed: syntax error: file: parse error at offset 186 in header line "xxx"
278 file: write:{"x":3} successful
279 ]], [ignore])
280 AT_CHECK(
281 [test-ovsdb log-io file read-only read read read read read], [0],
282 [[file: open successful
283 file: read: {"x":0}
284 file: read: {"x":1}
285 file: read: {"x":2}
286 file: read: {"x":3}
287 file: read: end of log
288 ]], [ignore])
289 AT_CHECK([test -f .file.~lock~])
290 AT_CLEANUP
291
292 AT_SETUP([write, corrupt some data, read, overwrite])
293 AT_KEYWORDS([ovsdb log])
294 AT_CAPTURE_FILE([file])
295 AT_CHECK(
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
301 ]], [ignore])
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
305 ])
306 AT_CHECK(
307 [[test-ovsdb log-io file read/write read read read 'write:{"longer data":0}']], [0],
308 [[file: open successful
309 file: read: {"x":0}
310 file: read: {"x":1}
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
313 ]], [ignore])
314 AT_CHECK(
315 [test-ovsdb log-io file read-only read read read read], [0],
316 [[file: open successful
317 file: read: {"x":0}
318 file: read: {"x":1}
319 file: read: {"longer data":0}
320 file: read: end of log
321 ]], [ignore])
322 AT_CHECK([test -f .file.~lock~])
323 AT_CLEANUP
324
325 AT_SETUP([write, truncate file, read, overwrite])
326 AT_KEYWORDS([ovsdb log])
327 AT_CAPTURE_FILE([file])
328 AT_CHECK(
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
334 ]], [ignore])
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
338 ])
339 AT_CHECK(
340 [[test-ovsdb log-io file read/write read read read 'write:{"longer data":0}']], [0],
341 [[file: open successful
342 file: read: {"x":0}
343 file: read: {"x":1}
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
346 ]], [ignore])
347 AT_CHECK(
348 [test-ovsdb log-io file read-only read read read read], [0],
349 [[file: open successful
350 file: read: {"x":0}
351 file: read: {"x":1}
352 file: read: {"longer data":0}
353 file: read: end of log
354 ]], [ignore])
355 AT_CHECK([test -f .file.~lock~])
356 AT_CLEANUP
357
358 AT_SETUP([write bad JSON, read, overwrite])
359 AT_KEYWORDS([ovsdb log])
360 AT_CAPTURE_FILE([file])
361 AT_CHECK(
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
367 ]], [ignore])
368 AT_CHECK([[printf '%s\n%s\n' 'OVSDB JSON 5 d910b02871075d3156ec8675dfc95b7d5d640aa6' 'null' >> file]])
369 AT_CHECK(
370 [[test-ovsdb log-io file read/write read read read read 'write:{"replacement data":0}']], [0],
371 [[file: open successful
372 file: read: {"x":0}
373 file: read: {"x":1}
374 file: read: {"x":2}
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
377 ]], [ignore])
378 AT_CHECK(
379 [test-ovsdb log-io file read-only read read read read read], [0],
380 [[file: open successful
381 file: read: {"x":0}
382 file: read: {"x":1}
383 file: read: {"x":2}
384 file: read: {"replacement data":0}
385 file: read: end of log
386 ]], [ignore])
387 AT_CHECK([test -f .file.~lock~])
388 AT_CLEANUP