AUTHOR = "gps@google.com (Gregory P. Smith)" TIME = "SHORT" NAME = "barrier_2client" TEST_CATEGORY = "Functional" TEST_CLASS = 'Network' TEST_TYPE = "Server" 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 from six.moves import zip 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)