Skip to content

Commit 3fff148

Browse files
committed
review feedback
1 parent 9f76c3c commit 3fff148

File tree

4 files changed

+79
-15
lines changed

4 files changed

+79
-15
lines changed

Sources/AsyncHTTPClient/AsyncAwait/HTTPClient+execute.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ extension HTTPClient {
9595
let preparedRequest =
9696
try HTTPClientRequest.Prepared(
9797
currentRequest,
98+
dnsOverride: configuration.dnsOverride,
9899
tracing: self.configuration.tracing,
99-
dnsOverride: configuration.dnsOverride
100100
)
101101
let response = try await {
102102
var response = try await self.executeCancellable(preparedRequest, deadline: deadline, logger: logger)

Sources/AsyncHTTPClient/AsyncAwait/HTTPClientRequest+Prepared.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ extension HTTPClientRequest {
4949
extension HTTPClientRequest.Prepared {
5050
init(
5151
_ request: HTTPClientRequest,
52+
dnsOverride: [String: String] = [:],
5253
tracing: HTTPClient.TracingConfiguration? = nil,
53-
dnsOverride: [String: String] = [:]
5454
) throws {
5555
guard !request.url.isEmpty, let url = URL(string: request.url) else {
5656
throw HTTPClientError.invalidURL
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// This source file is part of the AsyncHTTPClient open source project
4+
//
5+
// Copyright (c) 2025 Apple Inc. and the AsyncHTTPClient project authors
6+
// Licensed under Apache License v2.0
7+
//
8+
// See LICENSE.txt for license information
9+
// See CONTRIBUTORS.txt for the list of AsyncHTTPClient project authors
10+
//
11+
// SPDX-License-Identifier: Apache-2.0
12+
//
13+
//===----------------------------------------------------------------------===//
14+
15+
@testable @_spi(Tracing) import AsyncHTTPClient
16+
import Atomics
17+
import InMemoryTracing
18+
import Logging
19+
import NIOConcurrencyHelpers
20+
import NIOCore
21+
import NIOEmbedded
22+
import NIOFoundationCompat
23+
import NIOHTTP1
24+
import NIOHTTPCompression
25+
import NIOPosix
26+
import NIOSSL
27+
import NIOTestUtils
28+
import NIOTransportServices
29+
import Tracing
30+
import XCTest
31+
32+
#if canImport(Network)
33+
import Network
34+
#endif
35+
36+
private func makeTracedHTTPClient(tracer: InMemoryTracer) -> HTTPClient {
37+
var config = HTTPClient.Configuration()
38+
config.httpVersion = .automatic
39+
config.tracing.tracer = tracer
40+
return HTTPClient(
41+
eventLoopGroupProvider: .singleton,
42+
configuration: config
43+
)
44+
}
45+
46+
final class HTTPClientTracingInternalTests: XCTestCaseHTTPClientTestsBaseClass {
47+
48+
var tracer: InMemoryTracer!
49+
var client: HTTPClient!
50+
51+
override func setUp() {
52+
super.setUp()
53+
self.tracer = InMemoryTracer()
54+
self.client = makeTracedHTTPClient(tracer: tracer)
55+
}
56+
57+
override func tearDown() {
58+
if let client = self.client {
59+
XCTAssertNoThrow(try client.syncShutdown())
60+
self.client = nil
61+
}
62+
tracer = nil
63+
}
64+
65+
func testTrace_preparedHeaders_include_fromSpan() async throws {
66+
let url = self.defaultHTTPBinURLPrefix + "404-does-not-exist"
67+
let request = HTTPClientRequest(url: url)
68+
69+
try tracer.withSpan("operation") { span in
70+
let prepared = try HTTPClientRequest.Prepared(request, tracing: self.client.tracing)
71+
XCTAssertTrue(prepared.head.headers.count > 2)
72+
XCTAssertTrue(prepared.head.headers.contains(name: "in-memory-trace-id"))
73+
XCTAssertTrue(prepared.head.headers.contains(name: "in-memory-span-id"))
74+
}
75+
}
76+
}

Tests/AsyncHTTPClientTests/HTTPClientTracingTests.swift

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
//
1313
//===----------------------------------------------------------------------===//
1414

15-
@_spi(Tracing) @testable import AsyncHTTPClient
15+
@_spi(Tracing) import AsyncHTTPClient // NOT @testable - tests that need @testable go into HTTPClientTracingInternalTests.swift
1616
import Atomics
1717
import InMemoryTracing
1818
import Logging
@@ -147,16 +147,4 @@ final class HTTPClientTracingTests: XCTestCaseHTTPClientTestsBaseClass {
147147
XCTAssertTrue(span.errors.isEmpty, "Should have recorded error")
148148
XCTAssertEqual(span.attributes.get(client.tracing.attributeKeys.responseStatusCode), 404)
149149
}
150-
151-
func testTrace_preparedHeaders_include_fromSpan() async throws {
152-
let url = self.defaultHTTPBinURLPrefix + "404-does-not-exist"
153-
let request = HTTPClientRequest(url: url)
154-
155-
try tracer.withSpan("operation") { span in
156-
let prepared = try HTTPClientRequest.Prepared(request, tracing: self.client.tracing)
157-
XCTAssertTrue(prepared.head.headers.count > 2)
158-
XCTAssertTrue(prepared.head.headers.contains(name: "in-memory-trace-id"))
159-
XCTAssertTrue(prepared.head.headers.contains(name: "in-memory-span-id"))
160-
}
161-
}
162150
}

0 commit comments

Comments
 (0)