# 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.

# TODO Integrate these changes back into cts_N as soon as partners have a
# chance to configure their DUT's correctly and documentation is complete.

AUTHOR = 'ARC++ Team'
NAME = 'cheets_CTS_N.arm.CtsNetTestCasesPreconditions'
ATTRIBUTES = 'suite:cts_N_Pre'
DEPENDENCIES = 'arc'
JOB_RETRIES = 2
TEST_TYPE = 'server'
TIME = 'LENGTHY'

DOC = ('Run module CtsNetTestCases of the '
       'Android 7.1_r6 Compatibility Test Suite (CTS), build 4009365,'
       'using arm ABI in the ARC++ container.')

if not ssid:
  ssid = 'GoogleGuest'

if not wifipass:
  wifipass = ''

def run_CTS(machine):
    host = hosts.create_host(machine)
    job.run_test(
        'cheets_CTS_N',
        host=host,
        iterations=1,
        max_retry=3,
        needs_push_media=False,
        tag='CtsNetTestCases',
        target_module='CtsNetTestCases',
        bundle='arm',
        timeout=3600,
        pre_condition_commands=[
           '/usr/local/autotest/cros/scripts/wifi connect %s %s' % (ssid, wifipass),
           '/usr/local/autotest/cros/scripts/reorder-services-moblab.sh wifi',
        ])

parallel_simple(run_CTS, machines)
