
# 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_StorageStress_trim_soak_4"
METADATA = {
    "contacts": ["chromeos-storage@google.com"],
    "bug_component": "b:974567",
    "criteria": "Part of storage AVL qualification suite",
    "hw_agnostic": False
}
ATTRIBUTES = "suite:storage_qual"
PURPOSE = "hardware_StorageStress_trim_soak_4"
TIME = "long"
TEST_CATEGORY = "Stress"
TEST_CLASS = "Hardware"
TEST_TYPE = "server"
PY_VERSION = 3
REQUIRE_SSP = True
PRIORITY = 90
DEPENDENCIES = "trim"
JOB_RETRIES = 0
FAST = False

DOC = "hardware_StorageStress_trim_soak_4"

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_StorageStress", host=hosts.create_host(machine),
            client_ip=machine, tag='soak', power_command='wait', storage_test_command='full_write', suspend_duration=300, duration=14400)

parallel_simple(run, machines)
