1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #include "tests_common.hpp"
6 #include "mock_plugin_dispatcher.hpp"
7 #include <gtest/gtest.h>
8 #include <gmock/gmock.h>
9 #include "ie_plugin_dispatcher.hpp"
10 #include "ie_plugin_ptr.hpp"
11 #include "ie_device.hpp"
13 using namespace InferenceEngine;
14 using namespace ::testing;
16 class PluginDispatcherTests : public ::testing::Test {
18 const std::string nameExt(const std::string& name) { return name + IE_BUILD_POSTFIX;}
21 TEST_F(PluginDispatcherTests, canLoadMockPlugin) {
22 PluginDispatcher dispatcher({ "", "./", "./lib" });
23 ASSERT_NO_THROW(dispatcher.getPluginByName(nameExt("mock_engine")));
26 TEST_F(PluginDispatcherTests, throwsOnUnknownPlugin) {
27 PluginDispatcher dispatcher({ "./", "./lib" });
28 ASSERT_THROW(dispatcher.getPluginByName(nameExt("unknown_plugin")), InferenceEngine::details::InferenceEngineException);
31 TEST_F(PluginDispatcherTests, throwsOnDeviceWithoutPlugins) {
32 PluginDispatcher dispatcher({ "./", "./lib" });
33 ASSERT_THROW(dispatcher.getSuitablePlugin(TargetDevice::eBalanced),
34 InferenceEngine::details::InferenceEngineException);
37 ACTION(ThrowException)
39 THROW_IE_EXCEPTION << "Exception!";
42 TEST_F(PluginDispatcherTests, triesToLoadEveryPluginSuitableForDevice) {
43 MockDispatcher disp({ "./", "./lib" });
45 ON_CALL(disp, getPluginByName(_)).WillByDefault(ThrowException());
47 EXPECT_CALL(disp, getPluginByName(nameExt("MKLDNNPlugin"))).Times(1);
49 #ifdef ENABLE_OPENVX_CVE
50 EXPECT_CALL(disp, getPluginByName(nameExt("OpenVXPluginCVE"))).Times(1);
51 #elif defined ENABLE_OPENVX
52 EXPECT_CALL(disp, getPluginByName(nameExt("OpenVXPlugin"))).Times(1);
54 ASSERT_THROW(disp.getSuitablePlugin(TargetDevice::eCPU), InferenceEngine::details::InferenceEngineException);
57 #if defined(ENABLE_OPENVX) || defined(ENABLE_MKL_DNN) || defined(ENABLE_OPENVX_CVE)
58 TEST_F(PluginDispatcherTests, returnsIfLoadSuccessfull) {
59 MockDispatcher disp({ "./", "./lib" });
60 PluginDispatcher dispatcher({ "", "./", "./lib" });
61 auto ptr = dispatcher.getPluginByName(nameExt("mock_engine"));
63 EXPECT_CALL(disp, getPluginByName(_)).WillOnce(Return(ptr));
64 ASSERT_NO_THROW(disp.getSuitablePlugin(TargetDevice::eCPU));