Skip to content

Commit 65442a6

Browse files
Fix tests to use ServerContext fixture
Use Sus::Fixtures::Async::HTTP::ServerContext which provides automatic server setup and a pre-configured client, instead of manually managing server tasks and endpoints.
1 parent 2c94715 commit 65442a6

File tree

1 file changed

+2
-46
lines changed

1 file changed

+2
-46
lines changed

test/metrics/provider/async/http/server.rb

Lines changed: 2 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,11 @@
44
# Copyright, 2025, by Samuel Williams.
55

66
require "metrics/provider/async/http/server"
7-
require "async/http/server"
8-
require "async/http/endpoint"
9-
require "async/http/client"
107
require "protocol/http/middleware"
11-
require "sus/fixtures/async"
8+
require "sus/fixtures/async/http/server_context"
129

1310
describe Async::HTTP::Server do
14-
include Sus::Fixtures::Async::ReactorContext
15-
16-
let(:endpoint) {Async::HTTP::Endpoint.parse("http://localhost:0")}
11+
include Sus::Fixtures::Async::HTTP::ServerContext
1712

1813
with "metrics provider" do
1914
let(:app) do
@@ -22,13 +17,7 @@
2217
end
2318
end
2419

25-
let(:server) {subject.new(app, endpoint)}
26-
2720
it "emits queue time metric when x-request-start header is present" do
28-
# Start the server
29-
server_task = server.run
30-
bound_endpoint = server_task.wait_until_ready
31-
3221
# Calculate a timestamp 100ms in the past (nginx format with 't=' prefix)
3322
request_start = Process.clock_gettime(Process::CLOCK_REALTIME) - 0.1
3423

@@ -39,96 +28,63 @@
3928
end
4029

4130
# Make a request with the x-request-start header
42-
client = Async::HTTP::Client.new(bound_endpoint)
4331
headers = [["x-request-start", "t=#{request_start}"]]
4432
response = client.get("/", headers)
4533

4634
expect(response.status).to be == 200
4735
response.finish
48-
49-
client.close
50-
server_task.stop
5136
end
5237

5338
it "handles nginx-style timestamp format (t=prefix)" do
54-
server_task = server.run
55-
bound_endpoint = server_task.wait_until_ready
56-
5739
request_start = Process.clock_gettime(Process::CLOCK_REALTIME) - 0.05
5840

5941
expect(Async::HTTP::Server::ASYNC_HTTP_SERVER_REQUEST_QUEUE_TIME).to receive(:emit) do |value, tags:|
6042
expect(value).to be > 0
6143
expect(value).to be < 1
6244
end
6345

64-
client = Async::HTTP::Client.new(bound_endpoint)
6546
headers = [["x-request-start", "t=#{request_start}"]]
6647
response = client.get("/", headers)
6748

6849
expect(response.status).to be == 200
6950
response.finish
70-
71-
client.close
72-
server_task.stop
7351
end
7452

7553
it "handles plain Unix timestamp format" do
76-
server_task = server.run
77-
bound_endpoint = server_task.wait_until_ready
78-
7954
request_start = Process.clock_gettime(Process::CLOCK_REALTIME) - 0.05
8055

8156
expect(Async::HTTP::Server::ASYNC_HTTP_SERVER_REQUEST_QUEUE_TIME).to receive(:emit) do |value, tags:|
8257
expect(value).to be > 0
8358
expect(value).to be < 1
8459
end
8560

86-
client = Async::HTTP::Client.new(bound_endpoint)
8761
headers = [["x-request-start", request_start.to_s]]
8862
response = client.get("/", headers)
8963

9064
expect(response.status).to be == 200
9165
response.finish
92-
93-
client.close
94-
server_task.stop
9566
end
9667

9768
it "does not emit queue time metric when x-request-start header is missing" do
98-
server_task = server.run
99-
bound_endpoint = server_task.wait_until_ready
100-
10169
# Should not emit the queue time metric
10270
expect(Async::HTTP::Server::ASYNC_HTTP_SERVER_REQUEST_QUEUE_TIME).not.to receive(:emit)
10371

104-
client = Async::HTTP::Client.new(bound_endpoint)
10572
response = client.get("/")
10673

10774
expect(response.status).to be == 200
10875
response.finish
109-
110-
client.close
111-
server_task.stop
11276
end
11377

11478
it "ignores invalid timestamp formats" do
115-
server_task = server.run
116-
bound_endpoint = server_task.wait_until_ready
117-
11879
# Should not emit the queue time metric for invalid timestamp
11980
expect(Async::HTTP::Server::ASYNC_HTTP_SERVER_REQUEST_QUEUE_TIME).not.to receive(:emit)
12081

121-
client = Async::HTTP::Client.new(bound_endpoint)
12282
headers = [["x-request-start", "invalid-timestamp"]]
12383
response = client.get("/", headers)
12484

12585
expect(response.status).to be == 200
12686
response.finish
127-
128-
client.close
129-
server_task.stop
13087
end
131-
13288
end
13389
end
13490

0 commit comments

Comments
 (0)