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