scripts/applications/applications_util.py (29 lines of code) (raw):

#!/usr/bin/env python3 # Copyright 2004-present Facebook. All Rights Reserved. # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. """Utility class for running system commands of C++ binaries""" import os import sys import time dir_scripts = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) dir_root = os.path.dirname(dir_scripts) dir_res = os.path.join(dir_root, "res") binary_dir = os.path.join(dir_root, "build/bin") sys.path.append(dir_root) sys.path.append(os.path.join(dir_scripts, "util")) from scripts.util.system_util import gen_args_from_flags, run_command class AppUtil: def __init__(self, binary_name, flags): self.binary_name = binary_name self.flags = flags def run_app(self): """Runs desired binary and returns the time elapsed during execution.""" cmd = self.gen_command() start_time = time.time() run_command(cmd) end_time = time.time() return end_time - start_time def gen_command(self): """Constructs the command to run the binary. Returns: str: Command to run. """ check_binary_availability(self.binary_name) args_string = gen_args_from_flags(self.flags) return f"{os.path.join(binary_dir, self.binary_name)} {args_string}" def check_binary_availability(binary_name): """Checks whether or not the binary exists. Exits with error code 1 if the binary does not exist. """ binary_path = os.path.join(binary_dir, binary_name) if not os.path.isfile(binary_path): print(f"No application {binary_name} found at {binary_path}") exit(1)