Added test for checking lib sizes, when using conditional compilation option (#4292)

This commit is contained in:
Ilya Sharikov 2021-03-17 17:56:47 +03:00 committed by GitHub
parent 38d16e24e9
commit a382934a80
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 77 additions and 0 deletions

View File

@ -58,6 +58,11 @@ def pytest_addoption(parser):
type=Path,
help="Artifacts directory where tests write output or read input",
)
parser.addoption(
"--openvino_ref",
type=Path,
help="Path to root directory with installed OpenVINO",
)
def pytest_generate_tests(metafunc):
@ -103,3 +108,9 @@ def collector_dir(request):
def artifacts(request):
"""Fixture function for command-line option."""
return request.config.getoption("artifacts")
@pytest.fixture(scope="session")
def openvino_root_dir(request):
"""Fixture function for command-line option."""
return request.config.getoption("openvino_ref")

View File

@ -0,0 +1,38 @@
from pathlib import Path
import logging
from path_utils import get_lib_path # pylint: disable=import-error
def get_lib_sizes(path, libraries):
"""Function for getting lib sizes by lib names"""
assert Path.exists(path), f'Directory {path} isn\'t created'
result = {}
error_lib = []
for lib in libraries:
try:
result[lib] = Path(path).joinpath(get_lib_path(lib)).stat().st_size
except FileNotFoundError as error:
error_lib.append(str(error))
assert len(error_lib) == 0, 'Following libraries couldn\'t be found: \n{}'.format('\n'.join(error_lib))
return result
def test_size_tracking_libs(openvino_root_dir, test_id, model, artifacts):
log = logging.getLogger('size_tracking')
libraries = ['inference_engine_transformations', 'MKLDNNPlugin', 'ngraph']
ref_libs_size = get_lib_sizes(openvino_root_dir, libraries)
install_prefix = artifacts / test_id / 'install_pkg'
lib_sizes = get_lib_sizes(install_prefix, libraries)
for lib in libraries:
lib_size_diff = ref_libs_size[lib] - lib_sizes[lib]
lib_size_diff_percent = lib_size_diff / ref_libs_size[lib] * 100
log.info('{}: old - {}kB; new - {}kB; diff = {}kB({:.2f}%)'.format(lib,
ref_libs_size[lib] / 1024,
lib_sizes[lib] / 1024,
lib_size_diff / 1024,
lib_size_diff_percent))
res = [lib for lib in libraries if lib_sizes[lib] > ref_libs_size[lib]]
assert len(res) == 0, f'These libraries: {res} have increased in size!'

View File

@ -6,6 +6,8 @@
"""
import os
import sys
from pathlib import Path
def expand_env_vars(obj):
@ -20,3 +22,29 @@ def expand_env_vars(obj):
else:
obj = os.path.expandvars(obj)
return obj
def get_os_name():
"""Function for getting OS name"""
if sys.platform == "win32":
os_name = 'Windows'
else:
os_name = 'Linux'
return os_name
def get_lib_path(lib_name):
"""Function for getting absolute path in OpenVINO directory to specific lib"""
os_name = get_os_name()
all_libs = {
'inference_engine_transformations': {
'Windows': Path('deployment_tools/inference_engine/bin/intel64/Release/inference_engine_transformations.dll'),
'Linux': Path('deployment_tools/inference_engine/lib/intel64/libinference_engine_transformations.so')},
'MKLDNNPlugin': {
'Windows': Path('deployment_tools/inference_engine/bin/intel64/Release/MKLDNNPlugin.dll'),
'Linux': Path('deployment_tools/inference_engine/lib/intel64/libMKLDNNPlugin.so')},
'ngraph': {
'Windows': Path('deployment_tools/ngraph/lib/ngraph.dll'),
'Linux': Path('deployment_tools/ngraph/lib/libngraph.so')}
}
return all_libs[lib_name][os_name]