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

AUTHOR = 'Chromium OS team'
NAME = 'tast.cellular-callbox-cmx'
METADATA = {
    "contacts": ["chromeos-cellular-team@google.com"],
    "bug_component": "b:167157", # ChromeOS > Platform > Connectivity > Cellular
    }
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:cellular_callbox'
MAX_RESULT_SIZE_KB = 1024 * 1024
PY_VERSION = 3
DEPENDENCIES = "carrier:cmx500"

DOC = '''
Run the Tast tests designed specifically for CMX500.

"group:cellular" indicates that the test runs on DUTs with a Cellular modem.
"cellular_cmx_callbox": Attribute used to select tests that specifically run on DUTs with CMX500 callbox.
"cellular_unstable": Unstable tests that will be excluded from this suite.
"cellular_run_isolated": Tests that should be run isolated to prevent interference.
'''
import json
import tempfile
import yaml
from autotest_lib.server.site_tests.tast import tast
def run(machine):
    host = hosts.create_host(machine)
    # companion_hosts will only be available in control file if testbed contains
    # them, else we will get a NameError.
    try:
        companions = hosts.create_companion_hosts(companion_hosts)
    except NameError:
        companions = []

    command_args, varslist = tast.split_arguments(args)
    varslist.append("companionCount=%d" % len(companions))

    host.reboot()
    job.run_test('tast',
                host=host,
                test_exprs=['(("group:cellular" && "cellular_cmx_callbox" && !"cellular_unstable" && !"cellular_run_isolated"))'],
                ignore_test_failures=True, max_run_sec=20000,
                companion_duts={f'cd{i+1}' : c for i, c in enumerate(companions)},
                command_args=command_args,
                varslist=varslist)

parallel_simple(run, machines)
