You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.7 KiB
79 lines
2.7 KiB
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)
|