File: reader.test.lua

package info (click to toggle)
tarantool 2.6.0-1.4
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 85,412 kB
  • sloc: ansic: 513,775; cpp: 69,493; sh: 25,650; python: 19,190; perl: 14,973; makefile: 4,178; yacc: 1,329; sql: 1,074; pascal: 620; ruby: 190; awk: 18; lisp: 7
file content (56 lines) | stat: -rw-r--r-- 1,820 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
-- test for xlog_reader module
-- consists of 3 parts:
-- 1) ok snap/xlog reader
-- 2) broken files reader (crc sum is invalid, bad header [version/type])
-- 3) before box.cfg and after box.cfg

fio  = require('fio')
fun  = require('fun')
json = require('json')
xlog = require('xlog').pairs
trun = require('test_run').new()

pattern_prefix = fio.pathjoin(os.getenv("SOURCEDIR"), "test/xlog/reader")

pattern_prefix_re = pattern_prefix:gsub("/", "\\/")
trun:cmd(("push filter '%s' to '%s'"):format(pattern_prefix_re, "<prefix>"))

pattern_ok_v12 = fio.pathjoin(pattern_prefix, "v12/")
pattern_ok_v13 = fio.pathjoin(pattern_prefix, "v13/")

trun:cmd("setopt delimiter ';'")
function collect_results(file)
    local val = {}
    for k, v in xlog(file) do
        table.insert(val, setmetatable(v, { __serialize = "map"}))
    end
    return val
end;

fun.iter({
    fio.pathjoin(pattern_ok_v12, '00000000000000000000.ok.snap'),
    fio.pathjoin(pattern_ok_v12, '00000000000000000000.ok.xlog'),
}):map(collect_results):totable();
collectgarbage('collect');
fun.iter({
    fio.pathjoin(pattern_ok_v13, '00000000000000000000.ok.snap'),
    fio.pathjoin(pattern_ok_v13, '00000000000000000000.ok.xlog'),
}):map(collect_results):totable();
collectgarbage('collect');

check_error = function(name, err)
    local path = fio.pathjoin(pattern_prefix, name)
    local stat, oerr = pcall(collect_results, path)
    if stat == true or not string.find(tostring(oerr), err) then
        return false, oerr
    end
    return true
end;
trun:cmd("setopt delimiter ''");

check_error("version.bad.xlog", "file format version")
check_error("format.bad.xlog", "not support 'SNOP' file type")
collect_results(fio.pathjoin(pattern_prefix, "crc.bad.xlog"))
collect_results(fio.pathjoin(pattern_prefix, "eof.bad.xlog"))

trun:cmd('clear filter')