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