xref: /aosp_15_r20/external/autotest/autotest_lib/client/bin/profilers.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Liimport os, sys
2*9c5db199SXin Liimport common
3*9c5db199SXin Li
4*9c5db199SXin Lifrom autotest_lib.client.common_lib import utils, error, profiler_manager
5*9c5db199SXin Li
6*9c5db199SXin Li
7*9c5db199SXin Liclass profilers(profiler_manager.profiler_manager):
8*9c5db199SXin Li    def load_profiler(self, profiler, args, dargs):
9*9c5db199SXin Li        prof_dir = os.path.join(self.job.autodir, "profilers", profiler)
10*9c5db199SXin Li
11*9c5db199SXin Li        try:
12*9c5db199SXin Li            self.job.install_pkg(profiler, "profiler", prof_dir)
13*9c5db199SXin Li        except error.PackageInstallError:
14*9c5db199SXin Li            pass
15*9c5db199SXin Li
16*9c5db199SXin Li        if not os.path.exists(prof_dir):
17*9c5db199SXin Li            raise profiler_manager.ProfilerNotPresentError(profiler)
18*9c5db199SXin Li
19*9c5db199SXin Li        profiler_module = common.setup_modules.import_module(
20*9c5db199SXin Li            profiler, "autotest_lib.client.profilers.%s" % profiler)
21*9c5db199SXin Li
22*9c5db199SXin Li        newprofiler = getattr(profiler_module, profiler)(self.job)
23*9c5db199SXin Li
24*9c5db199SXin Li        newprofiler.name = profiler
25*9c5db199SXin Li        newprofiler.bindir = os.path.join(prof_dir)
26*9c5db199SXin Li        newprofiler.srcdir = os.path.join(newprofiler.bindir, 'src')
27*9c5db199SXin Li        newprofiler.tmpdir = os.path.join(self.tmpdir, profiler)
28*9c5db199SXin Li        newprofiler.initialize(*args, **dargs)
29*9c5db199SXin Li        utils.update_version(newprofiler.srcdir, newprofiler.preserve_srcdir,
30*9c5db199SXin Li                             newprofiler.version, newprofiler.setup,
31*9c5db199SXin Li                             *args, **dargs)
32*9c5db199SXin Li
33*9c5db199SXin Li        return newprofiler
34