"""Generated message classes for devicerun version v1alpha.

"""
# NOTE: This file is autogenerated and should not be edited by hand.

from apitools.base.protorpclite import messages as _messages
from apitools.base.py import encoding
from apitools.base.py import extra_types


package = 'devicerun'


class AllocationConfig(_messages.Message):
  r"""Allocation config.

  Enums:
    AllocationExitStrategyValueValuesEnum: Optional. The strategy to exit the
      allocation. If not set, the default strategy is WAIT_UNTIL_SATISFIED.

  Fields:
    allocationExitStrategy: Optional. The strategy to exit the allocation. If
      not set, the default strategy is WAIT_UNTIL_SATISFIED.
    deviceConfigs: Required. At least one device config is required. If more
      than one device config is required, the multiple devices are allocated
      to each shard of the OmniLab job, to running multi-device-interaction
      tests.
    maxAllocationWaitTime: Optional. Only valid when allocation_exit_strategy
      is WAIT_UNTIL_SATISFIED.
  """

  class AllocationExitStrategyValueValuesEnum(_messages.Enum):
    r"""Optional. The strategy to exit the allocation. If not set, the default
    strategy is WAIT_UNTIL_SATISFIED.

    Values:
      ALLOCATION_EXIT_STRATEGY_UNSPECIFIED: Unspecified allocation exit
        strategy.
      WAIT_UNTIL_SATISFIED: Wait until the allocation is satisfied or the
        max_allocation_wait_time is reached.
      FAIL_FAST_NO_MATCH: Fail the allocation if no device matches the
        requirement.
      FAIL_FAST_NO_IDLE: Fail the allocation if no device is idle.
    """
    ALLOCATION_EXIT_STRATEGY_UNSPECIFIED = 0
    WAIT_UNTIL_SATISFIED = 1
    FAIL_FAST_NO_MATCH = 2
    FAIL_FAST_NO_IDLE = 3

  allocationExitStrategy = _messages.EnumField('AllocationExitStrategyValueValuesEnum', 1)
  deviceConfigs = _messages.MessageField('DeviceConfig', 2, repeated=True)
  maxAllocationWaitTime = _messages.StringField(3)


class AndroidInstallPackagesDeviceAction(_messages.Message):
  r"""Installs Android packages on the device.

  Fields:
    installables: Required. The Android packages to install on the device. The
      installation will be performed in the order specified. Limits: - A
      maximum of 20 installables are allowed. - A maximum of 100 files are
      allowed in total across all installables.
  """

  installables = _messages.MessageField('AndroidInstallable', 1, repeated=True)


class AndroidInstallable(_messages.Message):
  r"""An Android Installable represents the file(s) for installing an Android
  package on a device. This can be an APK, an Android App Bundle (AAB), or an
  APK Set.

  Fields:
    files: Required. Files that make up the package. Supported formats are
      distinguished by their file extension: - APK: One or more files with
      extension `.apk`. - App Bundle: A single file with extension `.aab`. -
      APK Set: A single file with extension `.apks`.
  """

  files = _messages.MessageField('InputFile', 1, repeated=True)


