From 610c10a808bc806ee10c5944e715b9bb003cd014 Mon Sep 17 00:00:00 2001 From: Moritz Lang Date: Wed, 10 Jan 2024 17:56:00 +0100 Subject: [PATCH] Update CI to match swift-otel --- .github/dependabot.yml | 8 ++++ .github/workflows/ci.yaml | 22 ---------- .github/workflows/ci.yml | 44 +++++++++++++++++++ .swiftformat | 11 ++--- Mintfile | 2 +- README.md | 4 +- .../MetadataProvider+OTelXRay.swift | 4 +- Sources/OpenTelemetryXRay/Propagator.swift | 4 +- .../XCTAssertThrowsEquatableError.swift | 2 +- .../MetadataProviderTests.swift | 8 ++-- 10 files changed, 70 insertions(+), 39 deletions(-) create mode 100644 .github/dependabot.yml delete mode 100644 .github/workflows/ci.yaml create mode 100644 .github/workflows/ci.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..25b8ece --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + reviewers: + - "slashmo" diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml deleted file mode 100644 index f29096a..0000000 --- a/.github/workflows/ci.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: CI - -on: [push, pull_request] - -jobs: - unit-test: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - images: - - swift:5.7 - - swift:5.8 - - swiftlang/swift:nightly-main-focal - container: ${{ matrix.images }} - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Resolve Swift dependencies - run: swift package resolve - - name: Build & Test - run: swift test --parallel diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..91d1a27 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,44 @@ +name: CI +on: [push, pull_request] +jobs: + soundness: + name: Soundness Check + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4.1.0 + + - name: Bootstrap Mint + uses: irgaly/setup-mint@v1 + + - name: Run soundness + run: | + scripts/soundness.sh + exit $(git status --porcelain | wc -l) + + unit-test: + name: Unit Test + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + swift: [5.9, latest] + + steps: + - name: Checkout + uses: actions/checkout@v4.1.0 + + - name: Cache Swift PM + uses: actions/cache@v3.3.2 + with: + path: .build + key: ${{ runner.os }}-${{ matrix.swift }}-spm-${{ hashFiles('Package.swift') }} + restore-keys: ${{ runner.os }}-${{ matrix.swift }}-spm- + + - name: Resolve Swift dependencies + run: swift package resolve + + - name: Run Unit Tests + run: swift test --parallel diff --git a/.swiftformat b/.swiftformat index 1bdaf39..18227d0 100644 --- a/.swiftformat +++ b/.swiftformat @@ -1,13 +1,14 @@ # file options ---swiftversion 5.3 ---exclude **/.build +--swiftversion 5.9 +--exclude .build +--exclude **/*.pb.swift +--exclude **/*.grpc.swift # format options ---ifdef no-indent +--extensionacl on-declarations +--indent 4 --patternlet inline ---self remove --stripunusedargs closure-only --wraparguments before-first ---extensionacl on-declarations diff --git a/Mintfile b/Mintfile index 6b5303b..5fc5628 100644 --- a/Mintfile +++ b/Mintfile @@ -1 +1 @@ -nicklockwood/SwiftFormat@0.47.13 +nicklockwood/SwiftFormat@0.51.12 diff --git a/README.md b/README.md index ab55e43..e03288b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # X-Ray Support for OpenTelemetry Swift -[![CI](https://github.com/slashmo/opentelemetry-swift-xray/actions/workflows/ci.yaml/badge.svg)](https://github.com/slashmo/opentelemetry-swift-xray/actions/workflows/ci.yaml) -[![Swift support](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fslashmo%2Fswift-otel%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/slashmo/swift-otel) +[![CI](https://github.com/slashmo/opentelemetry-swift-xray/actions/workflows/ci.yml/badge.svg)](https://github.com/slashmo/opentelemetry-swift-xray/actions/workflows/ci.yml) +[![Swift support](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fslashmo%2Fswift-otel%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/slashmo/swift-otel-xray) [![Made for Swift Distributed Tracing](https://img.shields.io/badge/Made%20for-Swift%20Distributed%20Tracing-%23f05137)](https://github.com/apple/swift-distributed-tracing) This library adds support for [AWS X-Ray](https://aws.amazon.com/xray/) to [OpenTelemetry Swift](https://github.com/slashmo/opentelemetry-swift). diff --git a/Sources/OpenTelemetryXRay/MetadataProvider+OTelXRay.swift b/Sources/OpenTelemetryXRay/MetadataProvider+OTelXRay.swift index 2eedb8a..c5411e6 100644 --- a/Sources/OpenTelemetryXRay/MetadataProvider+OTelXRay.swift +++ b/Sources/OpenTelemetryXRay/MetadataProvider+OTelXRay.swift @@ -25,11 +25,11 @@ extension Logger.MetadataProvider { public static func otelXRay(traceIDKey: String = "trace-id", spanIDKey: String = "span-id") -> Logger.MetadataProvider { .init { guard let spanContext = ServiceContext.current?.spanContext else { return [:] } - + let traceIDBytes = spanContext.traceID.hexBytes let timestampBytes = traceIDBytes[0 ..< 8] let randomBytes = traceIDBytes[8...] - + return [ traceIDKey: "1-\(String(decoding: timestampBytes, as: UTF8.self))-\(String(decoding: randomBytes, as: UTF8.self))", spanIDKey: "\(spanContext.spanID)", diff --git a/Sources/OpenTelemetryXRay/Propagator.swift b/Sources/OpenTelemetryXRay/Propagator.swift index 5275ed1..efe03ca 100644 --- a/Sources/OpenTelemetryXRay/Propagator.swift +++ b/Sources/OpenTelemetryXRay/Propagator.swift @@ -82,7 +82,7 @@ public struct XRayPropagator: OTelPropagator { ) } - private func extractTraceID(_ string: S) throws -> OTel.TraceID { + private func extractTraceID(_ string: some StringProtocol) throws -> OTel.TraceID { let result = try string.utf8.withContiguousStorageIfAvailable { traceIDBytes -> OTel.TraceID in guard traceIDBytes.count == 35 else { throw TraceHeaderParsingError(value: String(string), reason: .invalidTraceIDLength(string.count)) @@ -114,7 +114,7 @@ public struct XRayPropagator: OTelPropagator { return try result ?? extractTraceID(String(string)) } - private func extractSpanID(_ string: S) throws -> OTel.SpanID { + private func extractSpanID(_ string: some StringProtocol) throws -> OTel.SpanID { let result = try string.utf8.withContiguousStorageIfAvailable { spanIDBytes -> OTel.SpanID in guard spanIDBytes.count == 16 else { throw TraceHeaderParsingError(value: String(string), reason: .invalidSpanIDLength(spanIDBytes.count)) diff --git a/Tests/OpenTelemetryXRayTests/Helpers/XCTAssertThrowsEquatableError.swift b/Tests/OpenTelemetryXRayTests/Helpers/XCTAssertThrowsEquatableError.swift index 2561597..1c2f1d4 100644 --- a/Tests/OpenTelemetryXRayTests/Helpers/XCTAssertThrowsEquatableError.swift +++ b/Tests/OpenTelemetryXRayTests/Helpers/XCTAssertThrowsEquatableError.swift @@ -12,7 +12,7 @@ //===----------------------------------------------------------------------===// import XCTest -public func XCTAssertThrowsError(_ expression: @autoclosure () throws -> T, _ error: E) { +public func XCTAssertThrowsError(_ expression: @autoclosure () throws -> some Any, _ error: E) { do { let value = try expression() XCTFail("Expected error but received value: \(value)") diff --git a/Tests/OpenTelemetryXRayTests/MetadataProviderTests.swift b/Tests/OpenTelemetryXRayTests/MetadataProviderTests.swift index 23f518e..11a3cfb 100644 --- a/Tests/OpenTelemetryXRayTests/MetadataProviderTests.swift +++ b/Tests/OpenTelemetryXRayTests/MetadataProviderTests.swift @@ -12,8 +12,8 @@ //===----------------------------------------------------------------------===// @testable import Logging -@testable import OpenTelemetryXRay @testable import OpenTelemetry +@testable import OpenTelemetryXRay import ServiceContextModule import XCTest @@ -26,7 +26,7 @@ final class MetadataProviderTests: XCTestCase { let stream = InterceptingStream() var logger = Logger(label: "test") logger.handler = StreamLogHandler(label: "test", stream: stream, metadataProvider: .otelXRay) - + var generator = XRayIDGenerator() let spanContext = OTel.SpanContext( @@ -44,7 +44,7 @@ final class MetadataProviderTests: XCTestCase { XCTAssertEqual(stream.strings.count, 1) let message = try XCTUnwrap(stream.strings.first) - + let traceIDBytes = spanContext.traceID.hexBytes let timestampBytes = traceIDBytes[0 ..< 8] let randomBytes = traceIDBytes[8...] @@ -83,7 +83,7 @@ final class MetadataProviderTests: XCTestCase { XCTAssertEqual(stream.strings.count, 1) let message = try XCTUnwrap(stream.strings.first) - + let traceIDBytes = spanContext.traceID.hexBytes let timestampBytes = traceIDBytes[0 ..< 8] let randomBytes = traceIDBytes[8...]