profilers.py revision 9453ed5b27261ed817617c7da6aa52983a71c6d3
1import os
2from autotest_utils import *
3from error import *
4
5class profilers:
6	def __init__(self, job):
7		self.job = job
8		self.list = []
9		self.profdir = job.autodir + '/profilers'
10		self.tmpdir = job.tmpdir
11
12	# add a profiler
13	def add(self, profiler, *args):
14		try:
15			sys.path.insert(0, self.job.profdir + '/' + profiler)
16			exec 'import ' + profiler
17			exec 'newprofiler = %s.%s(self)' % (profiler, profiler)
18		finally:
19			sys.path.pop(0)
20		newprofiler.name = profiler
21		newprofiler.bindir = self.profdir + '/' + profiler
22		newprofiler.srcdir = newprofiler.bindir + '/src'
23		newprofiler.tmpdir = self.tmpdir + '/' + profiler
24		update_version(newprofiler.srcdir, newprofiler.version, newprofiler.setup)
25		newprofiler.initialize(*args)
26		self.list.append(newprofiler)
27
28
29	# remove a profiler
30	def delete(self, profiler):
31		nukeme = None
32		for p in self.list:
33			if (p.name == profiler):
34				nukeme = p
35		self.list.remove(p)
36
37
38	# are any profilers enabled ?
39	def present(self):
40		if self.list:
41			return 1
42		else:
43			return 0
44
45
46	# Start all enabled profilers
47	def start(self, test):
48		for p in self.list:
49			p.start(test)
50
51
52	# Stop all enabled profilers
53	def stop(self, test):
54		for p in self.list:
55			p.stop(test)
56
57
58	# Report on all enabled profilers
59	def report(self, test):
60		for p in self.list:
61			p.report(test)
62
63