Skip to content

Commit f8a05fd

Browse files
committed
[chain-pr 6/10] DatadogTrace: typed-bus migration
1 parent 935cf5e commit f8a05fd

9 files changed

Lines changed: 40 additions & 63 deletions

File tree

DatadogCore/Tests/Datadog/FeaturesIntegration/TracingWithLoggingIntegrationTests.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ class TracingWithLoggingIntegrationTests: XCTestCase {
1717

1818
override func setUp() {
1919
super.setUp()
20-
core = PassthroughCoreMock(messageReceiver: LogMessageReceiver.mockAny())
20+
core = PassthroughCoreMock()
21+
core.subscribe(receiver: LogMessageReceiver.mockAny())
2122
}
2223

2324
override func tearDown() {

DatadogCore/Tests/Datadog/TracerTests.swift

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -618,10 +618,9 @@ class TracerTests: XCTestCase {
618618
// MARK: - Integration With Logging Feature
619619

620620
func testSendingSpanLogs() throws {
621-
let logging: LogsFeature = .mockWith(
622-
messageReceiver: LogMessageReceiver.mockAny()
623-
)
621+
let logging: LogsFeature = .mockWith()
624622
try core.register(feature: logging)
623+
core.messageBus.subscribe(receiver: logging.logMessageReceiver)
625624

626625
Trace.enable(with: config, in: core)
627626
let tracer = Tracer.shared(in: core)
@@ -651,10 +650,9 @@ class TracerTests: XCTestCase {
651650
}
652651

653652
func testSendingSpanLogsWithErrorFromArguments() throws {
654-
let logging: LogsFeature = .mockWith(
655-
messageReceiver: LogMessageReceiver.mockAny()
656-
)
653+
let logging: LogsFeature = .mockWith()
657654
try core.register(feature: logging)
655+
core.messageBus.subscribe(receiver: logging.logMessageReceiver)
658656

659657
Trace.enable(with: config, in: core)
660658
let tracer = Tracer.shared(in: core)
@@ -676,10 +674,9 @@ class TracerTests: XCTestCase {
676674
}
677675

678676
func testSendingSpanLogsWithErrorFromNSError() throws {
679-
let logging: LogsFeature = .mockWith(
680-
messageReceiver: LogMessageReceiver.mockAny()
681-
)
677+
let logging: LogsFeature = .mockWith()
682678
try core.register(feature: logging)
679+
core.messageBus.subscribe(receiver: logging.logMessageReceiver)
683680

684681
Trace.enable(with: config, in: core)
685682
let tracer = Tracer.shared(in: core)
@@ -707,10 +704,9 @@ class TracerTests: XCTestCase {
707704
}
708705

709706
func testSendingSpanLogsWithErrorFromSwiftError() throws {
710-
let logging: LogsFeature = .mockWith(
711-
messageReceiver: LogMessageReceiver.mockAny()
712-
)
707+
let logging: LogsFeature = .mockWith()
713708
try core.register(feature: logging)
709+
core.messageBus.subscribe(receiver: logging.logMessageReceiver)
714710

715711
Trace.enable(with: config, in: core)
716712
let tracer = Tracer.shared(in: core)

DatadogCore/Tests/Datadog/Tracing/TracingURLSessionHandlerTests.swift

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,9 @@ class TracingURLSessionHandlerTests: XCTestCase {
2121
override func setUp() {
2222
super.setUp()
2323
let receiver = ContextMessageReceiver(samplerProvider: SamplerProvider(sampleRate: .mockAny()))
24-
core = PassthroughCoreMock(messageReceiver: CombinedFeatureMessageReceiver([
25-
LogMessageReceiver.mockAny(),
26-
receiver
27-
]))
24+
core = PassthroughCoreMock()
25+
core.subscribe(receiver: receiver)
26+
core.subscribe(receiver: LogMessageReceiver.mockAny())
2827

2928
tracer = .mockWith(
3029
core: core,
@@ -225,8 +224,7 @@ class TracingURLSessionHandlerTests: XCTestCase {
225224
)
226225
]
227226
)
228-
let message = FeatureMessage.context(fakeContext)
229-
_ = handler.contextReceiver.receive(message: message, from: core)
227+
handler.contextReceiver.receive(message: fakeContext, from: core)
230228
let (modifiedRequest, _, _) = handler.modify(
231229
request: request,
232230
headerTypes: [.datadog, .tracecontext, .b3, .b3multi],

DatadogTrace/Sources/Feature/MessageReceivers.swift

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ internal struct CoreContext {
2121
var accountInfo: AccountInfo?
2222
}
2323

24-
internal final class ContextMessageReceiver: FeatureMessageReceiver {
24+
internal final class ContextMessageReceiver: BusMessageReceiver {
2525
/// Creates a new `ContextMessageReceiver`.
2626
///
2727
/// - parameters:
@@ -41,24 +41,7 @@ internal final class ContextMessageReceiver: FeatureMessageReceiver {
4141
/// The tracer sampler that should be updated with the RUM deterministic sampler.
4242
let samplerProvider: SamplerProvider
4343

44-
/// Process messages receives from the bus.
45-
///
46-
/// - Parameters:
47-
/// - message: The Feature message
48-
/// - core: The core from which the message is transmitted.
49-
func receive(message: FeatureMessage, from core: DatadogCoreProtocol) -> Bool {
50-
switch message {
51-
case .context(let context):
52-
return update(context: context, from: core)
53-
default:
54-
return false
55-
}
56-
}
57-
58-
/// Updates context of the `DatadogTracer` if available.
59-
///
60-
/// - Parameter context: The updated core context.
61-
private func update(context datadogContext: DatadogContext, from core: DatadogCoreProtocol) -> Bool {
44+
func receive(message datadogContext: DatadogContext, from core: DatadogCoreProtocol) {
6245
let rumContext = datadogContext.additionalContext(ofType: RUMCoreContext.self)
6346

6447
_context.mutate {
@@ -69,7 +52,5 @@ internal final class ContextMessageReceiver: FeatureMessageReceiver {
6952
}
7053

7154
samplerProvider.updateWith(deterministicSampler: rumContext?.sessionSampler)
72-
73-
return true
7455
}
7556
}

DatadogTrace/Sources/Feature/TraceFeature.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ internal final class TraceFeature: DatadogRemoteFeature {
1111
static let name = "tracing"
1212

1313
let requestBuilder: FeatureRequestBuilder
14-
var messageReceiver: FeatureMessageReceiver { contextReceiver }
14+
let messageReceiver: FeatureMessageReceiver = NOPFeatureMessageReceiver()
1515

1616
let tracer: DatadogTracer
1717
let contextReceiver: ContextMessageReceiver

DatadogTrace/Sources/Integrations/TracingWithLoggingIntegration.swift

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -61,23 +61,21 @@ internal struct TracingWithLoggingIntegration {
6161
)
6262
: nil
6363

64-
core.send(
65-
message: .payload(
66-
LogMessage(
67-
logger: "trace",
68-
service: service,
69-
date: date,
70-
message: message,
71-
error: extractedError,
72-
level: level,
73-
thread: Thread.current.dd.name,
74-
networkInfoEnabled: networkInfoEnabled,
75-
userAttributes: userAttributes,
76-
internalAttributes: [
77-
Constants.traceIDKey: String(spanContext.traceID, representation: .hexadecimal),
78-
Constants.spanIDKey: String(spanContext.spanID, representation: .hexadecimal)
79-
]
80-
)
64+
core.messageBus.send(
65+
message: LogMessage(
66+
logger: "trace",
67+
service: service,
68+
date: date,
69+
message: message,
70+
error: extractedError,
71+
level: level,
72+
thread: Thread.current.dd.name,
73+
networkInfoEnabled: networkInfoEnabled,
74+
userAttributes: userAttributes,
75+
internalAttributes: [
76+
Constants.traceIDKey: String(spanContext.traceID, representation: .hexadecimal),
77+
Constants.spanIDKey: String(spanContext.spanID, representation: .hexadecimal)
78+
]
8179
),
8280
else: fallback
8381
)

DatadogTrace/Sources/Trace.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ public enum Trace {
4242

4343
// Register Trace feature:
4444
let trace = TraceFeature(in: core, configuration: configuration)
45+
46+
// Subscribe typed-bus receivers before registration so initial context push is received:
47+
core.messageBus.subscribe(receiver: trace.contextReceiver)
48+
4549
try core.register(feature: trace)
4650

4751
// If `URLSession` tracking is configured, register `URLSessionHandler` to enable distributed tracing:

DatadogTrace/Tests/ContextMessageReceiverTests.swift

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,8 @@ class ContextMessageReceiverTests: XCTestCase {
1414
func testItReceivesApplicationStateHistory() throws {
1515
// Given
1616
let receiver = ContextMessageReceiver(samplerProvider: SamplerProvider(sampleRate: .mockAny()))
17-
let core = PassthroughCoreMock(
18-
context: .mockWith(applicationStateHistory: .mockAppInBackground()),
19-
messageReceiver: receiver
20-
)
17+
let core = PassthroughCoreMock(context: .mockWith(applicationStateHistory: .mockAppInBackground()))
18+
core.subscribe(receiver: receiver)
2119

2220
XCTAssertEqual(receiver.context.applicationStateHistory?.currentState, .background)
2321

DatadogTrace/Tests/TracingURLSessionHandlerTests.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ class TracingURLSessionHandlerTests: XCTestCase {
2020
override func setUp() {
2121
super.setUp()
2222
let receiver = ContextMessageReceiver(samplerProvider: SamplerProvider(sampleRate: .mockAny()))
23-
core = PassthroughCoreMock(messageReceiver: receiver)
23+
core = PassthroughCoreMock()
24+
core.subscribe(receiver: receiver)
2425

2526
tracer = .mockWith(
2627
core: core,

0 commit comments

Comments
 (0)