{-# 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.DeviceFarm.Types.Run
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.DeviceFarm.Types.Run where

import qualified Amazonka.Core as Core
import Amazonka.DeviceFarm.Types.BillingMethod
import Amazonka.DeviceFarm.Types.Counters
import Amazonka.DeviceFarm.Types.CustomerArtifactPaths
import Amazonka.DeviceFarm.Types.DeviceMinutes
import Amazonka.DeviceFarm.Types.DevicePlatform
import Amazonka.DeviceFarm.Types.DeviceSelectionResult
import Amazonka.DeviceFarm.Types.ExecutionResult
import Amazonka.DeviceFarm.Types.ExecutionResultCode
import Amazonka.DeviceFarm.Types.ExecutionStatus
import Amazonka.DeviceFarm.Types.Location
import Amazonka.DeviceFarm.Types.NetworkProfile
import Amazonka.DeviceFarm.Types.Radios
import Amazonka.DeviceFarm.Types.TestType
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Represents a test run on a set of devices with a given app package, test
-- parameters, and so on.
--
-- /See:/ 'newRun' smart constructor.
data Run = Run'
  { -- | Specifies the billing method for a test run: @metered@ or @unmetered@.
    -- If the parameter is not specified, the default value is @metered@.
    --
    -- If you have unmetered device slots, you must set this to @unmetered@ to
    -- use them. Otherwise, the run is counted toward metered device minutes.
    Run -> Maybe BillingMethod
billingMethod :: Prelude.Maybe BillingMethod,
    -- | When set to @true@, for private devices, Device Farm does not sign your
    -- app again. For public devices, Device Farm always signs your apps again.
    --
    -- For more information about how Device Farm re-signs your apps, see
    -- <https://aws.amazon.com/device-farm/faq/ Do you modify my app?> in the
    -- /AWS Device Farm FAQs/.
    Run -> Maybe Bool
skipAppResign :: Prelude.Maybe Prelude.Bool,
    -- | The run\'s status.
    --
    -- Allowed values include:
    --
    -- -   PENDING
    --
    -- -   PENDING_CONCURRENCY
    --
    -- -   PENDING_DEVICE
    --
    -- -   PROCESSING
    --
    -- -   SCHEDULING
    --
    -- -   PREPARING
    --
    -- -   RUNNING
    --
    -- -   COMPLETED
    --
    -- -   STOPPING
    Run -> Maybe ExecutionStatus
status :: Prelude.Maybe ExecutionStatus,
    -- | Output @CustomerArtifactPaths@ object for the test run.
    Run -> Maybe CustomerArtifactPaths
customerArtifactPaths :: Prelude.Maybe CustomerArtifactPaths,
    -- | For fuzz tests, this is the number of events, between 1 and 10000, that
    -- the UI fuzz test should perform.
    Run -> Maybe Int
eventCount :: Prelude.Maybe Prelude.Int,
    -- | The run\'s result counters.
    Run -> Maybe Counters
counters :: Prelude.Maybe Counters,
    -- | The run\'s platform.
    --
    -- Allowed values include:
    --
    -- -   ANDROID
    --
    -- -   IOS
    Run -> Maybe DevicePlatform
platform :: Prelude.Maybe DevicePlatform,
    -- | For fuzz tests, this is a seed to use for randomizing the UI fuzz test.
    -- Using the same seed value between tests ensures identical event
    -- sequences.
    Run -> Maybe Int
seed :: Prelude.Maybe Prelude.Int,
    -- | Information about the radio states for the run.
    Run -> Maybe Radios
radios :: Prelude.Maybe Radios,
    -- | The run\'s ARN.
    Run -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | Information about the location that is used for the run.
    Run -> Maybe Location
location :: Prelude.Maybe Location,
    -- | When the run was created.
    Run -> Maybe POSIX
created :: Prelude.Maybe Core.POSIX,
    -- | Information about the locale that is used for the run.
    Run -> Maybe Text
locale :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the YAML-formatted test specification for the run.
    Run -> Maybe Text
testSpecArn :: Prelude.Maybe Prelude.Text,
    -- | The run\'s stop time.
    Run -> Maybe POSIX
stopped :: Prelude.Maybe Core.POSIX,
    -- | The run\'s result.
    --
    -- Allowed values include:
    --
    -- -   PENDING
    --
    -- -   PASSED
    --
    -- -   WARNED
    --
    -- -   FAILED
    --
    -- -   SKIPPED
    --
    -- -   ERRORED
    --
    -- -   STOPPED
    Run -> Maybe ExecutionResult
result :: Prelude.Maybe ExecutionResult,
    -- | The number of minutes the job executes before it times out.
    Run -> Maybe Int
jobTimeoutMinutes :: Prelude.Maybe Prelude.Int,
    -- | The total number of completed jobs.
    Run -> Maybe Int
completedJobs :: Prelude.Maybe Prelude.Int,
    -- | Supporting field for the result field. Set only if @result@ is
    -- @SKIPPED@. @PARSING_FAILED@ if the result is skipped because of test
    -- package parsing failure.
    Run -> Maybe ExecutionResultCode
resultCode :: Prelude.Maybe ExecutionResultCode,
    -- | The run\'s name.
    Run -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | An app to upload or that has been uploaded.
    Run -> Maybe Text
appUpload :: Prelude.Maybe Prelude.Text,
    -- | Read-only URL for an object in an S3 bucket where you can get the
    -- parsing results of the test package. If the test package doesn\'t parse,
    -- the reason why it doesn\'t parse appears in the file that this URL
    -- points to.
    Run -> Maybe Text
parsingResultUrl :: Prelude.Maybe Prelude.Text,
    -- | The network profile being used for a test run.
    Run -> Maybe NetworkProfile
networkProfile :: Prelude.Maybe NetworkProfile,
    -- | Represents the total (metered or unmetered) minutes used by the test
    -- run.
    Run -> Maybe DeviceMinutes
deviceMinutes :: Prelude.Maybe DeviceMinutes,
    -- | The run\'s type.
    --
    -- Must be one of the following values:
    --
    -- -   BUILTIN_FUZZ
    --
    -- -   BUILTIN_EXPLORER
    --
    --     For Android, an app explorer that traverses an Android app,
    --     interacting with it and capturing screenshots at the same time.
    --
    -- -   APPIUM_JAVA_JUNIT
    --
    -- -   APPIUM_JAVA_TESTNG
    --
    -- -   APPIUM_PYTHON
    --
    -- -   APPIUM_NODE
    --
    -- -   APPIUM_RUBY
    --
    -- -   APPIUM_WEB_JAVA_JUNIT
    --
    -- -   APPIUM_WEB_JAVA_TESTNG
    --
    -- -   APPIUM_WEB_PYTHON
    --
    -- -   APPIUM_WEB_NODE
    --
    -- -   APPIUM_WEB_RUBY
    --
    -- -   CALABASH
    --
    -- -   INSTRUMENTATION
    --
    -- -   UIAUTOMATION
    --
    -- -   UIAUTOMATOR
    --
    -- -   XCTEST
    --
    -- -   XCTEST_UI
    Run -> Maybe TestType
type' :: Prelude.Maybe TestType,
    -- | A message about the run\'s result.
    Run -> Maybe Text
message :: Prelude.Maybe Prelude.Text,
    -- | The Device Farm console URL for the recording of the run.
    Run -> Maybe Text
webUrl :: Prelude.Maybe Prelude.Text,
    -- | The total number of jobs for the run.
    Run -> Maybe Int
totalJobs :: Prelude.Maybe Prelude.Int,
    -- | The ARN of the device pool for the run.
    Run -> Maybe Text
devicePoolArn :: Prelude.Maybe Prelude.Text,
    -- | The run\'s start time.
    Run -> Maybe POSIX
started :: Prelude.Maybe Core.POSIX,
    -- | The results of a device filter used to select the devices for a test
    -- run.
    Run -> Maybe DeviceSelectionResult
deviceSelectionResult :: Prelude.Maybe DeviceSelectionResult
  }
  deriving (Run -> Run -> Bool
(Run -> Run -> Bool) -> (Run -> Run -> Bool) -> Eq Run
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Run -> Run -> Bool
$c/= :: Run -> Run -> Bool
== :: Run -> Run -> Bool
$c== :: Run -> Run -> Bool
Prelude.Eq, ReadPrec [Run]
ReadPrec Run
Int -> ReadS Run
ReadS [Run]
(Int -> ReadS Run)
-> ReadS [Run] -> ReadPrec Run -> ReadPrec [Run] -> Read Run
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Run]
$creadListPrec :: ReadPrec [Run]
readPrec :: ReadPrec Run
$creadPrec :: ReadPrec Run
readList :: ReadS [Run]
$creadList :: ReadS [Run]
readsPrec :: Int -> ReadS Run
$creadsPrec :: Int -> ReadS Run
Prelude.Read, Int -> Run -> ShowS
[Run] -> ShowS
Run -> String
(Int -> Run -> ShowS)
-> (Run -> String) -> ([Run] -> ShowS) -> Show Run
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Run] -> ShowS
$cshowList :: [Run] -> ShowS
show :: Run -> String
$cshow :: Run -> String
showsPrec :: Int -> Run -> ShowS
$cshowsPrec :: Int -> Run -> ShowS
Prelude.Show, (forall x. Run -> Rep Run x)
-> (forall x. Rep Run x -> Run) -> Generic Run
forall x. Rep Run x -> Run
forall x. Run -> Rep Run x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Run x -> Run
$cfrom :: forall x. Run -> Rep Run x
Prelude.Generic)

