packages feed

instana-haskell-trace-sdk-0.1.0.0: test/integration/Instana/SDK/IntegrationTest/TestSuites.hs

module Instana.SDK.IntegrationTest.TestSuites (allSuites) where


import qualified Instana.SDK.IntegrationTest.BracketApi  as BracketApi
import qualified Instana.SDK.IntegrationTest.Connection  as Connection
import qualified Instana.SDK.IntegrationTest.HttpTracing as HttpTracing
import qualified Instana.SDK.IntegrationTest.LowLevelApi as LowLevelApi
import qualified Instana.SDK.IntegrationTest.Metrics     as Metrics
import           Instana.SDK.IntegrationTest.Suite       (ConditionalSuite (..),
                                                          Suite (..))
import qualified Instana.SDK.IntegrationTest.Suite       as Suite


allSuites :: [ConditionalSuite]
allSuites =
  [ testBracketApi
  , testLowLevelApi
  , testConnectionEstablishment
  , testConnectionLoss
  , testAgentRestart
  , testPidTranslation
  , testCustomAgentName
  , testHttpTracing
  , testMetrics
  ]


testBracketApi :: ConditionalSuite
testBracketApi =
  Run $
    Suite
      { Suite.label = "Bracket API"
      , Suite.tests = (\pid ->
         [ BracketApi.shouldRecordSpans pid
         , BracketApi.shouldRecordNonRootEntry pid
         , BracketApi.shouldMergeData pid
         ])
      , Suite.options = Suite.defaultOptions
      }


testLowLevelApi :: ConditionalSuite
testLowLevelApi =
  Run $
    Suite
      { Suite.label = "Low Level API"
      , Suite.tests = (\pid ->
         [ LowLevelApi.shouldRecordSpans pid
         , LowLevelApi.shouldRecordNonRootEntry pid
         , LowLevelApi.shouldMergeData pid
         ])
      , Suite.options = Suite.defaultOptions
      }


testConnectionEstablishment :: ConditionalSuite
testConnectionEstablishment =
  Run $
    Suite
      { Suite.label = "Initial Connection Establishment"
      , Suite.tests = (\pid -> [
          Connection.shouldRetryInitialConnectionEstablishment pid
        ])
      , Suite.options = Suite.withStartupDelay
      }


testConnectionLoss :: ConditionalSuite
testConnectionLoss =
  Run $
    Suite
      { Suite.label = "Connection Loss"
      , Suite.tests = (\pid -> [
          Connection.shouldReestablishLostConnection pid
        ])
      , Suite.options = Suite.withConnectionLoss
      }


testAgentRestart :: ConditionalSuite
testAgentRestart =
  Run $
    Suite
      { Suite.label = "Agent Restart"
      , Suite.tests = (\pid -> [
          Connection.shouldReconnectAfterAgentRestart pid
        ])
      , Suite.options = Suite.defaultOptions
      }


testPidTranslation :: ConditionalSuite
testPidTranslation =
  Run $
    Suite
      { Suite.label =  "PID translation"
      , Suite.tests = (\pid -> [
          Connection.shouldUseTranslatedPid pid
        ])
      , Suite.options = Suite.withPidTranslation
      }


testCustomAgentName :: ConditionalSuite
testCustomAgentName =
  Run $
    Suite
      { Suite.label = "Custom Agent Name"
      , Suite.tests = (\pid -> [
          Connection.shouldUseCustomAgentName pid
        ])
      , Suite.options = Suite.withCustomAgentName "Devil in Disguise"
      }


testHttpTracing :: ConditionalSuite
testHttpTracing =
  Run $
    Suite
      { Suite.label = "HTTP Tracing"
      , Suite.tests = (\pid -> [
          HttpTracing.shouldCreateRootEntryWithBracketApi pid
        , HttpTracing.shouldCreateNonRootEntryWithBracketApi pid
        , HttpTracing.shouldSuppressWithBracketApi
        , HttpTracing.shouldCreateRootEntryWithLowLevelApi pid
        , HttpTracing.shouldCreateNonRootEntryWithLowLevelApi pid
        , HttpTracing.shouldSuppressWithLowLevelApi
        ])
      , Suite.options = Suite.defaultOptions
      }


testMetrics :: ConditionalSuite
testMetrics =
  Run $
    Suite
      { Suite.label =  "Metrics"
      , Suite.tests = (\pid -> [
          Metrics.shouldReportMetrics pid
        ])
      , Suite.options = Suite.withPidTranslation
      }