# Copyright 2016 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This file has been automatically generated. Do not edit!

AUTHOR = 'ARC++ Team'
NAME = 'cheets_GTS.8.0_r3.all.GtsMemoryHostTestCases_-_GtsYouTubeTestCases'
ATTRIBUTES = 'suite:arc-gts-qual'
DEPENDENCIES = 'arc'
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 307200
DOC = 'Run module GtsMemoryHostTestCases, GtsMemoryTestCases, GtsModuleMetadataTestCases, GtsNetStatsHostTestCases, GtsNetTestCases, GtsNetworkStackHostTestCases, GtsNetworkWatchlistTestCases, GtsNmgiarcTestCases, GtsNoPermissionTestCases, GtsNoPermissionTestCases25, GtsNotificationTestCases, GtsOemLockServiceTestCases, GtsOsTestCases, GtsPackageInstallTestCases, GtsPackageInstallerTapjackingTestCases, GtsPackageManagerHostTestCases, GtsPackageNameCertPairsDeviceTestCases, GtsPackageUninstallTestCases, GtsPartnerBookmarksTestCases, GtsPermissionControllerHostTestCases, GtsPermissionTestCases, GtsPlacementTestCases, GtsPlayAutoInstallTestCases, GtsPlayFsiHostTestCases, GtsPlayFsiTestCases, GtsPlayStoreHostTestCases, GtsPrintTestCases, GtsPrivacyTestCases, GtsPropertiesTestCases, GtsRegulationComplianceTestCases, GtsRlzTestCases, GtsSampleDeviceTestCases, GtsSampleDynamicConfigTestCases, GtsSampleHostTestCases, GtsScreenshotHostTestCases, GtsSearchHostTestCases, GtsSecurityHostTestCases, GtsSensorHostTestCases, GtsSettingsHostTestCases, GtsSettingsTestCases, GtsSetupWizardHostTestCases, GtsSetupWizardNoPermissionTestCases, GtsSimAppDialogTestCases, GtsSmartBatteryDeviceTestCases, GtsSmsCallLogTestCases, GtsSsaidHostTestCases, GtsStagedInstallHostTestCases, GtsStatsdHostTestCases, GtsStorageTestCases, GtsSupervisionTestCases, GtsSuspendAppsPermissionTestCases, GtsSuspendAppsTestCases, GtsTelecomManagerTests, GtsTelephonyNumberVerificationHostCases, GtsTelephonyTestCases, GtsTestHarnessModeTestCases, GtsTetheringTestCases, GtsTvBugReportTestCases, GtsTvHostTestCases, GtsTvTestCases, GtsUnofficialApisUsageTestCases, GtsUsageStatsTestCases, GtsUserspaceRebootHostSideTestCases, GtsViewTestCases, GtsVndkDependencyTestCases, GtsWebViewHostTestCases, GtsWebViewTestCases, GtsWellbeingHostTestCases, GtsWellbeingPermissionPolicyTestCases, GtsWellbeingTestCases, GtsYouTubeTestCases of the Android Google Test Suite (GTS) in the ARC++ container.'