-- |
-- Create a value of 'Run' 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:
--
-- 'billingMethod', 'run_billingMethod' - Specifies the billing method for a test run: @metered@ or @unmetered@.
-- If the parameter is not specified, the default value is @metered@.
--
-- If you have unmetered device slots, you must set this to @unmetered@ to
-- use them. Otherwise, the run is counted toward metered device minutes.
--
-- 'skipAppResign', 'run_skipAppResign' - When set to @true@, for private devices, Device Farm does not sign your
-- app again. For public devices, Device Farm always signs your apps again.
--
-- For more information about how Device Farm re-signs your apps, see
-- <https://aws.amazon.com/device-farm/faq/ Do you modify my app?> in the
-- /AWS Device Farm FAQs/.
--
-- 'status', 'run_status' - The run\'s status.
--
-- Allowed values include:
--
-- -   PENDING
--
-- -   PENDING_CONCURRENCY
--
-- -   PENDING_DEVICE
--
-- -   PROCESSING
--
-- -   SCHEDULING
--
-- -   PREPARING
--
-- -   RUNNING
--
-- -   COMPLETED
--
-- -   STOPPING
--
-- 'customerArtifactPaths', 'run_customerArtifactPaths' - Output @CustomerArtifactPaths@ object for the test run.
--
-- 'eventCount', 'run_eventCount' - For fuzz tests, this is the number of events, between 1 and 10000, that
-- the UI fuzz test should perform.
--
-- 'counters', 'run_counters' - The run\'s result counters.
--
-- 'platform', 'run_platform' - The run\'s platform.
--
-- Allowed values include:
--
-- -   ANDROID
--
-- -   IOS
--
-- 'seed', 'run_seed' - For fuzz tests, this is a seed to use for randomizing the UI fuzz test.
-- Using the same seed value between tests ensures identical event
-- sequences.
--
-- 'radios', 'run_radios' - Information about the radio states for the run.
--
-- 'arn', 'run_arn' - The run\'s ARN.
--
-- 'location', 'run_location' - Information about the location that is used for the run.
--
-- 'created', 'run_created' - When the run was created.
--
-- 'locale', 'run_locale' - Information about the locale that is used for the run.
--
-- 'testSpecArn', 'run_testSpecArn' - The ARN of the YAML-formatted test specification for the run.
--
-- 'stopped', 'run_stopped' - The run\'s stop time.
--
-- 'result', 'run_result' - The run\'s result.
--
-- Allowed values include:
--
-- -   PENDING
--
-- -   PASSED
--
-- -   WARNED
--
-- -   FAILED
--
-- -   SKIPPED
--
-- -   ERRORED
--
-- -   STOPPED
--
-- 'jobTimeoutMinutes', 'run_jobTimeoutMinutes' - The number of minutes the job executes before it times out.
--
-- 'completedJobs', 'run_completedJobs' - The total number of completed jobs.
--
-- 'resultCode', 'run_resultCode' - Supporting field for the result field. Set only if @result@ is
-- @SKIPPED@. @PARSING_FAILED@ if the result is skipped because of test
-- package parsing failure.
--
-- 'name', 'run_name' - The run\'s name.
--
-- 'appUpload', 'run_appUpload' - An app to upload or that has been uploaded.
--
-- 'parsingResultUrl', 'run_parsingResultUrl' - Read-only URL for an object in an S3 bucket where you can get the
-- parsing results of the test package. If the test package doesn\'t parse,
-- the reason why it doesn\'t parse appears in the file that this URL
-- points to.
--
-- 'networkProfile', 'run_networkProfile' - The network profile being used for a test run.
--
-- 'deviceMinutes', 'run_deviceMinutes' - Represents the total (metered or unmetered) minutes used by the test
-- run.
--
-- 'type'', 'run_type' - The run\'s type.
--
-- Must be one of the following values:
--
-- -   BUILTIN_FUZZ
--
-- -   BUILTIN_EXPLORER
--
--     For Android, an app explorer that traverses an Android app,
--     interacting with it and capturing screenshots at the same time.
--
-- -   APPIUM_JAVA_JUNIT
--
-- -   APPIUM_JAVA_TESTNG
--
-- -   APPIUM_PYTHON
--
-- -   APPIUM_NODE
--
-- -   APPIUM_RUBY
--
-- -   APPIUM_WEB_JAVA_JUNIT
--
-- -   APPIUM_WEB_JAVA_TESTNG
--
-- -   APPIUM_WEB_PYTHON
--
-- -   APPIUM_WEB_NODE
--
-- -   APPIUM_WEB_RUBY
--
-- -   CALABASH
--
-- -   INSTRUMENTATION
--
-- -   UIAUTOMATION
--
-- -   UIAUTOMATOR
--
-- -   XCTEST
--
-- -   XCTEST_UI
--
-- 'message', 'run_message' - A message about the run\'s result.
--
-- 'webUrl', 'run_webUrl' - The Device Farm console URL for the recording of the run.
--
-- 'totalJobs', 'run_totalJobs' - The total number of jobs for the run.
--
-- 'devicePoolArn', 'run_devicePoolArn' - The ARN of the device pool for the run.
--
-- 'started', 'run_started' - The run\'s start time.
--
-- 'deviceSelectionResult', 'run_deviceSelectionResult' - The results of a device filter used to select the devices for a test
-- run.
newRun ::
  Run
