# Copyright 2018 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_CTS_Instant.internal.arm.all.CtsSampleDeviceTestCases_-_CtsWindowManagerDeviceTestCases'
ATTRIBUTES = 'suite:arc-cts, suite:arc-cts-qual'
DEPENDENCIES = 'arc, cts_cpu_arm'
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 512000
PY_VERSION = 3
DOC = 'Run module CtsSampleDeviceTestCases, CtsSampleHostTestCases, CtsSystemUiTestCases, CtsTextTestCases, CtsToastTestCases, CtsUiAutomationTestCases, CtsUiDeviceTestCases, CtsUidIsolationTestCases, CtsUsageStatsTestCases, CtsUsbTests, CtsViewTestCases, CtsWidgetTestCases, CtsWindowManagerDeviceTestCases of the Android Compatibility Test Suite for Instant Apps (CTS Instant) using arm ABI in the ARC++ container.'

def run_TS(machine):
    host_list = [hosts.create_host(machine)]
    job.run_test(
        'cheets_CTS_Instant',
        hosts=host_list,
        iterations=1,
        max_retry=9,
        tag='internal.arm.all.CtsSampleDeviceTestCases_-_CtsWindowManagerDeviceTestCases',
        test_name='cheets_CTS_Instant.internal.arm.all.CtsSampleDeviceTestCases_-_CtsWindowManagerDeviceTestCases',
        run_template=['run', 'commandAndExit', 'cts-instant', '--exclude-filter', 'CtsAccessibilityServiceTestCases', '--exclude-filter', 'CtsAccessibilityTestCases', '--exclude-filter', 'CtsAccountManagerTestCases', '--exclude-filter', 'CtsAnimationTestCases', '--exclude-filter', 'CtsAppSecurityHostTestCases', '--exclude-filter', 'CtsAppWidgetTestCases', '--exclude-filter', 'CtsAutoFillServiceTestCases', '--exclude-filter', 'CtsBackgroundRestrictionsTestCases', '--exclude-filter', 'CtsCameraTestCases', '--exclude-filter', 'CtsColorModeTestCases', '--exclude-filter', 'CtsDatabaseTestCases', '--exclude-filter', 'CtsDisplayTestCases', '--exclude-filter', 'CtsDpiTestCases', '--exclude-filter', 'CtsDreamsTestCases', '--exclude-filter', 'CtsEdiHostTestCases', '--exclude-filter', 'CtsExternalSourcesTestCases', '--exclude-filter', 'CtsFileSystemTestCases', '--exclude-filter', 'CtsFragmentTestCases', '--exclude-filter', 'CtsFragmentTestCasesSdk26', '--exclude-filter', 'CtsGestureTestCases', '--exclude-filter', 'CtsHostsideWebViewTests', '--exclude-filter', 'CtsInputMethodServiceHostTestCases', '--exclude-filter', 'CtsInputMethodTestCases', '--exclude-filter', 'CtsLocation2TestCases', '--exclude-filter', 'CtsLocationTestCases', '--exclude-filter', 'CtsMediaHostTestCases', '--exclude-filter', 'CtsMediaTestCases', '--exclude-filter', 'CtsMultiUserTestCases', '--exclude-filter', 'CtsOsHostTestCases', '--exclude-filter', 'CtsPdfTestCases', '--exclude-filter', 'CtsPermission2TestCases', '--exclude-filter', 'CtsPermissionTestCases', '--exclude-filter', 'CtsPreference2TestCases', '--exclude-filter', 'CtsPreferenceTestCases', '--exclude-filter', 'CtsPrintTestCases', '--logcat-on-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='all.CtsSampleDeviceTestCases_-_CtsWindowManagerDeviceTestCases',
        target_plan=None,
        bundle='arm',
        uri='LATEST',
        timeout=18000)

parallel_simple(run_TS, machines)
