httpx/test/support/servlets/keep_alive.rb
HoneyryderChuck 51b2693842 Merge branch 'gh-disc-71' into 'master'
:stream_bidi plugin

See merge request os85/httpx!365
2025-04-04 09:51:29 +00:00

74 lines
1.5 KiB
Ruby

# frozen_string_literal: true
require_relative "test"
class KeepAliveServer < TestServer
class KeepAliveApp < WEBrick::HTTPServlet::AbstractServlet
def do_GET(_req, res) # rubocop:disable Naming/MethodName
res.status = 200
res["Connection"] = "Keep-Alive"
res["Content-Type"] = "application/json"
res.body = "{\"counter\": infinity}"
end
end
class KeepAliveMax2App < WEBrick::HTTPServlet::AbstractServlet
def do_GET(_req, res) # rubocop:disable Naming/MethodName
res.status = 200
res["Connection"] = "Keep-Alive"
res["Keep-Alive"] = "max=2"
res["Content-Type"] = "application/json"
res.body = "{\"counter\": 2}"
end
end
def initialize(options = {})
super
mount("/", KeepAliveApp)
mount("/2", KeepAliveMax2App)
end
end
class KeepAlivePongThenGoawayServer < TestHTTP2Server
attr_reader :pings, :pongs
def initialize(**)
@sent = false
super
end
private
def handle_stream(conn, stream)
# responds once, then closes the connection
if @sent
conn.goaway
@sent = false
else
super
@sent = true
end
end
end
class KeepAlivePongThenCloseSocketServer < TestHTTP2Server
attr_reader :pings, :pongs
def initialize
@sent = false
super
end
private
def handle_connection(conn, sock)
super
conn.on(:stream) do |stream|
stream.on(:close) do
@sent = true
close_socket(sock)
end
end
end
end