Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ library
base >=4.7 && <5
, effectful-core >=2.3 && <3
, effectful-data-cache >=0.1.0.4 && <0.3
, hs-opentelemetry-api ==0.3.*
, hs-opentelemetry-api ==1.0.*
, text >=2.1 && <3
default-language: Haskell2010

Expand Down
2 changes: 1 addition & 1 deletion effectful-data-cache-opentelemetry/package.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ dependencies:
- base >= 4.7 && < 5
- effectful-core >= 2.3 && < 3
- effectful-data-cache >= 0.1.0.4 && < 0.3
- hs-opentelemetry-api >= 0.3 && < 0.4
- hs-opentelemetry-api >= 1.0 && < 1.1
- text >= 2.1 && < 3

ghc-options:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,28 +19,29 @@ import OpenTelemetry.Trace (
shutdownTracerProvider,
tracerOptions,
)
import OpenTelemetry.Trace.Core (SpanHot (..))
import Test.Hspec
import Prelude hiding (lookup)

-- | Run the given cache program under a traced interpreter, returning its
-- result plus every span that was exported.
traced
:: Eff '[Cache String Int, IOE] a
-> IO (a, [ImmutableSpan])
-> IO (a, [SpanHot])
traced prog = do
(processor, ref) <- inMemoryListExporter
provider <- createTracerProvider [processor] emptyTracerProviderOptions
let tracer = makeTracer provider "effectful-data-cache-test" tracerOptions
r <- runEff . runCache @String @Int Nothing $ traceCache @String @Int tracer prog
shutdownTracerProvider provider
spans <- readIORef ref
pure (r, reverse spans)
_ <- shutdownTracerProvider provider Nothing
spans <- traverse (readIORef . spanHot) . reverse =<< readIORef ref
pure (r, spans)

attr
:: ImmutableSpan
:: SpanHot
-> Text
-> Maybe Attribute
attr s = lookupAttribute (spanAttributes s)
attr s = lookupAttribute (hotAttributes s)

spec :: Spec
spec = do
Expand All @@ -49,15 +50,15 @@ spec = do
insert @String @Int "a" (1 :: Int)
_ <- lookup @String @Int "a"
purge @String @Int
fmap spanName spans `shouldBe` ["cache.insert", "cache.lookup", "cache.purge"]
fmap hotName spans `shouldBe` ["cache.insert", "cache.lookup", "cache.purge"]

