xref: /aosp_15_r20/external/armnn/python/pyarmnn/test/test_setup.py (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker# Copyright © 2020 Arm Ltd. All rights reserved.
2*89c4ff92SAndroid Build Coastguard Worker# Copyright 2020 NXP
3*89c4ff92SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Workerimport os
5*89c4ff92SAndroid Build Coastguard Workerimport sys
6*89c4ff92SAndroid Build Coastguard Workerimport shutil
7*89c4ff92SAndroid Build Coastguard Worker
8*89c4ff92SAndroid Build Coastguard Workerimport pytest
9*89c4ff92SAndroid Build Coastguard Worker
10*89c4ff92SAndroid Build Coastguard Workersys.path.append(os.path.abspath('..'))
11*89c4ff92SAndroid Build Coastguard Workerfrom setup import find_armnn, find_includes, linux_gcc_lib_search, check_armnn_version
12*89c4ff92SAndroid Build Coastguard Worker
13*89c4ff92SAndroid Build Coastguard Worker
14*89c4ff92SAndroid Build Coastguard Worker@pytest.fixture(autouse=True)
15*89c4ff92SAndroid Build Coastguard Workerdef _setup_armnn(tmpdir):
16*89c4ff92SAndroid Build Coastguard Worker    includes = str(os.path.join(tmpdir, 'include'))
17*89c4ff92SAndroid Build Coastguard Worker    libs = str(os.path.join(tmpdir, 'lib'))
18*89c4ff92SAndroid Build Coastguard Worker    os.environ["TEST_ARMNN_INCLUDE"] = includes
19*89c4ff92SAndroid Build Coastguard Worker    os.environ["TEST_ARMNN_LIB"] = libs
20*89c4ff92SAndroid Build Coastguard Worker    os.environ["EMPTY_ARMNN_INCLUDE"] = ''
21*89c4ff92SAndroid Build Coastguard Worker
22*89c4ff92SAndroid Build Coastguard Worker    os.mkdir(includes)
23*89c4ff92SAndroid Build Coastguard Worker    os.mkdir(libs)
24*89c4ff92SAndroid Build Coastguard Worker
25*89c4ff92SAndroid Build Coastguard Worker    with open(os.path.join(libs, "libarmnn.so"), "w"):
26*89c4ff92SAndroid Build Coastguard Worker        pass
27*89c4ff92SAndroid Build Coastguard Worker
28*89c4ff92SAndroid Build Coastguard Worker    with open(os.path.join(libs, "libarmnnSomeThing1.so"), "w"):
29*89c4ff92SAndroid Build Coastguard Worker        pass
30*89c4ff92SAndroid Build Coastguard Worker    with open(os.path.join(libs, "libarmnnSomeThing1.so.1"), "w"):
31*89c4ff92SAndroid Build Coastguard Worker        pass
32*89c4ff92SAndroid Build Coastguard Worker    with open(os.path.join(libs, "libarmnnSomeThing1.so.1.2"), "w"):
33*89c4ff92SAndroid Build Coastguard Worker        pass
34*89c4ff92SAndroid Build Coastguard Worker
35*89c4ff92SAndroid Build Coastguard Worker    with open(os.path.join(libs, "libarmnnSomeThing2.so"), "w"):
36*89c4ff92SAndroid Build Coastguard Worker        pass
37*89c4ff92SAndroid Build Coastguard Worker
38*89c4ff92SAndroid Build Coastguard Worker    with open(os.path.join(libs, "libSomeThing3.so"), "w"):
39*89c4ff92SAndroid Build Coastguard Worker        pass
40*89c4ff92SAndroid Build Coastguard Worker
41*89c4ff92SAndroid Build Coastguard Worker    yield
42*89c4ff92SAndroid Build Coastguard Worker
43*89c4ff92SAndroid Build Coastguard Worker    del os.environ["TEST_ARMNN_INCLUDE"]
44*89c4ff92SAndroid Build Coastguard Worker    del os.environ["TEST_ARMNN_LIB"]
45*89c4ff92SAndroid Build Coastguard Worker    del os.environ["EMPTY_ARMNN_INCLUDE"]
46*89c4ff92SAndroid Build Coastguard Worker    shutil.rmtree(includes)
47*89c4ff92SAndroid Build Coastguard Worker    shutil.rmtree(libs)
48*89c4ff92SAndroid Build Coastguard Worker
49*89c4ff92SAndroid Build Coastguard Worker
50*89c4ff92SAndroid Build Coastguard Workerdef test_find_armnn(tmpdir):
51*89c4ff92SAndroid Build Coastguard Worker    lib_names, lib_paths = find_armnn(lib_name='libarmnn*.so',
52*89c4ff92SAndroid Build Coastguard Worker                                      armnn_libs_env="TEST_ARMNN_LIB",
53*89c4ff92SAndroid Build Coastguard Worker                                      default_lib_search=("/lib",))
54*89c4ff92SAndroid Build Coastguard Worker    armnn_includes = find_includes(armnn_include_env="TEST_ARMNN_INCLUDE")
55*89c4ff92SAndroid Build Coastguard Worker
56*89c4ff92SAndroid Build Coastguard Worker    assert [':libarmnn.so', ':libarmnnSomeThing1.so', ':libarmnnSomeThing2.so'] == sorted(lib_names)
57*89c4ff92SAndroid Build Coastguard Worker    assert [os.path.join(tmpdir, 'lib')] == lib_paths
58*89c4ff92SAndroid Build Coastguard Worker    assert [os.path.join(tmpdir, 'include')] == armnn_includes
59*89c4ff92SAndroid Build Coastguard Worker
60*89c4ff92SAndroid Build Coastguard Worker
61*89c4ff92SAndroid Build Coastguard Workerdef test_find_armnn_default_path(tmpdir):
62*89c4ff92SAndroid Build Coastguard Worker    lib_names, lib_paths = find_armnn(lib_name='libarmnn*.so',
63*89c4ff92SAndroid Build Coastguard Worker                                      armnn_libs_env="RUBBISH_LIB",
64*89c4ff92SAndroid Build Coastguard Worker                                      default_lib_search=(os.environ["TEST_ARMNN_LIB"],))
65*89c4ff92SAndroid Build Coastguard Worker    armnn_includes = find_includes('TEST_ARMNN_INCLUDE')
66*89c4ff92SAndroid Build Coastguard Worker    assert [':libarmnn.so', ':libarmnnSomeThing1.so', ':libarmnnSomeThing2.so'] == sorted(lib_names)
67*89c4ff92SAndroid Build Coastguard Worker    assert [os.path.join(tmpdir, 'lib')] == lib_paths
68*89c4ff92SAndroid Build Coastguard Worker    assert [os.path.join(tmpdir, 'include')] == armnn_includes
69*89c4ff92SAndroid Build Coastguard Worker
70*89c4ff92SAndroid Build Coastguard Worker
71*89c4ff92SAndroid Build Coastguard Workerdef test_not_find_armnn(tmpdir):
72*89c4ff92SAndroid Build Coastguard Worker    with pytest.raises(RuntimeError) as err:
73*89c4ff92SAndroid Build Coastguard Worker        find_armnn(lib_name='libarmnn*.so', armnn_libs_env="RUBBISH_LIB",
74*89c4ff92SAndroid Build Coastguard Worker                   default_lib_search=("/lib",))
75*89c4ff92SAndroid Build Coastguard Worker
76*89c4ff92SAndroid Build Coastguard Worker    assert 'ArmNN library libarmnn*.so was not found in (\'/lib\',)' in str(err.value)
77*89c4ff92SAndroid Build Coastguard Worker
78*89c4ff92SAndroid Build Coastguard Worker
79*89c4ff92SAndroid Build Coastguard Worker@pytest.mark.parametrize("env", ["RUBBISH_INCLUDE", "EMPTY_ARMNN_INCLUDE"])
80*89c4ff92SAndroid Build Coastguard Workerdef test_rubbish_armnn_include(tmpdir, env):
81*89c4ff92SAndroid Build Coastguard Worker    includes = find_includes(armnn_include_env=env)
82*89c4ff92SAndroid Build Coastguard Worker    assert includes == ['/usr/local/include', '/usr/include']
83*89c4ff92SAndroid Build Coastguard Worker
84*89c4ff92SAndroid Build Coastguard Worker
85*89c4ff92SAndroid Build Coastguard Workerdef test_gcc_serch_path():
86*89c4ff92SAndroid Build Coastguard Worker    assert linux_gcc_lib_search()
87*89c4ff92SAndroid Build Coastguard Worker
88*89c4ff92SAndroid Build Coastguard Worker
89*89c4ff92SAndroid Build Coastguard Workerdef test_armnn_version():
90*89c4ff92SAndroid Build Coastguard Worker    check_armnn_version('32.0.0', '32.0.0')
91*89c4ff92SAndroid Build Coastguard Worker
92*89c4ff92SAndroid Build Coastguard Worker
93*89c4ff92SAndroid Build Coastguard Workerdef test_incorrect_armnn_version():
94*89c4ff92SAndroid Build Coastguard Worker    with pytest.raises(AssertionError) as err:
95*89c4ff92SAndroid Build Coastguard Worker        check_armnn_version('32.0.0', '32.1.0')
96*89c4ff92SAndroid Build Coastguard Worker
97*89c4ff92SAndroid Build Coastguard Worker    assert 'Expected ArmNN version is 32.1.0 but installed ArmNN version is 32.0.0' in str(err.value)
98*89c4ff92SAndroid Build Coastguard Worker
99*89c4ff92SAndroid Build Coastguard Worker
100*89c4ff92SAndroid Build Coastguard Workerdef test_armnn_version_patch_does_not_matter():
101*89c4ff92SAndroid Build Coastguard Worker    check_armnn_version('32.0.0', '32.0.1')
102