blob: 2d6fc46e11a71c18000b1a20047e75fd735b1e7d [file] [log] [blame]
import time
ssh_hosts = [hosts.create_host(m, initialize=False) for m in machines]
at_hosts = [autotest.Autotest(h) for h in ssh_hosts]
def add_profilers(at, profilers, timeout_sync, timeout_start, timeout_stop,
machines, name):
control_file = []
for profiler in profilers:
control_file.append("job.profilers.add(%s)"
% str(profiler)[1:-1])
control_file.append(("job.run_test('profiler_sync', timeout_sync=%d, "
"timeout_start=%d, timeout_stop=%d, "
"hostid='%s', masterid='%s', all_ids=%s)")
% (timeout_sync, timeout_start, timeout_stop,
at.host.hostname, "PROF_MASTER", str(machines)))
for profiler in profilers:
control_file.append("job.profilers.delete('%s')" % profiler[0])
params = ["\n".join(control_file), "profile-" + profiler[0], at.host]
return subcommand(at.run, params, name)
def wait_for_profilers(machines, timeout = 180):
# wait until the profilers have started
sync_bar = barrier("PROF_MASTER", "sync_profilers",
timeout, port=11920)
sync_bar.rendezvous_servers("PROF_MASTER", *machines)
def start_profilers(machines, timeout = 180):
# wait until the profilers have started
start_bar = barrier("PROF_MASTER", "start_profilers",
timeout, port=11920)
start_bar.rendezvous_servers("PROF_MASTER", *machines)
def stop_profilers(machines, timeout = 120):
stop_bar = barrier("PROF_MASTER", "stop_profilers", timeout, port=11920)
stop_bar.rendezvous_servers("PROF_MASTER", *machines)
def server_sleep_test(seconds):
wait_for_profilers(machines)
start_profilers(machines)
for i in range(seconds):
print "%d of %d" % (i, seconds)
time.sleep(1)
stop_profilers(machines)
def main():
timeout_sync = 180
timeout_start = 60
timeout_stop = 60
profilers = [["vmstat"], ["iostat"]]
tests = [subcommand(server_sleep_test, [20], "server_sleep_test")]
for at in at_hosts:
name = "profiled-%s" % at.host.hostname
tests.append(add_profilers(at, profilers, timeout_sync,
timeout_start, timeout_stop, machines, name))
parallel(tests)
main()