55 lines
2.2 KiB
Text
55 lines
2.2 KiB
Text
AUTHOR = 'Ashwin Ganti (aganti@google.com)'
|
|
TIME ='SHORT'
|
|
DEPENDENCIES = 'STANDARD'
|
|
NAME = 'Parallel Sleeptest'
|
|
TEST_TYPE = 'server'
|
|
TEST_CATEGORY = 'Functional'
|
|
DOC = """\
|
|
This control file executes multiple sleeptest tests on a machine
|
|
starting at the same time. Multiple machines can also be specified
|
|
wherein the specified set of tests are executed in parallel
|
|
on each of the machines.
|
|
|
|
To run a different set of tests do the following:
|
|
1. Replace the sleeptest control files with the required test control files
|
|
2. Give tag names for each of the tests
|
|
3. Run the control file through autoserv using
|
|
server/autoserv <this control file path> -m <machines> -r <subdir to contain the run results>
|
|
"""
|
|
|
|
from autotest_lib.client.common_lib import utils
|
|
|
|
# Specify the path to the client control files and the tag names
|
|
# for the respective jobs here.
|
|
tests = [("client/tests/sleeptest/control", "sleeptag0"),
|
|
("client/tests/sleeptest/control", "sleeptag1"),
|
|
]
|
|
|
|
def run_client(at, machine_name, machine_num, instance):
|
|
control = open(os.path.join(job.autodir,tests[instance][0])).read()
|
|
'''
|
|
The get_sync_control_file method basically does the setup of the barriers
|
|
required to start these multiple tests at the same time and returns the
|
|
modified control file (that contains the barrier code added to it)
|
|
Check client/common_lib/utils.py for detailed documentation of how this
|
|
method sets up the barriers.
|
|
'''
|
|
control_new = utils.get_sync_control_file(control, machine_name,
|
|
machine_num, instance, len(tests))
|
|
'''
|
|
This control file is now simply passed in to the run method along with
|
|
a tag name of the test and a 'parallel_flag' that identifies this scenario
|
|
of running multiple tests on the same machine at the same time.
|
|
'''
|
|
at.run(control_new, tag='%s' % tests[instance][1], parallel_flag=True)
|
|
|
|
def main(machine_name, machine_num):
|
|
host = hosts.create_host(machine_name)
|
|
at = autotest.Autotest(host)
|
|
at.install()
|
|
|
|
parallel([subcommand(run_client, [at, machine_name, machine_num, i])
|
|
for i in range(len(tests))])
|
|
|
|
parallel([subcommand(main, [machines[i], i], machines[i])
|
|
for i in range(len(machines))])
|