| Index: server/tests/barriertest_2client/control.srv
|
| diff --git a/server/tests/barriertest_2client/control.srv b/server/tests/barriertest_2client/control.srv
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d6a70bb0685e8845316cd186c64daa2c09312bb5
|
| --- /dev/null
|
| +++ b/server/tests/barriertest_2client/control.srv
|
| @@ -0,0 +1,78 @@
|
| +AUTHOR = "gps@google.com (Gregory P. Smith)"
|
| +TIME = "SHORT"
|
| +NAME = "barrier_2client"
|
| +TEST_CATEGORY = "Functional"
|
| +TEST_CLASS = 'Network'
|
| +TEST_TYPE = "Server"
|
| +EXPERIMENTAL = True # This is functional a test of autotest itself.
|
| +SYNC_COUNT = 2
|
| +DOC = """
|
| +A functional test of autotest's Barrier mechanisms for synchronizing
|
| +events between two clients without the help of the server.
|
| +"""
|
| +
|
| +from autotest_lib.server import utils
|
| +
|
| +def run(pair):
|
| + logging.info('Running on %s and %s', pair[0], pair[1])
|
| + host_objs = [hosts.create_host(machine) for machine in pair]
|
| + host_at_objs = [autotest.Autotest(host) for host in host_objs]
|
| +
|
| + client_control_template = """
|
| +import logging, platform, socket, traceback
|
| +try:
|
| + client_hostnames = %r
|
| + master_hostname = client_hostnames[0]
|
| + client_hostname = client_hostnames[1]
|
| +
|
| + logging.info('Testing hostname only barrier')
|
| + barrier = job.barrier(platform.node(), 'barriertest_2client', 120)
|
| + logging.info('rendezvous-ing')
|
| + barrier.rendezvous(master_hostname, client_hostname)
|
| + logging.info('done.')
|
| +
|
| + logging.info('Testing local identifier barrier')
|
| + barrier = job.barrier(platform.node() + '#id0', 'barriertest_2client', 120)
|
| + logging.info('rendezvous-ing')
|
| + barrier.rendezvous(master_hostname + '#id0',
|
| + client_hostname + '#id0')
|
| + logging.info('done.')
|
| +
|
| + logging.info('Testing IP@ barrier')
|
| + barrier = job.barrier(socket.gethostbyname(platform.node()),
|
| + 'barriertest_2client', 120)
|
| + logging.info('rendezvous-ing')
|
| + barrier.rendezvous(socket.gethostbyname(master_hostname),
|
| + socket.gethostbyname(client_hostname))
|
| + logging.info('done.')
|
| +
|
| + logging.info('Testing IP@ barrier with ids')
|
| + barrier = job.barrier(socket.gethostbyname(platform.node()) + '#42',
|
| + 'barriertest_2client', 120)
|
| + logging.info('rendezvous-ing')
|
| + barrier.rendezvous(socket.gethostbyname(master_hostname) + '#42',
|
| + socket.gethostbyname(client_hostname) + '#42')
|
| + logging.info('done.')
|
| +except:
|
| + traceback.print_exc()
|
| + raise
|
| +"""
|
| + client_controls = [client_control_template % (pair,) for host in host_objs]
|
| +
|
| + subcommand_list = []
|
| + for host, host_at, control in zip(host_objs, host_at_objs, client_controls):
|
| + subcommand_list.append(subcommand(host_at.run,
|
| + (control, host.hostname)))
|
| +
|
| + parallel(subcommand_list)
|
| +
|
| +
|
| +# grab the pairs (and failures)
|
| +(pairs, failures) = utils.form_ntuples_from_machines(machines, 2)
|
| +
|
| +# log the failures
|
| +for failure in failures:
|
| + job.record("FAIL", failure[0], "barrier_2client", failure[1])
|
| +
|
| +# now run through each pair and run
|
| +job.parallel_simple(run, pairs, log=False)
|
|
|