it "records hits and misses" $ do
(_, spans) <- traced $ do
insert @String @Int "a" (1 :: Int)
_ <- lookup @String @Int "a"
_ <- lookup @String @Int "nope"
pure ()
let hits = [attr s "cache.hit" | s <- spans, spanName s == "cache.lookup"]
let hits = [attr s "cache.hit" | s <- spans, hotName s == "cache.lookup"]
hits
`shouldBe` [ Just (AttributeValue (BoolAttribute True))
, Just (AttributeValue (BoolAttribute False))
Expand All @@ -69,7 +70,7 @@ spec = do
insert @String @Int "b" (2 :: Int)
_ <- size @String @Int
pure ()
[attr s "cache.size" | s <- spans, spanName s == "cache.size"]
[attr s "cache.size" | s <- spans, hotName s == "cache.size"]
`shouldBe` [Just (AttributeValue (IntAttribute 2))]

it "still returns the underlying result" $ do
Expand Down
15 changes: 15 additions & 0 deletions stack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,18 @@ snapshot: lts-24.59
packages:
- .
- effectful-data-cache-opentelemetry
extra-deps:
- hs-opentelemetry-api-1.0.0.0
- hs-opentelemetry-api-types-1.0.0.0
- hs-opentelemetry-semantic-conventions-1.40.0.0
- hs-opentelemetry-otlp-1.0.0.0
- hs-opentelemetry-sdk-1.0.0.0
- hs-opentelemetry-exporter-in-memory-1.0.0.0
- hs-opentelemetry-exporter-handle-1.0.0.0
- hs-opentelemetry-exporter-otlp-1.0.0.0
- hs-opentelemetry-propagator-b3-1.0.0.0
- hs-opentelemetry-propagator-datadog-1.0.0.0
- hs-opentelemetry-propagator-jaeger-1.0.0.0
- hs-opentelemetry-propagator-w3c-1.0.0.0
- hs-opentelemetry-propagator-xray-1.0.0.0
- thread-utils-context-0.4.1.1
100 changes: 99 additions & 1 deletion stack.yaml.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,105 @@
# For more information, please see the documentation at:
# https://docs.haskellstack.org/en/stable/topics/lock_files

packages: []
packages:
- completed:
hackage: hs-opentelemetry-api-1.0.0.0@sha256:9faf9d6abf556b7dbe393353eaca1088039593902dd05b859e3505ade80afd77,5993
pantry-tree:
sha256: 4da8c0c5bd66724000861f08988007dc4505ca5c6d6fc7402063b7c9e5df5546
size: 7222
original:
hackage: hs-opentelemetry-api-1.0.0.0
- completed:
hackage: hs-opentelemetry-api-types-1.0.0.0@sha256:28e1b64c5f20bf3e6ead77c3b40aadf9a5b0e07d197eeb462b987d391dd1f513,1211
pantry-tree:
sha256: f55a01738bf7e5696bd014af0275d082605397926d12ef873dbd69d7f227fc12
size: 334
original:
hackage: hs-opentelemetry-api-types-1.0.0.0
- completed:
hackage: hs-opentelemetry-semantic-conventions-1.40.0.0@sha256:7bb8cdd2d9facde4613c1b271b1a57ac218ed471b05943f6fcbf38b509913d24,2511
pantry-tree:
sha256: 006366fa75093c79eba2d2b965644c1e6a263aace53fd38b27f574af3172b768
size: 327
original:
hackage: hs-opentelemetry-semantic-conventions-1.40.0.0
- completed:
hackage: hs-opentelemetry-otlp-1.0.0.0@sha256:0ea827edde0a66b5c80c0d01a62665d58dbc2efde23412ed5e2bb9fb78571e64,3138
pantry-tree:
sha256: 7d528da65ca5aab7f7c1a944ca6534dbb65c68b50a721a56524cf2945f3ee12d
size: 3286
original:
hackage: hs-opentelemetry-otlp-1.0.0.0
- completed:
hackage: hs-opentelemetry-sdk-1.0.0.0@sha256:461ed9f6e0c728e852162b08090ca251b6340fd87ec84994f596b32203dc9d83,6169
pantry-tree:
sha256: 3b9fff4f8cf0a090dd9bc06d5226cf388d0f90d4a2b85c251beab304a22ff739
size: 4446
original:
hackage: hs-opentelemetry-sdk-1.0.0.0
- completed:
hackage: hs-opentelemetry-exporter-in-memory-1.0.0.0@sha256:8f75b4e8484ba5d39f8a191ffe79ca7933305c9f7100ef91ac7fe091e2c252f7,1846
pantry-tree:
sha256: 7e78c2062a1ae8787b3d66b40bc87fc4a2c527a43a3e3db71d0611cf2962dfad
size: 759
original:
hackage: hs-opentelemetry-exporter-in-memory-1.0.0.0
- completed:
hackage: hs-opentelemetry-exporter-handle-1.0.0.0@sha256:93f36c289d7aaa60795a32b30661da7daf257155922d811e9f1f77218dce5b26,1762
pantry-tree:
sha256: 7d0448429033d3532877f9cfe5de3e90b7b1ccae32597851f8b53ddeb67feed7
size: 658
original:
hackage: hs-opentelemetry-exporter-handle-1.0.0.0
- completed:
hackage: hs-opentelemetry-exporter-otlp-1.0.0.0@sha256:5dad7c5bce3d83fcd560fdb2749aebcfab6b535bbee7f54f82ccdc390da3268b,2456
pantry-tree:
sha256: 4cb316109d353da40140781e9fdc3e1f3cea8f00d79fb1dd7e0b320801c66966
size: 825
original:
hackage: hs-opentelemetry-exporter-otlp-1.0.0.0
- completed:
hackage: hs-opentelemetry-propagator-b3-1.0.0.0@sha256:9bd5d015f1e07472cf01efb1f130eb1805e75828f9f72b5ed730dde9fd1f3ca4,1697
pantry-tree:
sha256: 5d5b13dc09de91f447c73e64e1c6ed9d446cb09b0b6cbb155c93ae10134436f4
size: 486
original:
hackage: hs-opentelemetry-propagator-b3-1.0.0.0
- completed:
hackage: hs-opentelemetry-propagator-datadog-1.0.0.0@sha256:93c92b64a11cea551bf9fdf899cf30cbb4f3bb712e3dc0409517c2380dc2be65,3171
pantry-tree:
sha256: 346587da340150b7d4504463eb8258459d57f45980c56d8f620a8d210a455167
size: 783
original:
hackage: hs-opentelemetry-propagator-datadog-1.0.0.0
- completed:
hackage: hs-opentelemetry-propagator-jaeger-1.0.0.0@sha256:c3036258df0a56445e914f1f491daaea64ad3797a3879260058c5bbcdca78109,2241
pantry-tree:
sha256: c15500c07c755d42634bcc3ba489ccb632d4a03dbb84f6b19ec93a88d8e1d4be
size: 535
original:
hackage: hs-opentelemetry-propagator-jaeger-1.0.0.0
- completed:
hackage: hs-opentelemetry-propagator-w3c-1.0.0.0@sha256:666cd59079141ea6d43fd7329f364ae6b5c38897487551c91d4d98891e79cccf,1988
pantry-tree:
sha256: 12e0b78e9d6ed726bf6ea4d51957bae299bca806f02d5b61649eeafc160f2b44
size: 865
original:
hackage: hs-opentelemetry-propagator-w3c-1.0.0.0
- completed:
hackage: hs-opentelemetry-propagator-xray-1.0.0.0@sha256:70c9fcbe6255f22da749b0b70c69f186a0eab596f47e499c33a386ac5a82aac2,2286
pantry-tree:
sha256: 777283c45c69b786c4f97a913845e2ac50b9164f5422d6a9d3daa131a5eb80f6
size: 479
original:
hackage: hs-opentelemetry-propagator-xray-1.0.0.0
- completed:
hackage: thread-utils-context-0.4.1.1@sha256:171dd454081641b594042d412874f3ebcd6d0345447a7a6581924aeafaf8c2fb,2274
pantry-tree:
sha256: ae00c514eead68cd1ae6b8ee9866700669e9a31057fb31fc325e5255612ec6e1
size: 632
original:
hackage: thread-utils-context-0.4.1.1
snapshots:
- completed:
sha256: 0f728e30e843d7f00460ad56858b995a3b227fca683659c7df9f2fc3988a3ce1
Expand Down
Loading