hs-opentelemetry-sdk 0.1.0.0 → 0.1.0.1
raw patch · 4 files changed
+50/−16 lines, 4 filesdep ~hs-opentelemetry-apidep ~hs-opentelemetry-propagator-w3c
Dependency ranges changed: hs-opentelemetry-api, hs-opentelemetry-propagator-w3c
Files
- ChangeLog.md +6/−0
- hs-opentelemetry-sdk.cabal +4/−4
- src/OpenTelemetry/Trace.hs +3/−3
- test/OpenTelemetry/TraceSpec.hs +37/−9
ChangeLog.md view
@@ -1,5 +1,11 @@ # Changelog for hs-opentelemetry-sdk +## Unreleased++## 0.1.0.1++- Update dependency bounds for hs-opentelemetry-api 0.3.0.0+ ## 0.1.0.0 - Support new versions of dependencies.
hs-opentelemetry-sdk.cabal view
@@ -1,11 +1,11 @@ cabal-version: 1.22 --- This file has been generated from package.yaml by hpack version 0.36.0.+-- This file has been generated from package.yaml by hpack version 0.37.0. -- -- see: https://github.com/sol/hpack name: hs-opentelemetry-sdk-version: 0.1.0.0+version: 0.1.0.1 synopsis: OpenTelemetry SDK for use in applications. description: Please see the README on GitHub at <https://github.com/iand675/hs-opentelemetry/tree/main/sdk#readme> category: OpenTelemetry, Telemetry, Monitoring, Observability, Metrics@@ -81,11 +81,11 @@ async , base >=4.7 && <5 , bytestring- , hs-opentelemetry-api ==0.2.*+ , hs-opentelemetry-api ==0.3.* , hs-opentelemetry-exporter-otlp ==0.1.* , hs-opentelemetry-propagator-b3 >=0.0.1 && <0.1 , hs-opentelemetry-propagator-datadog >=0.0.0 && <0.1- , hs-opentelemetry-propagator-w3c >=0.0.1 && <0.1+ , hs-opentelemetry-propagator-w3c >=0.1.0 && <0.2 , http-types , network-bsd , random >=1.2.0
src/OpenTelemetry/Trace.hs view
@@ -291,7 +291,7 @@ -} -knownPropagators :: [(T.Text, Propagator Context RequestHeaders ResponseHeaders)]+knownPropagators :: [(T.Text, Propagator Context RequestHeaders RequestHeaders)] knownPropagators = [ ("tracecontext", w3cTraceContextPropagator) , ("baggage", w3cBaggagePropagator)@@ -303,7 +303,7 @@ -- TODO, actually implement a registry systme-readRegisteredPropagators :: IO [(T.Text, Propagator Context RequestHeaders ResponseHeaders)]+readRegisteredPropagators :: IO [(T.Text, Propagator Context RequestHeaders RequestHeaders)] readRegisteredPropagators = pure knownPropagators @@ -375,7 +375,7 @@ pure (processors, providerOpts) -detectPropagators :: IO (Propagator Context RequestHeaders ResponseHeaders)+detectPropagators :: IO (Propagator Context RequestHeaders RequestHeaders) detectPropagators = do registeredPropagators <- readRegisteredPropagators propagatorsInEnv <- fmap (T.splitOn "," . T.pack) <$> lookupEnv "OTEL_PROPAGATORS"
test/OpenTelemetry/TraceSpec.hs view
@@ -252,15 +252,33 @@ spanAttributes s `shouldSatisfy` \attrs -> (lookupAttribute attrs "code.function") == Just (toAttribute @Text "f") && (lookupAttribute attrs "code.namespace") == Just (toAttribute @Text "OpenTelemetry.TraceSpec")+ && (lookupAttribute attrs "code.lineno") == Just (toAttribute @Int 330) - specify "Source code attributes are added correctly in the presence of frozen call stacks" $ asIO $ do+ specify "Source code attributes are not added in the presence of frozen call stacks" $ asIO $ do p <- getGlobalTracerProvider let t = makeTracer p "woo" tracerOptions s <- unsafeReadSpan =<< g3 t spanAttributes s `shouldSatisfy` \attrs ->- (lookupAttribute attrs "code.function") == Just (toAttribute @Text "g")- && (lookupAttribute attrs "code.namespace") == Just (toAttribute @Text "OpenTelemetry.TraceSpec")+ (lookupAttribute attrs "code.function") == Nothing+ && (lookupAttribute attrs "code.namespace") == Nothing+ && (lookupAttribute attrs "code.lineno") == Nothing + specify "Source code attributes are not added if source attributes are already present" $ asIO $ do+ p <- getGlobalTracerProvider+ let t = makeTracer p "woo" tracerOptions+ s <- unsafeReadSpan =<< h t+ spanAttributes s `shouldSatisfy` \attrs ->+ (lookupAttribute attrs "code.function") == Just (toAttribute @Text "something")+ && (lookupAttribute attrs "code.namespace") == Nothing+ && (lookupAttribute attrs "code.lineno") == Nothing++ specify "Source code attributes can be added for span creation wrappers" $ asIO $ do+ p <- getGlobalTracerProvider+ let t = makeTracer p "woo" tracerOptions+ s <- unsafeReadSpan =<< useSpanHelper t+ spanAttributes s `shouldSatisfy` \attrs ->+ (lookupAttribute attrs "code.function") == Just (toAttribute @Text "useSpanHelper")+ specify "Attribute length limit is respected" $ asIO $ do p <- getGlobalTracerProvider let t = makeTracer p "woo" tracerOptions@@ -312,14 +330,9 @@ createSpan tracer Context.empty "name" defaultSpanArguments -helper :: HasCallStack => Tracer -> IO Span-helper tracer =- createSpan tracer Context.empty "name" defaultSpanArguments-- g :: HasCallStack => Tracer -> IO Span -- block createSpan and callerAttributes from appearing in the call stack-g tracer = withFrozenCallStack $ helper tracer+g tracer = withFrozenCallStack $ createSpan tracer Context.empty "name" defaultSpanArguments g2 :: HasCallStack => Tracer -> IO Span@@ -329,3 +342,18 @@ -- Make a 3-deep call stack g3 :: HasCallStack => Tracer -> IO Span g3 tracer = g2 tracer+++h :: HasCallStack => Tracer -> IO Span+h tracer =+ createSpan tracer Context.empty "name" (addAttributesToSpanArguments (HM.singleton "code.function" "something") defaultSpanArguments)+++myInSpan :: HasCallStack => Tracer -> Text -> IO a -> IO (a, Span)+myInSpan tracer name act = inSpan' tracer name (addAttributesToSpanArguments callerAttributes defaultSpanArguments) $ \traceSpan -> do+ res <- act+ pure (res, traceSpan)+++useSpanHelper :: HasCallStack => Tracer -> IO Span+useSpanHelper tracer = snd <$> myInSpan tracer "useSpanHelper" (pure ())