| 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))]) |