lsyncd/tests/schedule.lua

80 lines
1.9 KiB
Lua
Executable File

#!/usr/bin/lua
require("posix")
dofile("tests/testlib.lua")
cwriteln("****************************************************************")
cwriteln(" Testing Lsyncd scheduler ")
cwriteln("****************************************************************")
local tdir, srcdir, trgdir = mktemps()
local logfile = tdir .. "log"
local cfgfile = tdir .. "config.lua"
local logs = {"-log", "all" }
writefile(cfgfile, [[
settings = {
logfile = "]]..logfile..[[",
log = all,
nodaemon = true,
maxProcesses = 1
}
-- continously touches a file
acircuit = {
delay = 0,
onStartup = "sleep 3 && touch ^source/a",
onCreate = "sleep 3 && touch ^source/a",
}
-- continously touches b file
bcircuit = {
delay = 0,
onStartup = "sleep 3 && touch ^source/b",
onCreate = "sleep 3 && touch ^source/b",
}
-- continously touches c file
ccircuit = {
delay = 0,
onStartup = "sleep 3 && touch ^source/c",
onCreate = "sleep 3 && touch ^source/c",
}
sync {acircuit, source ="]]..srcdir..[[", target = "]]..trgdir..[["}
sync {bcircuit, source ="]]..srcdir..[[", target = "]]..trgdir..[["}
sync {ccircuit, source ="]]..srcdir..[[", target = "]]..trgdir..[["}
]]);
-- test if the filename exists, fails if this is different to expect
local function testfile(filename)
local stat, err = posix.stat(filename)
if not stat then
cwriteln("failure: ",filename," missing")
os.exit(1)
end
end
cwriteln("starting Lsyncd")
local pid = spawn("./lsyncd", cfgfile, unpack(logs))
cwriteln("waiting for Lsyncd to do a few cycles")
posix.sleep(30)
cwriteln("look if every circle got a chance to run")
testfile(srcdir.."a")
testfile(srcdir.."b")
testfile(srcdir.."c")
cwriteln("killing started Lsyncd")
posix.kill(pid)
local _, exitmsg, lexitcode = posix.wait(lpid)
cwriteln("Exitcode of Lsyncd = ", exitmsg, " ", lexitcode)
posix.sleep(1);
if lexitcode == 143 then
cwriteln("OK")
os.exit( 0 )
else
os.exit( 1 )
end
-- TODO remove temp