Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion statsig.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Gem::Specification.new do |s|
s.add_development_dependency 'simplecov-cobertura', '~> 2.1'
s.add_runtime_dependency 'user_agent_parser', '~> 2.18.0'
s.add_runtime_dependency 'http', '>= 4.4', '< 6.0'
s.add_runtime_dependency 'connection_pool', '~> 2.4', '>= 2.4.1'
s.add_runtime_dependency 'connection_pool', '>= 2.5.4', '< 4.0'
s.add_runtime_dependency 'ip3country', '~> 0.2.1'
s.add_runtime_dependency 'concurrent-ruby', '~> 1.1'
s.add_runtime_dependency 'zlib', '>= 3.1', '< 4.0'
Expand Down
22 changes: 22 additions & 0 deletions test/test_network.rb
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,28 @@ def test_retry_until_out_of_retries
assert(!e.nil?)
end

def test_discards_failed_connection_without_masking_error
connection_error = IOError.new('broken connection')
failed_builder = FakeHTTPBuilder.new { raise connection_error }
builders = [failed_builder, FakeHTTPBuilder.new { FakeHTTPResponse.new }]

HTTP.stub(:use, ->(_) { builders.shift }) do
net = Statsig::Network.new('secret-abc', StatsigOptions.new(local_mode: false))
failed_response, error = net.get('https://statsigapi.net/health')

assert_nil(failed_response)
assert_same(connection_error, error)
assert(failed_builder.clients['https://statsigapi.net'].closed)

response, error = net.get('https://statsigapi.net/health')

assert_nil(error)
assert(response.status.success?)
ensure
net&.shutdown
end
end

def test_reuses_persistent_clients_per_origin_and_drains_response_bodies
builder = FakeHTTPBuilder.new { FakeHTTPResponse.new }
options = StatsigOptions.new(local_mode: false, network_timeout: 2)
Expand Down