def run_TS(machine):
    host_list = [hosts.create_host(machine)]
    job.run_test(
        'cheets_GTS',
        hosts=host_list,
        iterations=1,
        max_retry=9,
        needs_push_media=True,
        tag='8.0_r3.all.GtsMemoryHostTestCases_-_GtsYouTubeTestCases',
        test_name='cheets_GTS.8.0_r3.all.GtsMemoryHostTestCases_-_GtsYouTubeTestCases',
        authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
        run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsMemoryHostTestCases', '--include-filter', 'GtsMemoryTestCases', '--include-filter', 'GtsModuleMetadataTestCases', '--include-filter', 'GtsNetStatsHostTestCases', '--include-filter', 'GtsNetTestCases', '--include-filter', 'GtsNetworkStackHostTestCases', '--include-filter', 'GtsNetworkWatchlistTestCases', '--include-filter', 'GtsNmgiarcTestCases', '--include-filter', 'GtsNoPermissionTestCases', '--include-filter', 'GtsNoPermissionTestCases25', '--include-filter', 'GtsNotificationTestCases', '--include-filter', 'GtsOemLockServiceTestCases', '--include-filter', 'GtsOsTestCases', '--include-filter', 'GtsPackageInstallTestCases', '--include-filter', 'GtsPackageInstallerTapjackingTestCases', '--include-filter', 'GtsPackageManagerHostTestCases', '--include-filter', 'GtsPackageNameCertPairsDeviceTestCases', '--include-filter', 'GtsPackageUninstallTestCases', '--include-filter', 'GtsPartnerBookmarksTestCases', '--include-filter', 'GtsPermissionControllerHostTestCases', '--include-filter', 'GtsPermissionTestCases', '--include-filter', 'GtsPlacementTestCases', '--include-filter', 'GtsPlayAutoInstallTestCases', '--include-filter', 'GtsPlayFsiHostTestCases', '--include-filter', 'GtsPlayFsiTestCases', '--include-filter', 'GtsPlayStoreHostTestCases', '--include-filter', 'GtsPrintTestCases', '--include-filter', 'GtsPrivacyTestCases', '--include-filter', 'GtsPropertiesTestCases', '--include-filter', 'GtsRegulationComplianceTestCases', '--include-filter', 'GtsRlzTestCases', '--include-filter', 'GtsSampleDeviceTestCases', '--include-filter', 'GtsSampleDynamicConfigTestCases', '--include-filter', 'GtsSampleHostTestCases', '--include-filter', 'GtsScreenshotHostTestCases', '--include-filter', 'GtsSearchHostTestCases', '--include-filter', 'GtsSecurityHostTestCases', '--include-filter', 'GtsSensorHostTestCases', '--include-filter', 'GtsSettingsHostTestCases', '--include-filter', 'GtsSettingsTestCases', '--include-filter', 'GtsSetupWizardHostTestCases', '--include-filter', 'GtsSetupWizardNoPermissionTestCases', '--include-filter', 'GtsSimAppDialogTestCases', '--include-filter', 'GtsSmartBatteryDeviceTestCases', '--include-filter', 'GtsSmsCallLogTestCases', '--include-filter', 'GtsSsaidHostTestCases', '--include-filter', 'GtsStagedInstallHostTestCases', '--include-filter', 'GtsStatsdHostTestCases', '--include-filter', 'GtsStorageTestCases', '--include-filter', 'GtsSupervisionTestCases', '--include-filter', 'GtsSuspendAppsPermissionTestCases', '--include-filter', 'GtsSuspendAppsTestCases', '--include-filter', 'GtsTelecomManagerTests', '--include-filter', 'GtsTelephonyNumberVerificationHostCases', '--include-filter', 'GtsTelephonyTestCases', '--include-filter', 'GtsTestHarnessModeTestCases', '--include-filter', 'GtsTetheringTestCases', '--include-filter', 'GtsTvBugReportTestCases', '--include-filter', 'GtsTvHostTestCases', '--include-filter', 'GtsTvTestCases', '--include-filter', 'GtsUnofficialApisUsageTestCases', '--include-filter', 'GtsUsageStatsTestCases', '--include-filter', 'GtsUserspaceRebootHostSideTestCases', '--include-filter', 'GtsViewTestCases', '--include-filter', 'GtsVndkDependencyTestCases', '--include-filter', 'GtsWebViewHostTestCases', '--include-filter', 'GtsWebViewTestCases', '--include-filter', 'GtsWellbeingHostTestCases', '--include-filter', 'GtsWellbeingPermissionPolicyTestCases', '--include-filter', 'GtsWellbeingTestCases', '--include-filter', 'GtsYouTubeTestCases', '--ignore-business-logic-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='all.GtsMemoryHostTestCases_-_GtsYouTubeTestCases',
        target_plan=None,
        uri='LATEST',
        use_jdk9=True,
        timeout=86400)

parallel_simple(run_TS, machines)