newRun :: Run
newRun =
  Run' :: Maybe BillingMethod
-> Maybe Bool
-> Maybe ExecutionStatus
-> Maybe CustomerArtifactPaths
-> Maybe Int
-> Maybe Counters
-> Maybe DevicePlatform
-> Maybe Int
-> Maybe Radios
-> Maybe Text
-> Maybe Location
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe ExecutionResult
-> Maybe Int
-> Maybe Int
-> Maybe ExecutionResultCode
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe NetworkProfile
-> Maybe DeviceMinutes
-> Maybe TestType
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe POSIX
-> Maybe DeviceSelectionResult
-> Run
Run'
    { $sel:billingMethod:Run' :: Maybe BillingMethod
billingMethod = Maybe BillingMethod
forall a. Maybe a
Prelude.Nothing,
      $sel:skipAppResign:Run' :: Maybe Bool
skipAppResign = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:status:Run' :: Maybe ExecutionStatus
status = Maybe ExecutionStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:customerArtifactPaths:Run' :: Maybe CustomerArtifactPaths
customerArtifactPaths = Maybe CustomerArtifactPaths
forall a. Maybe a
Prelude.Nothing,
      $sel:eventCount:Run' :: Maybe Int
eventCount = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:counters:Run' :: Maybe Counters
counters = Maybe Counters
forall a. Maybe a
Prelude.Nothing,
      $sel:platform:Run' :: Maybe DevicePlatform
platform = Maybe DevicePlatform
forall a. Maybe a
Prelude.Nothing,
      $sel:seed:Run' :: Maybe Int
seed = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:radios:Run' :: Maybe Radios
radios = Maybe Radios
forall a. Maybe a
Prelude.Nothing,
      $sel:arn:Run' :: Maybe Text
arn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:location:Run' :: Maybe Location
location = Maybe Location
forall a. Maybe a
Prelude.Nothing,
      $sel:created:Run' :: Maybe POSIX
created = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:locale:Run' :: Maybe Text
locale = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:testSpecArn:Run' :: Maybe Text
testSpecArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:stopped:Run' :: Maybe POSIX
stopped = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:result:Run' :: Maybe ExecutionResult
result = Maybe ExecutionResult
forall a. Maybe a
Prelude.Nothing,
      $sel:jobTimeoutMinutes:Run' :: Maybe Int
jobTimeoutMinutes = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:completedJobs:Run' :: Maybe Int
completedJobs = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:resultCode:Run' :: Maybe ExecutionResultCode
resultCode = Maybe ExecutionResultCode
forall a. Maybe a
Prelude.Nothing,
      $sel:name:Run' :: Maybe Text
name = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:appUpload:Run' :: Maybe Text
appUpload = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:parsingResultUrl:Run' :: Maybe Text
parsingResultUrl = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:networkProfile:Run' :: Maybe NetworkProfile
networkProfile = Maybe NetworkProfile
forall a. Maybe a
Prelude.Nothing,
      $sel:deviceMinutes:Run' :: Maybe DeviceMinutes
deviceMinutes = Maybe DeviceMinutes
forall a. Maybe a
Prelude.Nothing,
      $sel:type':Run' :: Maybe TestType
type' = Maybe TestType
forall a. Maybe a
Prelude.Nothing,
      $sel:message:Run' :: Maybe Text
message = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:webUrl:Run' :: Maybe Text
webUrl = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:totalJobs:Run' :: Maybe Int
totalJobs = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:devicePoolArn:Run' :: Maybe Text
devicePoolArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:started:Run' :: Maybe POSIX
started = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:deviceSelectionResult:Run' :: Maybe DeviceSelectionResult
deviceSelectionResult = Maybe DeviceSelectionResult
forall a. Maybe a
Prelude.Nothing
    }

-- | Specifies the billing method for a test run: @metered@ or @unmetered@.
-- If the parameter is not specified, the default value is @metered@.
--
-- If you have unmetered device slots, you must set this to @unmetered@ to
-- use them. Otherwise, the run is counted toward metered device minutes.
run_billingMethod :: Lens.Lens' Run (Prelude.Maybe BillingMethod)
run_billingMethod :: (Maybe BillingMethod -> f (Maybe BillingMethod)) -> Run -> f Run
run_billingMethod = (Run -> Maybe BillingMethod)
-> (Run -> Maybe BillingMethod -> Run)
-> Lens Run Run (Maybe BillingMethod) (Maybe BillingMethod)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe BillingMethod
billingMethod :: Maybe BillingMethod
$sel:billingMethod:Run' :: Run -> Maybe BillingMethod
billingMethod} -> Maybe BillingMethod
billingMethod) (\s :: Run
s@Run' {} Maybe BillingMethod
a -> Run
s {$sel:billingMethod:Run' :: Maybe BillingMethod
billingMethod = Maybe BillingMethod
a} :: Run)

