instana-haskell-trace-sdk-0.1.0.0: test/unit/Instana/SDK/Internal/Metrics/CompressionTest.hs
{-# LANGUAGE OverloadedStrings #-}
module Instana.SDK.Internal.Metrics.CompressionTest (allTests) where
import qualified Data.HashMap.Strict as HashMap
import Test.HUnit
import qualified Instana.SDK.Internal.Metrics.Compression as MetricsCompression
import Instana.SDK.Internal.Metrics.Sample (InstanaMetricValue (..))
allTests :: Test
allTests =
TestList
[ TestLabel "shouldNotRemoveNewMetrics" shouldNotRemoveNewMetrics
, TestLabel "shouldNotRemoveChangedMetrics" shouldNotRemoveChangedMetrics
, TestLabel "shouldRemoveUnchangedMetrics" shouldRemoveUnchangedMetrics
, TestLabel "shouldLeaveChangedUntouched" shouldLeaveChangedUntouched
]
shouldNotRemoveNewMetrics :: Test
shouldNotRemoveNewMetrics =
let
previous =
HashMap.empty
next =
HashMap.singleton "key" (StringValue "value")
compressed =
MetricsCompression.compressSample previous next
in
TestCase $
assertEqual
"don't remove new"
(Just $ StringValue "value")
(HashMap.lookup "key" compressed)
shouldNotRemoveChangedMetrics :: Test
shouldNotRemoveChangedMetrics =
let
previous =
HashMap.singleton "key" (StringValue "value 1")
next =
HashMap.singleton "key" (StringValue "value 2")
compressed =
MetricsCompression.compressSample previous next
in
TestCase $
assertEqual
"don't remove changed"
(Just $ StringValue "value 2")
(HashMap.lookup "key" compressed)
shouldRemoveUnchangedMetrics :: Test
shouldRemoveUnchangedMetrics =
let
previous =
HashMap.insert "key 2" (StringValue "value 2") $
HashMap.singleton "key 1" (StringValue "value 1")
next =
HashMap.insert "key 2" (StringValue "value 2 changed") $
HashMap.singleton "key 1" (StringValue "value 1")
compressed =
MetricsCompression.compressSample previous next
in
TestCase $
assertEqual
"remove unchanged"
Nothing
(HashMap.lookup "key 1" compressed)
shouldLeaveChangedUntouched :: Test
shouldLeaveChangedUntouched =
let
previous =
HashMap.insert "key 2" (StringValue "value 2") $
HashMap.singleton "key 1" (StringValue "value 1")
next =
HashMap.insert "key 2" (StringValue "value 2 changed") $
HashMap.singleton "key 1" (StringValue "value 1")
compressed =
MetricsCompression.compressSample previous next
in
TestCase $
assertEqual
"leave changed"
(Just $ StringValue "value 2 changed")
(HashMap.lookup "key 2" compressed)