lsyncd/tests/randomrsync.lua

86 lines
2.0 KiB
Lua
Raw Normal View History

2010-11-18 16:33:48 +00:00
#!/usr/bin/lua
-- a heavy duty test.
-- makes thousends of random changes to the source tree
-- checks every X changes if lsyncd managed to keep target tree in sync.
require("posix")
dofile("tests/testlib.lua")
-- always makes the same "random", so failures can be debugged.
math.randomseed(1)
2010-11-18 16:59:50 +00:00
local tdir = mktempd().."/"
2010-11-18 16:33:48 +00:00
cwriteln("using ", tdir, " as test root")
local srcdir = tdir.."src/"
local trgdir = tdir.."trg/"
posix.mkdir(srcdir)
posix.mkdir(trgdir)
2010-11-18 23:35:56 +00:00
-- local pid = spawn("./lsyncd","-nodaemon","-rsync",srcdir,trgdir)
2010-11-18 16:33:48 +00:00
2010-11-18 16:59:50 +00:00
cwriteln("waiting for Lsyncd to startup")
2010-11-18 16:33:48 +00:00
posix.sleep(1)
-- all dirs created, indexed by integer and path
2010-11-18 23:35:56 +00:00
root = {name=""}
alldirs = {root}
-----
-- returns the name of a directory
-- call it with name=nil
local function dirname(dir, name)
name = name or ""
if not dir then
return name
end
return dirname(dir.parent, dir.name .. "/" .. name)
end
2010-11-18 16:33:48 +00:00
2010-11-18 16:59:50 +00:00
cwriteln("making random data")
2010-11-18 23:35:56 +00:00
for ai=1,10000 do
2010-11-18 16:33:48 +00:00
-- throw a die what to do
2010-11-18 23:35:56 +00:00
local acn = math.random(2)
2010-11-18 16:33:48 +00:00
-- 1 .. creates a directory
2010-11-18 23:35:56 +00:00
if acn == 1 then
2010-11-18 16:33:48 +00:00
-- chooses a random directory to create it into
2010-11-18 23:35:56 +00:00
local rd = alldirs[math.random(#alldirs)]
-- creates a new random one letter name
local nn = string.char(96 + math.random(26))
if not rd[nn] then
local ndir = {
name = nn,
parent = rd
}
local dn = dirname(ndir)
rd[nn] = dn
table.insert(alldirs, ndir)
cwriteln("mkdir "..srcdir..dn)
posix.mkdir(srcdir..dn)
2010-11-18 16:33:48 +00:00
end
2010-11-18 23:35:56 +00:00
-- 2 .. creates a file
elseif acn == 2 then
-- chooses a random directory to create it into
local rd = alldirs[math.random(#alldirs)]
-- creates a new random one letter name
local nn = 'f'..string.char(96 + math.random(26))
TODO
2010-11-18 16:33:48 +00:00
end
2010-11-18 23:35:56 +00:00
2010-11-18 16:33:48 +00:00
end
2010-11-18 16:59:50 +00:00
cwriteln("waiting for Lsyncd to finish its jobs.")
posix.sleep(20)
2010-11-18 16:33:48 +00:00
2010-11-18 16:59:50 +00:00
cwriteln("killing the Lsyncd daemon")
posix.kill(pid)
local _, exitmsg, exitcode = posix.wait(lpid)
cwriteln("Exitcode of Lsyncd = ", exitmsg, " ", exitcode)
2010-11-18 16:33:48 +00:00
2010-11-18 16:59:50 +00:00
exitcode = os.execute("diff -r "..srcdir.." "..trgdir)
cwriteln("Exitcode of diff = ", exitcode)
os.exit(exitcode)
2010-11-18 16:33:48 +00:00