@@ -82,11 +82,20 @@ class URLSessionInstrumentationTests: XCTestCase {
8282 static var semaphore : DispatchSemaphore !
8383 var sessionDelegate : SessionDelegate !
8484 static var instrumentation : URLSessionInstrumentation !
85+ static var baggage : Baggage !
8586
8687 static let server = HttpTestServer ( url: URL ( string: " http://localhost:33333 " ) , config: nil )
8788
8889 override class func setUp( ) {
90+ OpenTelemetry . registerPropagators ( textPropagators: [ W3CTraceContextPropagator ( ) ] , baggagePropagator: W3CBaggagePropagator ( ) )
8991 OpenTelemetry . registerTracerProvider ( tracerProvider: TracerProviderSdk ( ) )
92+
93+ baggage = DefaultBaggageManager . instance. baggageBuilder ( )
94+ . put ( key: EntryKey ( name: " foo " ) !, value: EntryValue ( string: " bar " ) !, metadata: nil )
95+ . build ( )
96+
97+ OpenTelemetry . instance. contextProvider. setActiveBaggage ( baggage)
98+
9099 let sem = DispatchSemaphore ( value: 0 )
91100 DispatchQueue . global ( qos: . default) . async {
92101 do {
@@ -102,6 +111,7 @@ class URLSessionInstrumentationTests: XCTestCase {
102111
103112 override class func tearDown( ) {
104113 server. stop ( )
114+ OpenTelemetry . instance. contextProvider. removeContextForBaggage ( baggage)
105115 }
106116
107117 override func setUp( ) {
@@ -240,20 +250,30 @@ class URLSessionInstrumentationTests: XCTestCase {
240250 XCTAssertTrue ( URLSessionInstrumentationTests . checker. receivedErrorCalled)
241251 }
242252
243- public func testShouldInstrumentRequest( ) {
253+ public func testShouldInstrumentRequest( ) throws {
244254 let request1 = URLRequest ( url: URL ( string: " http://defaultName.com " ) !)
245255 let request2 = URLRequest ( url: URL ( string: " http://dontinstrument.com " ) !)
246256
247- URLSessionLogger . processAndLogRequest ( request1, sessionTaskId: " 111 " , instrumentation: URLSessionInstrumentationTests . instrumentation, shouldInjectHeaders: true )
248- URLSessionLogger . processAndLogRequest ( request2, sessionTaskId: " 222 " , instrumentation: URLSessionInstrumentationTests . instrumentation, shouldInjectHeaders: true )
257+ let processedRequest1 = try XCTUnwrap ( URLSessionLogger . processAndLogRequest ( request1, sessionTaskId: " 111 " , instrumentation: URLSessionInstrumentationTests . instrumentation, shouldInjectHeaders: true ) )
258+ let processedRequest2 = URLSessionLogger . processAndLogRequest ( request2, sessionTaskId: " 222 " , instrumentation: URLSessionInstrumentationTests . instrumentation, shouldInjectHeaders: true )
259+
260+ // `processedRequest2` is expected to be nil, because its URL was marked as not to be instrumented.
261+ XCTAssertNil ( processedRequest2)
249262
250263 XCTAssertTrue ( URLSessionInstrumentationTests . checker. shouldInstrumentCalled)
251264
265+ let processedHeaders1 = try XCTUnwrap ( processedRequest1. allHTTPHeaderFields)
266+
267+ // headers injected from `TextMapPropagator` implementation
268+ XCTAssertTrue ( processedHeaders1. contains ( where: { $0. key == W3CTraceContextPropagator . traceparent } ) )
269+
270+ // headers injected from `TextMapBaggagePropagator` implementation
271+ XCTAssertTrue ( processedHeaders1. contains ( where: { $0. key == W3CBaggagePropagator . headerBaggage && $0. value == " foo=bar " } ) )
272+
252273 XCTAssertEqual ( 1 , URLSessionLogger . runningSpans. count)
253- XCTAssertNotNil ( URLSessionLogger . runningSpans [ " 111 " ] )
254- if let span = URLSessionLogger . runningSpans [ " 111 " ] {
255- XCTAssertEqual ( " HTTP GET " , span. name)
256- }
274+
275+ let span = try XCTUnwrap ( URLSessionLogger . runningSpans [ " 111 " ] )
276+ XCTAssertEqual ( " HTTP GET " , span. name)
257277 }
258278
259279 public func testDataTaskWithRequestBlock( ) {
@@ -388,8 +408,6 @@ class URLSessionInstrumentationTests: XCTestCase {
388408 XCTAssertTrue ( URLSessionInstrumentationTests . checker. createdRequestCalled)
389409 XCTAssertNotNil ( URLSessionInstrumentationTests . requestCopy? . allHTTPHeaderFields ? [ W3CTraceContextPropagator . traceparent] )
390410 }
391-
392-
393411
394412 #if swift(>=5.5.2)
395413 @available ( macOS 10 . 15 , iOS 13 . 0 , tvOS 13 . 0 , * )
0 commit comments