# 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 = 'n/a'
NAME = 'GoogleMeet_grid_advanced_quick_v2'
METADATA = {
    "contacts": ["chromeos-perf-reliability-eng@google.com", "asadrieh@google.com"],
    "bug_component": "b:1025042",
    "criteria": "Tauto wrapper for SPRITE v2 Tast test.",
    "hw_agnostic": True
}
ATTRIBUTES = 'suite:performance_cuj_sprite_quick_v2'
TIME = 'long'
TEST_CATEGORY = 'Stress'
TEST_CLASS = 'Hardware'
TEST_TYPE = 'Server'
MAX_RESULT_SIZE_KB = 1024 * 1024
JOB_RETRIES = 4
ITERATION = 1
REQUIRE_SSP = True
DEPENDENCIES = ''
PY_VERSION = 3

DOC = '''
Run the Tast-based MTBF performance CUJ test internally.

Tast is an integration-testing framework analogous 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.
'''

from autotest_lib.client.common_lib import utils
from autotest_lib.utils import labellib

def report_host_info(host):
  labels = labellib.LabelsMapping(host.host_info_store.get().labels)
  labels['test'] = 'spera.GoogleMeet.grid_advanced'
  utils.write_keyval(job.resultdir, labels)
  try:
    # Try to retrieve and report DUT HWID and serial number.
    dut.setup_hwid_and_serialnumber(host)
    logging.info("Host info store: %s", host.host_info_store.get())
    utils.write_keyval(job.resultdir, host.host_info_store.get().attributes)
  except Exception as e:
    logging.warning("Failed retrieving DUT host info: %s", e)

def run(machine):
  host=hosts.create_host(machine)
  report_host_info(host)
  varslist = ['iteration=%d' % ITERATION]
  job.run_test('tast',
              host=host,
              test_exprs=['spera.GoogleMeet.grid_advanced'],
              ignore_test_failures=False,
              max_run_sec= 120 * 60,
              varslist=varslist,
              command_args=args)

parallel_simple(run, machines)