-- | When set to @true@, for private devices, Device Farm does not sign your
-- app again. For public devices, Device Farm always signs your apps again.
--
-- For more information about how Device Farm re-signs your apps, see
-- <https://aws.amazon.com/device-farm/faq/ Do you modify my app?> in the
-- /AWS Device Farm FAQs/.
run_skipAppResign :: Lens.Lens' Run (Prelude.Maybe Prelude.Bool)
run_skipAppResign :: (Maybe Bool -> f (Maybe Bool)) -> Run -> f Run
run_skipAppResign = (Run -> Maybe Bool)
-> (Run -> Maybe Bool -> Run)
-> Lens Run Run (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Bool
skipAppResign :: Maybe Bool
$sel:skipAppResign:Run' :: Run -> Maybe Bool
skipAppResign} -> Maybe Bool
skipAppResign) (\s :: Run
s@Run' {} Maybe Bool
a -> Run
s {$sel:skipAppResign:Run' :: Maybe Bool
skipAppResign = Maybe Bool
a} :: Run)

-- | The run\'s status.
--
-- Allowed values include:
--
-- -   PENDING
--
-- -   PENDING_CONCURRENCY
--
-- -   PENDING_DEVICE
--
-- -   PROCESSING
--
-- -   SCHEDULING
--
-- -   PREPARING
--
-- -   RUNNING
--
-- -   COMPLETED
--
-- -   STOPPING
run_status :: Lens.Lens' Run (Prelude.Maybe ExecutionStatus)
run_status :: (Maybe ExecutionStatus -> f (Maybe ExecutionStatus))
-> Run -> f Run
run_status = (Run -> Maybe ExecutionStatus)
-> (Run -> Maybe ExecutionStatus -> Run)
-> Lens Run Run (Maybe ExecutionStatus) (Maybe ExecutionStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe ExecutionStatus
status :: Maybe ExecutionStatus
$sel:status:Run' :: Run -> Maybe ExecutionStatus
status} -> Maybe ExecutionStatus
status) (\s :: Run
s@Run' {} Maybe ExecutionStatus
a -> Run
s {$sel:status:Run' :: Maybe ExecutionStatus
status = Maybe ExecutionStatus
a} :: Run)

-- | Output @CustomerArtifactPaths@ object for the test run.
run_customerArtifactPaths :: Lens.Lens' Run (Prelude.Maybe CustomerArtifactPaths)
run_customerArtifactPaths :: (Maybe CustomerArtifactPaths -> f (Maybe CustomerArtifactPaths))
-> Run -> f Run
run_customerArtifactPaths = (Run -> Maybe CustomerArtifactPaths)
-> (Run -> Maybe CustomerArtifactPaths -> Run)
-> Lens
     Run Run (Maybe CustomerArtifactPaths) (Maybe CustomerArtifactPaths)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe CustomerArtifactPaths
customerArtifactPaths :: Maybe CustomerArtifactPaths
$sel:customerArtifactPaths:Run' :: Run -> Maybe CustomerArtifactPaths
customerArtifactPaths} -> Maybe CustomerArtifactPaths
customerArtifactPaths) (\s :: Run
s@Run' {} Maybe CustomerArtifactPaths
a -> Run
s {$sel:customerArtifactPaths:Run' :: Maybe CustomerArtifactPaths
customerArtifactPaths = Maybe CustomerArtifactPaths
a} :: Run)

-- | For fuzz tests, this is the number of events, between 1 and 10000, that
-- the UI fuzz test should perform.
run_eventCount :: Lens.Lens' Run (Prelude.Maybe Prelude.Int)
run_eventCount :: (Maybe Int -> f (Maybe Int)) -> Run -> f Run
run_eventCount = (Run -> Maybe Int)
-> (Run -> Maybe Int -> Run)
-> Lens Run Run (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Int
eventCount :: Maybe Int
$sel:eventCount:Run' :: Run -> Maybe Int
eventCount} -> Maybe Int
eventCount) (\s :: Run
s@Run' {} Maybe Int
a -> Run
s {$sel:eventCount:Run' :: Maybe Int
eventCount = Maybe Int
a} :: Run)

-- | The run\'s result counters.
run_counters :: Lens.Lens' Run (Prelude.Maybe Counters)
run_counters :: (Maybe Counters -> f (Maybe Counters)) -> Run -> f Run
run_counters = (Run -> Maybe Counters)
-> (Run -> Maybe Counters -> Run)
-> Lens Run Run (Maybe Counters) (Maybe Counters)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Counters
counters :: Maybe Counters
$sel:counters:Run' :: Run -> Maybe Counters
counters} -> Maybe Counters
counters) (\s :: Run
s@Run' {} Maybe Counters
a -> Run
s {$sel:counters:Run' :: Maybe Counters
counters = Maybe Counters
a} :: Run)

-- | The run\'s platform.
--
-- Allowed values include:
--
-- -   ANDROID
--
-- -   IOS
run_platform :: Lens.Lens' Run (Prelude.Maybe DevicePlatform)
run_platform :: (Maybe DevicePlatform -> f (Maybe DevicePlatform)) -> Run -> f Run
run_platform = (Run -> Maybe DevicePlatform)
-> (Run -> Maybe DevicePlatform -> Run)
-> Lens Run Run (Maybe DevicePlatform) (Maybe DevicePlatform)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe DevicePlatform
platform :: Maybe DevicePlatform
$sel:platform:Run' :: Run -> Maybe DevicePlatform
platform} -> Maybe DevicePlatform
platform) (\s :: Run
s@Run' {} Maybe DevicePlatform
a -> Run
s {$sel:platform:Run' :: Maybe DevicePlatform
platform = Maybe DevicePlatform
a} :: Run)

-- | For fuzz tests, this is a seed to use for randomizing the UI fuzz test.
-- Using the same seed value between tests ensures identical event
-- sequences.
run_seed :: Lens.Lens' Run (Prelude.Maybe Prelude.Int)
run_seed :: (Maybe Int -> f (Maybe Int)) -> Run -> f Run
run_seed = (Run -> Maybe Int)
-> (Run -> Maybe Int -> Run)
-> Lens Run Run (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Int
seed :: Maybe Int
$sel:seed:Run' :: Run -> Maybe Int
seed} -> Maybe Int
seed) (\s :: Run
s@Run' {} Maybe Int
a -> Run
s {$sel:seed:Run' :: Maybe Int
seed = Maybe Int
a} :: Run)

-- | Information about the radio states for the run.
run_radios :: Lens.Lens' Run (Prelude.Maybe Radios)
run_radios :: (Maybe Radios -> f (Maybe Radios)) -> Run -> f Run
run_radios = (Run -> Maybe Radios)
-> (Run -> Maybe Radios -> Run)
-> Lens Run Run (Maybe Radios) (Maybe Radios)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Radios
radios :: Maybe Radios
$sel:radios:Run' :: Run -> Maybe Radios
radios} -> Maybe Radios
radios) (\s :: Run
s@Run' {} Maybe Radios
a -> Run
s {$sel:radios:Run' :: Maybe Radios
radios = Maybe Radios
a} :: Run)

