# Copyright 2022 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# __GENERATED_BY_GENERATE_CONTROLFILES_PY__:DEV

# This file has been automatically generated. Do not edit!
from autotest_lib.server.cros.tradefed import wifi_utils
import pipes

AUTHOR = 'n/a'
NAME = 'cheets_CTS_T.internal.x86.CtsJobScheduler'
METADATA = {
    "contacts": ["arc-cts-eng@google.com"],
    "bug_component": "b:183644",
    "criteria": "A part of Android CTS",
}
ATTRIBUTES = 'suite:arc-cts, suite:arc-cts-vm, suite:arc-cts-x86-7'
DEPENDENCIES = 'arc, cts_abi_x86'
HW_DEPS = ['android-vm-tm']
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 512000
DOC = 'n/a'

def run_TS(machine):
    host_list = [hosts.create_host(machine)]
    ssid, wifipass = wifi_utils.get_wifi_ssid_pass(machine['hostname'])
    job.run_test(
        'cheets_CTS_T',
        hosts=host_list,
        iterations=1,
        tag='internal.x86.CtsJobScheduler',
        test_name='cheets_CTS_T.internal.x86.CtsJobScheduler',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsJobSchedulerSharedUidTestCases', '--include-filter', 'CtsJobSchedulerSharedUidTestCases[secondary_user]', '--include-filter', 'CtsJobSchedulerTestCases', '--include-filter', 'CtsJobSchedulerTestCases[secondary_user]', '--logcat-on-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='CtsJobScheduler',
        target_plan=None,
        bundle='x86',
        uri='DEV',
        precondition_commands=['adb shell cmd wifi add-network %s %s %s' % (pipes.quote(ssid), 'open' if wifipass == '' else 'wpa', pipes.quote(wifipass)), 'adb shell cmd wifi connect-network %s' % pipes.quote(ssid), 'adb shell dumpsys wifi transports -eth'],
        timeout=9000)

parallel_simple(run_TS, machines)
