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

DOC = "hardware_StorageQualSuspendStress_storage_qual_external_suspend_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_StorageQualSuspendStress", host=hosts.create_host(machine),
            client_ip=machine, tag='suspend', duration=14400, other_dev=True)

parallel_simple(run, machines)
