Index: client/tests/profiler_sync/profiler_sync.py |
diff --git a/client/tests/profiler_sync/profiler_sync.py b/client/tests/profiler_sync/profiler_sync.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8f28eb0a7a7e39cffe00052ade153fca32bf2c76 |
--- /dev/null |
+++ b/client/tests/profiler_sync/profiler_sync.py |
@@ -0,0 +1,53 @@ |
+# 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, masterid, 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 master to be reached. |
+ @param timeout_stop: Seconds to wait for this host and the master to |
+ reach each of the stop_profilers and finish_profilers barriers. |
+ @param hostid: This host's id (typically the hostname). |
+ @param masterid: The master 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(masterid, hostid) |
+ |
+ b1 = self.job.barrier(hostid, "start_profilers", timeout_start, |
+ listen_server=barrier_server) |
+ b1.rendezvous_servers(masterid, 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(masterid, hostid) |
+ |
+ profilers.stop(self) |
+ profilers.report(self) |
+ |
+ b4 = self.job.barrier(hostid, "finish_profilers", timeout_stop, |
+ listen_server=barrier_server) |
+ b4.rendezvous_servers(masterid, hostid) |
+ |
+ barrier_server.close() |