Skip to content

Commit 6421732

Browse files
authored
[intel_npu] Add tests for blob compatibility (openvinotoolkit#29977)
### Details: By this PR, the following tests are being added: 1. *OVBlobCompatibilityNPU.CanImportAllPrecompiledBlobsForAllOVVersionsAndDrivers* 2. *OVBlobCompatibilityNPU_PV_Driver_No_Throw.CanImportExpectedModelsForPVDriverAndAllOVVersions* Note that on Linux, `#2` is not supported and for Windows using PV driver, all the tests are skipped for `#1`. Total number of new added tests on Windows: 15 Total number of new added tests on Linux: 9 ### Tickets: - *162743*
1 parent bc2a379 commit 6421732

21 files changed

+264
-1
lines changed

src/plugins/intel_npu/tests/functional/CMakeLists.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,12 @@ endif()
6464

6565
target_compile_definitions(${TARGET_NAME} PRIVATE CI_BUILD_NUMBER=\"mock_version\")
6666

67+
file(GLOB_RECURSE BLOBS "*.blob")
68+
file(MAKE_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/intel_npu_blobs)
69+
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
70+
COMMAND ${CMAKE_COMMAND} -E copy ${BLOBS}
71+
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/intel_npu_blobs)
72+
6773
install(
6874
TARGETS ${TARGET_NAME}
6975
RUNTIME DESTINATION tests
@@ -75,3 +81,9 @@ install(
7581
DESTINATION tests
7682
COMPONENT tests
7783
EXCLUDE_FROM_ALL)
84+
85+
install(
86+
FILES ${BLOBS}
87+
DESTINATION tests/intel_npu_blobs
88+
COMPONENT tests
89+
EXCLUDE_FROM_ALL)
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
// Copyright (C) 2018-2025 Intel Corporation
2+
// SPDX-License-Identifier: Apache-2.0
3+
//
4+
5+
#include "overload/compiled_model/blob_compatibility.hpp"
6+
7+
#include <gtest/gtest.h>
8+
9+
#include <map>
10+
#include <string>
11+
12+
using namespace ov::test::behavior;
13+
14+
const auto all_models = []() -> std::vector<std::string> {
15+
std::vector<std::string> models(DUMMY_MODELS.size());
16+
std::transform(DUMMY_MODELS.begin(),
17+
DUMMY_MODELS.end(),
18+
models.begin(),
19+
[](const decltype(DUMMY_MODELS)::value_type& pair) {
20+
return pair.second;
21+
});
22+
return models;
23+
}();
24+
25+
const auto match_platform =
26+
!ov::test::utils::NpuTestEnvConfig::getInstance().IE_NPU_TESTS_PLATFORM.empty()
27+
? (PARSED_PLATFORMS.find(ov::test::utils::NpuTestEnvConfig::getInstance().IE_NPU_TESTS_PLATFORM) !=
28+
PARSED_PLATFORMS.end()
29+
? PLATFORMS.at(
30+
PARSED_PLATFORMS.at(ov::test::utils::NpuTestEnvConfig::getInstance().IE_NPU_TESTS_PLATFORM))
31+
: "")
32+
: "";
33+
34+
const auto all_ov_releases = []() -> std::vector<std::string> {
35+
std::vector<std::string> ov_releases(OV_VERSIONS.size());
36+
std::transform(OV_VERSIONS.begin(),
37+
OV_VERSIONS.end(),
38+
ov_releases.begin(),
39+
[](const decltype(OV_VERSIONS)::value_type& pair) {
40+
return pair.second;
41+
});
42+
return ov_releases;
43+
}();
44+
45+
const auto all_drivers = []() -> std::vector<std::string> {
46+
std::vector<std::string> drivers(DRIVERS.size());
47+
std::transform(DRIVERS.begin(), DRIVERS.end(), drivers.begin(), [](const decltype(DRIVERS)::value_type& pair) {
48+
return pair.second;
49+
});
50+
return drivers;
51+
}();
52+
53+
const auto pv_compatible_models = []() -> std::vector<std::string> {
54+
std::vector<std::string> models(all_models.size() - 1);
55+
std::copy_if(all_models.begin(), all_models.end(), models.begin(), [](const std::string& model) {
56+
return DUMMY_MODELS.at(E_DUMMY_MODELS::DUMMY_MODEL_DYNAMIC_SHAPES) != model;
57+
});
58+
return models;
59+
}();
60+
61+
const auto all_drivers_except_pv = []() -> std::vector<std::string> {
62+
std::vector<std::string> drivers(all_drivers.size() - 1);
63+
std::copy_if(all_drivers.begin(), all_drivers.end(), drivers.begin(), [](const std::string& driver) {
64+
return DRIVERS.at(E_DRIVERS::DRIVER_1688) != driver;
65+
});
66+
return drivers;
67+
}();
68+
69+
INSTANTIATE_TEST_SUITE_P(smoke_Behavior_NPU,
70+
OVBlobCompatibilityNPU,
71+
::testing::Combine(::testing::Values(ov::test::utils::DEVICE_NPU),
72+
::testing::ValuesIn(all_models),
73+
::testing::Values(match_platform),
74+
::testing::ValuesIn(all_ov_releases),
75+
::testing::ValuesIn(all_drivers_except_pv)),
76+
ov::test::utils::appendPlatformTypeTestName<OVBlobCompatibilityNPU>);
77+
78+
#ifdef _WIN32 // Linux supports only ELF backend
79+
INSTANTIATE_TEST_SUITE_P(smoke_Behavior_NPU,
80+
OVBlobCompatibilityNPU_PV_Driver_No_Throw,
81+
::testing::Combine(::testing::Values(ov::test::utils::DEVICE_NPU),
82+
::testing::ValuesIn(pv_compatible_models),
83+
::testing::Values(match_platform),
84+
::testing::ValuesIn(all_ov_releases),
85+
::testing::Values(DRIVERS.at(E_DRIVERS::DRIVER_1688))),
86+
ov::test::utils::appendPlatformTypeTestName<OVBlobCompatibilityNPU_PV_Driver_No_Throw>);
87+
#endif

0 commit comments

Comments
 (0)