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

# 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_storage_qual_cq_1_suspend"
ATTRIBUTES = "suite:storage_qual_cq"
PURPOSE = "hardware_StorageStress_storage_qual_cq_1_suspend"
TIME = "long"
TEST_CATEGORY = "Stress"
TEST_CLASS = "Hardware"
TEST_TYPE = "server"
REQUIRE_SSP = True
PRIORITY = 80
DEPENDENCIES = "storage_qual_cq_1"
JOB_RETRIES = 0
FAST = False

DOC = "hardware_StorageStress_storage_qual_cq_1_suspend"

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='suspend', power_command='suspend', storage_test_command='full_write', suspend_duration=120, duration=1800.0, cq=True)

parallel_simple(run, machines)
