Skip to content
Merged
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
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ jobs:
build-linux:
uses: ./.github/workflows/build-gem.yml
strategy:
fail-fast: false
matrix:
version: ["3.2", "jruby-9.4"]
with:
Expand Down
37 changes: 13 additions & 24 deletions spec/http_util.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,36 +7,25 @@
class StubHTTPServer
attr_reader :requests, :port

@@next_port = 50000

def initialize(enable_compression: false)
@port = StubHTTPServer.next_port
@enable_compression = enable_compression
begin
base_opts = {
BindAddress: '127.0.0.1',
Port: @port,
AccessLog: [],
Logger: NullLogger.new,
RequestCallback: method(:record_request),
}
@server = create_server(@port, base_opts)
rescue Errno::EADDRINUSE
@port = StubHTTPServer.next_port
retry
end
base_opts = {
BindAddress: '127.0.0.1',
Port: 0, # Let OS assign an available port
AccessLog: [],
Logger: NullLogger.new,
RequestCallback: method(:record_request),
}
@server = create_server(base_opts)
@requests = []
@requests_queue = Queue.new
end

def self.next_port
p = @@next_port
@@next_port = (p + 1 < 60000) ? p + 1 : 50000
p
end

def create_server(port, base_opts)
WEBrick::HTTPServer.new(base_opts)
def create_server(base_opts)
server = WEBrick::HTTPServer.new(base_opts)
# Get the actual port assigned by the OS
@port = server.config[:Port]
server
end

def start
Expand Down