added retries test module, with max_retries already there

This commit is contained in:
HoneyryderChuck 2018-06-06 15:42:32 +01:00
parent c521f226fc
commit 0c46794c20
3 changed files with 54 additions and 0 deletions

View File

@ -22,6 +22,7 @@ class HTTPTest < Minitest::Test
include Plugins::Cookies
include Plugins::Compression
include Plugins::H2C
include Plugins::Retries
private

View File

@ -20,6 +20,7 @@ class HTTPSTest < Minitest::Test
include Plugins::Cookies
include Plugins::Compression
include Plugins::PushPromise if OpenSSL::SSL::SSLContext.instance_methods.include?(:alpn_protocols)
include Plugins::Retries
private

View File

@ -0,0 +1,52 @@
# frozen_string_literal: true
module Requests
module Plugins
module Retries
def test_plugin_retries
no_retries_client = HTTPX.plugin(RequestInspector).timeout(total_timeout: 3)
no_retries_response = no_retries_client.get(build_uri("/delay/10"))
assert no_retries_response.is_a?(HTTPX::ErrorResponse)
assert no_retries_client.calls == 1, "expect request to be built 1 times (was #{no_retries_client.calls})"
retries_client = HTTPX.
plugin(RequestInspector).
plugin(:retries).
timeout(total_timeout: 3)
retries_response = retries_client.get(build_uri("/delay/10"))
assert retries_response.is_a?(HTTPX::ErrorResponse)
# we're comparing against max-retries + 1, because the calls increment will happen
# also in the last call, where the request is not going to be retried.
assert retries_client.calls == 4, "expect request to be built 4 times (was #{retries_client.calls})"
end
def test_plugin_retries_max_retries
retries_client = HTTPX.
plugin(RequestInspector).
plugin(:retries).
timeout(total_timeout: 3).
max_retries(2)
retries_response = retries_client.get(build_uri("/delay/10"))
assert retries_response.is_a?(HTTPX::ErrorResponse)
# we're comparing against max-retries + 1, because the calls increment will happen
# also in the last call, where the request is not going to be retried.
assert retries_client.calls == 3, "expect request to be built 3 times (was #{retries_client.calls})"
end
module RequestInspector
module InstanceMethods
attr_reader :calls
def initialize(*args)
super
@calls = 0
end
def fetch_response(*)
response = super
@calls += 1 if response
response
end
end
end
end
end
end