#!/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 == 0 then cwriteln("OK"); end os.exit(lexitcode); -- TODO remove temp