| import os |
| from autotest_utils import * |
| from error import * |
| |
| class profilers: |
| def __init__(self, job): |
| self.job = job |
| self.list = [] |
| self.profdir = job.autodir + '/profilers' |
| self.tmpdir = job.tmpdir |
| |
| # add a profiler |
| def add(self, profiler, *args): |
| try: |
| sys.path.insert(0, self.job.profdir + '/' + profiler) |
| exec 'import ' + profiler |
| exec 'newprofiler = %s.%s(self)' % (profiler, profiler) |
| finally: |
| sys.path.pop(0) |
| newprofiler.name = profiler |
| newprofiler.bindir = self.profdir + '/' + profiler |
| newprofiler.srcdir = newprofiler.bindir + '/src' |
| newprofiler.tmpdir = self.tmpdir + '/' + profiler |
| update_version(newprofiler.srcdir, newprofiler.version, newprofiler.setup) |
| newprofiler.initialize(*args) |
| self.list.append(newprofiler) |
| |
| |
| # remove a profiler |
| def delete(self, profiler): |
| nukeme = None |
| for p in self.list: |
| if (p.name == profiler): |
| nukeme = p |
| self.list.remove(p) |
| |
| |
| # are any profilers enabled ? |
| def present(self): |
| if self.list: |
| return 1 |
| else: |
| return 0 |
| |
| |
| # Start all enabled profilers |
| def start(self, test): |
| for p in self.list: |
| p.start(test) |
| |
| |
| # Stop all enabled profilers |
| def stop(self, test): |
| for p in self.list: |
| p.stop(test) |
| |
| |
| # Report on all enabled profilers |
| def report(self, test): |
| for p in self.list: |
| p.report(test) |
| |