blob: 27f34200df711676e90ab6b8a1bcd9a52fe03625 [file] [log] [blame]
mbligh4a3e6972008-01-16 17:55:05 +00001#
2# Copyright 2007 Google Inc. All Rights Reserved.
3
4"""Runs profilers on a machine when no autotest job is running.
5
6This is used to profile a task when the task is running on a machine that is not
7running through autotest.
8"""
9
10__author__ = 'cranger@google.com (Colby Ranger)'
11
mblighfa29a2a2008-05-16 22:48:09 +000012import common
mblighccb9e182008-04-17 15:42:10 +000013from autotest_lib.client.common_lib import barrier
mbligh4a3e6972008-01-16 17:55:05 +000014
15
16def generate_test(machines, hostname, profilers, timeout_start, timeout_stop,
jadmanski0afbb632008-06-06 21:10:57 +000017 timeout_sync=180):
18 control_file = []
19 for profiler in profilers:
20 control_file.append("job.profilers.add(%s)"
21 % str(profiler)[1:-1]) # Remove parens
mbligh4a3e6972008-01-16 17:55:05 +000022
jadmanski0afbb632008-06-06 21:10:57 +000023 control_file.append("job.run_test('barriertest',%d,%d,%d,'%s','%s',%s)"
24 % (timeout_sync, timeout_start, timeout_stop,
25 hostname, "PROF_MASTER", str(machines)))
mbligh4a3e6972008-01-16 17:55:05 +000026
jadmanski0afbb632008-06-06 21:10:57 +000027 for profiler in profilers:
28 control_file.append("job.profilers.delete('%s')" % profiler[0])
mbligh4a3e6972008-01-16 17:55:05 +000029
jadmanski0afbb632008-06-06 21:10:57 +000030 return "\n".join(control_file)
mbligh4a3e6972008-01-16 17:55:05 +000031
32
33def wait_for_profilers(machines, timeout = 300):
jadmanski0afbb632008-06-06 21:10:57 +000034 sb = barrier.barrier("PROF_MASTER", "sync_profilers",
mblighb65c5b02009-08-03 16:46:50 +000035 timeout, port=11920)
mbligh9c12f772009-06-22 19:03:55 +000036 sb.rendezvous_servers("PROF_MASTER", *machines)
mbligh4a3e6972008-01-16 17:55:05 +000037
38
39def start_profilers(machines, timeout = 120):
jadmanski0afbb632008-06-06 21:10:57 +000040 sb = barrier.barrier("PROF_MASTER", "start_profilers",
mblighb65c5b02009-08-03 16:46:50 +000041 timeout, port=11920)
mbligh9c12f772009-06-22 19:03:55 +000042 sb.rendezvous_servers("PROF_MASTER", *machines)
mbligh4a3e6972008-01-16 17:55:05 +000043
44
45def stop_profilers(machines, timeout = 120):
jadmanski0afbb632008-06-06 21:10:57 +000046 sb = barrier.barrier("PROF_MASTER", "stop_profilers",
mblighb65c5b02009-08-03 16:46:50 +000047 timeout, port=11920)
mbligh9c12f772009-06-22 19:03:55 +000048 sb.rendezvous_servers("PROF_MASTER", *machines)