class AndroidInstrumentationTest(_messages.Message):
  r"""The configuration of an Android instrumentation test. See
  https://developer.android.com/training/testing/instrumented-tests for more
  information on Android instrumentation tests.

  Messages:
    AdditionalTestOptionsValue: Optional. Additional test options to pass to
      the test runner. Passed to `am instrument` command as `-e` options,
      which will be passed to the instrumentation test runner using its
      `onCreate()` method. Formats supoorted in test_targets are not allowed
      to be used here. Limits: - Maximum number of entries: 40. - Maximum key
      length: 128 characters. - Maximum value length: 4096 characters.

  Fields:
    additionalTestOptions: Optional. Additional test options to pass to the
      test runner. Passed to `am instrument` command as `-e` options, which
      will be passed to the instrumentation test runner using its `onCreate()`
      method. Formats supoorted in test_targets are not allowed to be used
      here. Limits: - Maximum number of entries: 40. - Maximum key length: 128
      characters. - Maximum value length: 4096 characters.
    enableCodeCoverage: Optional. Whether to enable code coverage collection
      for the test. A coverage file `coverage.ec` will be uploaded to the
      results folder. For this to work, your classes have to be instrumented
      offline (build time) by EMMA/JaCoCo.
    instrumentationTimeout: Optional. The timeout of the instrumentation test.
      Default value: 5 min. Range: [1 min, 60 min].
    orchestratorVersion: Optional. The version of the Android Test
      Orchestrator to use for the test. If not set, no orchestrator is used.
      If set to "auto", a system-default orchestrator is used.
    smartSharding: Optional. Smart sharding strategy to split the job into
      multiple shards based on the test methods and their execution time.
    testInstallable: Required. The test package to install and run the test.
    testRunnerClass: Optional. Full class name of the test runner class. The
      class must be `androidx.test.runner.AndroidJUnitRunner` or a subclass of
      it. The default value is determined by examining the application's
      manifest. If multiple instrumentations are found, the first one in the
      manifest will be used.
    testTargets: Optional. A list of test targets or target filters to run.
      Each target must be fully qualified with the package name or class name,
      in one of these formats: - `package package_name` - `notPackage
      com.package.to.skip` - `class package_name.class_name` - `class
      package_name.class_name#method_name` - `notClass com.foo.ClassToSkip` -
      `notClass com.foo.ClassName#testMethodToSkip` - `annotation
      com.foo.AnnotationToRun` - `notAnnotation com.foo.AnnotationToSkip` -
      `size [small|medium|large]` Formats like `testfile` or `notTestfile`
      won't be supported. If empty, all targets in the module will be run.
      Limits: - Maximum number of entries: 1024.
    uniformSharding: Optional. Uniform sharding strategy to split the job into
      multiple shards with equal number of test methods.
  """

  @encoding.MapUnrecognizedFields('additionalProperties')
  class AdditionalTestOptionsValue(_messages.Message):
    r"""Optional. Additional test options to pass to the test runner. Passed
    to `am instrument` command as `-e` options, which will be passed to the
    instrumentation test runner using its `onCreate()` method. Formats
    supoorted in test_targets are not allowed to be used here. Limits: -
    Maximum number of entries: 40. - Maximum key length: 128 characters. -
    Maximum value length: 4096 characters.

    Messages:
      AdditionalProperty: An additional property for a
        AdditionalTestOptionsValue object.

    Fields:
      additionalProperties: Additional properties of type
        AdditionalTestOptionsValue
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a AdditionalTestOptionsValue object.

      Fields:
        key: Name of the additional property.
        value: A string attribute.
      """

      key = _messages.StringField(1)
      value = _messages.StringField(2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  additionalTestOptions = _messages.MessageField('AdditionalTestOptionsValue', 1)
  enableCodeCoverage = _messages.BooleanField(2)
  instrumentationTimeout = _messages.StringField(3)
  orchestratorVersion = _messages.StringField(4)
  smartSharding = _messages.MessageField('SmartSharding', 5)
  testInstallable = _messages.MessageField('AndroidInstallable', 6)
  testRunnerClass = _messages.StringField(7)
  testTargets = _messages.StringField(8, repeated=True)
  uniformSharding = _messages.MessageField('UniformSharding', 9)


class AndroidLogcatDeviceAction(_messages.Message):
  r"""Collects logcat output from the device. The output will be written to a
  file named `logcat.txt` in the execution output directory.
  """



class AndroidNativeBinary(_messages.Message):
  r"""The configuration of an Android native binary execution.

  Messages:
    EnvVarsValue: Optional. A map of environment variables to set for the
      binary process. The keys are the variable names and the values are the
      variable values. The maximum number of entries is 100. Each key is
      limited to 128 characters and must conform to POSIX standards. Each
      value is limited to 2048 characters. The total size of all environment
      variables must not exceed 16 KiB.

  Fields:
    androidNativeBinary: Required. The file path of the Android native binary.
    args: Optional. Arguments for running the binary file. The flags will be
      appended to the command line that invokes the binary. The number of
      options is limited to 100.
    envVars: Optional. A map of environment variables to set for the binary
      process. The keys are the variable names and the values are the variable
      values. The maximum number of entries is 100. Each key is limited to 128
      characters and must conform to POSIX standards. Each value is limited to
      2048 characters. The total size of all environment variables must not
      exceed 16 KiB.
    executionTimeout: Required. The timeout of the execution.
  """

  @encoding.MapUnrecognizedFields('additionalProperties')
  class EnvVarsValue(_messages.Message):
    r"""Optional. A map of environment variables to set for the binary
    process. The keys are the variable names and the values are the variable
    values. The maximum number of entries is 100. Each key is limited to 128
    characters and must conform to POSIX standards. Each value is limited to
    2048 characters. The total size of all environment variables must not
    exceed 16 KiB.

    Messages:
      AdditionalProperty: An additional property for a EnvVarsValue object.

    Fields:
      additionalProperties: Additional properties of type EnvVarsValue
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a EnvVarsValue object.

      Fields:
        key: Name of the additional property.
        value: A string attribute.
      """

      key = _messages.StringField(1)
      value = _messages.StringField(2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  androidNativeBinary = _messages.MessageField('InputFile', 1)
  args = _messages.StringField(2, repeated=True)
  envVars = _messages.MessageField('EnvVarsValue', 3)
  executionTimeout = _messages.StringField(4)


class AndroidOrientationDeviceAction(_messages.Message):
  r"""Sets the orientation of the device.

  Fields:
    orientation: Required. The orientation to set the device to. One of
      `portrait` or `landscape`.
  """

  orientation = _messages.StringField(1)


class AndroidPhysicalDeviceRequirement(_messages.Message):
  r"""The requirement of an Android physical device.

  Fields:
    buildType: Optional. The build type of the device, e.g. "user",
      "userdebug", "eng", etc.
      https://developer.android.com/reference/android/os/Build#TYPE
    model: Optional. The model of the device, e.g. "pixel 6", "pixel 7", etc.
      https://developer.android.com/reference/android/os/Build#MODEL
    sdkVersion: Optional. The API level/SDK version of the device, e.g. "26",
      "27", etc.
      https://developer.android.com/reference/android/os/Build#VERSION.SDK_INT
  """

  buildType = _messages.MessageField('StringRequirement', 1)
  model = _messages.MessageField('StringRequirement', 2)
  sdkVersion = _messages.MessageField('IntRequirement', 3)


class AndroidPullFilesDeviceAction(_messages.Message):
  r"""Pulls directories and files from the device at the end of the run. Files
  will be copied to the '/artifacts' directory, with the absolute path
  structure preserved. Note that: 1. A clean device is provided for the run.
  2. Any existing files in the output directory may be overwritten. 3. Pulling
  files is best effort. Will skip files if they don't exist on the device.

  Fields:
    paths: Required. Absolute directory or file paths to pull from the device.
  """

  paths = _messages.StringField(1, repeated=True)


class AndroidPushFilesDeviceAction(_messages.Message):
  r"""Pushes files to the device at the beginning of the run. Files are
  overwritten if a file with the same path already exists on the device, if
  device permissions allow.

  Fields:
    fileConfigs: Required. Configs of pushing files to the device.
  """

  fileConfigs = _messages.MessageField('FileConfig', 1, repeated=True)


class AndroidRecordVideoDeviceAction(_messages.Message):
  r"""Records a video of the device screen during the run. The video will be
  written to a file named `video.mp4` in the execution output directory.

  Fields:
    discardOnPass: Optional. Whether to discard and not upload the recording
      when the test passes. Default is false.
  """

  discardOnPass = _messages.BooleanField(1)


class AndroidRoboTest(_messages.Message):
  r"""Android specific Robo test message."""


class AndroidSwitchLocaleDeviceAction(_messages.Message):
  r"""Switches the locale (language and region) of the device.

  Fields:
    localeCode: Required. The locale (language and region) to switch the
      device to. The format is `language-region`, e.g. "en-US", "zh-CN", etc.
      The typical language value is a two or three-letter language code as
      defined in ISO639. The typical region value is a two-letter ISO 3166
      code or a three-digit UN M.49 area code.
  """

  localeCode = _messages.StringField(1)


class AttemptReport(_messages.Message):
  r"""The report of the execution attempt.

  Fields:
    repeatIndex: Output only. The repeat index of this attempt.
    retryIndex: Output only. The retry index of this attempt.
    retryReason: Output only. The reason why this attempt is retried. Only
      available when the attempt is retried.
    shardIndex: Output only. The shard index of this attempt.
    subDeviceIndex: Output only. The sub device index of this attempt. Only
      available when the attempt is for multi-device-interaction tests.
  """

  repeatIndex = _messages.IntegerField(1, variant=_messages.Variant.INT32)
  retryIndex = _messages.IntegerField(2, variant=_messages.Variant.INT32)
  retryReason = _messages.StringField(3)
  shardIndex = _messages.IntegerField(4, variant=_messages.Variant.INT32)
  subDeviceIndex = _messages.IntegerField(5, variant=_messages.Variant.INT32)


class CancelSessionRequest(_messages.Message):
  r"""Request to cancel a session."""


class CancelSessionResponse(_messages.Message):
  r"""Response of the cancel session request.

  Enums:
    CancelResultValueValuesEnum: The result of the request.

  Fields:
    cancelResult: The result of the request.
  """

  class CancelResultValueValuesEnum(_messages.Enum):
    r"""The result of the request.

    Values:
      CANCEL_RESULT_UNSPECIFIED: Unspecified cancel result.
      SESSION_MARKED_AS_CANCELLED: The session is marked as cancelled, but has
        not finished yet.
      SESSION_FINISHED: The session is finished, either by itself or by the
        cancel request.
    """
    CANCEL_RESULT_UNSPECIFIED = 0
    SESSION_MARKED_AS_CANCELLED = 1
    SESSION_FINISHED = 2

  cancelResult = _messages.EnumField('CancelResultValueValuesEnum', 1)


class DeviceAction(_messages.Message):
  r"""The action to be performed on a device.

  Fields:
    androidInstallPackages: Installs Android packages on the device.
    androidLogcat: Collects logcat output from the device.
    androidOrientation: Sets the orientation of the device.
    androidPullFiles: Pulls directories and files from the device at the end
      of the run.
    androidPushFiles: Pushes files to the device at the beginning of the run.
    androidRecordVideo: Records a video of the device screen during the run.
    androidSwitchLocale: Switches the locale (language and region) of the
      device.
  """

  androidInstallPackages = _messages.MessageField('AndroidInstallPackagesDeviceAction', 1)
  androidLogcat = _messages.MessageField('AndroidLogcatDeviceAction', 2)
  androidOrientation = _messages.MessageField('AndroidOrientationDeviceAction', 3)
  androidPullFiles = _messages.MessageField('AndroidPullFilesDeviceAction', 4)
  androidPushFiles = _messages.MessageField('AndroidPushFilesDeviceAction', 5)
  androidRecordVideo = _messages.MessageField('AndroidRecordVideoDeviceAction', 6)
  androidSwitchLocale = _messages.MessageField('AndroidSwitchLocaleDeviceAction', 7)


class DeviceConfig(_messages.Message):
  r"""The configuration of a run on a device.

  Fields:
    actions: Required. The actions to be performed on the device. Actions will
      be executed in the order they are specified in the list.
    requirement: Required. The requirement of the device.
  """

  actions = _messages.MessageField('DeviceAction', 1, repeated=True)
  requirement = _messages.MessageField('DeviceRequirement', 2)


class DeviceRequirement(_messages.Message):
  r"""The requirement of a device.

  Fields:
    androidPhysicalDeviceRequirement: The requirement of a physical Android
      device.
    deviceId: The device ID of a device in the catalog. The device ID is the
      last part of a device's resource name.
  """

  androidPhysicalDeviceRequirement = _messages.MessageField('AndroidPhysicalDeviceRequirement', 1)
  deviceId = _messages.StringField(2)


class DevicerunProjectsLocationsGetRequest(_messages.Message):
  r"""A DevicerunProjectsLocationsGetRequest object.

  Fields:
    name: Resource name for the location.
  """

  name = _messages.StringField(1, required=True)


class DevicerunProjectsLocationsListRequest(_messages.Message):
  r"""A DevicerunProjectsLocationsListRequest object.

  Fields:
    extraLocationTypes: Optional. Do not use this field unless explicitly
      documented otherwise. This is primarily for internal usage.
    filter: A filter to narrow down results to a preferred subset. The
      filtering language accepts strings like `"displayName=tokyo"`, and is
      documented in more detail in [AIP-160](https://google.aip.dev/160).
    name: The resource that owns the locations collection, if applicable.
    pageSize: The maximum number of results to return. If not set, the service
      selects a default.
    pageToken: A page token received from the `next_page_token` field in the
      response. Send that page token to receive the subsequent page.
  """

  extraLocationTypes = _messages.StringField(1, repeated=True)
  filter = _messages.StringField(2)
  name = _messages.StringField(3, required=True)
  pageSize = _messages.IntegerField(4, variant=_messages.Variant.INT32)
  pageToken = _messages.StringField(5)


class DevicerunProjectsLocationsOperationsCancelRequest(_messages.Message):
  r"""A DevicerunProjectsLocationsOperationsCancelRequest object.

  Fields:
    googleLongrunningCancelOperationRequest: A
      GoogleLongrunningCancelOperationRequest resource to be passed as the
      request body.
    name: The name of the operation resource to be cancelled.
  """

  googleLongrunningCancelOperationRequest = _messages.MessageField('GoogleLongrunningCancelOperationRequest', 1)
  name = _messages.StringField(2, required=True)


class DevicerunProjectsLocationsOperationsDeleteRequest(_messages.Message):
  r"""A DevicerunProjectsLocationsOperationsDeleteRequest object.

  Fields:
    name: The name of the operation resource to be deleted.
  """

  name = _messages.StringField(1, required=True)


class DevicerunProjectsLocationsOperationsGetRequest(_messages.Message):
  r"""A DevicerunProjectsLocationsOperationsGetRequest object.

  Fields:
    name: The name of the operation resource.
  """

  name = _messages.StringField(1, required=True)


class DevicerunProjectsLocationsOperationsListRequest(_messages.Message):
  r"""A DevicerunProjectsLocationsOperationsListRequest object.

  Fields:
    filter: The standard list filter.
    name: The name of the operation's parent resource.
    pageSize: The standard list page size.
    pageToken: The standard list page token.
    returnPartialSuccess: When set to `true`, operations that are reachable
      are returned as normal, and those that are unreachable are returned in
      the ListOperationsResponse.unreachable field. This can only be `true`
      when reading across collections. For example, when `parent` is set to
      `"projects/example/locations/-"`. This field is not supported by default
      and will result in an `UNIMPLEMENTED` error if set unless explicitly
      documented otherwise in service or product specific documentation.
  """

  filter = _messages.StringField(1)
  name = _messages.StringField(2, required=True)
  pageSize = _messages.IntegerField(3, variant=_messages.Variant.INT32)
  pageToken = _messages.StringField(4)
  returnPartialSuccess = _messages.BooleanField(5)


class DevicerunProjectsLocationsSessionsCancelRequest(_messages.Message):
  r"""A DevicerunProjectsLocationsSessionsCancelRequest object.

  Fields:
    cancelSessionRequest: A CancelSessionRequest resource to be passed as the
      request body.
    name: Required. The name of the session. Format:
      "projects/{project}/locations/{location}/sessions/{session}"
  """

  cancelSessionRequest = _messages.MessageField('CancelSessionRequest', 1)
  name = _messages.StringField(2, required=True)


class DevicerunProjectsLocationsSessionsCreateRequest(_messages.Message):
  r"""A DevicerunProjectsLocationsSessionsCreateRequest object.

  Fields:
    parent: Required. The parent resource where this session will be created.
      Format: `projects/{project}/locations/{location}`.
    requestId: Optional. A unique identifier for this request. This request is
      only idempotent if a `request_id` is provided, i.e. if a request with
      the same `request_id` is received, then the previous result will be
      returned. The server will guarantee that for at least 60 minutes after
      the first request. The value must be a UUID (e.g.,
      123e4567-e89b-12d3-a456-426655440000). See github.com/google/uuid for
      more details.
    session: A Session resource to be passed as the request body.
    sessionId: Optional. The ID to use for the session, which will become the
      final component of the resource name. If not provided, the server will
      generate a value for this field. When provided, this value must be 4-63
      characters, and valid characters are /[a-z0-9-]/.
  """

  parent = _messages.StringField(1, required=True)
  requestId = _messages.StringField(2)
  session = _messages.MessageField('Session', 3)
  sessionId = _messages.StringField(4)


class DevicerunProjectsLocationsSessionsDeleteRequest(_messages.Message):
  r"""A DevicerunProjectsLocationsSessionsDeleteRequest object.

  Fields:
    name: Required. The name of the session. Format:
      `projects/{project}/locations/{location}/sessions/{session}`.
    requestId: Optional. A unique identifier for this request. This request is
      only idempotent if a `request_id` is provided, i.e. if a request with
      the same `request_id` is received, then the previous result will be
      returned. The server will guarantee that for at least 60 minutes after
      the first request. The value must be a UUID (e.g.,
      123e4567-e89b-12d3-a456-426655440000). See github.com/google/uuid for
      more details.
  """

  name = _messages.StringField(1, required=True)
  requestId = _messages.StringField(2)


class DevicerunProjectsLocationsSessionsGetRequest(_messages.Message):
  r"""A DevicerunProjectsLocationsSessionsGetRequest object.

  Enums:
    ViewValueValuesEnum: Optional. The view of the session to return. If not
      set, the default BASIC view will be returned.

  Fields:
    name: Required. The name of the session. Format:
      `projects/{project}/locations/{location}/sessions/{session}`.
    view: Optional. The view of the session to return. If not set, the default
      BASIC view will be returned.
  """

  class ViewValueValuesEnum(_messages.Enum):
    r"""Optional. The view of the session to return. If not set, the default
    BASIC view will be returned.

    Values:
      SESSION_VIEW_UNSPECIFIED: The default / unset value. The API will
        default to the BASIC view.
      SESSION_VIEW_BASIC: Include basic view of the session but not the full
        contents. Only the uid/display_name/status/result of the session and
        its jobs/executions will be included. This is the default value (for
        GetSession).
      SESSION_VIEW_FULL: Include everything.
    """
    SESSION_VIEW_UNSPECIFIED = 0
    SESSION_VIEW_BASIC = 1
    SESSION_VIEW_FULL = 2

  name = _messages.StringField(1, required=True)
  view = _messages.EnumField('ViewValueValuesEnum', 2)


class DevicerunProjectsLocationsSessionsListRequest(_messages.Message):
  r"""A DevicerunProjectsLocationsSessionsListRequest object.

  Enums:
    ViewValueValuesEnum: Optional. The view of the sessions to return. If not
      set, the `BASIC` view will be returned.

  Fields:
    filter: Optional. The raw filter text to constrain the results.
    orderBy: Optional. The order to sort results by.
    pageSize: Optional. The maximum number of sessions to return. The server
      may return fewer items than this value. If unspecified, at most 20
      sessions will be returned. The maximum value is 100, values above will
      be coerced to 100.
    pageToken: Optional. A page token, received from a previous `ListSessions`
      call. Provide this to receive the subsequent page. When paginating, all
      other parameters provided to `ListSessions` must match the call that
      provided the page token.
    parent: Required. Parent value for ListSessionsRequest The parent of the
      collection of sessions. Format:
      `projects/{project}/locations/{location}`.
    view: Optional. The view of the sessions to return. If not set, the
      `BASIC` view will be returned.
  """

  class ViewValueValuesEnum(_messages.Enum):
    r"""Optional. The view of the sessions to return. If not set, the `BASIC`
    view will be returned.

    Values:
      SESSION_VIEW_UNSPECIFIED: The default / unset value. The API will
        default to the BASIC view.
      SESSION_VIEW_BASIC: Include basic view of the session but not the full
        contents. Only the uid/display_name/status/result of the session and
        its jobs/executions will be included. This is the default value (for
        GetSession).
      SESSION_VIEW_FULL: Include everything.
    """
    SESSION_VIEW_UNSPECIFIED = 0
    SESSION_VIEW_BASIC = 1
    SESSION_VIEW_FULL = 2

  filter = _messages.StringField(1)
  orderBy = _messages.StringField(2)
  pageSize = _messages.IntegerField(3, variant=_messages.Variant.INT32)
  pageToken = _messages.StringField(4)
  parent = _messages.StringField(5, required=True)
  view = _messages.EnumField('ViewValueValuesEnum', 6)


class Empty(_messages.Message):
  r"""A generic empty message that you can re-use to avoid defining duplicated
  empty messages in your APIs. A typical example is to use it as the request
  or the response type of an API method. For instance: service Foo { rpc
  Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }
  """



class ExecutionReport(_messages.Message):
  r"""OUTPUT_ONLY. The runtime information and result report of an
  sharding/retry attempt of a single allocation.

  Fields:
    attemptReport: Output only. The report of the execution attempt.
    displayName: Output only. The display_name set by users in the
      ExecutionConfig.
    endTime: Output only. The end time of the execution.
    genFiles: Output only. The output files of the execution.
    id: Output only. The unique identifier of the execution.
    result: Output only. The result of the execution.
    startTime: Output only. The start time of the execution.
    status: Output only. The status of the execution.
    warnings: Output only. Non-fatal warnings collected during the execution.
  """

  attemptReport = _messages.MessageField('AttemptReport', 1)
  displayName = _messages.StringField(2)
  endTime = _messages.StringField(3)
  genFiles = _messages.MessageField('OutputFile', 4, repeated=True)
  id = _messages.StringField(5)
  result = _messages.MessageField('Result', 6)
  startTime = _messages.StringField(7)
  status = _messages.MessageField('Status', 8)
  warnings = _messages.MessageField('Warning', 9, repeated=True)


class FileConfig(_messages.Message):
  r"""The configuration of pushing a file to the device.

  Fields:
    destinationPath: Required. The destination path on the device.
    sourceFile: Required. The file to be pushed to the device.
  """

  destinationPath = _messages.StringField(1)
  sourceFile = _messages.MessageField('InputFile', 2)


class FlakyTestRetryStrategy(_messages.Message):
  r"""Default retry strategy. It will retry on test failures for up to
  flaky_test_attempts(including the initial run). It also retries on infra
  issues for up to 2 attempts(including the initial run). So in totally, an
  execution can run up to flaky_test_attempts * 2 times in the worst case.

  Fields:
    flakyTestAttempts: Optional. The total attempts for flaky tests, including
      the initial run. By default, it is 1 - no retry.
  """

  flakyTestAttempts = _messages.IntegerField(1, variant=_messages.Variant.INT32)


class GcsPath(_messages.Message):
  r"""A path to a file or directory in Google Cloud Storage.

  Fields:
    path: Required. The Google Cloud Storage path of the file or directory.
      Format: `gs:///`.
  """

  path = _messages.StringField(1)


class GoogleLongrunningCancelOperationRequest(_messages.Message):
  r"""The request message for Operations.CancelOperation."""


class GoogleLongrunningListOperationsResponse(_messages.Message):
  r"""The response message for Operations.ListOperations.

  Fields:
    nextPageToken: The standard List next-page token.
    operations: A list of operations that matches the specified filter in the
      request.
    unreachable: Unordered list. Unreachable resources. Populated when the
      request sets `ListOperationsRequest.return_partial_success` and reads
      across collections. For example, when attempting to list all resources
      across all supported locations.
  """

  nextPageToken = _messages.StringField(1)
  operations = _messages.MessageField('GoogleLongrunningOperation', 2, repeated=True)
  unreachable = _messages.StringField(3, repeated=True)


class GoogleLongrunningOperation(_messages.Message):
  r"""This resource represents a long-running operation that is the result of
  a network API call.

  Messages:
    MetadataValue: Service-specific metadata associated with the operation. It
      typically contains progress information and common metadata such as
      create time. Some services might not provide such metadata. Any method
      that returns a long-running operation should document the metadata type,
      if any.
    ResponseValue: The normal, successful response of the operation. If the
      original method returns no data on success, such as `Delete`, the
      response is `google.protobuf.Empty`. If the original method is standard
      `Get`/`Create`/`Update`, the response should be the resource. For other
      methods, the response should have the type `XxxResponse`, where `Xxx` is
      the original method name. For example, if the original method name is
      `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.

  Fields:
    done: If the value is `false`, it means the operation is still in
      progress. If `true`, the operation is completed, and either `error` or
      `response` is available.
    error: The error result of the operation in case of failure or
      cancellation.
    metadata: Service-specific metadata associated with the operation. It
      typically contains progress information and common metadata such as
      create time. Some services might not provide such metadata. Any method
      that returns a long-running operation should document the metadata type,
      if any.
    name: The server-assigned name, which is only unique within the same
      service that originally returns it. If you use the default HTTP mapping,
      the `name` should be a resource name ending with
      `operations/{unique_id}`.
    response: The normal, successful response of the operation. If the
      original method returns no data on success, such as `Delete`, the
      response is `google.protobuf.Empty`. If the original method is standard
      `Get`/`Create`/`Update`, the response should be the resource. For other
      methods, the response should have the type `XxxResponse`, where `Xxx` is
      the original method name. For example, if the original method name is
      `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
  """

  @encoding.MapUnrecognizedFields('additionalProperties')
  class MetadataValue(_messages.Message):
    r"""Service-specific metadata associated with the operation. It typically
    contains progress information and common metadata such as create time.
    Some services might not provide such metadata. Any method that returns a
    long-running operation should document the metadata type, if any.

    Messages:
      AdditionalProperty: An additional property for a MetadataValue object.

    Fields:
      additionalProperties: Properties of the object. Contains field @type
        with type URL.
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a MetadataValue object.

      Fields:
        key: Name of the additional property.
        value: A extra_types.JsonValue attribute.
      """

      key = _messages.StringField(1)
      value = _messages.MessageField('extra_types.JsonValue', 2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  @encoding.MapUnrecognizedFields('additionalProperties')
  class ResponseValue(_messages.Message):
    r"""The normal, successful response of the operation. If the original
    method returns no data on success, such as `Delete`, the response is
    `google.protobuf.Empty`. If the original method is standard
    `Get`/`Create`/`Update`, the response should be the resource. For other
    methods, the response should have the type `XxxResponse`, where `Xxx` is
    the original method name. For example, if the original method name is
    `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.

    Messages:
      AdditionalProperty: An additional property for a ResponseValue object.

    Fields:
      additionalProperties: Properties of the object. Contains field @type
        with type URL.
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a ResponseValue object.

      Fields:
        key: Name of the additional property.
        value: A extra_types.JsonValue attribute.
      """

      key = _messages.StringField(1)
      value = _messages.MessageField('extra_types.JsonValue', 2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  done = _messages.BooleanField(1)
  error = _messages.MessageField('GoogleRpcStatus', 2)
  metadata = _messages.MessageField('MetadataValue', 3)
  name = _messages.StringField(4)
  response = _messages.MessageField('ResponseValue', 5)


class GoogleRpcStatus(_messages.Message):
  r"""The `Status` type defines a logical error model that is suitable for
  different programming environments, including REST APIs and RPC APIs. It is
  used by [gRPC](https://github.com/grpc). Each `Status` message contains
  three pieces of data: error code, error message, and error details. You can
  find out more about this error model and how to work with it in the [API
  Design Guide](https://cloud.google.com/apis/design/errors).

  Messages:
    DetailsValueListEntry: A DetailsValueListEntry object.

  Fields:
    code: The status code, which should be an enum value of google.rpc.Code.
    details: A list of messages that carry the error details. There is a
      common set of message types for APIs to use.
    message: A developer-facing error message, which should be in English. Any
      user-facing error message should be localized and sent in the
      google.rpc.Status.details field, or localized by the client.
  """

  @encoding.MapUnrecognizedFields('additionalProperties')
  class DetailsValueListEntry(_messages.Message):
    r"""A DetailsValueListEntry object.

    Messages:
      AdditionalProperty: An additional property for a DetailsValueListEntry
        object.

    Fields:
      additionalProperties: Properties of the object. Contains field @type
        with type URL.
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a DetailsValueListEntry object.

      Fields:
        key: Name of the additional property.
        value: A extra_types.JsonValue attribute.
      """

      key = _messages.StringField(1)
      value = _messages.MessageField('extra_types.JsonValue', 2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  code = _messages.IntegerField(1, variant=_messages.Variant.INT32)
  details = _messages.MessageField('DetailsValueListEntry', 2, repeated=True)
  message = _messages.StringField(3)


class InputFile(_messages.Message):
  r"""Input file.

  Fields:
    gcsInputFile: An input file in Google Cloud Storage.
  """

  gcsInputFile = _messages.MessageField('GcsPath', 1)


class IntRangeRequirement(_messages.Message):
  r"""Device dimension value that accepts a range of integer values. If
  `minimum` is not set, the range is open-ended on the lower side. If
  `maximum` is not set, the range is open-ended on the upper side. If both are
  set, the range is inclusive [minimum, maximum].

  Fields:
    maximum: Optional. The maximum value of the range (inclusive).
    minimum: Optional. The minimum value of the range (inclusive).
  """

  maximum = _messages.IntegerField(1, variant=_messages.Variant.INT32)
  minimum = _messages.IntegerField(2, variant=_messages.Variant.INT32)


class IntRequirement(_messages.Message):
  r"""Device dimension value that accepts an integer typed parameter as value.

  Fields:
    exact: The exact integer value.
    range: The range of integer values.
  """

  exact = _messages.IntegerField(1, variant=_messages.Variant.INT32)
  range = _messages.MessageField('IntRangeRequirement', 2)


class IosRoboTest(_messages.Message):
  r"""iOS specific Robo test message."""


class IssueSummary(_messages.Message):
  r"""Describes the summary of an issue (error or warning) with structured
  details.

  Enums:
    TypeValueValuesEnum: Output only. The issue classification based on
      responsibility.

  Fields:
    message: Output only. Human-readable explanation of the issue in English.
    reason: Output only. The reason of the issue. This is a constant value
      that identifies the proximate cause of the issue. This should be at most
      63 characters and match a regular expression of `A-Z*[A-Z0-9]`, which
      represents UPPER_SNAKE_CASE.
    type: Output only. The issue classification based on responsibility.
  """

  class TypeValueValuesEnum(_messages.Enum):
    r"""Output only. The issue classification based on responsibility.

    Values:
      ISSUE_TYPE_UNSPECIFIED: Unspecified issue type. This value is unused.
      INFRA: Platform infrastructure or operational execution environment
        failure.
      CUSTOMER: Customer test script failure, malformed APK, or bad user
        configuration.
    """
    ISSUE_TYPE_UNSPECIFIED = 0
    INFRA = 1
    CUSTOMER = 2

  message = _messages.StringField(1)
  reason = _messages.StringField(2)
  type = _messages.EnumField('TypeValueValuesEnum', 3)


class JobAction(_messages.Message):
  r"""The action to be performed in a job.

  Fields:
    androidInstrumentationTest: Android instrumentation test.
    androidNativeBinary: Android native binary execution.
    roboTest: Robo test.
  """

  androidInstrumentationTest = _messages.MessageField('AndroidInstrumentationTest', 1)
  androidNativeBinary = _messages.MessageField('AndroidNativeBinary', 2)
  roboTest = _messages.MessageField('RoboTest', 3)


class JobConfig(_messages.Message):
  r"""The configuration of a job.

  Messages:
    LabelsValue: Optional. User-defined metadata for tracking or
      categorization. These labels do not affect job execution and are
      surfaced in the JobReport. The maximum number of labels is 64. Each
      label key is limited to 128 characters and must conform to POSIX
      standards. Each label value is limited to 1024 characters. The total
      size of all labels must not exceed 16 KiB.

  Fields:
    action: Required. Job action.
    allocationConfig: Required. Allocation config.
    displayName: Required. User-settable, human-readable name for the job. Up
      to 63 characters.
    labels: Optional. User-defined metadata for tracking or categorization.
      These labels do not affect job execution and are surfaced in the
      JobReport. The maximum number of labels is 64. Each label key is limited
      to 128 characters and must conform to POSIX standards. Each label value
      is limited to 1024 characters. The total size of all labels must not
      exceed 16 KiB.
    settings: Optional. Job settings.
  """

  @encoding.MapUnrecognizedFields('additionalProperties')
  class LabelsValue(_messages.Message):
    r"""Optional. User-defined metadata for tracking or categorization. These
    labels do not affect job execution and are surfaced in the JobReport. The
    maximum number of labels is 64. Each label key is limited to 128
    characters and must conform to POSIX standards. Each label value is
    limited to 1024 characters. The total size of all labels must not exceed
    16 KiB.

    Messages:
      AdditionalProperty: An additional property for a LabelsValue object.

    Fields:
      additionalProperties: Additional properties of type LabelsValue
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a LabelsValue object.

      Fields:
        key: Name of the additional property.
        value: A string attribute.
      """

      key = _messages.StringField(1)
      value = _messages.StringField(2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  action = _messages.MessageField('JobAction', 1)
  allocationConfig = _messages.MessageField('AllocationConfig', 2)
  displayName = _messages.StringField(3)
  labels = _messages.MessageField('LabelsValue', 4)
  settings = _messages.MessageField('JobSettings', 5)


class JobReport(_messages.Message):
  r"""OUTPUT_ONLY. The runtime information and result report of a job.

  Messages:
    LabelsValue: Output only. The original labels provided by the user during
      job creation.

  Fields:
    displayName: Output only. The display_name set by users in the JobConfig.
    endTime: Output only. The end time of the job.
    executionReports: Output only. Reports of the execution attempts of the
      job.
    id: Output only. The unique identifier of the job.
    labels: Output only. The original labels provided by the user during job
      creation.
    outputFiles: Output only. The output files of the job.
    result: Output only. The result of the job.
    startTime: Output only. The start time of the job.
    status: Output only. The status of the job.
    warnings: Output only. Non-fatal warnings collected during the job.
  """

  @encoding.MapUnrecognizedFields('additionalProperties')
  class LabelsValue(_messages.Message):
    r"""Output only. The original labels provided by the user during job
    creation.

    Messages:
      AdditionalProperty: An additional property for a LabelsValue object.

    Fields:
      additionalProperties: Additional properties of type LabelsValue
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a LabelsValue object.

      Fields:
        key: Name of the additional property.
        value: A string attribute.
      """

      key = _messages.StringField(1)
      value = _messages.StringField(2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  displayName = _messages.StringField(1)
  endTime = _messages.StringField(2)
  executionReports = _messages.MessageField('ExecutionReport', 3, repeated=True)
  id = _messages.StringField(4)
  labels = _messages.MessageField('LabelsValue', 5)
  outputFiles = _messages.MessageField('OutputFile', 6, repeated=True)
  result = _messages.MessageField('Result', 7)
  startTime = _messages.StringField(8)
  status = _messages.MessageField('Status', 9)
  warnings = _messages.MessageField('Warning', 10, repeated=True)


class JobSettings(_messages.Message):
  r"""Job settings to control the job execution.

  Fields:
    retrySettings: Optional. The retry settings of the job.
    timeoutSettings: Optional. The timeout settings of the job.
  """

  retrySettings = _messages.MessageField('RetrySettings', 1)
  timeoutSettings = _messages.MessageField('TimeoutSettings', 2)


class ListLocationsResponse(_messages.Message):
  r"""The response message for Locations.ListLocations.

  Fields:
    locations: A list of locations that matches the specified filter in the
      request.
    nextPageToken: The standard List next-page token.
  """

  locations = _messages.MessageField('Location', 1, repeated=True)
  nextPageToken = _messages.StringField(2)


class ListSessionsResponse(_messages.Message):
  r"""Response including listed sessions.

  Fields:
    nextPageToken: Token to receive the next page of sessions. This will be
      absent if the end of the response list has been reached.
    sessions: The list of sessions.
    unreachable: Unordered list. Sessions that could not be reached.
  """

  nextPageToken = _messages.StringField(1)
  sessions = _messages.MessageField('Session', 2, repeated=True)
  unreachable = _messages.StringField(3, repeated=True)


class Location(_messages.Message):
  r"""A resource that represents a Google Cloud location.

  Messages:
    LabelsValue: Cross-service attributes for the location. For example
      {"cloud.googleapis.com/region": "us-east1"}
    MetadataValue: Service-specific metadata. For example the available
      capacity at the given location.

  Fields:
    displayName: The friendly name for this location, typically a nearby city
      name. For example, "Tokyo".
    labels: Cross-service attributes for the location. For example
      {"cloud.googleapis.com/region": "us-east1"}
    locationId: The canonical id for this location. For example: `"us-east1"`.
    metadata: Service-specific metadata. For example the available capacity at
      the given location.
    name: Resource name for the location, which may vary between
      implementations. For example: `"projects/example-project/locations/us-
      east1"`
  """

  @encoding.MapUnrecognizedFields('additionalProperties')
  class LabelsValue(_messages.Message):
    r"""Cross-service attributes for the location. For example
    {"cloud.googleapis.com/region": "us-east1"}

    Messages:
      AdditionalProperty: An additional property for a LabelsValue object.

    Fields:
      additionalProperties: Additional properties of type LabelsValue
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a LabelsValue object.

      Fields:
        key: Name of the additional property.
        value: A string attribute.
      """

      key = _messages.StringField(1)
      value = _messages.StringField(2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  @encoding.MapUnrecognizedFields('additionalProperties')
  class MetadataValue(_messages.Message):
    r"""Service-specific metadata. For example the available capacity at the
    given location.

    Messages:
      AdditionalProperty: An additional property for a MetadataValue object.

    Fields:
      additionalProperties: Properties of the object. Contains field @type
        with type URL.
    """

    class AdditionalProperty(_messages.Message):
      r"""An additional property for a MetadataValue object.

      Fields:
        key: Name of the additional property.
        value: A extra_types.JsonValue attribute.
      """

      key = _messages.StringField(1)
      value = _messages.MessageField('extra_types.JsonValue', 2)

    additionalProperties = _messages.MessageField('AdditionalProperty', 1, repeated=True)

  displayName = _messages.StringField(1)
  labels = _messages.MessageField('LabelsValue', 2)
  locationId = _messages.StringField(3)
  metadata = _messages.MessageField('MetadataValue', 4)
  name = _messages.StringField(5)


class OperationMetadata(_messages.Message):
  r"""Represents the metadata of the long-running operation.

  Fields:
    apiVersion: Output only. API version used to start the operation.
    createTime: Output only. The time the operation was created.
    endTime: Output only. The time the operation finished running.
    requestedCancellation: Output only. Identifies whether the user has
      requested cancellation of the operation. Operations that have been
      cancelled successfully have google.longrunning.Operation.error value
      with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.
    statusMessage: Output only. Human-readable status of the operation, if
      any.
    target: Output only. Server-defined resource path for the target of the
      operation.
    verb: Output only. Name of the verb executed by the operation.
  """

  apiVersion = _messages.StringField(1)
  createTime = _messages.StringField(2)
  endTime = _messages.StringField(3)
  requestedCancellation = _messages.BooleanField(4)
  statusMessage = _messages.StringField(5)
  target = _messages.StringField(6)
  verb = _messages.StringField(7)


class OutputFile(_messages.Message):
  r"""Output file.

  Fields:
    gcsOutputFile: An output file in Google Cloud Storage.
  """

  gcsOutputFile = _messages.MessageField('GcsPath', 1)


class Result(_messages.Message):
  r"""The result of a session/job/execution.

  Enums:
    ResultTypeValueValuesEnum: Output only. The result type of the
      session/job/execution.

  Fields:
    cause: Output only. Detailed result cause diagnostics. Set if type is not
      PASSED.
    resultType: Output only. The result type of the session/job/execution.
  """

  class ResultTypeValueValuesEnum(_messages.Enum):
    r"""Output only. The result type of the session/job/execution.

    Values:
      RESULT_TYPE_UNSPECIFIED: Unknown result type.
      PASSED: Finished and passed.
      FAILED: Finished but failed. It is usually caused by the user config,
        problematic test cases, or real bugs of their apps/platform under
        test.
      ERROR: Unclassified error, can be caused by user config/tests/AUT,
        infra, or the tools that the infra is depending on.
      TIMED_OUT: Test timeout.
      CANCELLED: Test is aborted by user.
    """
    RESULT_TYPE_UNSPECIFIED = 0
    PASSED = 1
    FAILED = 2
    ERROR = 3
    TIMED_OUT = 4
    CANCELLED = 5

  cause = _messages.MessageField('ResultCause', 1)
  resultType = _messages.EnumField('ResultTypeValueValuesEnum', 2)


class ResultCause(_messages.Message):
  r"""Describes the cause of the non-passed result occurred during the
  execution.

  Fields:
    summary: Output only. Structured cause detail.
  """

  summary = _messages.MessageField('IssueSummary', 1)


class RetrySettings(_messages.Message):
  r"""Retry settings.

  Enums:
    RetryLevelValueValuesEnum: Optional. The retry level of the job. If not
      set, the default retry level is ERROR.

  Fields:
    flakyTestRetryStrategy: Optional. The default retry strategy. Allows an
      Execution to retry on test failures and infrastructure errors.
    maxAttempts: Optional. The maximum number of attempts for each shard.
    retryLevel: Optional. The retry level of the job. If not set, the default
      retry level is ERROR.
  """

  class RetryLevelValueValuesEnum(_messages.Enum):
    r"""Optional. The retry level of the job. If not set, the default retry
    level is ERROR.

    Values:
      RETRY_LEVEL_UNSPECIFIED: Unspecified retry level.
      ERROR: Retry on error.
      FAIL: Retry on failure.
    """
    RETRY_LEVEL_UNSPECIFIED = 0
    ERROR = 1
    FAIL = 2

  flakyTestRetryStrategy = _messages.MessageField('FlakyTestRetryStrategy', 1)
  maxAttempts = _messages.IntegerField(2, variant=_messages.Variant.INT32)
  retryLevel = _messages.EnumField('RetryLevelValueValuesEnum', 3)


class RoboTest(_messages.Message):
  r"""The configuration of Robo test.

  Fields:
    androidRoboTest: Android Robo test.
    iosRoboTest: iOS Robo test.
    roboScripts: Optional. The file paths of the robo scripts.
    targetApps: Required. The file paths of the apps under test. For iOS, only
      one app is supported.
  """

  androidRoboTest = _messages.MessageField('AndroidRoboTest', 1)
  iosRoboTest = _messages.MessageField('IosRoboTest', 2)
  roboScripts = _messages.MessageField('InputFile', 3, repeated=True)
  targetApps = _messages.MessageField('InputFile', 4, repeated=True)


class Session(_messages.Message):
  r"""A session resource in the AutomationSession API. At a high level,
  `Session` describes the configuration of one or multiple jobs, the state
  transitions it goes through, and the results.

  Fields:
    name: Identifier. The resource name of the session. Format:
      `projects/{project}/locations/{location}/sessions/{session}`.
    sessionConfig: Required. Configuration used to create the session.
    sessionReport: Output only. The runtime information and result report of
      the session.
  """

  name = _messages.StringField(1)
  sessionConfig = _messages.MessageField('SessionConfig', 2)
  sessionReport = _messages.MessageField('SessionReport', 3)


class SessionConfig(_messages.Message):
  r"""SessionConfig is used to create a session.

  Fields:
    displayName: Optional. User-settable, human-readable name for the session.
      Up to 63 characters.
    jobConfigs: Required. Configs of the jobs in the session.
    notificationConfig: Optional. Notification config for the session.
    outputDirectoryConfig: Required. Output file directory config for the
      session.
  """

  displayName = _messages.StringField(1)
  jobConfigs = _messages.MessageField('JobConfig', 2, repeated=True)
  notificationConfig = _messages.MessageField('SessionNotificationConfig', 3)
  outputDirectoryConfig = _messages.MessageField('SessionOutputFileDirectoryConfig', 4)


class SessionNotificationConfig(_messages.Message):
  r"""Config to control session notification.

  Fields:
    pubsubTopic: Optional. The Pub/Sub topics to which session events are
      published. Format: `projects/{project}/topics/{topic}`. See https://clou
      d.google.com/pubsub/docs/admin#topic_and_subscription_name_restrictions
  """

  pubsubTopic = _messages.StringField(1, repeated=True)


class SessionOutputFileDirectoryConfig(_messages.Message):
  r"""Config to control session output file directory.

  Fields:
    gcsOutputDirectory: The Google Cloud Storage path of the output directory.
  """

  gcsOutputDirectory = _messages.MessageField('GcsPath', 1)


class SessionReport(_messages.Message):
  r"""OUTPUT_ONLY. The runtime information and result report of a session.

  Fields:
    endTime: Output only. The end time of the session.
    id: Output only. The unique identifier of the session.
    jobReports: Output only. Reports of the jobs in the session.
    result: Output only. The result of the session.
    startTime: Output only. The start time of the session.
    status: Output only. The status of the session.
  """

  endTime = _messages.StringField(1)
  id = _messages.StringField(2)
  jobReports = _messages.MessageField('JobReport', 3, repeated=True)
  result = _messages.MessageField('Result', 4)
  startTime = _messages.StringField(5)
  status = _messages.MessageField('Status', 6)


class SmartSharding(_messages.Message):
  r"""The smart sharding strategy to split the job into multiple shards based
  on the test methods and their execution time.

  Fields:
    targetedShardDuration: Required. The targeted duration of each shard.
    timingRecord: Required. The timing record file to use for smart sharding.
      If the file is not existing, smart sharding will use default test time
      (30s) for each test method to shard the job into multiple shards. This
      file will be overwritten with the latest timing record after the job is
      completed.
  """

  targetedShardDuration = _messages.StringField(1)
  timingRecord = _messages.MessageField('InputFile', 2)


class StandardQueryParameters(_messages.Message):
  r"""Query parameters accepted by all methods.

  Enums:
    FXgafvValueValuesEnum: V1 error format.
    AltValueValuesEnum: Data format for response.

  Fields:
    f__xgafv: V1 error format.
    access_token: OAuth access token.
    alt: Data format for response.
    callback: JSONP
    fields: Selector specifying which fields to include in a partial response.
    key: API key. Your API key identifies your project and provides you with
      API access, quota, and reports. Required unless you provide an OAuth 2.0
      token.
    oauth_token: OAuth 2.0 token for the current user.
    prettyPrint: Returns response with indentations and line breaks.
    quotaUser: Available to use for quota purposes for server-side
      applications. Can be any arbitrary string assigned to a user, but should
      not exceed 40 characters.
    trace: A tracing token of the form "token:<tokenid>" to include in api
      requests.
    uploadType: Legacy upload protocol for media (e.g. "media", "multipart").
    upload_protocol: Upload protocol for media (e.g. "raw", "multipart").
  """

  class AltValueValuesEnum(_messages.Enum):
    r"""Data format for response.

    Values:
      json: Responses with Content-Type of application/json
      media: Media download with context-dependent Content-Type
      proto: Responses with Content-Type of application/x-protobuf
    """
    json = 0
    media = 1
    proto = 2

  class FXgafvValueValuesEnum(_messages.Enum):
    r"""V1 error format.

    Values:
      _1: v1 error format
      _2: v2 error format
    """
    _1 = 0
    _2 = 1

  f__xgafv = _messages.EnumField('FXgafvValueValuesEnum', 1)
  access_token = _messages.StringField(2)
  alt = _messages.EnumField('AltValueValuesEnum', 3, default='json')
  callback = _messages.StringField(4)
  fields = _messages.StringField(5)
  key = _messages.StringField(6)
  oauth_token = _messages.StringField(7)
  prettyPrint = _messages.BooleanField(8, default=True)
  quotaUser = _messages.StringField(9)
  trace = _messages.StringField(10)
  uploadType = _messages.StringField(11)
  upload_protocol = _messages.StringField(12)


class Status(_messages.Message):
  r"""The status of a session/job/execution.

  Enums:
    StatusTypeValueValuesEnum: Output only. The status type of the
      session/job/execution.

  Fields:
    progressMessages: Output only. Human-readable, detailed descriptions of
      the session/job/execution's progress. For example: "Provisioning a
      device", "Starting Test". During the course of execution new data may be
      appended to the end of progress_messages.
    statusType: Output only. The status type of the session/job/execution.
  """

  class StatusTypeValueValuesEnum(_messages.Enum):
    r"""Output only. The status type of the session/job/execution.

    Values:
      STATUS_TYPE_UNSPECIFIED: Unknown status type.
      PENDING: The session/job/execution is pending, not started yet.
      RUNNING: The session/job/execution is running.
      DONE: The session/job/execution is finished.
      SUSPENDED: The session/job/execution is suspended due to quota issues.
    """
    STATUS_TYPE_UNSPECIFIED = 0
    PENDING = 1
    RUNNING = 2
    DONE = 3
    SUSPENDED = 4

  progressMessages = _messages.StringField(1, repeated=True)
  statusType = _messages.EnumField('StatusTypeValueValuesEnum', 2)


class StringRequirement(_messages.Message):
  r"""Device dimension value that accepts a string typed parameter as value.

  Fields:
    exact: The exact string value.
    set: The set of string values.
  """

  exact = _messages.StringField(1)
  set = _messages.MessageField('StringSetRequirement', 2)


class StringSetRequirement(_messages.Message):
  r"""Device dimension value that accepts a set of string values.

  Fields:
    values: Required. A set of strings, where any of the values is considered
      a match.
  """

  values = _messages.StringField(1, repeated=True)


class TimeoutSettings(_messages.Message):
  r"""Timeout config.

  Fields:
    jobTimeout: Optional. The timeout of the job.
    shardTimeout: Optional. The timeout of each shard.
  """

  jobTimeout = _messages.StringField(1)
  shardTimeout = _messages.StringField(2)


class UniformSharding(_messages.Message):
  r"""Uniformly shards test cases given a total number of shards. It will be
  translated to `-e numShard` and `-e shardIndex` AndroidJUnitRunner
  arguments. With uniform sharding enabled, specifying either of these
  sharding arguments via `environment_variables` is invalid. Based on the
  sharding mechanism AndroidJUnitRunner uses, there is no guarantee that test
  cases will be distributed uniformly across all shards.

  Fields:
    shardCount: Required. The total number of shards to create. This must
      always be a positive number that is no greater than the total number of
      test cases. When you select one or more physical devices, the number of
      shards must be <= 50. When you select one or more ARM virtual devices,
      it must be <= 200.
  """

  shardCount = _messages.IntegerField(1, variant=_messages.Variant.INT32)


class Warning(_messages.Message):
  r"""Non-fatal operational anomaly, lint observation, or execution insight.

  Fields:
    summary: Output only. Detailed warning summary.
  """

  summary = _messages.MessageField('IssueSummary', 1)


encoding.AddCustomJsonFieldMapping(
    StandardQueryParameters, 'f__xgafv', '$.xgafv')
encoding.AddCustomJsonEnumMapping(
    StandardQueryParameters.FXgafvValueValuesEnum, '_1', '1')
encoding.AddCustomJsonEnumMapping(
    StandardQueryParameters.FXgafvValueValuesEnum, '_2', '2')
