diff options
Diffstat (limited to 'spec/ruby/library/net/http/http/fixtures/http_server.rb')
-rw-r--r-- | spec/ruby/library/net/http/http/fixtures/http_server.rb | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/spec/ruby/library/net/http/http/fixtures/http_server.rb b/spec/ruby/library/net/http/http/fixtures/http_server.rb deleted file mode 100644 index a84e0d47d0..0000000000 --- a/spec/ruby/library/net/http/http/fixtures/http_server.rb +++ /dev/null @@ -1,109 +0,0 @@ -require 'webrick' -require 'webrick/httpservlet/abstract' - -module NetHTTPSpecs - class NullWriter - def <<(s) end - def puts(*args) end - def print(*args) end - def printf(*args) end - end - - class SpecServlet < WEBrick::HTTPServlet::AbstractServlet - def handle(req, res) - reply(req, res) - end - - %w{ do_GET do_HEAD do_POST do_PUT do_PROPPATCH do_LOCK do_UNLOCK - do_OPTIONS do_PROPFIND do_DELETE do_MOVE do_COPY - do_MKCOL do_TRACE }.each do |method| - alias_method method.to_sym, :handle - end - end - - class RequestServlet < SpecServlet - def reply(req, res) - res.content_type = "text/plain" - res.body = "Request type: #{req.request_method}" - end - end - - class RequestBodyServlet < SpecServlet - def reply(req, res) - res.content_type = "text/plain" - res.body = req.body - end - end - - class RequestHeaderServlet < SpecServlet - def reply(req, res) - res.content_type = "text/plain" - res.body = req.header.inspect - end - end - - class RequestBasicAuthServlet < SpecServlet - def reply(req, res) - res.content_type = "text/plain" - - WEBrick::HTTPAuth.basic_auth(req, res, "realm") do |user, pass| - res.body = "username: #{user}\npassword: #{pass}" - true - end - end - end - - @server = nil - @server_thread = nil - - class << self - def port - raise "server not started" unless @server - @server.config[:Port] - end - - def start_server - server_config = { - BindAddress: "localhost", - Port: 0, - Logger: WEBrick::Log.new(NullWriter.new), - AccessLog: [], - ServerType: Thread - } - - @server = WEBrick::HTTPServer.new(server_config) - - @server.mount_proc('/') do |req, res| - res.content_type = "text/plain" - res.body = "This is the index page." - end - @server.mount('/request', RequestServlet) - @server.mount("/request/body", RequestBodyServlet) - @server.mount("/request/header", RequestHeaderServlet) - @server.mount("/request/basic_auth", RequestBasicAuthServlet) - - @server_thread = @server.start - end - - def stop_server - if @server - begin - @server.shutdown - rescue Errno::EPIPE, Errno::EBADF - # Because WEBrick is not thread-safe and only catches IOError - - # EBADF can happen because WEBrick @server_thread concurrently closes the shutdown pipe - # once @status = :Shutdown, while the current thread does write_nonblock("\0"). - # On MRI this EBADF is replaced by IOError due to the GIL around both #close and #write_nonblock. - end - @server = nil - end - if @server_thread - @server_thread.join - @server_thread = nil - end - timeout = WEBrick::Utils::TimeoutHandler - timeout.terminate if timeout.respond_to?(:terminate) - end - end -end |