OLD | NEW |
| (Empty) |
1 AUTHOR = "gps@google.com (Gregory P. Smith)" | |
2 TIME = "SHORT" | |
3 NAME = "barrier_2client" | |
4 TEST_CATEGORY = "Functional" | |
5 TEST_CLASS = 'Network' | |
6 TEST_TYPE = "Server" | |
7 EXPERIMENTAL = True # This is functional a test of autotest itself. | |
8 SYNC_COUNT = 2 | |
9 DOC = """ | |
10 A functional test of autotest's Barrier mechanisms for synchronizing | |
11 events between two clients without the help of the server. | |
12 """ | |
13 | |
14 from autotest_lib.server import utils | |
15 | |
16 def run(pair): | |
17 logging.info('Running on %s and %s', pair[0], pair[1]) | |
18 host_objs = [hosts.create_host(machine) for machine in pair] | |
19 host_at_objs = [autotest.Autotest(host) for host in host_objs] | |
20 | |
21 client_control_template = """ | |
22 import logging, platform, socket, traceback | |
23 try: | |
24 client_hostnames = %r | |
25 master_hostname = client_hostnames[0] | |
26 client_hostname = client_hostnames[1] | |
27 | |
28 logging.info('Testing hostname only barrier') | |
29 barrier = job.barrier(platform.node(), 'barriertest_2client', 120) | |
30 logging.info('rendezvous-ing') | |
31 barrier.rendezvous(master_hostname, client_hostname) | |
32 logging.info('done.') | |
33 | |
34 logging.info('Testing local identifier barrier') | |
35 barrier = job.barrier(platform.node() + '#id0', 'barriertest_2client', 120) | |
36 logging.info('rendezvous-ing') | |
37 barrier.rendezvous(master_hostname + '#id0', | |
38 client_hostname + '#id0') | |
39 logging.info('done.') | |
40 | |
41 logging.info('Testing IP@ barrier') | |
42 barrier = job.barrier(socket.gethostbyname(platform.node()), | |
43 'barriertest_2client', 120) | |
44 logging.info('rendezvous-ing') | |
45 barrier.rendezvous(socket.gethostbyname(master_hostname), | |
46 socket.gethostbyname(client_hostname)) | |
47 logging.info('done.') | |
48 | |
49 logging.info('Testing IP@ barrier with ids') | |
50 barrier = job.barrier(socket.gethostbyname(platform.node()) + '#42', | |
51 'barriertest_2client', 120) | |
52 logging.info('rendezvous-ing') | |
53 barrier.rendezvous(socket.gethostbyname(master_hostname) + '#42', | |
54 socket.gethostbyname(client_hostname) + '#42') | |
55 logging.info('done.') | |
56 except: | |
57 traceback.print_exc() | |
58 raise | |
59 """ | |
60 client_controls = [client_control_template % (pair,) for host in host_objs] | |
61 | |
62 subcommand_list = [] | |
63 for host, host_at, control in zip(host_objs, host_at_objs, client_controls): | |
64 subcommand_list.append(subcommand(host_at.run, | |
65 (control, host.hostname))) | |
66 | |
67 parallel(subcommand_list) | |
68 | |
69 | |
70 # grab the pairs (and failures) | |
71 (pairs, failures) = utils.form_ntuples_from_machines(machines, 2) | |
72 | |
73 # log the failures | |
74 for failure in failures: | |
75 job.record("FAIL", failure[0], "barrier_2client", failure[1]) | |
76 | |
77 # now run through each pair and run | |
78 job.parallel_simple(run, pairs, log=False) | |
OLD | NEW |