packages feed

hydra-build-0.17.5: src/main/haskell/Hydra/Build/Benchresult.hs

-- Note: this is an automatically generated file. Do not edit.

-- | Type-level model for benchmark result JSON: a typed result model whose generated codec replaces the hand-rolled JSON assembly in the bench drivers. See https://github.com/CategoricalData/hydra/issues/416

module Hydra.Build.Benchresult where

import qualified Hydra.Core as Core
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
import qualified Data.Scientific as Sci
import qualified Data.Map as M

-- | Per-run metadata: timestamp and git context of a benchmark run
data BenchMetadata =
  BenchMetadata {
    -- | ISO-8601 UTC timestamp of the run
    benchMetadataTimestamp :: String,
    -- | The host language the benchmark ran on
    benchMetadataLanguage :: String,
    -- | The git branch
    benchMetadataBranch :: String,
    -- | The short git commit hash
    benchMetadataCommit :: String,
    -- | The commit subject line
    benchMetadataCommitMessage :: String}
  deriving (Eq, Ord, Read, Show)

_BenchMetadata = Core.Name "hydra.build.benchresult.BenchMetadata"

_BenchMetadata_timestamp = Core.Name "timestamp"

_BenchMetadata_language = Core.Name "language"

_BenchMetadata_branch = Core.Name "branch"

_BenchMetadata_commit = Core.Name "commit"

_BenchMetadata_commitMessage = Core.Name "commitMessage"

-- | A generator-benchmark result: target, run count, and per-host results
data GenBenchResult =
  GenBenchResult {
    -- | The target language being generated
    genBenchResultTarget :: String,
    -- | The number of timed runs per (host, package)
    genBenchResultRuns :: Int,
    -- | Per-host results, keyed by host language name
    genBenchResultHosts :: (M.Map String HostResult),
    -- | Optional run metadata
    genBenchResultMetadata :: (Maybe BenchMetadata)}
  deriving (Eq, Ord, Read, Show)

_GenBenchResult = Core.Name "hydra.build.benchresult.GenBenchResult"

_GenBenchResult_target = Core.Name "target"

_GenBenchResult_runs = Core.Name "runs"

_GenBenchResult_hosts = Core.Name "hosts"

_GenBenchResult_metadata = Core.Name "metadata"

-- | One host's generator-benchmark result: setup time and per-package timings
data HostResult =
  HostResult {
    -- | Host setup/build time in milliseconds
    hostResultSetupMs :: Int,
    -- | Per-package run statistics, keyed by package name
    hostResultPackages :: (M.Map String RunStats)}
  deriving (Eq, Ord, Read, Show)

_HostResult = Core.Name "hydra.build.benchresult.HostResult"

_HostResult_setupMs = Core.Name "setupMs"

_HostResult_packages = Core.Name "packages"

-- | Timing statistics for one (host, package): per-run elapsed times and the median
data RunStats =
  RunStats {
    -- | Each run's elapsed time in milliseconds
    runStatsRunsMs :: [Int],
    -- | The median elapsed time in milliseconds
    runStatsMedianMs :: Int}
  deriving (Eq, Ord, Read, Show)

_RunStats = Core.Name "hydra.build.benchresult.RunStats"

_RunStats_runsMs = Core.Name "runsMs"

_RunStats_medianMs = Core.Name "medianMs"