instana-haskell-trace-sdk-0.4.0.0: test/unit/Instana/SDK/Internal/ConfigTest.hs
module Instana.SDK.Internal.ConfigTest (allTests) where
import Data.Maybe (isNothing)
import System.Environment (setEnv, unsetEnv)
import Test.HUnit
import Instana.SDK.Config (Config)
import qualified Instana.SDK.Config as Config
import qualified Instana.SDK.Internal.Config as InternalConfig
allTests :: Test
allTests =
TestList
[ TestLabel "mergeShouldApplyDefaults" mergeShouldApplyDefaults
, TestLabel "mergeShouldPreferFirstArg" mergeShouldPreferFirstArg
, TestLabel
"shouldReadNonExistingEnvironmentVariablesAsNothing"
shouldReadNonExistingEnvironmentVariablesAsNothing
, TestLabel
"shouldReadExistingEnvironmentVariables"
shouldReadExistingEnvironmentVariables
, TestLabel
"shouldReadNonNumericPortAsNothing"
shouldReadNonNumericPortAsNothing
, TestLabel
"shouldReadNonExistingEnvVarsAndApplyDefaults"
shouldReadNonExistingEnvVarsAndApplyDefaults
]
mergeShouldApplyDefaults :: Test
mergeShouldApplyDefaults =
let
merged = InternalConfig.mergeConfigs emptyConfig emptyConfig
in
TestList $
[ TestCase $
assertEqual
"agent host" "127.0.0.1" (InternalConfig.agentHost merged)
, TestCase $
assertEqual "agent port" 42699 (InternalConfig.agentPort merged)
]
mergeShouldPreferFirstArg :: Test
mergeShouldPreferFirstArg =
let
first =
Config.defaultConfig
{ Config.agentHost = Just "horst"
, Config.agentPort = Just 12345
}
second =
Config.defaultConfig
{ Config.agentHost = Just "wurst"
, Config.agentPort = Just 98765
}
merged = InternalConfig.mergeConfigs first second
in
TestList $
[ TestCase $
assertEqual
"agent host" "horst" (InternalConfig.agentHost merged)
, TestCase $
assertEqual "agent port" 12345 (InternalConfig.agentPort merged)
]
shouldReadNonExistingEnvironmentVariablesAsNothing :: Test
shouldReadNonExistingEnvironmentVariablesAsNothing =
TestCase $
do
conf <- InternalConfig.readConfigFromEnvironment
assertBool "agent host" (isNothing $ Config.agentHost conf)
assertBool "agent port" (isNothing $ Config.agentPort conf)
shouldReadExistingEnvironmentVariables :: Test
shouldReadExistingEnvironmentVariables =
TestCase $
do
setEnv "INSTANA_AGENT_HOST" "agenthost.com"
setEnv "INSTANA_AGENT_PORT" "12345"
conf <- InternalConfig.readConfigFromEnvironment
assertEqual "agent host" (Just "agenthost.com") (Config.agentHost conf)
assertEqual "agent port" (Just 12345) (Config.agentPort conf)
unsetEnv "INSTANA_AGENT_HOST"
unsetEnv "INSTANA_AGENT_PORT"
shouldReadNonNumericPortAsNothing :: Test
shouldReadNonNumericPortAsNothing =
TestCase $
do
setEnv "INSTANA_AGENT_PORT" "12x45"
conf <- InternalConfig.readConfigFromEnvironment
assertBool "agent port" $ isNothing $ Config.agentPort conf
unsetEnv "INSTANA_AGENT_PORT"
shouldReadNonExistingEnvVarsAndApplyDefaults :: Test
shouldReadNonExistingEnvVarsAndApplyDefaults =
TestCase $
do
conf <- InternalConfig.readConfigFromEnvironmentAndApplyDefaults
assertEqual "agent host" "127.0.0.1" (InternalConfig.agentHost conf)
assertEqual "agent port" 42699 (InternalConfig.agentPort conf)
emptyConfig :: Config
emptyConfig =
Config.defaultConfig