blob: ead0c4a4c5aac017b75ce8fe1be39937acc32f69 [file] [log] [blame]
# 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,
b0.rendezvous_servers(mainid, hostid)
b1 = self.job.barrier(hostid, "start_profilers", timeout_start,
b1.rendezvous_servers(mainid, hostid)
b2 = self.job.barrier(hostid, "local_sync_profilers", timeout_sync)
b3 = self.job.barrier(hostid, "stop_profilers", timeout_stop,
b3.rendezvous_servers(mainid, hostid)
b4 = self.job.barrier(hostid, "finish_profilers", timeout_stop,
b4.rendezvous_servers(mainid, hostid)