
# 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_StorageQualTrimStress_trim_1"
ATTRIBUTES = "suite:storage_qual_quick"
PURPOSE = "hardware_StorageQualTrimStress_trim_1"
TIME = "long"
TEST_CATEGORY = "Stress"
TEST_CLASS = "Hardware"
TEST_TYPE = "server"
REQUIRE_SSP = True
PRIORITY = 60
DEPENDENCIES = "trim"
JOB_RETRIES = 0
FAST = False

DOC = "hardware_StorageQualTrimStress_trim_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_StorageQualTrimStress", host=hosts.create_host(machine),
            client_ip=machine, duration=1800.0)

parallel_simple(run, machines)
