# File test/test_multi_process.rb, line 558
    def setup
      # dependency configuration
      @rep = Rucy::Repository.new
      Rucy::Config.config(@rep)

      if (DEBUG_LOGGING) then
        @log_io = File.open('test_multi_process_server.log', 'a')
        @log_io.sync = true
        @log_io.puts '<start>'
      end

      # 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

      # for Rucy::Privilege class
      @privileged_user_call = 0
      @cancel_privilege_call = 0

      @privilege = Forwarder.new(self)
      class << @privilege
        def_delegator :__getobj__, :privileged_user?
        def_delegator :__getobj__, :cancel_privilege
      end

      @server_open_call = 0
      @server_close_call = 0
      @server = Rucy::Server.new(@rep)
      @server.open_hook{|s|
        @server_open_call += 1
        s.port = SERVER_PORT
        s.privilege = @privilege
        s.mount(Rucy::Page.new("<html>Hello world.</html>\n"), '/')
        s.mount(self, '/test_document_open_close')
        s.messenger_factory = Rucy::MultiProcessMessenger
        s.timeout = 0.01       # <- short timeout for test
        if (DEBUG_LOGGING) then
          logger = Rucy::Logger.new(@log_io)
          logger.level = Rucy::LoggingLevel::LOG_DEBUG
          s.add_logger(logger)
          s.logging_access
        end
      }
      @server.close_hook{|s|
        @server_close_call += 1
      }
      @svr_pid = fork{
        trap(:USR1) { @server.close }
        begin
          @server.accept
          assert_equal(1, @server_open_call)
          assert_equal(1, @server_close_call)
          assert_equal(1, @document_open_call)
          assert_equal(1, @document_close_call)
        rescue
          STDERR.puts "server error: #{$!}"
          for frame in $!.backtrace
            puts "server error: #{frame}"
          end
        end
        exit!
      }
      sleep(1)
    end