1f20b9cd8a026723ff11204281d281eac7b06c81dmblighimport os, sys
24205d8965f7fdda6a9c24100be912f36f04a3fc9mblighimport common
361cf6e7a4102ad86dc1ec4d2068232253c47a769jadmanski
4c27c231ee840e8ce97012477ba1f917674375a1ejadmanskifrom autotest_lib.client.common_lib import utils, error, profiler_manager
5edf430c7ce814132b65d826582f139946c032ffambligh
6c69530b170d60b913131a2a65cf0e3c8b81bc700mbligh
7043e1132d1af7969a8f67871188ef34e050c2186jadmanskiclass profilers(profiler_manager.profiler_manager):
8043e1132d1af7969a8f67871188ef34e050c2186jadmanski    def load_profiler(self, profiler, args, dargs):
9043e1132d1af7969a8f67871188ef34e050c2186jadmanski        prof_dir = os.path.join(self.job.autodir, "profilers", profiler)
10c5ddfd1f71caef9ec0c84c53ef7db42fcdc33e1cmbligh
11c5ddfd1f71caef9ec0c84c53ef7db42fcdc33e1cmbligh        try:
1261cf6e7a4102ad86dc1ec4d2068232253c47a769jadmanski            self.job.install_pkg(profiler, "profiler", prof_dir)
13c27c231ee840e8ce97012477ba1f917674375a1ejadmanski        except error.PackageInstallError:
14c5ddfd1f71caef9ec0c84c53ef7db42fcdc33e1cmbligh            pass
15c5ddfd1f71caef9ec0c84c53ef7db42fcdc33e1cmbligh
16c5ddfd1f71caef9ec0c84c53ef7db42fcdc33e1cmbligh        if not os.path.exists(prof_dir):
17043e1132d1af7969a8f67871188ef34e050c2186jadmanski            raise profiler_manager.ProfilerNotPresentError(profiler)
1861cf6e7a4102ad86dc1ec4d2068232253c47a769jadmanski
1961cf6e7a4102ad86dc1ec4d2068232253c47a769jadmanski        profiler_module = common.setup_modules.import_module(
2061cf6e7a4102ad86dc1ec4d2068232253c47a769jadmanski            profiler, "autotest_lib.client.profilers.%s" % profiler)
21c5ddfd1f71caef9ec0c84c53ef7db42fcdc33e1cmbligh
229a3717f664b62231dafbcd1dec24ffd7eb743b5cmbligh        newprofiler = getattr(profiler_module, profiler)(self.job)
23c5ddfd1f71caef9ec0c84c53ef7db42fcdc33e1cmbligh
240afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski        newprofiler.name = profiler
25043e1132d1af7969a8f67871188ef34e050c2186jadmanski        newprofiler.bindir = os.path.join(prof_dir)
26c5ddfd1f71caef9ec0c84c53ef7db42fcdc33e1cmbligh        newprofiler.srcdir = os.path.join(newprofiler.bindir, 'src')
27c5ddfd1f71caef9ec0c84c53ef7db42fcdc33e1cmbligh        newprofiler.tmpdir = os.path.join(self.tmpdir, profiler)
288079ceeb536b330a8de3515f5281e01b1d11ebb1mbligh        newprofiler.initialize(*args, **dargs)
290afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski        utils.update_version(newprofiler.srcdir, newprofiler.preserve_srcdir,
300afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski                             newprofiler.version, newprofiler.setup,
310afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski                             *args, **dargs)
3261cf6e7a4102ad86dc1ec4d2068232253c47a769jadmanski
3361cf6e7a4102ad86dc1ec4d2068232253c47a769jadmanski        return newprofiler
34