packages feed

amazonka-cloudfront-2.0: gen/Amazonka/CloudFront/Types/TestResult.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.CloudFront.Types.TestResult
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.CloudFront.Types.TestResult where

import Amazonka.CloudFront.Types.FunctionSummary
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | Contains the result of testing a CloudFront function with
-- @TestFunction@.
--
-- /See:/ 'newTestResult' smart constructor.
data TestResult = TestResult'
  { -- | The amount of time that the function took to run as a percentage of the
    -- maximum allowed time. For example, a compute utilization of 35 means
    -- that the function completed in 35% of the maximum allowed time.
    computeUtilization :: Prelude.Maybe Prelude.Text,
    -- | If the result of testing the function was an error, this field contains
    -- the error message.
    functionErrorMessage :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | Contains the log lines that the function wrote (if any) when running the
    -- test.
    functionExecutionLogs :: Prelude.Maybe (Data.Sensitive [Prelude.Text]),
    -- | The event object returned by the function. For more information about
    -- the structure of the event object, see
    -- <https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/functions-event-structure.html Event object structure>
    -- in the /Amazon CloudFront Developer Guide/.
    functionOutput :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | Contains configuration information and metadata about the CloudFront
    -- function that was tested.
    functionSummary :: Prelude.Maybe FunctionSummary
  }
  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'TestResult' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'computeUtilization', 'testResult_computeUtilization' - The amount of time that the function took to run as a percentage of the
-- maximum allowed time. For example, a compute utilization of 35 means
-- that the function completed in 35% of the maximum allowed time.
--
-- 'functionErrorMessage', 'testResult_functionErrorMessage' - If the result of testing the function was an error, this field contains
-- the error message.
--
-- 'functionExecutionLogs', 'testResult_functionExecutionLogs' - Contains the log lines that the function wrote (if any) when running the
-- test.
--
-- 'functionOutput', 'testResult_functionOutput' - The event object returned by the function. For more information about
-- the structure of the event object, see
-- <https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/functions-event-structure.html Event object structure>
-- in the /Amazon CloudFront Developer Guide/.
--
-- 'functionSummary', 'testResult_functionSummary' - Contains configuration information and metadata about the CloudFront
-- function that was tested.
newTestResult ::
  TestResult
newTestResult =
  TestResult'
    { computeUtilization = Prelude.Nothing,
      functionErrorMessage = Prelude.Nothing,
      functionExecutionLogs = Prelude.Nothing,
      functionOutput = Prelude.Nothing,
      functionSummary = Prelude.Nothing
    }

-- | The amount of time that the function took to run as a percentage of the
-- maximum allowed time. For example, a compute utilization of 35 means
-- that the function completed in 35% of the maximum allowed time.
testResult_computeUtilization :: Lens.Lens' TestResult (Prelude.Maybe Prelude.Text)
testResult_computeUtilization = Lens.lens (\TestResult' {computeUtilization} -> computeUtilization) (\s@TestResult' {} a -> s {computeUtilization = a} :: TestResult)

-- | If the result of testing the function was an error, this field contains
-- the error message.
testResult_functionErrorMessage :: Lens.Lens' TestResult (Prelude.Maybe Prelude.Text)
testResult_functionErrorMessage = Lens.lens (\TestResult' {functionErrorMessage} -> functionErrorMessage) (\s@TestResult' {} a -> s {functionErrorMessage = a} :: TestResult) Prelude.. Lens.mapping Data._Sensitive

-- | Contains the log lines that the function wrote (if any) when running the
-- test.
testResult_functionExecutionLogs :: Lens.Lens' TestResult (Prelude.Maybe [Prelude.Text])
testResult_functionExecutionLogs = Lens.lens (\TestResult' {functionExecutionLogs} -> functionExecutionLogs) (\s@TestResult' {} a -> s {functionExecutionLogs = a} :: TestResult) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)

-- | The event object returned by the function. For more information about
-- the structure of the event object, see
-- <https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/functions-event-structure.html Event object structure>
-- in the /Amazon CloudFront Developer Guide/.
testResult_functionOutput :: Lens.Lens' TestResult (Prelude.Maybe Prelude.Text)
testResult_functionOutput = Lens.lens (\TestResult' {functionOutput} -> functionOutput) (\s@TestResult' {} a -> s {functionOutput = a} :: TestResult) Prelude.. Lens.mapping Data._Sensitive

-- | Contains configuration information and metadata about the CloudFront
-- function that was tested.
testResult_functionSummary :: Lens.Lens' TestResult (Prelude.Maybe FunctionSummary)
testResult_functionSummary = Lens.lens (\TestResult' {functionSummary} -> functionSummary) (\s@TestResult' {} a -> s {functionSummary = a} :: TestResult)

instance Data.FromXML TestResult where
  parseXML x =
    TestResult'
      Prelude.<$> (x Data..@? "ComputeUtilization")
      Prelude.<*> (x Data..@? "FunctionErrorMessage")
      Prelude.<*> ( x
                      Data..@? "FunctionExecutionLogs"
                      Core..!@ Prelude.mempty
                      Prelude.>>= Core.may
                        ( Prelude.fmap
                            (Prelude.fmap Data.Sensitive)
                            (Data.parseXMLList "member")
                        )
                  )
      Prelude.<*> (x Data..@? "FunctionOutput")
      Prelude.<*> (x Data..@? "FunctionSummary")

instance Prelude.Hashable TestResult where
  hashWithSalt _salt TestResult' {..} =
    _salt
      `Prelude.hashWithSalt` computeUtilization
      `Prelude.hashWithSalt` functionErrorMessage
      `Prelude.hashWithSalt` functionExecutionLogs
      `Prelude.hashWithSalt` functionOutput
      `Prelude.hashWithSalt` functionSummary

instance Prelude.NFData TestResult where
  rnf TestResult' {..} =
    Prelude.rnf computeUtilization
      `Prelude.seq` Prelude.rnf functionErrorMessage
      `Prelude.seq` Prelude.rnf functionExecutionLogs
      `Prelude.seq` Prelude.rnf functionOutput
      `Prelude.seq` Prelude.rnf functionSummary