forked from swift-server/async-http-client
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHTTPClientTracingInternalTests.swift
More file actions
77 lines (67 loc) · 2.22 KB
/
HTTPClientTracingInternalTests.swift
File metadata and controls
77 lines (67 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//===----------------------------------------------------------------------===//
//
// This source file is part of the AsyncHTTPClient open source project
//
// Copyright (c) 2025 Apple Inc. and the AsyncHTTPClient project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of AsyncHTTPClient project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//
import Atomics
import InMemoryTracing
import Logging
import NIOConcurrencyHelpers
import NIOCore
import NIOEmbedded
import NIOFoundationCompat
import NIOHTTP1
import NIOHTTPCompression
import NIOPosix
import NIOSSL
import NIOTestUtils
import NIOTransportServices
import Tracing
import XCTest
@testable @_spi(Tracing) import AsyncHTTPClient
#if canImport(Network)
import Network
#endif
private func makeTracedHTTPClient(tracer: InMemoryTracer) -> HTTPClient {
var config = HTTPClient.Configuration()
config.httpVersion = .automatic
config.tracing.tracer = tracer
return HTTPClient(
eventLoopGroupProvider: .singleton,
configuration: config
)
}
final class HTTPClientTracingInternalTests: XCTestCaseHTTPClientTestsBaseClass {
var tracer: InMemoryTracer!
var client: HTTPClient!
override func setUp() {
super.setUp()
self.tracer = InMemoryTracer()
self.client = makeTracedHTTPClient(tracer: tracer)
}
override func tearDown() {
if let client = self.client {
XCTAssertNoThrow(try client.syncShutdown())
self.client = nil
}
tracer = nil
}
func testTrace_preparedHeaders_include_fromSpan() async throws {
let url = self.defaultHTTPBinURLPrefix + "404-does-not-exist"
let request = HTTPClientRequest(url: url)
try tracer.withSpan("operation") { span in
let prepared = try HTTPClientRequest.Prepared(request, tracing: self.client.tracing)
XCTAssertTrue(prepared.head.headers.count > 2)
XCTAssertTrue(prepared.head.headers.contains(name: "in-memory-trace-id"))
XCTAssertTrue(prepared.head.headers.contains(name: "in-memory-span-id"))
}
}
}