@@ -143,6 +143,39 @@ class TelemetryTests: XCTestCase {
143143 Telemetry . shared. error ( metric: Telemetry . INVOKE_ERROR_METRIC, log: longString) { $0 [ " writekey " ] = longString }
144144 XCTAssertTrue ( Telemetry . shared. queue. count < 1000 )
145145 }
146+
147+ func testConcurrentErrorReporting( ) {
148+ Telemetry . shared. enable = true
149+ Telemetry . shared. start ( )
150+ let operationCount = 200
151+
152+ var concurrentExpectation = XCTestExpectation ( description: " High pressure operations " )
153+ concurrentExpectation. expectedFulfillmentCount = operationCount
154+
155+ // Use multiple dispatch queues to increase concurrency
156+ let queues = [
157+ DispatchQueue . global ( qos: . userInitiated) ,
158+ DispatchQueue . global ( qos: . default) ,
159+ DispatchQueue . global ( qos: . utility)
160+ ]
161+ for i in 0 ..< operationCount {
162+ // Round-robin between different queues
163+ let queue = queues [ i % queues. count]
164+ queue. async {
165+ Telemetry . shared. error (
166+ metric: Telemetry . INVOKE_ERROR_METRIC,
167+ log: " High pressure test \( i) "
168+ ) { tags in
169+ tags [ " error " ] = " pressure_test_key "
170+ tags [ " queue " ] = " \( i % queues. count) "
171+ tags [ " iteration " ] = " \( i) "
172+ }
173+ concurrentExpectation. fulfill ( )
174+ }
175+ }
176+ wait ( for: [ concurrentExpectation] , timeout: 15.0 )
177+ XCTAssertTrue ( Telemetry . shared. queue. count == Telemetry . shared. maxQueueSize)
178+ }
146179}
147180
148181// Mock URLSession
0 commit comments