mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-10-04 00:00:37 -04:00
60 lines
2.3 KiB
Ruby
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
|