Skip to content

Commit 89e92c3

Browse files
authored
feat!: Upgrade to OpenTelemetry-Swift 2.x and use core package instead (#6)
1 parent f8454a7 commit 89e92c3

File tree

5 files changed

+56
-21
lines changed

5 files changed

+56
-21
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
- macos-14
1717
- macos-26
1818
xcode:
19-
- Xcode_15.2
19+
- Xcode_15.4
2020
- Xcode_26.0
2121
destination:
2222
- 'platform=iOS Simulator,OS=17.2,name=iPhone 15'
@@ -30,17 +30,17 @@ jobs:
3030
xcode: Xcode_26.0
3131
# Don't run new macOS with old Xcode
3232
- runner: macos-26
33-
xcode: Xcode_15.2
33+
xcode: Xcode_15.4
3434
# Don't run old simulators with new Xcode
3535
- destination: 'platform=tvOS Simulator,OS=17.2,name=Apple TV 4K (3rd generation) (at 1080p)'
3636
xcode: Xcode_26.0
3737
- destination: 'platform=iOS Simulator,OS=17.2,name=iPhone 15'
3838
xcode: Xcode_26.0
3939
# Don't run new simulators with old Xcode
4040
- destination: 'platform=tvOS Simulator,OS=26.0,name=Apple TV 4K (3rd generation) (at 1080p)'
41-
xcode: Xcode_15.2
41+
xcode: Xcode_15.4
4242
- destination: 'platform=iOS Simulator,OS=26.0.1,name=iPhone 17'
43-
xcode: Xcode_15.2
43+
xcode: Xcode_15.4
4444

4545
steps:
4646
- name: Configure Xcode

Package.swift

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// swift-tools-version: 5.9
1+
// swift-tools-version: 5.10
22

33
import PackageDescription
44

@@ -14,17 +14,17 @@ let package = Package(
1414
.library(name: "SmithyOpenTelemetry", targets: ["SmithyOpenTelemetry"]),
1515
],
1616
dependencies: [
17-
.package(url: "https://github.com/smithy-lang/smithy-swift", from: "0.153.0"),
18-
.package(url: "https://github.com/open-telemetry/opentelemetry-swift", from: "1.13.0"),
17+
.package(url: "https://github.com/smithy-lang/smithy-swift", from: "0.191.0"),
18+
.package(url: "https://github.com/open-telemetry/opentelemetry-swift-core", from: "2.3.0"),
1919
],
2020
targets: [
2121
.target(
2222
name: "SmithyOpenTelemetry",
2323
dependencies: [
2424
.product(name: "Smithy", package: "smithy-swift"),
2525
.product(name: "SmithyTelemetryAPI", package: "smithy-swift"),
26-
.product(name: "OpenTelemetryApi", package: "opentelemetry-swift"),
27-
.product(name: "OpenTelemetrySdk", package: "opentelemetry-swift"),
26+
.product(name: "OpenTelemetryApi", package: "opentelemetry-swift-core"),
27+
.product(name: "OpenTelemetrySdk", package: "opentelemetry-swift-core"),
2828
]
2929
),
3030
.testTarget(
@@ -33,9 +33,8 @@ let package = Package(
3333
"SmithyOpenTelemetry",
3434
.product(name: "Smithy", package: "smithy-swift"),
3535
.product(name: "SmithyTelemetryAPI", package: "smithy-swift"),
36-
.product(name: "OpenTelemetryApi", package: "opentelemetry-swift"),
37-
.product(name: "OpenTelemetrySdk", package: "opentelemetry-swift"),
38-
.product(name: "InMemoryExporter", package: "opentelemetry-swift"),
36+
.product(name: "OpenTelemetryApi", package: "opentelemetry-swift-core"),
37+
.product(name: "OpenTelemetrySdk", package: "opentelemetry-swift-core"),
3938
]
4039
),
4140
]

README.md

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,19 @@ Add this package as a dependency when you need OpenTelemetry support for your Sm
1616
```swift
1717
dependencies: [
1818
.package(url: "https://github.com/smithy-lang/smithy-swift-opentelemetry", from: "1.0.0"),
19-
.package(url: "https://github.com/open-telemetry/opentelemetry-swift", from: "1.13.0"),
2019
]
2120
```
2221

22+
This package depends on [opentelemetry-swift-core](https://github.com/open-telemetry/opentelemetry-swift-core) for the `OpenTelemetryApi` and `OpenTelemetrySdk` modules.
23+
2324
### Usage
2425

2526
```swift
2627
import SmithyOpenTelemetry
27-
import InMemoryExporter // Add the exporter you need
28+
import OpenTelemetrySdk
2829

29-
// Create a span exporter
30-
let spanExporter = InMemoryExporter()
30+
// Create a span exporter (use any SpanExporter implementation)
31+
let spanExporter = YourSpanExporter()
3132

3233
// Create the OpenTelemetry telemetry provider
3334
let telemetryProvider = OpenTelemetrySwift.provider(spanExporter: spanExporter)
@@ -41,10 +42,7 @@ let config = try await YourClient.YourClientConfiguration(
4142
let client = YourClient(config: config)
4243
```
4344

44-
You'll need to add the exporter package to your dependencies:
45-
```swift
46-
.product(name: "InMemoryExporter", package: "opentelemetry-swift")
47-
```
45+
For span exporters, you can use any `SpanExporter` implementation from the OpenTelemetry ecosystem, such as the OTLP exporters from the [opentelemetry-swift](https://github.com/open-telemetry/opentelemetry-swift) package.
4846

4947
## Security
5048

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
//
2+
// Copyright Amazon.com Inc. or its affiliates.
3+
// All Rights Reserved.
4+
//
5+
// SPDX-License-Identifier: Apache-2.0
6+
//
7+
8+
import Foundation
9+
import OpenTelemetrySdk
10+
11+
/// A simple in-memory span exporter for testing purposes.
12+
class InMemoryExporter: SpanExporter {
13+
private var finishedSpanItems: [SpanData] = []
14+
private var isRunning: Bool = true
15+
16+
func getFinishedSpanItems() -> [SpanData] {
17+
return finishedSpanItems
18+
}
19+
20+
func export(spans: [SpanData], explicitTimeout: TimeInterval? = nil) -> SpanExporterResultCode {
21+
guard isRunning else { return .failure }
22+
finishedSpanItems.append(contentsOf: spans)
23+
return .success
24+
}
25+
26+
func flush(explicitTimeout: TimeInterval? = nil) -> SpanExporterResultCode {
27+
guard isRunning else { return .failure }
28+
return .success
29+
}
30+
31+
func reset() {
32+
finishedSpanItems.removeAll()
33+
}
34+
35+
func shutdown(explicitTimeout: TimeInterval? = nil) {
36+
finishedSpanItems.removeAll()
37+
isRunning = false
38+
}
39+
}

Tests/SmithyOpenTelemetryTests/OTelTracingTests.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import XCTest
1111
import OpenTelemetrySdk
1212
import Smithy
1313
import SmithyTelemetryAPI
14-
import InMemoryExporter
1514

1615
final class OTelTracingTests: XCTestCase {
1716

0 commit comments

Comments
 (0)