-- | The run\'s ARN.
run_arn :: Lens.Lens' Run (Prelude.Maybe Prelude.Text)
run_arn :: (Maybe Text -> f (Maybe Text)) -> Run -> f Run
run_arn = (Run -> Maybe Text)
-> (Run -> Maybe Text -> Run)
-> Lens Run Run (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Text
arn :: Maybe Text
$sel:arn:Run' :: Run -> Maybe Text
arn} -> Maybe Text
arn) (\s :: Run
s@Run' {} Maybe Text
a -> Run
s {$sel:arn:Run' :: Maybe Text
arn = Maybe Text
a} :: Run)

-- | Information about the location that is used for the run.
run_location :: Lens.Lens' Run (Prelude.Maybe Location)
run_location :: (Maybe Location -> f (Maybe Location)) -> Run -> f Run
run_location = (Run -> Maybe Location)
-> (Run -> Maybe Location -> Run)
-> Lens Run Run (Maybe Location) (Maybe Location)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Location
location :: Maybe Location
$sel:location:Run' :: Run -> Maybe Location
location} -> Maybe Location
location) (\s :: Run
s@Run' {} Maybe Location
a -> Run
s {$sel:location:Run' :: Maybe Location
location = Maybe Location
a} :: Run)

-- | When the run was created.
run_created :: Lens.Lens' Run (Prelude.Maybe Prelude.UTCTime)
run_created :: (Maybe UTCTime -> f (Maybe UTCTime)) -> Run -> f Run
run_created = (Run -> Maybe POSIX)
-> (Run -> Maybe POSIX -> Run)
-> Lens Run Run (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe POSIX
created :: Maybe POSIX
$sel:created:Run' :: Run -> Maybe POSIX
created} -> Maybe POSIX
created) (\s :: Run
s@Run' {} Maybe POSIX
a -> Run
s {$sel:created:Run' :: Maybe POSIX
created = Maybe POSIX
a} :: Run) ((Maybe POSIX -> f (Maybe POSIX)) -> Run -> f Run)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> Run
-> f Run
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Information about the locale that is used for the run.
run_locale :: Lens.Lens' Run (Prelude.Maybe Prelude.Text)
run_locale :: (Maybe Text -> f (Maybe Text)) -> Run -> f Run
run_locale = (Run -> Maybe Text)
-> (Run -> Maybe Text -> Run)
-> Lens Run Run (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Text
locale :: Maybe Text
$sel:locale:Run' :: Run -> Maybe Text
locale} -> Maybe Text
locale) (\s :: Run
s@Run' {} Maybe Text
a -> Run
s {$sel:locale:Run' :: Maybe Text
locale = Maybe Text
a} :: Run)

-- | The ARN of the YAML-formatted test specification for the run.
run_testSpecArn :: Lens.Lens' Run (Prelude.Maybe Prelude.Text)
run_testSpecArn :: (Maybe Text -> f (Maybe Text)) -> Run -> f Run
run_testSpecArn = (Run -> Maybe Text)
-> (Run -> Maybe Text -> Run)
-> Lens Run Run (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Text
testSpecArn :: Maybe Text
$sel:testSpecArn:Run' :: Run -> Maybe Text
testSpecArn} -> Maybe Text
testSpecArn) (\s :: Run
s@Run' {} Maybe Text
a -> Run
s {$sel:testSpecArn:Run' :: Maybe Text
testSpecArn = Maybe Text
a} :: Run)

-- | The run\'s stop time.
run_stopped :: Lens.Lens' Run (Prelude.Maybe Prelude.UTCTime)
run_stopped :: (Maybe UTCTime -> f (Maybe UTCTime)) -> Run -> f Run
run_stopped = (Run -> Maybe POSIX)
-> (Run -> Maybe POSIX -> Run)
-> Lens Run Run (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe POSIX
stopped :: Maybe POSIX
$sel:stopped:Run' :: Run -> Maybe POSIX
stopped} -> Maybe POSIX
stopped) (\s :: Run
s@Run' {} Maybe POSIX
a -> Run
s {$sel:stopped:Run' :: Maybe POSIX
stopped = Maybe POSIX
a} :: Run) ((Maybe POSIX -> f (Maybe POSIX)) -> Run -> f Run)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> Run
-> f Run
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The run\'s result.
--
-- Allowed values include:
--
-- -   PENDING
--
-- -   PASSED
--
-- -   WARNED
--
-- -   FAILED
--
-- -   SKIPPED
--
-- -   ERRORED
--
-- -   STOPPED
run_result :: Lens.Lens' Run (Prelude.Maybe ExecutionResult)
run_result :: (Maybe ExecutionResult -> f (Maybe ExecutionResult))
-> Run -> f Run
run_result = (Run -> Maybe ExecutionResult)
-> (Run -> Maybe ExecutionResult -> Run)
-> Lens Run Run (Maybe ExecutionResult) (Maybe ExecutionResult)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe ExecutionResult
result :: Maybe ExecutionResult
$sel:result:Run' :: Run -> Maybe ExecutionResult
result} -> Maybe ExecutionResult
result) (\s :: Run
s@Run' {} Maybe ExecutionResult
a -> Run
s {$sel:result:Run' :: Maybe ExecutionResult
result = Maybe ExecutionResult
a} :: Run)

-- | The number of minutes the job executes before it times out.
run_jobTimeoutMinutes :: Lens.Lens' Run (Prelude.Maybe Prelude.Int)
run_jobTimeoutMinutes :: (Maybe Int -> f (Maybe Int)) -> Run -> f Run
run_jobTimeoutMinutes = (Run -> Maybe Int)
-> (Run -> Maybe Int -> Run)
-> Lens Run Run (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Int
jobTimeoutMinutes :: Maybe Int
$sel:jobTimeoutMinutes:Run' :: Run -> Maybe Int
jobTimeoutMinutes} -> Maybe Int
jobTimeoutMinutes) (\s :: Run
s@Run' {} Maybe Int
a -> Run
s {$sel:jobTimeoutMinutes:Run' :: Maybe Int
jobTimeoutMinutes = Maybe Int
a} :: Run)

-- | The total number of completed jobs.
run_completedJobs :: Lens.Lens' Run (Prelude.Maybe Prelude.Int)
run_completedJobs :: (Maybe Int -> f (Maybe Int)) -> Run -> f Run
run_completedJobs = (Run -> Maybe Int)
-> (Run -> Maybe Int -> Run)
-> Lens Run Run (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Int
completedJobs :: Maybe Int
$sel:completedJobs:Run' :: Run -> Maybe Int
completedJobs} -> Maybe Int
completedJobs) (\s :: Run
s@Run' {} Maybe Int
a -> Run
s {$sel:completedJobs:Run' :: Maybe Int
completedJobs = Maybe Int
a} :: Run)

