mirror of
				https://github.com/HoneyryderChuck/httpx.git
				synced 2025-11-04 00:01:41 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
require "test_helper"
 | 
						|
require "support/http_helpers"
 | 
						|
 | 
						|
class Bug_0_14_4_Test < Minitest::Test
 | 
						|
  include HTTPHelpers
 | 
						|
 | 
						|
  def test_http1_keep_alive_persistent_requests_failed_to_start_new_connection_after_max_requests_reached
 | 
						|
    server = KeepAliveServer.new
 | 
						|
    th = Thread.new { server.start }
 | 
						|
    begin
 | 
						|
      uri = "#{server.origin}/"
 | 
						|
      uris = [uri] * 400
 | 
						|
      HTTPX.plugin(SessionWithPool).with(max_requests: 100, max_concurrent_requests: 1).wrap do |http|
 | 
						|
        responses = http.get(*uris)
 | 
						|
        assert responses.size == 400
 | 
						|
        responses.each_with_index do |response, idx|
 | 
						|
          verify_status(response, 200)
 | 
						|
 | 
						|
          conn_header = ((idx + 1) % 100).zero? ? "close" : "Keep-Alive"
 | 
						|
          assert verify_header(response.headers, "connection", conn_header)
 | 
						|
        end
 | 
						|
        connection_count = http.pool.connection_count
 | 
						|
        assert connection_count == 4, "expected to have 4 connections (+ an idle one), instead have #{connection_count}"
 | 
						|
      end
 | 
						|
    ensure
 | 
						|
      server.shutdown
 | 
						|
      th.join
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def test_http1_keep_alive_persistent_requests_failed_to_start_new_connection_after_server_max_reached
 | 
						|
    server = KeepAliveServer.new
 | 
						|
    th = Thread.new { server.start }
 | 
						|
    begin
 | 
						|
      uri = "#{server.origin}/2"
 | 
						|
      uris = [uri] * 200
 | 
						|
      HTTPX.plugin(SessionWithPool).with(max_requests: 100, max_concurrent_requests: 1).wrap do |http|
 | 
						|
        responses = http.get(*uris)
 | 
						|
        assert responses.size == 200
 | 
						|
        responses.each_with_index do |response, idx|
 | 
						|
          verify_status(response, 200)
 | 
						|
          conn_header = ((idx + 1) % 2).zero? ? "close" : "Keep-Alive"
 | 
						|
          assert verify_header(response.headers, "connection", conn_header)
 | 
						|
        end
 | 
						|
        connection_count = http.pool.connection_count
 | 
						|
        assert connection_count == 100, "expected to have 100 connections (+ an idle one), instead have #{connection_count}"
 | 
						|
      end
 | 
						|
    ensure
 | 
						|
      server.shutdown
 | 
						|
      th.join
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |