def runBenchmark()

in benchmarking/platforms/host/host_platform.py [0:0]


    def runBenchmark(self, cmd, *args, **kwargs):
        if not isinstance(cmd, list):
            cmd = shlex.split(cmd)
        platform_args = {}
        env = os.environ
        if "platform_args" in kwargs:
            platform_args = kwargs["platform_args"]
            if "env" in platform_args:
                customized_env = platform_args["env"]
                for k in customized_env:
                    env[k] = str(customized_env[k])
                platform_args["env"] = env
        # enable async if profiling was requested
        runAsync = False
        if "enable_profiling" in platform_args:
            runAsync = platform_args["enable_profiling"]
            del platform_args["enable_profiling"]
            if runAsync and not self._isGPUMachine():
                if "env" not in platform_args:
                    platform_args["env"] = env
                platform_args["env"]["GPUMON_CPU_ONLY_MODE"] = "y"
        platform_args["async"] = runAsync
        profiler_args = {}
        if "profiler_args" in platform_args:
            profiler_args = platform_args["profiler_args"]
            del platform_args["profiler_args"]

        # meta is used to store any data about the benchmark run
        # that is not the output of the command
        meta = {}

        if not runAsync:
            output, _ = processRun(cmd, **platform_args)
            if not output and getRunTimeout():
                getLogger().info("Terminating...")
                sys.exit(0)
            return output, meta
        # from_time = datetime.datetime.now()
        procAndTimeout, err = processRun(cmd, **platform_args)
        if err:
            return [], meta

        ps, _ = procAndTimeout

        # profiler_server = getProfilerByUsage("server", ps.pid)
        # if profiler_server:
        #     profilerServerFuture = profiler_server.start(**profiler_args)

        profiler_trace = getProfilerByUsage("trace", ps.pid)
        if profiler_trace:
            profiler_trace.start(**profiler_args)
            platform_args["filter"] = profiler_trace.getFilter()

        output, _ = processWait(procAndTimeout, **platform_args)

        # if profiler_server:
        #     profilerRunId = profiler_server.getId(profilerServerFuture)
        #     meta["profiler_run_id"] = profilerRunId
        #     self._sleepHost(from_time)
        if profiler_trace:
            traceryLink = profiler_trace.getLink()
            filePathes = profiler_trace.getFilePathes()
            meta["tracery_link"] = traceryLink
            meta["file_pathes"] = filePathes

        return output, meta