-- | Supporting field for the result field. Set only if @result@ is
-- @SKIPPED@. @PARSING_FAILED@ if the result is skipped because of test
-- package parsing failure.
run_resultCode :: Lens.Lens' Run (Prelude.Maybe ExecutionResultCode)
run_resultCode :: (Maybe ExecutionResultCode -> f (Maybe ExecutionResultCode))
-> Run -> f Run
run_resultCode = (Run -> Maybe ExecutionResultCode)
-> (Run -> Maybe ExecutionResultCode -> Run)
-> Lens
     Run Run (Maybe ExecutionResultCode) (Maybe ExecutionResultCode)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe ExecutionResultCode
resultCode :: Maybe ExecutionResultCode
$sel:resultCode:Run' :: Run -> Maybe ExecutionResultCode
resultCode} -> Maybe ExecutionResultCode
resultCode) (\s :: Run
s@Run' {} Maybe ExecutionResultCode
a -> Run
s {$sel:resultCode:Run' :: Maybe ExecutionResultCode
resultCode = Maybe ExecutionResultCode
a} :: Run)

-- | The run\'s name.
run_name :: Lens.Lens' Run (Prelude.Maybe Prelude.Text)
run_name :: (Maybe Text -> f (Maybe Text)) -> Run -> f Run
run_name = (Run -> Maybe Text)
-> (Run -> Maybe Text -> Run)
-> Lens Run Run (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Text
name :: Maybe Text
$sel:name:Run' :: Run -> Maybe Text
name} -> Maybe Text
name) (\s :: Run
s@Run' {} Maybe Text
a -> Run
s {$sel:name:Run' :: Maybe Text
name = Maybe Text
a} :: Run)

-- | An app to upload or that has been uploaded.
run_appUpload :: Lens.Lens' Run (Prelude.Maybe Prelude.Text)
run_appUpload :: (Maybe Text -> f (Maybe Text)) -> Run -> f Run
run_appUpload = (Run -> Maybe Text)
-> (Run -> Maybe Text -> Run)
-> Lens Run Run (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Text
appUpload :: Maybe Text
$sel:appUpload:Run' :: Run -> Maybe Text
appUpload} -> Maybe Text
appUpload) (\s :: Run
s@Run' {} Maybe Text
a -> Run
s {$sel:appUpload:Run' :: Maybe Text
appUpload = Maybe Text
a} :: Run)

-- | Read-only URL for an object in an S3 bucket where you can get the
-- parsing results of the test package. If the test package doesn\'t parse,
-- the reason why it doesn\'t parse appears in the file that this URL
-- points to.
run_parsingResultUrl :: Lens.Lens' Run (Prelude.Maybe Prelude.Text)
run_parsingResultUrl :: (Maybe Text -> f (Maybe Text)) -> Run -> f Run
run_parsingResultUrl = (Run -> Maybe Text)
-> (Run -> Maybe Text -> Run)
-> Lens Run Run (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Text
parsingResultUrl :: Maybe Text
$sel:parsingResultUrl:Run' :: Run -> Maybe Text
parsingResultUrl} -> Maybe Text
parsingResultUrl) (\s :: Run
s@Run' {} Maybe Text
a -> Run
s {$sel:parsingResultUrl:Run' :: Maybe Text
parsingResultUrl = Maybe Text
a} :: Run)

-- | The network profile being used for a test run.
run_networkProfile :: Lens.Lens' Run (Prelude.Maybe NetworkProfile)
run_networkProfile :: (Maybe NetworkProfile -> f (Maybe NetworkProfile)) -> Run -> f Run
run_networkProfile = (Run -> Maybe NetworkProfile)
-> (Run -> Maybe NetworkProfile -> Run)
-> Lens Run Run (Maybe NetworkProfile) (Maybe NetworkProfile)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe NetworkProfile
networkProfile :: Maybe NetworkProfile
$sel:networkProfile:Run' :: Run -> Maybe NetworkProfile
networkProfile} -> Maybe NetworkProfile
networkProfile) (\s :: Run
s@Run' {} Maybe NetworkProfile
a -> Run
s {$sel:networkProfile:Run' :: Maybe NetworkProfile
networkProfile = Maybe NetworkProfile
a} :: Run)

-- | Represents the total (metered or unmetered) minutes used by the test
-- run.
run_deviceMinutes :: Lens.Lens' Run (Prelude.Maybe DeviceMinutes)
run_deviceMinutes :: (Maybe DeviceMinutes -> f (Maybe DeviceMinutes)) -> Run -> f Run
run_deviceMinutes = (Run -> Maybe DeviceMinutes)
-> (Run -> Maybe DeviceMinutes -> Run)
-> Lens Run Run (Maybe DeviceMinutes) (Maybe DeviceMinutes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe DeviceMinutes
deviceMinutes :: Maybe DeviceMinutes
$sel:deviceMinutes:Run' :: Run -> Maybe DeviceMinutes
deviceMinutes} -> Maybe DeviceMinutes
deviceMinutes) (\s :: Run
s@Run' {} Maybe DeviceMinutes
a -> Run
s {$sel:deviceMinutes:Run' :: Maybe DeviceMinutes
deviceMinutes = Maybe DeviceMinutes
a} :: Run)

-- | The run\'s type.
--
-- Must be one of the following values:
--
-- -   BUILTIN_FUZZ
--
-- -   BUILTIN_EXPLORER
--
--     For Android, an app explorer that traverses an Android app,
--     interacting with it and capturing screenshots at the same time.
--
-- -   APPIUM_JAVA_JUNIT
--
-- -   APPIUM_JAVA_TESTNG
--
-- -   APPIUM_PYTHON
--
-- -   APPIUM_NODE
--
-- -   APPIUM_RUBY
--
-- -   APPIUM_WEB_JAVA_JUNIT
--
-- -   APPIUM_WEB_JAVA_TESTNG
--
-- -   APPIUM_WEB_PYTHON
--
-- -   APPIUM_WEB_NODE
--
-- -   APPIUM_WEB_RUBY
--
-- -   CALABASH
--
-- -   INSTRUMENTATION
--
-- -   UIAUTOMATION
--
-- -   UIAUTOMATOR
--
-- -   XCTEST
--
-- -   XCTEST_UI
run_type :: Lens.Lens' Run (Prelude.Maybe TestType)
run_type :: (Maybe TestType -> f (Maybe TestType)) -> Run -> f Run
run_type = (Run -> Maybe TestType)
-> (Run -> Maybe TestType -> Run)
-> Lens Run Run (Maybe TestType) (Maybe TestType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe TestType
type' :: Maybe TestType
$sel:type':Run' :: Run -> Maybe TestType
type'} -> Maybe TestType
type') (\s :: Run
s@Run' {} Maybe TestType
a -> Run
s {$sel:type':Run' :: Maybe TestType
type' = Maybe TestType
a} :: Run)

