普通文本  |  46行  |  1.42 KB

import time
from autotest_lib.client.common_lib import error
from autotest_lib.client.bin import test, utils


class profiler_test(test.test):
    version = 2


    def initialize(self, profiler=None, profiler_args=(), profiler_dargs=None):
        """
        Initialize this test with the profiler name, args and dargs.

        @param profiler: Profiler name.
        @param profiler_args: Profiler non-keyword arguments.
        @param profiler_dargs: Profiler keyword arguments.
        """
        if not profiler:
            raise error.TestError('No profiler specified.')
        self._profiler = profiler
        self._profiler_args = profiler_args
        self._profiler_dargs = profiler_dargs or {}


    def execute(self, seconds=5):
        """
        Add and start the profiler, sleep some seconds, stop and delete it.

        We override "execute" and not "run_once" because we need to control
        profilers here and in "run_once" it would be too late for that.

        @param seconds: Number of seconds to sleep while the profiler is
                running.
        """
        profilers = self.job.profilers
        profilers.add(self._profiler, *self._profiler_args,
                      **self._profiler_dargs)
        profilers.start(self)

        time.sleep(seconds)

        profilers.stop(self)
        profilers.report(self)
        # TODO: check for profiler result files?
        profilers.delete(self._profiler)