mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-10-04 00:00:37 -04:00
40 lines
1.1 KiB
Ruby
40 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "test_helper"
|
|
require "support/http_helpers"
|
|
|
|
class Bug_0_14_5_Test < Minitest::Test
|
|
include HTTPHelpers
|
|
|
|
def test_http2_post_with_concurrent_post_requests_with_large_payload_blocking
|
|
post_uri = "https://#{httpbin}/post"
|
|
HTTPX.wrap do |http|
|
|
# this is necesary, so that handshake phase is complete
|
|
http.get("https://#{httpbin}/get")
|
|
|
|
requests = 2.times.map do
|
|
http.build_request(:post, post_uri, body: "a" * (1 << 16)) # 65k body, must be above write buffer size
|
|
end
|
|
|
|
responses = http.request(*requests)
|
|
|
|
responses.each do |response|
|
|
verify_status(response, 200)
|
|
body = json_body(response)
|
|
verify_header(body["headers"], "Content-Type", "application/octet-stream")
|
|
verify_uploaded(body, "data", "a" * (1 << 16))
|
|
end
|
|
end
|
|
rescue MinitestExtensions::TimeoutForTest::TestTimeout => e
|
|
ex = RegressionError.new(e.message)
|
|
ex.set_backtrace(e.backtrace)
|
|
raise ex
|
|
end
|
|
|
|
private
|
|
|
|
def origin(orig = httpbin)
|
|
"http://#{orig}"
|
|
end
|
|
end
|