Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: update NIO and InstrumentationBaggage (breaking), formatting #85

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ let package = Package(
.library(name: "AWSXRayTesting", targets: ["AWSXRayTesting"]),
],
dependencies: [
.package(url: "https://github.com/apple/swift-nio.git", .upToNextMajor(from: "2.17.0")),
.package(url: "https://github.com/apple/swift-nio.git", .upToNextMajor(from: "2.33.0")),
.package(url: "https://github.com/apple/swift-log.git", .upToNextMajor(from: "1.0.0")),
.package(name: "swift-baggage-context", url: "https://github.com/slashmo/gsoc-swift-baggage-context.git", .upToNextMinor(from: "0.2.0")),
.package(url: "https://github.com/apple/swift-distributed-tracing-baggage", .upToNextMinor(from: "0.2.1")),
.package(url: "https://github.com/fabianfett/pure-swift-json.git", .upToNextMinor(from: "0.4.0")),
],
targets: [
Expand All @@ -39,7 +39,7 @@ let package = Package(
.product(name: "NIO", package: "swift-nio"),
.product(name: "NIOHTTP1", package: "swift-nio"),
.product(name: "Logging", package: "swift-log"),
.product(name: "Baggage", package: "swift-baggage-context"),
.product(name: "InstrumentationBaggage", package: "swift-distributed-tracing-baggage"),
]
),
.testTarget(
Expand Down
4 changes: 2 additions & 2 deletions Sources/AWSXRayRecorder/AWS.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ extension XRayRecorder.Segment {
/// For example, a Multicontainer Docker Elastic Beanstalk environment runs your application on an Amazon ECS container,
/// which in turn runs on an Amazon EC2 instance.
/// In this case you would set the origin to `AWS::ElasticBeanstalk::Environment` as the environment is the parent of the other two resources.
internal enum Origin: String, Encodable {
enum Origin: String, Encodable {
/// An Amazon EC2 instance.
case ec2Instance = "AWS::EC2::Instance"
/// An Amazon ECS container.
Expand All @@ -34,7 +34,7 @@ extension XRayRecorder.Segment {
///
/// # References
/// - [AWS X-Ray segment documents - AWS resource data](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html#api-segmentdocuments-aws)
internal struct AWS: Encodable {
struct AWS: Encodable {
#if false // not used at the moment, see https://github.com/pokryfka/aws-xray-sdk-swift/issues/26
/// If your application sends segments to a different AWS account, record the ID of the account running your application.
var accountId: String?
Expand Down
12 changes: 6 additions & 6 deletions Sources/AWSXRayRecorder/Baggage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@
//
//===----------------------------------------------------------------------===//

import Baggage
import InstrumentationBaggage

private enum XRayContextKey: BaggageContextKey {
private enum XRayContextKey: BaggageKey {
typealias Value = XRayRecorder.TraceContext
var name: String { "XRayTraceContext" }
}

extension BaggageContext {
public extension Baggage {
/// Contains `XRayContext`.
public var xRayContext: XRayContext? {
var xRayContext: XRayContext? {
get {
self[XRayContextKey.self]
}
Expand All @@ -30,8 +30,8 @@ extension BaggageContext {
}
}

internal extension BaggageContext {
func withParent(_ parentId: XRayRecorder.Segment.ID) throws -> BaggageContext {
internal extension Baggage {
func withParent(_ parentId: XRayRecorder.Segment.ID) throws -> Baggage {
guard var context = xRayContext else { throw XRayRecorder.TraceError.missingContext }
context.parentId = parentId
var updated = self
Expand Down
4 changes: 2 additions & 2 deletions Sources/AWSXRayRecorder/Config.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@

import Logging

extension XRayRecorder {
public extension XRayRecorder {
/// `XRayRecorder` configuration.
public struct Config {
struct Config {
/// Context missing strategy.
public enum ContextMissingStrategy: String {
/// Indicate that a precondition was violated.
Expand Down
6 changes: 3 additions & 3 deletions Sources/AWSXRayRecorder/Exception.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,18 @@
//===----------------------------------------------------------------------===//

extension XRayRecorder.Segment {
internal struct Cause {
struct Cause {
#if false // not used
/// The full path of the working directory when the exception occurred.
var workingDirectory: String?
/// The **array** of paths to libraries or modules in use when the exception occurred.
var paths: [String]?
#endif
/// The **array** of **exception** objects.
var exceptions: [Exception] = [Exception]()
var exceptions = [Exception]()
}

internal struct Exception {
struct Exception {
/// A 64-bit identifier in **16 hexadecimal digits**.
struct ID: RawRepresentable, Hashable, Encodable, CustomStringConvertible {
let rawValue: String
Expand Down
4 changes: 2 additions & 2 deletions Sources/AWSXRayRecorder/HTTP.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
//===----------------------------------------------------------------------===//

extension XRayRecorder.Segment {
internal enum Namespace: String, Encodable {
enum Namespace: String, Encodable {
/// AWS SDK calls
case aws
/// other downstream calls
Expand All @@ -28,7 +28,7 @@ extension XRayRecorder.Segment {
///
/// # References
/// - [AWS X-Ray segment documents - HTTP request data](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html#api-segmentdocuments-http)
internal struct HTTP: Encodable {
struct HTTP: Encodable {
/// Information about a request.
struct Request: Encodable {
/// The request method. For example, `GET`.
Expand Down
7 changes: 4 additions & 3 deletions Sources/AWSXRayRecorder/NoOpRecorder.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
//
//===----------------------------------------------------------------------===//

import Baggage
import InstrumentationBaggage
import Logging

// TODO: just like with NoOpSegment we could reduce allocations by having a base class
Expand All @@ -28,12 +28,13 @@ public class XRayNoOpRecorder: XRayRecorder {
override public func beginSegment(name: String, context: TraceContext, startTime: XRayRecorder.Timestamp = .now(),
metadata: XRayRecorder.Segment.Metadata? = nil) -> XRayRecorder.Segment
{
var baggage = BaggageContext()
// TODO: TODO or topLevel?
var baggage = Baggage.TODO("NoOp")
baggage.xRayContext = context
return NoOpSegment(id: .init(), name: name, baggage: baggage)
}

override public func beginSegment(name: String, baggage: BaggageContext, startTime: XRayRecorder.Timestamp = .now(),
override public func beginSegment(name: String, baggage: Baggage, startTime: XRayRecorder.Timestamp = .now(),
metadata: XRayRecorder.Segment.Metadata? = nil) -> XRayRecorder.Segment
{
NoOpSegment(id: .init(), name: name, baggage: baggage)
Expand Down
8 changes: 4 additions & 4 deletions Sources/AWSXRayRecorder/NoOpSegment.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,20 @@
//
//===----------------------------------------------------------------------===//

import Baggage
import InstrumentationBaggage
import Logging

// TODO: reduce allocation by by making Segment an abstract class extended by NoOpSegment and DoOpSegment ?

extension XRayRecorder {
internal class NoOpSegment: Segment {
class NoOpSegment: Segment {
override public var isSampled: Bool { false }

override private init(
id: ID,
name: String,
context: TraceContext,
baggage: BaggageContext,
baggage: Baggage,
startTime: XRayRecorder.Timestamp = Timestamp(),
subsegment: Bool = false,
service: Service? = nil, user: String? = nil,
Expand All @@ -36,7 +36,7 @@ extension XRayRecorder {
fatalError()
}

init(id: ID, name: String, baggage: BaggageContext, startTime: Timestamp = .now(), logger: Logger? = nil) {
init(id: ID, name: String, baggage: Baggage, startTime: Timestamp = .now(), logger: Logger? = nil) {
// the context is not of much importance as the segment will not be emitted
// however pass the baggage which may contain more than just the X-Ray trace
let context = baggage.xRayContext ?? XRayRecorder.TraceContext()
Expand Down
130 changes: 65 additions & 65 deletions Sources/AWSXRayRecorder/Recorder+Helpers.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@
//
//===----------------------------------------------------------------------===//

import Baggage
import InstrumentationBaggage

extension XRayRecorder {
public extension XRayRecorder {
/// Creates new segment.
///
/// Records thrown `Error`.
Expand All @@ -25,22 +25,22 @@ extension XRayRecorder {
/// - metadata: segment metadata
/// - body: segment body
@inlinable
public func segment<T>(name: String, context: TraceContext, startTime: XRayRecorder.Timestamp = .now(),
metadata: XRayRecorder.Segment.Metadata? = nil,
body: (XRayRecorder.Segment) throws -> T)
func segment<T>(name: String, context: TraceContext, startTime: XRayRecorder.Timestamp = .now(),
metadata: XRayRecorder.Segment.Metadata? = nil,
body: (XRayRecorder.Segment) throws -> T)
rethrows -> T
{
let segment = beginSegment(name: name, context: context, startTime: startTime, metadata: metadata)
defer {
segment.end()
}
do {
return try body(segment)
} catch {
segment.addError(error)
throw error
}
let segment = beginSegment(name: name, context: context, startTime: startTime, metadata: metadata)
defer {
segment.end()
}
do {
return try body(segment)
} catch {
segment.addError(error)
throw error
}
}

/// Creates new segment.
///
Expand All @@ -58,22 +58,22 @@ extension XRayRecorder {
/// - metadata: segment metadata
/// - body: segment body
@inlinable
public func segment<T>(name: String, baggage: BaggageContext, startTime: XRayRecorder.Timestamp = .now(),
metadata: XRayRecorder.Segment.Metadata? = nil,
body: (XRayRecorder.Segment) throws -> T)
func segment<T>(name: String, baggage: Baggage, startTime: XRayRecorder.Timestamp = .now(),
metadata: XRayRecorder.Segment.Metadata? = nil,
body: (XRayRecorder.Segment) throws -> T)
rethrows -> T
{
let segment = beginSegment(name: name, baggage: baggage, startTime: startTime, metadata: metadata)
defer {
segment.end()
}
do {
return try body(segment)
} catch {
segment.addError(error)
throw error
}
let segment = beginSegment(name: name, baggage: baggage, startTime: startTime, metadata: metadata)
defer {
segment.end()
}
do {
return try body(segment)
} catch {
segment.addError(error)
throw error
}
}

/// Creates new segment.
///
Expand All @@ -86,26 +86,26 @@ extension XRayRecorder {
/// - metadata: segment metadata
/// - body: segment body
@inlinable
public func segment<T, E>(name: String, context: TraceContext, startTime: XRayRecorder.Timestamp = .now(),
metadata: XRayRecorder.Segment.Metadata? = nil,
body: (XRayRecorder.Segment) throws -> Result<T, E>)
func segment<T, E>(name: String, context: TraceContext, startTime: XRayRecorder.Timestamp = .now(),
metadata: XRayRecorder.Segment.Metadata? = nil,
body: (XRayRecorder.Segment) throws -> Result<T, E>)
rethrows -> Result<T, E>
{
let segment = beginSegment(name: name, context: context, startTime: startTime, metadata: metadata)
defer {
segment.end()
}
do {
let result = try body(segment)
if case Result<T, E>.failure(let error) = result {
segment.addError(error)
}
return result
} catch {
let segment = beginSegment(name: name, context: context, startTime: startTime, metadata: metadata)
defer {
segment.end()
}
do {
let result = try body(segment)
if case Result<T, E>.failure(let error) = result {
segment.addError(error)
throw error
}
return result
} catch {
segment.addError(error)
throw error
}
}

/// Creates new segment.
///
Expand All @@ -123,29 +123,29 @@ extension XRayRecorder {
/// - metadata: segment metadata
/// - body: segment body
@inlinable
public func segment<T, E>(name: String, baggage: BaggageContext, startTime: XRayRecorder.Timestamp = .now(),
metadata: XRayRecorder.Segment.Metadata? = nil,
body: (XRayRecorder.Segment) throws -> Result<T, E>)
func segment<T, E>(name: String, baggage: Baggage, startTime: XRayRecorder.Timestamp = .now(),
metadata: XRayRecorder.Segment.Metadata? = nil,
body: (XRayRecorder.Segment) throws -> Result<T, E>)
rethrows -> Result<T, E>
{
let segment = beginSegment(name: name, baggage: baggage, startTime: startTime, metadata: metadata)
defer {
segment.end()
}
do {
let result = try body(segment)
if case Result<T, E>.failure(let error) = result {
segment.addError(error)
}
return result
} catch {
let segment = beginSegment(name: name, baggage: baggage, startTime: startTime, metadata: metadata)
defer {
segment.end()
}
do {
let result = try body(segment)
if case Result<T, E>.failure(let error) = result {
segment.addError(error)
throw error
}
return result
} catch {
segment.addError(error)
throw error
}
}
}

extension XRayRecorder.Segment {
public extension XRayRecorder.Segment {
/// Creates new subsegment.
///
/// Records thrown `Error`.
Expand All @@ -156,9 +156,9 @@ extension XRayRecorder.Segment {
/// - metadata: segment metadata
/// - body: subsegment body
@inlinable
public func subsegment<T>(name: String, startTime: XRayRecorder.Timestamp = .now(),
metadata: XRayRecorder.Segment.Metadata? = nil,
body: (XRayRecorder.Segment) throws -> T) rethrows -> T
func subsegment<T>(name: String, startTime: XRayRecorder.Timestamp = .now(),
metadata: XRayRecorder.Segment.Metadata? = nil,
body: (XRayRecorder.Segment) throws -> T) rethrows -> T
{
let segment = beginSubsegment(name: name, startTime: startTime, metadata: metadata)
defer {
Expand All @@ -182,9 +182,9 @@ extension XRayRecorder.Segment {
/// - metadata: segment metadata
/// - body: subsegment body
@inlinable
public func subsegment<T, E>(name: String, startTime: XRayRecorder.Timestamp = .now(),
metadata: XRayRecorder.Segment.Metadata? = nil,
body: (XRayRecorder.Segment) throws -> Result<T, E>) rethrows -> Result<T, E>
func subsegment<T, E>(name: String, startTime: XRayRecorder.Timestamp = .now(),
metadata: XRayRecorder.Segment.Metadata? = nil,
body: (XRayRecorder.Segment) throws -> Result<T, E>) rethrows -> Result<T, E>
{
let segment = beginSubsegment(name: name, startTime: startTime, metadata: metadata)
defer {
Expand Down
Loading