blob: 8f28eb0a7a7e39cffe00052ade153fca32bf2c76 [file] [log] [blame]
mblighce1dd952010-04-08 18:21:33 +00001# This "test" is used by autotest_lib.server.standalone_profilers to start
2# and stop profilers on a collection of hosts at approximately the same
3# time by synchronizing using barriers.
4
5from autotest_lib.client.bin import test
6from autotest_lib.client.common_lib import barrier
7
8class profiler_sync(test.test):
9 version = 1
10
11
12 def execute(self, timeout_sync, timeout_start, timeout_stop,
13 hostid, masterid, all_ids):
14 """
15 @param timeout_sync: Seconds to wait for the synchronization of all
16 hosts that will be launching profilers. (local_sync_profilers)
17 @param timeout_start: Seconds to wait for each of the initial
18 sync_profilers and start_profilers barriers between this
19 host and the master to be reached.
20 @param timeout_stop: Seconds to wait for this host and the master to
21 reach each of the stop_profilers and finish_profilers barriers.
22 @param hostid: This host's id (typically the hostname).
23 @param masterid: The master barrier host id where autoserv is running.
24 @param all_ids: A list of all hosts to synchronize profilers on.
25 """
26 profilers = self.job.profilers
27
28 barrier_server = barrier.listen_server(port=11920)
29 b0 = self.job.barrier(hostid, "sync_profilers", timeout_start,
30 listen_server=barrier_server)
31 b0.rendezvous_servers(masterid, hostid)
32
33 b1 = self.job.barrier(hostid, "start_profilers", timeout_start,
34 listen_server=barrier_server)
35 b1.rendezvous_servers(masterid, hostid)
36
37 b2 = self.job.barrier(hostid, "local_sync_profilers", timeout_sync)
38 b2.rendezvous(*all_ids)
39
40 profilers.start(self)
41
42 b3 = self.job.barrier(hostid, "stop_profilers", timeout_stop,
43 listen_server=barrier_server)
44 b3.rendezvous_servers(masterid, hostid)
45
46 profilers.stop(self)
47 profilers.report(self)
48
49 b4 = self.job.barrier(hostid, "finish_profilers", timeout_stop,
50 listen_server=barrier_server)
51 b4.rendezvous_servers(masterid, hostid)
52
53 barrier_server.close()