def setup
@rep = Rucy::Repository.new
@rep.set_value(:MultiThreadMessenger_class, Rucy::MultiThreadMessenger)
@rep.set_class(:TCPServer, TCPServer)
@document_open_call = 0
@document_close_call = 0
@document = Forwarder.new(self)
class << @document
def_delegator :__getobj__, :open
def_delegator :__getobj__, :close
def_delegator :__getobj__, :each
end
@server_open_call = 0
@server_close_call = 0
@server = Rucy::Server.new(@rep)
@server.open_hook{|s|
@server_open_call += 1
s.bind_address = 'localhost'
s.port = 0
s.timeout = 0.01
s.mount(Rucy::Page.new("<html>Hello world.</html>\n"), '/')
s.mount(@document, '/test_document_open_close')
if (DEBUG_LOGGING) then
logger = Rucy::Logger.new(STDERR)
logger.level = Rucy::LoggingLevel::LOG_DEBUG
s.add_logger(logger)
s.logging_access
end
}
@server.close_hook{|s|
@server_close_call += 1
}
@thread = Thread.new{
@server.accept
}
begin
sleep(0.1)
end while (@server.port == 0)
@port = @server.port
end