54 lines
2.2 KiB
Python
54 lines
2.2 KiB
Python
# This "test" is used by autotest_lib.server.standalone_profilers to start
|
|
# and stop profilers on a collection of hosts at approximately the same
|
|
# time by synchronizing using barriers.
|
|
|
|
from autotest_lib.client.bin import test
|
|
from autotest_lib.client.common_lib import barrier
|
|
|
|
class profiler_sync(test.test):
|
|
version = 1
|
|
|
|
|
|
def execute(self, timeout_sync, timeout_start, timeout_stop,
|
|
hostid, mainid, all_ids):
|
|
"""
|
|
@param timeout_sync: Seconds to wait for the synchronization of all
|
|
hosts that will be launching profilers. (local_sync_profilers)
|
|
@param timeout_start: Seconds to wait for each of the initial
|
|
sync_profilers and start_profilers barriers between this
|
|
host and the main to be reached.
|
|
@param timeout_stop: Seconds to wait for this host and the main to
|
|
reach each of the stop_profilers and finish_profilers barriers.
|
|
@param hostid: This host's id (typically the hostname).
|
|
@param mainid: The main barrier host id where autoserv is running.
|
|
@param all_ids: A list of all hosts to synchronize profilers on.
|
|
"""
|
|
profilers = self.job.profilers
|
|
|
|
barrier_server = barrier.listen_server(port=11920)
|
|
b0 = self.job.barrier(hostid, "sync_profilers", timeout_start,
|
|
listen_server=barrier_server)
|
|
b0.rendezvous_servers(mainid, hostid)
|
|
|
|
b1 = self.job.barrier(hostid, "start_profilers", timeout_start,
|
|
listen_server=barrier_server)
|
|
b1.rendezvous_servers(mainid, hostid)
|
|
|
|
b2 = self.job.barrier(hostid, "local_sync_profilers", timeout_sync)
|
|
b2.rendezvous(*all_ids)
|
|
|
|
profilers.start(self)
|
|
|
|
b3 = self.job.barrier(hostid, "stop_profilers", timeout_stop,
|
|
listen_server=barrier_server)
|
|
b3.rendezvous_servers(mainid, hostid)
|
|
|
|
profilers.stop(self)
|
|
profilers.report(self)
|
|
|
|
b4 = self.job.barrier(hostid, "finish_profilers", timeout_stop,
|
|
listen_server=barrier_server)
|
|
b4.rendezvous_servers(mainid, hostid)
|
|
|
|
barrier_server.close()
|