60 lines
2.3 KiB
Ruby

# frozen_string_literal: true
module Requests
module Plugins
module Persistent
def test_persistent
uri = build_uri("/get")
non_persistent_session = HTTPX.plugin(SessionWithPool)
response = non_persistent_session.get(uri)
verify_status(response, 200)
response.close
assert non_persistent_session.pool.connections.empty?, "unexpected connections (#{non_persistent_session.pool.connections.size})"
persistent_session = non_persistent_session.plugin(:persistent)
response = persistent_session.get(uri)
verify_status(response, 200)
response.close
assert persistent_session.pool.connections.size == 1, "unexpected connections (#{persistent_session.pool.connections.size})"
assert persistent_session.pool.selectable_count.zero?, "expected selectable connection pool to be empty"
persistent_session.close
assert persistent_session.pool.connections.empty?, "unexpected connections (#{persistent_session.pool.connections.size})"
end
def test_persistent_options
retry_persistent_session = HTTPX.plugin(:persistent).plugin(:retries, max_retries: 4)
options = retry_persistent_session.send(:default_options)
assert options.max_retries == 4
assert options.retry_change_requests
assert options.persistent
persistent_retry_session = HTTPX.plugin(:retries, max_retries: 4).plugin(:persistent)
options = persistent_retry_session.send(:default_options)
assert options.max_retries == 4
assert options.retry_change_requests
assert options.persistent
end
def test_persistent_retry_http2_goaway
return unless origin.start_with?("https")
start_test_servlet(KeepAlivePongServer) do |server|
http = HTTPX.plugin(SessionWithPool)
.plugin(RequestInspector)
.plugin(:persistent) # implicit max_retries == 1
.with(ssl: { verify_mode: OpenSSL::SSL::VERIFY_NONE })
uri = "#{server.origin}/"
response = http.get(uri)
verify_status(response, 200)
response = http.get(uri)
verify_status(response, 200)
assert http.calls == 2, "expect request to be built 2 times (was #{http.calls})"
http.close
end
end
end
end
end