{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
module TestPropagation where
import qualified Data.ByteString.Char8 as BS
import Data.Word
import OpenTelemetry.Propagation
import OpenTelemetry.SpanContext
import Test.Tasty.HUnit
import Text.Printf
prop_render_parse_roundtrip_w3c :: Word64 -> Word64 -> Bool
prop_render_parse_roundtrip_w3c sid tid =
let c = SpanContext (SId sid) (TId tid)
in Just c == propagateFromHeaders w3cTraceContext @String (propagateToHeaders w3cTraceContext c)
prop_render_parse_roundtrip_b3 :: Word64 -> Word64 -> Bool
prop_render_parse_roundtrip_b3 sid tid =
let c = SpanContext (SId sid) (TId tid)
in Just c == propagateFromHeaders b3 @String (propagateToHeaders b3 c)
unit_render_smoke :: Assertion
unit_render_smoke =
propagateToHeaders w3cTraceContext (SpanContext (SId 1) (TId 2)) @?= [("traceparent", "00-2-1-00")]
unit_parse_smoke :: Assertion
unit_parse_smoke =
propagateFromHeaders w3cTraceContext @String [("traceparent", "00-2-1-00")] @?= Just (SpanContext (SId 1) (TId 2))
prop_fromHex :: Word64 -> Bool
prop_fromHex x =
Just x == fromHex (BS.pack $ printf "%x" x)
unit_fromHex_smoke :: Assertion
unit_fromHex_smoke =
Just 1 @?= fromHex "1"