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

AUTHOR = 'Chromium OS team'
NAME = 'tast.cellular-ota-multisim-stable'
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:cellular_ota'
MAX_RESULT_SIZE_KB = 1024 * 1024
DEPENDENCIES = "carrier:multisim"

DOC = '''
Run the stable Tast tests which verify Cellular multi-sim functionality.

"group:cellular_multisim" indicates that the test runs on DUTs with a Cellular
modem and multiple provisioned SIM slots.
  * "cellular_multisim_unstable": Unstable tests that will be discluded from
    this suite.

Tast is an integration-testing framework analagous to the test-running portion
of Autotest. See https://chromium.googlesource.com/chromiumos/platform/tast/ for
more information.

See http://go/tast-failures for information about investigating failures.
'''

def run(machine):
    job.run_test('tast',
                 host=hosts.create_host(machine),
                 test_exprs=['("group:cellular_multisim" && !"cellular_multisim_unstable")'],
                 ignore_test_failures=True, max_run_sec=10800,
                 command_args=args)

parallel_simple(run, machines)
