
# 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_retention_soak_1"
ATTRIBUTES = "suite:storage_qual"
PURPOSE = "hardware_StorageStress_retention_soak_1"
TIME = "long"
TEST_CATEGORY = "Stress"
TEST_CLASS = "Hardware"
TEST_TYPE = "server"
REQUIRE_SSP = True
PRIORITY = 90
DEPENDENCIES = "retention"
JOB_RETRIES = 0
FAST = False

DOC = "hardware_StorageStress_retention_soak_1"

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)