-- | A message about the run\'s result.
run_message :: Lens.Lens' Run (Prelude.Maybe Prelude.Text)
run_message :: (Maybe Text -> f (Maybe Text)) -> Run -> f Run
run_message = (Run -> Maybe Text)
-> (Run -> Maybe Text -> Run)
-> Lens Run Run (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Text
message :: Maybe Text
$sel:message:Run' :: Run -> Maybe Text
message} -> Maybe Text
message) (\s :: Run
s@Run' {} Maybe Text
a -> Run
s {$sel:message:Run' :: Maybe Text
message = Maybe Text
a} :: Run)

-- | The Device Farm console URL for the recording of the run.
run_webUrl :: Lens.Lens' Run (Prelude.Maybe Prelude.Text)
run_webUrl :: (Maybe Text -> f (Maybe Text)) -> Run -> f Run
run_webUrl = (Run -> Maybe Text)
-> (Run -> Maybe Text -> Run)
-> Lens Run Run (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Text
webUrl :: Maybe Text
$sel:webUrl:Run' :: Run -> Maybe Text
webUrl} -> Maybe Text
webUrl) (\s :: Run
s@Run' {} Maybe Text
a -> Run
s {$sel:webUrl:Run' :: Maybe Text
webUrl = Maybe Text
a} :: Run)

-- | The total number of jobs for the run.
run_totalJobs :: Lens.Lens' Run (Prelude.Maybe Prelude.Int)
run_totalJobs :: (Maybe Int -> f (Maybe Int)) -> Run -> f Run
run_totalJobs = (Run -> Maybe Int)
-> (Run -> Maybe Int -> Run)
-> Lens Run Run (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Int
totalJobs :: Maybe Int
$sel:totalJobs:Run' :: Run -> Maybe Int
totalJobs} -> Maybe Int
totalJobs) (\s :: Run
s@Run' {} Maybe Int
a -> Run
s {$sel:totalJobs:Run' :: Maybe Int
totalJobs = Maybe Int
a} :: Run)

-- | The ARN of the device pool for the run.
run_devicePoolArn :: Lens.Lens' Run (Prelude.Maybe Prelude.Text)
run_devicePoolArn :: (Maybe Text -> f (Maybe Text)) -> Run -> f Run
run_devicePoolArn = (Run -> Maybe Text)
-> (Run -> Maybe Text -> Run)
-> Lens Run Run (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe Text
devicePoolArn :: Maybe Text
$sel:devicePoolArn:Run' :: Run -> Maybe Text
devicePoolArn} -> Maybe Text
devicePoolArn) (\s :: Run
s@Run' {} Maybe Text
a -> Run
s {$sel:devicePoolArn:Run' :: Maybe Text
devicePoolArn = Maybe Text
a} :: Run)

-- | The run\'s start time.
run_started :: Lens.Lens' Run (Prelude.Maybe Prelude.UTCTime)
run_started :: (Maybe UTCTime -> f (Maybe UTCTime)) -> Run -> f Run
run_started = (Run -> Maybe POSIX)
-> (Run -> Maybe POSIX -> Run)
-> Lens Run Run (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe POSIX
started :: Maybe POSIX
$sel:started:Run' :: Run -> Maybe POSIX
started} -> Maybe POSIX
started) (\s :: Run
s@Run' {} Maybe POSIX
a -> Run
s {$sel:started:Run' :: Maybe POSIX
started = Maybe POSIX
a} :: Run) ((Maybe POSIX -> f (Maybe POSIX)) -> Run -> f Run)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> Run
-> f Run
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The results of a device filter used to select the devices for a test
-- run.
run_deviceSelectionResult :: Lens.Lens' Run (Prelude.Maybe DeviceSelectionResult)
run_deviceSelectionResult :: (Maybe DeviceSelectionResult -> f (Maybe DeviceSelectionResult))
-> Run -> f Run
run_deviceSelectionResult = (Run -> Maybe DeviceSelectionResult)
-> (Run -> Maybe DeviceSelectionResult -> Run)
-> Lens
     Run Run (Maybe DeviceSelectionResult) (Maybe DeviceSelectionResult)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Run' {Maybe DeviceSelectionResult
deviceSelectionResult :: Maybe DeviceSelectionResult
$sel:deviceSelectionResult:Run' :: Run -> Maybe DeviceSelectionResult
deviceSelectionResult} -> Maybe DeviceSelectionResult
deviceSelectionResult) (\s :: Run
s@Run' {} Maybe DeviceSelectionResult
a -> Run
s {$sel:deviceSelectionResult:Run' :: Maybe DeviceSelectionResult
deviceSelectionResult = Maybe DeviceSelectionResult
a} :: Run)

instance Core.FromJSON Run where
  parseJSON :: Value -> Parser Run
parseJSON =
    String -> (Object -> Parser Run) -> Value -> Parser Run
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"Run"
      ( \Object
x ->
          Maybe BillingMethod
-> Maybe Bool
-> Maybe ExecutionStatus
-> Maybe CustomerArtifactPaths
-> Maybe Int
-> Maybe Counters
-> Maybe DevicePlatform
-> Maybe Int
-> Maybe Radios
-> Maybe Text
-> Maybe Location
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe ExecutionResult
-> Maybe Int
-> Maybe Int
-> Maybe ExecutionResultCode
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe NetworkProfile
-> Maybe DeviceMinutes
-> Maybe TestType
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe POSIX
-> Maybe DeviceSelectionResult
-> Run
Run'
            (Maybe BillingMethod
 -> Maybe Bool
 -> Maybe ExecutionStatus
 -> Maybe CustomerArtifactPaths
 -> Maybe Int
 -> Maybe Counters
 -> Maybe DevicePlatform
 -> Maybe Int
 -> Maybe Radios
 -> Maybe Text
 -> Maybe Location
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe Text
 -> Maybe POSIX
 -> Maybe ExecutionResult
 -> Maybe Int
 -> Maybe Int
 -> Maybe ExecutionResultCode
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe NetworkProfile
 -> Maybe DeviceMinutes
 -> Maybe TestType
 -> Maybe Text
 -> Maybe Text
 -> Maybe Int
 -> Maybe Text
 -> Maybe POSIX
 -> Maybe DeviceSelectionResult
 -> Run)
-> Parser (Maybe BillingMethod)
-> Parser
     (Maybe Bool
      -> Maybe ExecutionStatus
      -> Maybe CustomerArtifactPaths
      -> Maybe Int
      -> Maybe Counters
      -> Maybe DevicePlatform
      -> Maybe Int
      -> Maybe Radios
      -> Maybe Text
      -> Maybe Location
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Int
      -> Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe BillingMethod)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"billingMethod")
            Parser
  (Maybe Bool
   -> Maybe ExecutionStatus
   -> Maybe CustomerArtifactPaths
   -> Maybe Int
   -> Maybe Counters
   -> Maybe DevicePlatform
   -> Maybe Int
   -> Maybe Radios
   -> Maybe Text
   -> Maybe Location
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Int
   -> Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe Bool)
