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

# This control file was auto-generated by generate_storage_qual_control_files.py
# Do not edit this file!

from autotest_lib.client.common_lib import utils

AUTHOR = "chromeos-storage"
NAME = "hardware_StorageQualTrimStress_storage_qual_cq_2_0"
METADATA = {
    "contacts": ["chromeos-storage@google.com"],
    "bug_component": "b:974567",
    "criteria": "Part of storage AVL qualification suite",
    "hw_agnostic": False
}
ATTRIBUTES = "suite:storage_qual_cq"
PURPOSE = "hardware_StorageQualTrimStress_storage_qual_cq_2_0"
TIME = "long"
TEST_CATEGORY = "Stress"
TEST_CLASS = "Hardware"
TEST_TYPE = "server"
PY_VERSION = 3
REQUIRE_SSP = True
PRIORITY = 80
DEPENDENCIES = "storage_qual_cq_2"
JOB_RETRIES = 0
FAST = False

DOC = "hardware_StorageQualTrimStress_storage_qual_cq_2_0"

keyval = dict()
keyval['storage_qual_version'] = 1
try:
    keyval['bug_id'] = bug_id
    keyval['part_id'] = part_id
except NameError:
    # bug_id and/or part_id variables not defined
    pass
utils.write_keyval(job.resultdir, keyval)

def run(machine):
    job.run_test("hardware_StorageQualTrimStress", host=hosts.create_host(machine),
            client_ip=machine, duration=1800.0, cq=True)

parallel_simple(run, machines)
