# File test/test_server.rb, line 245
    def setup
      # dependency configuration
      @rep = Rucy::Repository.new
      @rep.set_value(:MultiThreadMessenger_class, Rucy::MultiThreadMessenger)
      @rep.set_class(:TCPServer, TCPServer)

      # for Rucy::Document class
      @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       # short timeout for test
        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