{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingVia #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE StandaloneDeriving #-} {-# OPTIONS_GHC -Wno-orphans #-} module Arbitrary where import Data.Function import qualified Data.Text as T import OpenTelemetry.Common import OpenTelemetry.Eventlog import OpenTelemetry.EventlogStreaming_Internal import OpenTelemetry.Metrics_Internal import OpenTelemetry.SpanContext import Test.QuickCheck import Test.QuickCheck.Arbitrary.Generic import Test.QuickCheck.Instances.ByteString () import TextShow newtype TextWithout0 = TextWithout0 T.Text instance Arbitrary TextWithout0 where arbitrary = arbitrary >>= \s -> s & map (\c -> if c == '\0' then ' ' else c) & (<> "_") & T.pack & TextWithout0 & pure deriving via TextWithout0 instance Arbitrary SpanName deriving via TextWithout0 instance Arbitrary TagName deriving via TextWithout0 instance Arbitrary TagVal deriving via TextWithout0 instance Arbitrary EventName deriving via TextWithout0 instance Arbitrary EventVal deriving instance Arbitrary SpanInFlight deriving instance Arbitrary SpanId deriving instance Arbitrary TraceId instance Arbitrary SomeInstrument where arbitrary = oneof [ SomeInstrument <$> (Counter <$> arbitrary <*> arbitrary), SomeInstrument <$> (UpDownCounter <$> arbitrary <*> arbitrary), SomeInstrument <$> (ValueRecorder <$> arbitrary <*> arbitrary), SomeInstrument <$> (SumObserver <$> arbitrary <*> arbitrary), SomeInstrument <$> (UpDownSumObserver <$> arbitrary <*> arbitrary), SomeInstrument <$> (ValueObserver <$> arbitrary <*> arbitrary) ] instance Arbitrary SpanContext where arbitrary = genericArbitrary shrink = genericShrink instance Arbitrary InstrumentType where arbitrary = genericArbitrary shrink = genericShrink instance Arbitrary OpenTelemetryEventlogEvent where arbitrary = genericArbitrary shrink = genericShrink deriving instance TextShow SpanInFlight