Skip to content

Commit 19f9b8e

Browse files
committed
Modifies OtlpTraceExporter initializer to inject envVarHeaders; improves testability.
1 parent 47be4ed commit 19f9b8e

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

Sources/Exporters/OpenTelemetryProtocol/metric/OtlpMetricExporter.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,10 @@ public class OtlpMetricExporter: MetricExporter {
1919

2020

2121

22-
public init(channel: GRPCChannel, config: OtlpConfiguration = OtlpConfiguration(), logger: Logger = Logger(label: "io.grpc", factory: { _ in SwiftLogNoOpLogHandler() }), envVarHeaders: [(String,String)]? = EnvVarHeaders.attributes
23-
) {
22+
public init(channel: GRPCChannel, config: OtlpConfiguration = OtlpConfiguration(), logger: Logger = Logger(label: "io.grpc", factory: { _ in SwiftLogNoOpLogHandler() }), envVarHeaders: [(String,String)]? = EnvVarHeaders.attributes) {
2423
self.channel = channel
2524
self.config = config
2625
self.metricClient = Opentelemetry_Proto_Collector_Metrics_V1_MetricsServiceClient(channel: self.channel)
27-
2826
if let headers = envVarHeaders {
2927
callOptions = CallOptions(customMetadata: HPACKHeaders(headers), logger: logger)
3028
} else if let headers = config.headers {

Sources/Exporters/OpenTelemetryProtocol/trace/OtlpTraceExporter.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ public class OtlpTraceExporter: SpanExporter {
1717
let config : OtlpConfiguration
1818
var callOptions : CallOptions? = nil
1919

20-
public init(channel: GRPCChannel, config: OtlpConfiguration = OtlpConfiguration(), logger: Logger = Logger(label: "io.grpc", factory: { _ in SwiftLogNoOpLogHandler() })) {
20+
public init(channel: GRPCChannel, config: OtlpConfiguration = OtlpConfiguration(), logger: Logger = Logger(label: "io.grpc", factory: { _ in SwiftLogNoOpLogHandler() }), envVarHeaders: [(String,String)]? = EnvVarHeaders.attributes) {
2121
self.channel = channel
2222
traceClient = Opentelemetry_Proto_Collector_Trace_V1_TraceServiceClient(channel: channel)
2323
self.config = config
24-
if let headers = EnvVarHeaders.attributes {
24+
if let headers = envVarHeaders {
2525
callOptions = CallOptions(customMetadata: HPACKHeaders(headers), logger: logger)
2626
} else if let headers = config.headers {
2727
callOptions = CallOptions(customMetadata: HPACKHeaders(headers), logger: logger)

Tests/ExportersTests/OpenTelemetryProtocol/OtlpTraceExporterTests.swift

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,25 @@ class OtlpTraceExporterTests: XCTestCase {
6363
XCTAssertEqual(logger.label, "my.grpc.logger")
6464
}
6565

66+
func testConfigHeadersIsNil_whenDefaultInitCalled() throws {
67+
let exporter = OtlpTraceExporter(channel: channel)
68+
XCTAssertNil(exporter.config.headers)
69+
}
70+
71+
func testConfigHeadersAreSet_whenInitCalledWithCustomConfig() throws {
72+
let config: OtlpConfiguration = OtlpConfiguration(timeout: TimeInterval(10), headers: [("FOO", "BAR")])
73+
let exporter = OtlpTraceExporter(channel: channel, config: config)
74+
XCTAssertNotNil(exporter.config.headers)
75+
XCTAssertEqual(exporter.config.headers?[0].0, "FOO")
76+
XCTAssertEqual(exporter.config.headers?[0].1, "BAR")
77+
}
78+
79+
func testConfigHeadersAreSet_whenInitCalledWithExplicitHeaders() throws {
80+
let exporter = OtlpTraceExporter(channel: channel, envVarHeaders: [("FOO", "BAR")])
81+
XCTAssertNil(exporter.config.headers)
82+
XCTAssertEqual("BAR", exporter.callOptions?.customMetadata.first(name: "FOO"))
83+
}
84+
6685
func testExportMultipleSpans() {
6786
var spans = [SpanData]()
6887
for _ in 0 ..< 10 {

0 commit comments

Comments
 (0)