From 8da7f22f1d6c848ec3960bc9fe43f0fd0b75fe0e Mon Sep 17 00:00:00 2001 From: Andrey Somsikov Date: Thu, 11 Feb 2021 09:59:37 +0300 Subject: [PATCH] Activate OV environment from cond comp test_infer (#4244) --- tests/conditional_compilation/conftest.py | 3 --- tests/conditional_compilation/test_infer.py | 11 ++++++--- tests/lib/install_pkg.py | 16 +++++++++++++ tests/lib/proc_utils.py | 25 ++++++++++++++++++++- 4 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 tests/lib/install_pkg.py diff --git a/tests/conditional_compilation/conftest.py b/tests/conditional_compilation/conftest.py index c98bde44a4c..6c4202c1e44 100644 --- a/tests/conditional_compilation/conftest.py +++ b/tests/conditional_compilation/conftest.py @@ -38,19 +38,16 @@ def pytest_addoption(parser): ) parser.addoption( "--sea_runtool", - required=True, type=Path, help="Path to sea_runtool.py" ) parser.addoption( "--benchmark_app", - required=True, type=Path, help="Path to the benchmark_app tool", ) parser.addoption( "--collector_dir", - required=True, type=Path, help="Path to a directory with a collector binary", ) diff --git a/tests/conditional_compilation/test_infer.py b/tests/conditional_compilation/test_infer.py index 85df816b94f..8b15ed8591c 100644 --- a/tests/conditional_compilation/test_infer.py +++ b/tests/conditional_compilation/test_infer.py @@ -4,14 +4,19 @@ """ Test inference with conditional compiled binaries. """ - +import sys from proc_utils import cmd_exec # pylint: disable=import-error +from install_pkg import get_openvino_environment # pylint: disable=import-error -def test_infer(model, benchmark_app): +def test_infer(test_id, model, artifacts): """ Test inference with conditional compiled binaries """ + install_prefix = artifacts / test_id / "install_pkg" + exe_suffix = ".exe" if sys.platform == "win32" else "" + benchmark_app = install_prefix / "bin" / f"benchmark_app{exe_suffix}" returncode, _ = cmd_exec( - [str(benchmark_app), "-d=CPU", f"-m={model}", "-niter=1", "-nireq=1"] + [str(benchmark_app), "-d=CPU", f"-m={model}", "-niter=1", "-nireq=1"], + env=get_openvino_environment(install_prefix), ) assert returncode == 0, f"Command exited with non-zero status {returncode}" diff --git a/tests/lib/install_pkg.py b/tests/lib/install_pkg.py new file mode 100644 index 00000000000..2d89ccfbeba --- /dev/null +++ b/tests/lib/install_pkg.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 +# Copyright (C) 2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +""" Common utilities for OpenVINO install package. +""" +import sys +from pathlib import Path +from proc_utils import get_env_from # pylint: disable=import-error + + +def get_openvino_environment(install_prefix: Path): + """ Get OpenVINO environment variables + """ + script = "setupvars.bat" if sys.platform == "win32" else "setupvars.sh" + return get_env_from(install_prefix / "bin" / script) diff --git a/tests/lib/proc_utils.py b/tests/lib/proc_utils.py index e207369a513..ebf99867bfe 100644 --- a/tests/lib/proc_utils.py +++ b/tests/lib/proc_utils.py @@ -5,11 +5,33 @@ """ Common utilities for working with processes. """ +import errno +import os import logging import subprocess +import sys -def cmd_exec(args, log=None, verbose=True): +def get_env_from(script): + """ Get environment set by a shell script + """ + if not os.path.exists(str(script)): + raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), str(script)) + env = {} + if sys.platform == "win32": + cmd = f'"{script}" && set' + else: + cmd = f'source "{script}" && env' + dump = subprocess.check_output(cmd, shell=True, universal_newlines=True).strip() + for line in dump.split("\n"): + # split by first '=' + pair = [str(val).strip() for val in line.split("=", 1)] + if len(pair) > 1 and pair[0]: # ignore invalid entries + env[pair[0]] = pair[1] + return env + + +def cmd_exec(args, env=None, log=None, verbose=True): """ Run cmd using subprocess with logging and other improvements """ if log is None: @@ -22,6 +44,7 @@ def cmd_exec(args, log=None, verbose=True): proc = subprocess.Popen( args, + env=env, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, encoding="utf-8",