Skip to content

Commit c2afc27

Browse files
committed
review feedback
1 parent 9f76c3c commit c2afc27

File tree

4 files changed

+82
-17
lines changed

4 files changed

+82
-17
lines changed

Sources/AsyncHTTPClient/AsyncAwait/HTTPClient+execute.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ extension HTTPClient {
9595
let preparedRequest =
9696
try HTTPClientRequest.Prepared(
9797
currentRequest,
98-
tracing: self.configuration.tracing,
99-
dnsOverride: configuration.dnsOverride
98+
dnsOverride: configuration.dnsOverride,
99+
tracing: self.configuration.tracing
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: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ extension HTTPClientRequest {
4949
extension HTTPClientRequest.Prepared {
5050
init(
5151
_ request: HTTPClientRequest,
52-
tracing: HTTPClient.TracingConfiguration? = nil,
53-
dnsOverride: [String: String] = [:]
52+
dnsOverride: [String: String] = [:],
53+
tracing: HTTPClient.TracingConfiguration? = nil
5454
) throws {
5555
guard !request.url.isEmpty, let url = URL(string: request.url) else {
5656
throw HTTPClientError.invalidURL
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
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+
import Atomics
16+
import InMemoryTracing
17+
import Logging
18+
import NIOConcurrencyHelpers
19+
import NIOCore
20+
import NIOEmbedded
21+
import NIOFoundationCompat
22+
import NIOHTTP1
23+
import NIOHTTPCompression
24+
import NIOPosix
25+
import NIOSSL
26+
import NIOTestUtils
27+
import NIOTransportServices
28+
import Tracing
29+
import XCTest
30+
31+
@testable @_spi(Tracing) import AsyncHTTPClient
32+
33+
#if canImport(Network)
34+
import Network
35+
#endif
36+
37+
private func makeTracedHTTPClient(tracer: InMemoryTracer) -> HTTPClient {
38+
var config = HTTPClient.Configuration()
39+
config.httpVersion = .automatic
40+
config.tracing.tracer = tracer
41+
return HTTPClient(
42+
eventLoopGroupProvider: .singleton,
43+
configuration: config
44+
)
45+
}
46+
47+
final class HTTPClientTracingInternalTests: XCTestCaseHTTPClientTestsBaseClass {
48+
49+
var tracer: InMemoryTracer!
50+
var client: HTTPClient!
51+
52+
override func setUp() {
53+
super.setUp()
54+
self.tracer = InMemoryTracer()
55+
self.client = makeTracedHTTPClient(tracer: tracer)
56+
}
57+
58+
override func tearDown() {
59+
if let client = self.client {
60+
XCTAssertNoThrow(try client.syncShutdown())
61+
self.client = nil
62+
}
63+
tracer = nil
64+
}
65+
66+
func testTrace_preparedHeaders_include_fromSpan() async throws {
67+
let url = self.defaultHTTPBinURLPrefix + "404-does-not-exist"
68+
let request = HTTPClientRequest(url: url)
69+
70+
try tracer.withSpan("operation") { span in
71+
let prepared = try HTTPClientRequest.Prepared(request, tracing: self.client.tracing)
72+
XCTAssertTrue(prepared.head.headers.count > 2)
73+
XCTAssertTrue(prepared.head.headers.contains(name: "in-memory-trace-id"))
74+
XCTAssertTrue(prepared.head.headers.contains(name: "in-memory-span-id"))
75+
}
76+
}
77+
}

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)