-> Parser
     (Maybe ExecutionStatus
      -> Maybe CustomerArtifactPaths
      -> Maybe Int
      -> Maybe Counters
      -> Maybe DevicePlatform
      -> Maybe Int
      -> Maybe Radios
      -> Maybe Text
      -> Maybe Location
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Int
      -> Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"skipAppResign")
            Parser
  (Maybe ExecutionStatus
   -> Maybe CustomerArtifactPaths
   -> Maybe Int
   -> Maybe Counters
   -> Maybe DevicePlatform
   -> Maybe Int
   -> Maybe Radios
   -> Maybe Text
   -> Maybe Location
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Int
   -> Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe ExecutionStatus)
-> Parser
     (Maybe CustomerArtifactPaths
      -> Maybe Int
      -> Maybe Counters
      -> Maybe DevicePlatform
      -> Maybe Int
      -> Maybe Radios
      -> Maybe Text
      -> Maybe Location
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Int
      -> Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ExecutionStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"status")
            Parser
  (Maybe CustomerArtifactPaths
   -> Maybe Int
   -> Maybe Counters
   -> Maybe DevicePlatform
   -> Maybe Int
   -> Maybe Radios
   -> Maybe Text
   -> Maybe Location
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Int
   -> Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe CustomerArtifactPaths)
-> Parser
     (Maybe Int
      -> Maybe Counters
      -> Maybe DevicePlatform
      -> Maybe Int
      -> Maybe Radios
      -> Maybe Text
      -> Maybe Location
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Int
      -> Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CustomerArtifactPaths)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"customerArtifactPaths")
            Parser
  (Maybe Int
   -> Maybe Counters
   -> Maybe DevicePlatform
   -> Maybe Int
   -> Maybe Radios
   -> Maybe Text
   -> Maybe Location
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Int
   -> Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe Int)
-> Parser
     (Maybe Counters
      -> Maybe DevicePlatform
      -> Maybe Int
      -> Maybe Radios
      -> Maybe Text
      -> Maybe Location
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Int
      -> Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"eventCount")
            Parser
  (Maybe Counters
   -> Maybe DevicePlatform
   -> Maybe Int
   -> Maybe Radios
   -> Maybe Text
   -> Maybe Location
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Int
   -> Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe Counters)
-> Parser
     (Maybe DevicePlatform
      -> Maybe Int
      -> Maybe Radios
      -> Maybe Text
      -> Maybe Location
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Int
      -> Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Counters)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"counters")
            Parser
  (Maybe DevicePlatform
   -> Maybe Int
   -> Maybe Radios
   -> Maybe Text
   -> Maybe Location
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Int
   -> Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe DevicePlatform)
-> Parser
     (Maybe Int
      -> Maybe Radios
      -> Maybe Text
      -> Maybe Location
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Int
      -> Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DevicePlatform)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"platform")
            Parser
  (Maybe Int
   -> Maybe Radios
   -> Maybe Text
   -> Maybe Location
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Int
   -> Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe Int)
-> Parser
     (Maybe Radios
      -> Maybe Text
      -> Maybe Location
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Int
      -> Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"seed")
            Parser
  (Maybe Radios
   -> Maybe Text
   -> Maybe Location
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Int
   -> Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe Radios)
-> Parser
     (Maybe Text
      -> Maybe Location
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Int
      -> Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Radios)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"radios")
            Parser
  (Maybe Text
   -> Maybe Location
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Int
   -> Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe Text)
-> Parser
     (Maybe Location
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Int
      -> Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"arn")
            Parser
  (Maybe Location
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Int
   -> Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe Location)
-> Parser
     (Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Int
      -> Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Location)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"location")
            Parser
  (Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Int
   -> Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Int
      -> Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"created")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Int
   -> Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Int
      -> Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"locale")
            Parser
  (Maybe Text
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Int
   -> Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe Text)
-> Parser
     (Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Int
      -> Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"testSpecArn")
            Parser
  (Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Int
   -> Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe ExecutionResult
      -> Maybe Int
      -> Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"stopped")
            Parser
  (Maybe ExecutionResult
   -> Maybe Int
   -> Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe ExecutionResult)
-> Parser
     (Maybe Int
      -> Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ExecutionResult)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"result")
            Parser
  (Maybe Int
   -> Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe Int)
-> Parser
     (Maybe Int
      -> Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"jobTimeoutMinutes")
            Parser
  (Maybe Int
   -> Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe Int)
-> Parser
     (Maybe ExecutionResultCode
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"completedJobs")
            Parser
  (Maybe ExecutionResultCode
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe ExecutionResultCode)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ExecutionResultCode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"resultCode")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"name")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"appUpload")
            Parser
  (Maybe Text
   -> Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe Text)
-> Parser
     (Maybe NetworkProfile
      -> Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"parsingResultUrl")
            Parser
  (Maybe NetworkProfile
   -> Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe NetworkProfile)
-> Parser
     (Maybe DeviceMinutes
      -> Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe NetworkProfile)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"networkProfile")
            Parser
  (Maybe DeviceMinutes
   -> Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe DeviceMinutes)
-> Parser
     (Maybe TestType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DeviceMinutes)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"deviceMinutes")
            Parser
  (Maybe TestType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe TestType)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe TestType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"type")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe DeviceSelectionResult
      -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"message")
            Parser
  (Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe DeviceSelectionResult
   -> Run)
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe Text -> Maybe POSIX -> Maybe DeviceSelectionResult -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"webUrl")
            Parser
  (Maybe Int
   -> Maybe Text -> Maybe POSIX -> Maybe DeviceSelectionResult -> Run)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text -> Maybe POSIX -> Maybe DeviceSelectionResult -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"totalJobs")
            Parser
  (Maybe Text -> Maybe POSIX -> Maybe DeviceSelectionResult -> Run)
-> Parser (Maybe Text)
-> Parser (Maybe POSIX -> Maybe DeviceSelectionResult -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"devicePoolArn")
            Parser (Maybe POSIX -> Maybe DeviceSelectionResult -> Run)
-> Parser (Maybe POSIX)
-> Parser (Maybe DeviceSelectionResult -> Run)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"started")
            Parser (Maybe DeviceSelectionResult -> Run)
-> Parser (Maybe DeviceSelectionResult) -> Parser Run
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DeviceSelectionResult)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"deviceSelectionResult")
      )

instance Prelude.Hashable Run

instance Prelude.NFData Run