# 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.x86.all.CtsAccessibilityServiceTestCases_-_CtsAutoFillServiceTestCases'
ATTRIBUTES = 'suite:arc-cts, suite:arc-cts-qual'
DEPENDENCIES = 'arc, cts_cpu_x86'
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 512000
PY_VERSION = 3
DOC = 'Run module CtsAccessibilityServiceTestCases, CtsAccessibilityTestCases, CtsAccountManagerTestCases, CtsAnimationTestCases, CtsAppSecurityHostTestCases, CtsAppWidgetTestCases, CtsAutoFillServiceTestCases of the Android Compatibility Test Suite for Instant Apps (CTS Instant) using x86 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.x86.all.CtsAccessibilityServiceTestCases_-_CtsAutoFillServiceTestCases',
        test_name='cheets_CTS_Instant.internal.x86.all.CtsAccessibilityServiceTestCases_-_CtsAutoFillServiceTestCases',
        run_template=['run', 'commandAndExit', 'cts-instant', '--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', '--exclude-filter', 'CtsSampleDeviceTestCases', '--exclude-filter', 'CtsSampleHostTestCases', '--exclude-filter', 'CtsSystemUiTestCases', '--exclude-filter', 'CtsTextTestCases', '--exclude-filter', 'CtsToastTestCases', '--exclude-filter', 'CtsUiAutomationTestCases', '--exclude-filter', 'CtsUiDeviceTestCases', '--exclude-filter', 'CtsUidIsolationTestCases', '--exclude-filter', 'CtsUsageStatsTestCases', '--exclude-filter', 'CtsUsbTests', '--exclude-filter', 'CtsViewTestCases', '--exclude-filter', 'CtsWidgetTestCases', '--exclude-filter', 'CtsWindowManagerDeviceTestCases', '--logcat-on-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='all.CtsAccessibilityServiceTestCases_-_CtsAutoFillServiceTestCases',
        target_plan=None,
        bundle='x86',
        uri='LATEST',
        login_precondition_commands=['lsblk -do NAME,RM | sed -n s/1$//p | xargs -n1 eject'],
        timeout=18000)

parallel_simple(run_TS, machines)
