instana-haskell-trace-sdk-0.10.2.0: test/unit/Instana/SDK/Internal/AgentConnection/DefaultGatewayIpTest.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
module Instana.SDK.Internal.AgentConnection.DefaultGatewayIpTest (allTests) where
import Test.HUnit
import Instana.SDK.Internal.AgentConnection.DefaultGatewayIp (extractDefaultGatewayIp)
allTests :: Test
allTests =
TestList
[ TestLabel "shouldExtractDefaultGatewayIpFromFile" shouldExtractDefaultGatewayIpFromFile
, TestLabel "shouldNotExtractFromEmptyFile" shouldNotExtractFromEmptyFile
, TestLabel "shouldNotExtractFromLinesWithTooFewFields" shouldNotExtractFromLinesWithTooFewFields
, TestLabel "shouldNotExtractIfNoLineHas8Zeroes" shouldNotExtractIfNoLineHas8Zeroes
, TestLabel "shouldNotExtractIfThirdFieldHasWrongLength" shouldNotExtractIfThirdFieldHasWrongLength
, TestLabel "shouldCopeWithThirdFieldNotAHexString" shouldCopeWithThirdFieldNotAHexString
]
shouldExtractDefaultGatewayIpFromFile :: Test
shouldExtractDefaultGatewayIpFromFile =
let
defaultGatewayIp =
extractDefaultGatewayIp $
"Iface\tDestination\tGateway\tFlags\tRefCnt\tUse\tMetricMask\tMTU\tWindow\tIRTT\n" ++
"eth0\t0000F1AC\t00000000\t0001\t0\t0\t0\t0000FFFF0\t0\t0\n" ++
"eth0\t00000000\t010011AC\t0003\t0\t0\t0\t000000000\t0\t0\n" ++
"eth0\t000011AC\t00000000\t0001\t0\t0\t0\t0000FFFF0\t0\t0"
in
TestCase $
assertEqual "default gateway IP" (Just "172.17.0.1") defaultGatewayIp
shouldNotExtractFromEmptyFile :: Test
shouldNotExtractFromEmptyFile =
let
defaultGatewayIp = extractDefaultGatewayIp ""
in
TestCase $
assertEqual "default gateway IP" Nothing defaultGatewayIp
shouldNotExtractFromLinesWithTooFewFields :: Test
shouldNotExtractFromLinesWithTooFewFields =
let
defaultGatewayIp =
extractDefaultGatewayIp $
"Iface\tDestination\n" ++
"eth0\t00000000"
in
TestCase $
assertEqual "default gateway IP" Nothing defaultGatewayIp
shouldNotExtractIfNoLineHas8Zeroes :: Test
shouldNotExtractIfNoLineHas8Zeroes =
let
defaultGatewayIp =
extractDefaultGatewayIp $
"eth0\t00009000\t010011AC\t0003\t0\t0\t0\t000000000\t0\t0"
in
TestCase $
assertEqual "default gateway IP" Nothing defaultGatewayIp
shouldNotExtractIfThirdFieldHasWrongLength :: Test
shouldNotExtractIfThirdFieldHasWrongLength =
let
defaultGatewayIp =
extractDefaultGatewayIp $
"eth0\t00000000\t010011A\t0003\t0\t0\t0\t000000000\t0\t0"
in
TestCase $
assertEqual "default gateway IP" Nothing defaultGatewayIp
shouldCopeWithThirdFieldNotAHexString :: Test
shouldCopeWithThirdFieldNotAHexString =
let
defaultGatewayIp =
extractDefaultGatewayIp $
"eth0\t00000000\tghijklmn\t0003\t0\t0\t0\t000000000\t0\t0"
in
TestCase $
assertEqual "default gateway IP" (Just "0.0.0.0") defaultGatewayIp