Skip to content

Commit ff3e6b6

Browse files
author
Ignacio Bonafonte
authored
Merge branch 'main' into fix-URLSessionInstrumentation-ios12
2 parents d20a0c9 + 4766969 commit ff3e6b6

File tree

3 files changed

+23
-11
lines changed

3 files changed

+23
-11
lines changed

Sources/Exporters/Zipkin/Implementation/ZipkinConversionExtension.swift

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import OpenTelemetryApi
88
import OpenTelemetrySdk
99

1010
struct ZipkinConversionExtension {
11-
static let statusCode = "ot.status_code"
12-
static let statusDescription = "ot.status_description"
11+
static let statusCode = "otel.status_code"
12+
static let statusErrorDescription = "error"
1313

1414
static let remoteEndpointServiceNameKeyResolution = ["peer.service": 0,
1515
"net.peer.name": 1,
@@ -65,12 +65,11 @@ struct ZipkinConversionExtension {
6565
}
6666

6767
let status = otelSpan.status
68-
69-
if status.isOk {
70-
attributeEnumerationState.tags[statusCode] = "\(status.name)".capitalized
71-
if case let Status.error(description) = status {
72-
attributeEnumerationState.tags[statusDescription] = description
73-
}
68+
if status != .unset {
69+
attributeEnumerationState.tags[statusCode] = "\(status.name)".uppercased()
70+
}
71+
if case let Status.error(description) = status {
72+
attributeEnumerationState.tags[statusErrorDescription] = description
7473
}
7574

7675
let annotations = otelSpan.events.map { processEvents(event: $0) }

Tests/ExportersTests/Zipkin/Implementation/ZipkinSpanConverterTests.swift

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,20 @@ class ZipkinSpanConverterTests: XCTestCase {
3434
XCTAssertEqual(zipkinSpan.remoteEndpoint?.serviceName, "RemoteServiceName")
3535
}
3636

37-
public static func createTestSpan(setAttributes: Bool = true, additionalAttributes: [String: Any]? = nil, addEvents: Bool = true, addLinks: Bool = true) -> SpanData {
37+
func testStatusUnset() {
38+
let span = ZipkinSpanConverterTests.createTestSpan(status: Status.unset)
39+
let zipkinSpan = ZipkinConversionExtension.toZipkinSpan(otelSpan: span, defaultLocalEndpoint: defaultZipkinEndpoint)
40+
XCTAssertNil(zipkinSpan.tags["otel.status_code"])
41+
}
42+
43+
func testStatusError() {
44+
let span = ZipkinSpanConverterTests.createTestSpan(status: Status.error(description: "error message"))
45+
let zipkinSpan = ZipkinConversionExtension.toZipkinSpan(otelSpan: span, defaultLocalEndpoint: defaultZipkinEndpoint)
46+
XCTAssertEqual(zipkinSpan.tags["otel.status_code"], "ERROR")
47+
XCTAssertEqual(zipkinSpan.tags["error"], "error message")
48+
}
49+
50+
public static func createTestSpan(setAttributes: Bool = true, additionalAttributes: [String: Any]? = nil, addEvents: Bool = true, addLinks: Bool = true, status: Status = Status.ok) -> SpanData {
3851
let startTimestamp = Date(timeIntervalSince1970: Double(Int(Date().timeIntervalSince1970))) // Round for comparison
3952
let endTimestamp = startTimestamp.addingTimeInterval(60)
4053
let eventTimestamp = startTimestamp
@@ -58,6 +71,6 @@ class ZipkinSpanConverterTests: XCTestCase {
5871

5972
// let linkedSpanId = SpanId(fromHexString: "888915b6286b9c41")
6073

61-
return SpanData(traceId: traceId, spanId: spanId, parentSpanId: parentSpanId, resource: Resource.empty, name: "Name", kind: .client, startTime: startTimestamp, attributes: attributes, events: events, status: Status.ok, endTime: endTimestamp)
74+
return SpanData(traceId: traceId, spanId: spanId, parentSpanId: parentSpanId, resource: Resource.empty, name: "Name", kind: .client, startTime: startTimestamp, attributes: attributes, events: events, status: status, endTime: endTimestamp)
6275
}
6376
}

Tests/ExportersTests/Zipkin/ZipkinExporterTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class ZipkinExporterTests: XCTestCase {
3434

3535
let exporterOutputArray = spans.map { ZipkinConversionExtension.toZipkinSpan(otelSpan: $0, defaultLocalEndpoint: ZipkinTraceExporter.getLocalZipkinEndpoint(name: "Open Telemetry Exporter")) }.map { $0.write() }
3636

37-
let expectedOutputString = #"{"traceId":"e8ea7e9ac72de94e91fabc613f9686b2","name":"Name","parentId":"\#(span.parentSpanId!.hexString)","id":"\#(span.spanId.hexString)","kind":"CLIENT","timestamp":\#(timestamp),"duration":60000000,"localEndpoint":{"serviceName":"Open Telemetry Exporter"\#(ipInformation)},"annotations":[{"timestamp":\#(timestamp),"value":"Event1"},{"timestamp":\#(timestamp),"value":"Event2"}],"tags":{"stringKey":"value","longKey":"1","longKey2":"1","doubleKey":"1.0","doubleKey2":"1.0","boolKey":"true","ot.status_code":"Ok"}}"#
37+
let expectedOutputString = #"{"traceId":"e8ea7e9ac72de94e91fabc613f9686b2","name":"Name","parentId":"\#(span.parentSpanId!.hexString)","id":"\#(span.spanId.hexString)","kind":"CLIENT","timestamp":\#(timestamp),"duration":60000000,"localEndpoint":{"serviceName":"Open Telemetry Exporter"\#(ipInformation)},"annotations":[{"timestamp":\#(timestamp),"value":"Event1"},{"timestamp":\#(timestamp),"value":"Event2"}],"tags":{"stringKey":"value","longKey":"1","longKey2":"1","doubleKey":"1.0","doubleKey2":"1.0","boolKey":"true","otel.status_code":"OK"}}"#
3838
let expectedData = expectedOutputString.data(using: .utf8)!
3939
let expectedOutputObject = try? JSONSerialization.jsonObject(with: expectedData)
4040
let expectedOutput = expectedOutputObject as! NSDictionary

0 commit comments

Comments
 (0)