# 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.9.0_r14.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
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='9.0_r14.x86.all.CtsAccessibilityServiceTestCases_-_CtsAutoFillServiceTestCases',
        test_name='cheets_CTS_Instant.9.0_r14.x86.all.CtsAccessibilityServiceTestCases_-_CtsAutoFillServiceTestCases',
        run_template=['run', 'commandAndExit', 'cts-instant', '--exclude-filter', 'CtsPreferenceTestCases', '--exclude-filter', 'CtsPrintTestCases', '--exclude-filter', 'CtsLocationTestCases', '--exclude-filter', 'CtsDpiTestCases', '--exclude-filter', 'CtsDatabaseTestCases', '--exclude-filter', 'CtsPdfTestCases', '--exclude-filter', 'CtsSystemUiTestCases', '--exclude-filter', 'CtsUsbTests', '--exclude-filter', 'CtsBackgroundRestrictionsTestCases', '--exclude-filter', 'CtsWidgetTestCases', '--exclude-filter', 'CtsUsageStatsTestCases', '--exclude-filter', 'CtsSampleHostTestCases', '--exclude-filter', 'CtsPermissionTestCases', '--exclude-filter', 'CtsInputMethodServiceHostTestCases', '--exclude-filter', 'CtsInputMethodTestCases', '--exclude-filter', 'CtsDisplayTestCases', '--exclude-filter', 'CtsWindowManagerDeviceTestCases', '--exclude-filter', 'CtsFragmentTestCases', '--exclude-filter', 'CtsFragmentTestCasesSdk26', '--exclude-filter', 'CtsUiDeviceTestCases', '--exclude-filter', 'CtsHostsideWebViewTests', '--exclude-filter', 'CtsUiAutomationTestCases', '--exclude-filter', 'CtsGestureTestCases', '--exclude-filter', 'CtsTextTestCases', '--exclude-filter', 'CtsColorModeTestCases', '--exclude-filter', 'CtsPreference2TestCases', '--exclude-filter', 'CtsSampleDeviceTestCases', '--exclude-filter', 'CtsOsHostTestCases', '--exclude-filter', 'CtsCameraTestCases', '--exclude-filter', 'CtsUidIsolationTestCases', '--exclude-filter', 'CtsLocation2TestCases', '--exclude-filter', 'CtsExternalSourcesTestCases', '--exclude-filter', 'CtsMediaTestCases', '--exclude-filter', 'CtsViewTestCases', '--exclude-filter', 'CtsFileSystemTestCases', '--exclude-filter', 'CtsPermission2TestCases', '--exclude-filter', 'CtsToastTestCases', '--exclude-filter', 'CtsDreamsTestCases', '--exclude-filter', 'CtsMultiUserTestCases', '--exclude-filter', 'CtsMediaHostTestCases', '--exclude-filter', 'CtsEdiHostTestCases', '--logcat-on-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='all.CtsAccessibilityServiceTestCases_-_CtsAutoFillServiceTestCases',
        target_plan=None,
        bundle='x86',
        uri='gs://chromeos-arc-images/cts/bundle/P/android-cts_instant-9.0_r14-linux_x86-x86.zip',
        login_precondition_commands=['lsblk -do NAME,RM | sed -n s/1$//p | xargs -n1 eject'],
        timeout=18000)

parallel_simple(run_TS, machines)
