socket = require "socket" local civet = {} -- default params civet.port=12345 civet.max_retry=100 civet.start_delay=0.1 function civet.start(docroot) -- TODO: use a property docroot = docroot or 'ci/test/01_basic/docroot' assert(io.popen('./civetweb' .. " -listening_ports " .. civet.port .. " -document_root " .. docroot .. " > /dev/null 2>&1 &" )) -- wait until the server answers for i=1,civet.max_retry do local s = socket.connect('127.0.0.1', civet.port) if s then s:close() break end socket.select(nil, nil, civet.start_delay) -- sleep end end function civet.stop() os.execute('killall civetweb') -- wait until the server port closes for i=1,civet.max_retry do local s = socket.connect('127.0.0.1', civet.port) if not s then break end s:close() socket.select(nil, nil, civet.start_delay) -- sleep end end return civet