aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatteo Martincigh <matteo.martincigh@arm.com>2019-08-01 17:09:03 +0100
committerMatteo Martincigh <matteo.martincigh@arm.com>2019-08-02 17:26:39 +0100
commitd0dc770aeb9423081a1ef0245f7449dcf3fb2ee2 (patch)
tree9943dc9d95200eda938c7996fe4a0f65177a9a4d
parentae7b832a6f5eda4b28577f57909111135a36dee9 (diff)
downloadarmnn-d0dc770aeb9423081a1ef0245f7449dcf3fb2ee2.tar.gz
IVGCVSW-3561 Fix the linker issues of the test shared objects in
the Android builds * Changed the test libs from SHARED to MODULE * Added IBackendInternal.cpp to separate the default implementation of OptimizeSubgraphView from the header file * Linked the modules against armnn to get the missing symbols * Renamed the test modules to avoid name clashing in the CI system * Moved the test shared objects to separate folders to keep the filesystem tidy Change-Id: I987c56d2d66bdb86f7b391a83c602d0dadf4c674 Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
-rw-r--r--src/backends/backendsCommon/CMakeLists.txt1
-rw-r--r--src/backends/backendsCommon/IBackendInternal.cpp89
-rw-r--r--src/backends/backendsCommon/IBackendInternal.hpp81
-rw-r--r--src/backends/backendsCommon/common.mk1
-rw-r--r--src/backends/backendsCommon/test/CMakeLists.txt89
-rw-r--r--src/backends/backendsCommon/test/DynamicBackendTests.hpp102
6 files changed, 230 insertions, 133 deletions
diff --git a/src/backends/backendsCommon/CMakeLists.txt b/src/backends/backendsCommon/CMakeLists.txt
index 4048c58956..653f3727ee 100644
--- a/src/backends/backendsCommon/CMakeLists.txt
+++ b/src/backends/backendsCommon/CMakeLists.txt
@@ -13,6 +13,7 @@ list(APPEND armnnBackendsCommon_sources
DynamicBackend.hpp
DynamicBackendUtils.cpp
DynamicBackendUtils.hpp
+ IBackendInternal.cpp
IBackendInternal.hpp
IBackendContext.hpp
ITensorHandleFactory.cpp
diff --git a/src/backends/backendsCommon/IBackendInternal.cpp b/src/backends/backendsCommon/IBackendInternal.cpp
new file mode 100644
index 0000000000..261613c490
--- /dev/null
+++ b/src/backends/backendsCommon/IBackendInternal.cpp
@@ -0,0 +1,89 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "IBackendInternal.hpp"
+
+namespace armnn
+{
+
+ARMNN_NO_DEPRECATE_WARN_BEGIN
+IBackendInternal::ISubGraphConverterPtr IBackendInternal::CreateSubGraphConverter(
+ const std::shared_ptr<SubGraph>& subGraph) const
+{
+ return ISubGraphConverterPtr{};
+}
+
+IBackendInternal::Optimizations IBackendInternal::GetOptimizations() const
+{
+ return Optimizations{};
+}
+
+IBackendInternal::SubGraphUniquePtr IBackendInternal::OptimizeSubGraph(const SubGraph& subGraph,
+ bool& optimizationAttempted) const
+{
+ optimizationAttempted = false;
+ return nullptr;
+}
+ARMNN_NO_DEPRECATE_WARN_END
+
+IMemoryManagerUniquePtr IBackendInternal::CreateMemoryManager() const
+{
+ return IMemoryManagerUniquePtr();
+}
+
+IBackendInternal::IBackendContextPtr IBackendInternal::CreateBackendContext(const IRuntime::CreationOptions&) const
+{
+ return IBackendContextPtr{};
+}
+
+// Default implementation of OptimizeSubgraphView for backward compatibility with the old API.
+// Override this method with a custom optimization implementation.
+OptimizationViews IBackendInternal::OptimizeSubgraphView(const SubgraphView& subgraph) const
+{
+ bool optimizationAttempted = false;
+
+ ARMNN_NO_DEPRECATE_WARN_BEGIN
+ SubGraphUniquePtr optSubgraph = OptimizeSubGraph(subgraph, optimizationAttempted);
+ ARMNN_NO_DEPRECATE_WARN_END
+
+ OptimizationViews result;
+ if (!optimizationAttempted)
+ {
+ result.AddUntouchedSubgraph(SubgraphView(subgraph));
+ }
+ else if (optSubgraph)
+ {
+ result.AddSubstitution({subgraph, SubgraphView(*optSubgraph.get())});
+ }
+ else
+ {
+ result.AddFailedSubgraph(SubgraphView(subgraph));
+ }
+
+ return result;
+}
+
+bool IBackendInternal::SupportsTensorAllocatorAPI() const
+{
+ return !GetHandleFactoryPreferences().empty();
+}
+
+ITensorHandleFactory::FactoryId IBackendInternal::GetBackwardCompatibleFavoriteHandleFactory()
+{
+ auto favorites = GetHandleFactoryPreferences();
+ if (favorites.empty())
+ {
+ return ITensorHandleFactory::LegacyFactoryId;
+ }
+
+ return favorites[0];
+}
+
+std::vector<ITensorHandleFactory::FactoryId> IBackendInternal::GetHandleFactoryPreferences() const
+{
+ return std::vector<ITensorHandleFactory::FactoryId>();
+}
+
+} // namespace armnn
diff --git a/src/backends/backendsCommon/IBackendInternal.hpp b/src/backends/backendsCommon/IBackendInternal.hpp
index c548683e3e..f8f9df5beb 100644
--- a/src/backends/backendsCommon/IBackendInternal.hpp
+++ b/src/backends/backendsCommon/IBackendInternal.hpp
@@ -2,6 +2,7 @@
// Copyright © 2017 Arm Ltd. All rights reserved.
// SPDX-License-Identifier: MIT
//
+
#pragma once
#include <armnn/Types.hpp>
@@ -18,6 +19,7 @@
#include "OptimizationViews.hpp"
#include <vector>
+#include <memory>
namespace armnn
{
@@ -30,11 +32,11 @@ struct BackendVersion
uint32_t m_Major;
uint32_t m_Minor;
- BackendVersion()
+ constexpr BackendVersion()
: m_Major(0)
, m_Minor(0)
{}
- BackendVersion(uint32_t major, uint32_t minor)
+ constexpr BackendVersion(uint32_t major, uint32_t minor)
: m_Major(major)
, m_Minor(minor)
{}
@@ -92,87 +94,32 @@ public:
= std::unique_ptr<SubGraph>;
ARMNN_DEPRECATED_MSG("This method is no longer supported")
- virtual ISubGraphConverterPtr CreateSubGraphConverter(const std::shared_ptr<SubGraph>& subGraph) const
- {
- return ISubGraphConverterPtr{};
- }
+ virtual ISubGraphConverterPtr CreateSubGraphConverter(const std::shared_ptr<SubGraph>& subGraph) const;
ARMNN_DEPRECATED_MSG("Use \"OptimizationViews OptimizeSubgraphView(const SubgraphView&)\" instead")
- virtual Optimizations GetOptimizations() const
- {
- return Optimizations{};
- }
+ virtual Optimizations GetOptimizations() const;
ARMNN_DEPRECATED_MSG("Use \"OptimizationViews OptimizeSubgraphView(const SubgraphView&)\" instead")
- virtual SubGraphUniquePtr OptimizeSubGraph(const SubGraph& subGraph, bool& optimizationAttempted) const
- {
- optimizationAttempted = false;
- return nullptr;
- }
+ virtual SubGraphUniquePtr OptimizeSubGraph(const SubGraph& subGraph, bool& optimizationAttempted) const;
ARMNN_NO_DEPRECATE_WARN_END
-
- virtual IMemoryManagerUniquePtr CreateMemoryManager() const
- {
- return IMemoryManagerUniquePtr();
- }
+ virtual IMemoryManagerUniquePtr CreateMemoryManager() const;
virtual IWorkloadFactoryPtr CreateWorkloadFactory(
const IMemoryManagerSharedPtr& memoryManager = nullptr) const = 0;
- virtual IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const
- {
- return IBackendContextPtr{};
- }
+ virtual IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const;
virtual ILayerSupportSharedPtr GetLayerSupport() const = 0;
- // Default implementation of OptimizeSubgraphView for backward compatibility with the old API.
- // Override this method with a custom optimization implementation.
- virtual OptimizationViews OptimizeSubgraphView(const SubgraphView& subgraph) const
- {
- bool optimizationAttempted = false;
-
- ARMNN_NO_DEPRECATE_WARN_BEGIN
- SubGraphUniquePtr optSubgraph = OptimizeSubGraph(subgraph, optimizationAttempted);
- ARMNN_NO_DEPRECATE_WARN_END
-
- OptimizationViews result;
- if (!optimizationAttempted)
- {
- result.AddUntouchedSubgraph(SubgraphView(subgraph));
- }
- else
- {
- if (optSubgraph)
- {
- result.AddSubstitution({subgraph, SubgraphView(*optSubgraph.get())});
- }
- else
- {
- result.AddFailedSubgraph(SubgraphView(subgraph));
- }
- }
- return result;
- }
+ virtual OptimizationViews OptimizeSubgraphView(const SubgraphView& subgraph) const;
- bool SupportsTensorAllocatorAPI() const { return GetHandleFactoryPreferences().empty() == false; }
+ bool SupportsTensorAllocatorAPI() const;
- ITensorHandleFactory::FactoryId GetBackwardCompatibleFavoriteHandleFactory()
- {
- auto favorites = GetHandleFactoryPreferences();
- if (favorites.empty())
- {
- return ITensorHandleFactory::LegacyFactoryId;
- }
- return favorites[0];
- }
+ ITensorHandleFactory::FactoryId GetBackwardCompatibleFavoriteHandleFactory();
/// (Optional) Returns a vector of supported TensorHandleFactory ids in preference order.
- virtual std::vector<ITensorHandleFactory::FactoryId> GetHandleFactoryPreferences() const
- {
- return std::vector<ITensorHandleFactory::FactoryId>();
- }
+ virtual std::vector<ITensorHandleFactory::FactoryId> GetHandleFactoryPreferences() const;
/// (Optional) Register TensorHandleFactories
/// Either this method or CreateMemoryManager() and
@@ -180,7 +127,7 @@ public:
virtual void RegisterTensorHandleFactories(class TensorHandleFactoryRegistry& registry) {}
/// Returns the version of the Backend API
- static BackendVersion GetApiVersion() { return { 1, 0 }; }
+ static constexpr BackendVersion GetApiVersion() { return BackendVersion(1, 0); }
};
using IBackendInternalUniquePtr = std::unique_ptr<IBackendInternal>;
diff --git a/src/backends/backendsCommon/common.mk b/src/backends/backendsCommon/common.mk
index 8df5ab9203..69bde81b0a 100644
--- a/src/backends/backendsCommon/common.mk
+++ b/src/backends/backendsCommon/common.mk
@@ -10,6 +10,7 @@
COMMON_SOURCES := \
BackendRegistry.cpp \
CpuTensorHandle.cpp \
+ IBackendInternal.cpp \
ITensorHandleFactory.cpp \
LayerSupportBase.cpp \
MemCopyWorkload.cpp \
diff --git a/src/backends/backendsCommon/test/CMakeLists.txt b/src/backends/backendsCommon/test/CMakeLists.txt
index 8c9644ff94..930157f572 100644
--- a/src/backends/backendsCommon/test/CMakeLists.txt
+++ b/src/backends/backendsCommon/test/CMakeLists.txt
@@ -68,59 +68,76 @@ target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE
# Dummy shared object for testing.
# This is a simple library used to test the utility functions that will be used to handle the shared objects.
-list(APPEND armnnTestSharedObject_sources
+list(APPEND testSharedObject_sources
TestSharedObject.cpp
TestSharedObject.hpp
)
-add_library_ex(armnnTestSharedObject SHARED ${armnnTestSharedObject_sources})
-file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/libarmnnNoSharedObject.txt "This is not a shared object")
+add_library_ex(TestSharedObject MODULE ${testSharedObject_sources})
+set_target_properties(TestSharedObject PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testSharedObject)
+file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/testSharedObject/libNoSharedObject.txt "This is not a shared object")
# Dummy dynamic backends for testing.
# Both a valid and a number of invalid dummy dynamic backends (covering various use cases) share the
# same source code. The various test cases are put together in the code using compiler directives.
-list(APPEND armnnTestDynamicBackend_sources
+list(APPEND testDynamicBackend_sources
TestDynamicBackend.cpp
TestDynamicBackend.hpp
)
-add_library_ex(armnnValidTestDynamicBackend SHARED ${armnnTestDynamicBackend_sources})
-target_compile_definitions(armnnValidTestDynamicBackend PRIVATE -DVALID_TEST_DYNAMIC_BACKEND)
-target_include_directories(armnnValidTestDynamicBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
-target_include_directories(armnnValidTestDynamicBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
+add_library_ex(ValidTestDynamicBackend MODULE ${testDynamicBackend_sources})
+target_compile_definitions(ValidTestDynamicBackend PRIVATE -DVALID_TEST_DYNAMIC_BACKEND)
+target_include_directories(ValidTestDynamicBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
+target_include_directories(ValidTestDynamicBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
+target_link_libraries(ValidTestDynamicBackend armnn)
+set_target_properties(ValidTestDynamicBackend PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend)
-add_library_ex(armnnInvalidTestDynamicBackend1 SHARED ${armnnTestDynamicBackend_sources})
-target_compile_definitions(armnnInvalidTestDynamicBackend1 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_1)
-target_include_directories(armnnInvalidTestDynamicBackend1 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
-target_include_directories(armnnInvalidTestDynamicBackend1 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
+add_library_ex(InvalidTestDynamicBackend1 MODULE ${testDynamicBackend_sources})
+target_compile_definitions(InvalidTestDynamicBackend1 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_1)
+target_include_directories(InvalidTestDynamicBackend1 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
+target_include_directories(InvalidTestDynamicBackend1 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
+target_link_libraries(InvalidTestDynamicBackend1 armnn)
+set_target_properties(InvalidTestDynamicBackend1 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend)
-add_library_ex(armnnInvalidTestDynamicBackend2 SHARED ${armnnTestDynamicBackend_sources})
-target_compile_definitions(armnnInvalidTestDynamicBackend2 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_2)
-target_include_directories(armnnInvalidTestDynamicBackend2 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
-target_include_directories(armnnInvalidTestDynamicBackend2 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
+add_library_ex(InvalidTestDynamicBackend2 MODULE ${testDynamicBackend_sources})
+target_compile_definitions(InvalidTestDynamicBackend2 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_2)
+target_include_directories(InvalidTestDynamicBackend2 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
+target_include_directories(InvalidTestDynamicBackend2 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
+target_link_libraries(InvalidTestDynamicBackend2 armnn)
+set_target_properties(InvalidTestDynamicBackend2 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend)
-add_library_ex(armnnInvalidTestDynamicBackend3 SHARED ${armnnTestDynamicBackend_sources})
-target_compile_definitions(armnnInvalidTestDynamicBackend3 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_3)
-target_include_directories(armnnInvalidTestDynamicBackend3 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
-target_include_directories(armnnInvalidTestDynamicBackend3 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
+add_library_ex(InvalidTestDynamicBackend3 MODULE ${testDynamicBackend_sources})
+target_compile_definitions(InvalidTestDynamicBackend3 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_3)
+target_include_directories(InvalidTestDynamicBackend3 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
+target_include_directories(InvalidTestDynamicBackend3 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
+target_link_libraries(InvalidTestDynamicBackend3 armnn)
+set_target_properties(InvalidTestDynamicBackend3 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend)
-add_library_ex(armnnInvalidTestDynamicBackend4 SHARED ${armnnTestDynamicBackend_sources})
-target_compile_definitions(armnnInvalidTestDynamicBackend4 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_4)
-target_include_directories(armnnInvalidTestDynamicBackend4 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
-target_include_directories(armnnInvalidTestDynamicBackend4 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
+add_library_ex(InvalidTestDynamicBackend4 MODULE ${testDynamicBackend_sources})
+target_compile_definitions(InvalidTestDynamicBackend4 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_4)
+target_include_directories(InvalidTestDynamicBackend4 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
+target_include_directories(InvalidTestDynamicBackend4 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
+target_link_libraries(InvalidTestDynamicBackend4 armnn)
+set_target_properties(InvalidTestDynamicBackend4 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend)
-add_library_ex(armnnInvalidTestDynamicBackend5 SHARED ${armnnTestDynamicBackend_sources})
-target_compile_definitions(armnnInvalidTestDynamicBackend5 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_5)
-target_include_directories(armnnInvalidTestDynamicBackend5 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
-target_include_directories(armnnInvalidTestDynamicBackend5 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
+add_library_ex(InvalidTestDynamicBackend5 MODULE ${testDynamicBackend_sources})
+target_compile_definitions(InvalidTestDynamicBackend5 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_5)
+target_include_directories(InvalidTestDynamicBackend5 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
+target_include_directories(InvalidTestDynamicBackend5 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
+target_link_libraries(InvalidTestDynamicBackend5 armnn)
+set_target_properties(InvalidTestDynamicBackend5 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend)
-add_library_ex(armnnInvalidTestDynamicBackend6 SHARED ${armnnTestDynamicBackend_sources})
-target_compile_definitions(armnnInvalidTestDynamicBackend6 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_6)
-target_include_directories(armnnInvalidTestDynamicBackend6 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
-target_include_directories(armnnInvalidTestDynamicBackend6 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
+add_library_ex(InvalidTestDynamicBackend6 MODULE ${testDynamicBackend_sources})
+target_compile_definitions(InvalidTestDynamicBackend6 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_6)
+target_include_directories(InvalidTestDynamicBackend6 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
+target_include_directories(InvalidTestDynamicBackend6 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
+target_link_libraries(InvalidTestDynamicBackend6 armnn)
+set_target_properties(InvalidTestDynamicBackend6 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend)
-add_library_ex(armnnInvalidTestDynamicBackend7 SHARED ${armnnTestDynamicBackend_sources})
-target_compile_definitions(armnnInvalidTestDynamicBackend7 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_7)
-target_include_directories(armnnInvalidTestDynamicBackend7 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
-target_include_directories(armnnInvalidTestDynamicBackend7 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
+add_library_ex(InvalidTestDynamicBackend7 MODULE ${testDynamicBackend_sources})
+target_compile_definitions(InvalidTestDynamicBackend7 PRIVATE -DINVALID_TEST_DYNAMIC_BACKEND_7)
+target_include_directories(InvalidTestDynamicBackend7 PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
+target_include_directories(InvalidTestDynamicBackend7 PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
+target_link_libraries(InvalidTestDynamicBackend7 armnn)
+set_target_properties(InvalidTestDynamicBackend7 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testDynamicBackend)
diff --git a/src/backends/backendsCommon/test/DynamicBackendTests.hpp b/src/backends/backendsCommon/test/DynamicBackendTests.hpp
index 2bc4558500..55f90d48eb 100644
--- a/src/backends/backendsCommon/test/DynamicBackendTests.hpp
+++ b/src/backends/backendsCommon/test/DynamicBackendTests.hpp
@@ -17,34 +17,63 @@
#include <boost/filesystem.hpp>
#include <boost/dll.hpp>
-static std::string g_TestSharedObjectSubDir = "src/backends/backendsCommon/test/";
-static std::string g_TestSharedObjectFileName = "libarmnnTestSharedObject.so";
-static std::string g_TestValidTestDynamicBackendFileName = "libarmnnValidTestDynamicBackend.so";
-static std::string g_TestInvalidTestDynamicBackend1FileName = "libarmnnInvalidTestDynamicBackend1.so";
-static std::string g_TestInvalidTestDynamicBackend2FileName = "libarmnnInvalidTestDynamicBackend2.so";
-static std::string g_TestInvalidTestDynamicBackend3FileName = "libarmnnInvalidTestDynamicBackend3.so";
-static std::string g_TestInvalidTestDynamicBackend4FileName = "libarmnnInvalidTestDynamicBackend4.so";
-static std::string g_TestInvalidTestDynamicBackend5FileName = "libarmnnInvalidTestDynamicBackend5.so";
-static std::string g_TestInvalidTestDynamicBackend6FileName = "libarmnnInvalidTestDynamicBackend6.so";
-static std::string g_TestInvalidTestDynamicBackend7FileName = "libarmnnInvalidTestDynamicBackend7.so";
-
-std::string GetTestFilePath(const std::string& fileName)
+static std::string g_TestBaseDir = "src/backends/backendsCommon/test/";
+
+static std::string g_TestSharedObjectSubDir = "testSharedObject/";
+static std::string g_TestDynamicBackendSubDir = "testDynamicBackend/";
+
+static std::string g_TestSharedObjectFileName = "libTestSharedObject.so";
+static std::string g_TestNoSharedObjectFileName = "libNoSharedObject.txt";
+
+static std::string g_TestValidTestDynamicBackendFileName = "libValidTestDynamicBackend.so";
+static std::string g_TestInvalidTestDynamicBackend1FileName = "libInvalidTestDynamicBackend1.so";
+static std::string g_TestInvalidTestDynamicBackend2FileName = "libInvalidTestDynamicBackend2.so";
+static std::string g_TestInvalidTestDynamicBackend3FileName = "libInvalidTestDynamicBackend3.so";
+static std::string g_TestInvalidTestDynamicBackend4FileName = "libInvalidTestDynamicBackend4.so";
+static std::string g_TestInvalidTestDynamicBackend5FileName = "libInvalidTestDynamicBackend5.so";
+static std::string g_TestInvalidTestDynamicBackend6FileName = "libInvalidTestDynamicBackend6.so";
+static std::string g_TestInvalidTestDynamicBackend7FileName = "libInvalidTestDynamicBackend7.so";
+
+std::string GetTestDirectoryBasePath()
{
using namespace boost::filesystem;
path programLocation = boost::dll::program_location().parent_path();
- path sharedObjectPath = programLocation.append(g_TestSharedObjectSubDir);
- path sharedObjectFile = sharedObjectPath.append(fileName);
- BOOST_TEST(exists(sharedObjectFile));
+ path sharedObjectPath = programLocation.append(g_TestBaseDir);
+ BOOST_CHECK(exists(sharedObjectPath));
+
+ return sharedObjectPath.string();
+}
+
+std::string GetTestSubDirectory(const std::string& subdir)
+{
+ using namespace boost::filesystem;
+
+ std::string testDynamicBackendsBaseDir = GetTestDirectoryBasePath();
+ path testDynamicBackendsBasePath(testDynamicBackendsBaseDir);
+ path testDynamicBackendsSubDir = testDynamicBackendsBasePath.append(subdir);
+ // Do not check that the sub-directory exists because for testing reasons we may use non-existing paths
+
+ return testDynamicBackendsSubDir.string();
+}
+
+std::string GetTestFilePath(const std::string& directory, const std::string& fileName)
+{
+ using namespace boost::filesystem;
+
+ path directoryPath(directory);
+ path fileNamePath = directoryPath.append(fileName);
+ BOOST_CHECK(exists(fileNamePath));
- return sharedObjectFile.string();
+ return fileNamePath.string();
}
void OpenCloseHandleTestImpl()
{
using namespace armnn;
- std::string sharedObjectFilePath = GetTestFilePath(g_TestSharedObjectFileName);
+ std::string testSubDirectory = GetTestSubDirectory(g_TestSharedObjectSubDir);
+ std::string sharedObjectFilePath = GetTestFilePath(testSubDirectory, g_TestSharedObjectFileName);
void* sharedObjectHandle = nullptr;
BOOST_CHECK_NO_THROW(sharedObjectHandle = DynamicBackendUtils::OpenHandle(sharedObjectFilePath));
@@ -83,7 +112,8 @@ void OpenNotSharedObjectTestImpl()
{
using namespace armnn;
- std::string notSharedObjectFilePath = GetTestFilePath("libarmnnNoSharedObject.txt");
+ std::string testSubDirectory = GetTestSubDirectory(g_TestSharedObjectSubDir);
+ std::string notSharedObjectFilePath = GetTestFilePath(testSubDirectory, g_TestNoSharedObjectFileName);
void* sharedObjectHandle = nullptr;
BOOST_CHECK_THROW(sharedObjectHandle = DynamicBackendUtils::OpenHandle(notSharedObjectFilePath), RuntimeException);
@@ -94,7 +124,8 @@ void GetValidEntryPointTestImpl()
{
using namespace armnn;
- std::string sharedObjectFilePath = GetTestFilePath(g_TestSharedObjectFileName);
+ std::string testSubDirectory = GetTestSubDirectory(g_TestSharedObjectSubDir);
+ std::string sharedObjectFilePath = GetTestFilePath(testSubDirectory, g_TestSharedObjectFileName);
void* sharedObjectHandle = nullptr;
BOOST_CHECK_NO_THROW(sharedObjectHandle = DynamicBackendUtils::OpenHandle(sharedObjectFilePath));
@@ -114,7 +145,8 @@ void GetNameMangledEntryPointTestImpl()
{
using namespace armnn;
- std::string sharedObjectFilePath = GetTestFilePath(g_TestSharedObjectFileName);
+ std::string testSubDirectory = GetTestSubDirectory(g_TestSharedObjectSubDir);
+ std::string sharedObjectFilePath = GetTestFilePath(testSubDirectory, g_TestSharedObjectFileName);
void* sharedObjectHandle = nullptr;
BOOST_CHECK_NO_THROW(sharedObjectHandle = DynamicBackendUtils::OpenHandle(sharedObjectFilePath));
@@ -134,7 +166,8 @@ void GetNoExternEntryPointTestImpl()
{
using namespace armnn;
- std::string sharedObjectFilePath = GetTestFilePath(g_TestSharedObjectFileName);
+ std::string testSubDirectory = GetTestSubDirectory(g_TestSharedObjectSubDir);
+ std::string sharedObjectFilePath = GetTestFilePath(testSubDirectory, g_TestSharedObjectFileName);
void* sharedObjectHandle = nullptr;
BOOST_CHECK_NO_THROW(sharedObjectHandle = DynamicBackendUtils::OpenHandle(sharedObjectFilePath));
@@ -154,7 +187,8 @@ void GetNotExistingEntryPointTestImpl()
{
using namespace armnn;
- std::string sharedObjectFilePath = GetTestFilePath(g_TestSharedObjectFileName);
+ std::string testSubDirectory = GetTestSubDirectory(g_TestSharedObjectSubDir);
+ std::string sharedObjectFilePath = GetTestFilePath(testSubDirectory, g_TestSharedObjectFileName);
void* sharedObjectHandle = nullptr;
BOOST_CHECK_NO_THROW(sharedObjectHandle = DynamicBackendUtils::OpenHandle(sharedObjectFilePath));
@@ -230,7 +264,8 @@ void CreateValidDynamicBackendObjectTestImpl()
using namespace armnn;
- std::string sharedObjectFilePath = GetTestFilePath(g_TestValidTestDynamicBackendFileName);
+ std::string testSubDirectory = GetTestSubDirectory(g_TestDynamicBackendSubDir);
+ std::string sharedObjectFilePath = GetTestFilePath(testSubDirectory, g_TestValidTestDynamicBackendFileName);
void* sharedObjectHandle = nullptr;
BOOST_CHECK_NO_THROW(sharedObjectHandle = DynamicBackendUtils::OpenHandle(sharedObjectFilePath));
@@ -274,7 +309,8 @@ void CreateDynamicBackendObjectInvalidInterface1TestImpl()
using namespace armnn;
- std::string sharedObjectFilePath = GetTestFilePath(g_TestInvalidTestDynamicBackend1FileName);
+ std::string testSubDirectory = GetTestSubDirectory(g_TestDynamicBackendSubDir);
+ std::string sharedObjectFilePath = GetTestFilePath(testSubDirectory, g_TestInvalidTestDynamicBackend1FileName);
void* sharedObjectHandle = nullptr;
BOOST_CHECK_NO_THROW(sharedObjectHandle = DynamicBackendUtils::OpenHandle(sharedObjectFilePath));
@@ -293,7 +329,8 @@ void CreateDynamicBackendObjectInvalidInterface2TestImpl()
using namespace armnn;
- std::string sharedObjectFilePath = GetTestFilePath(g_TestInvalidTestDynamicBackend2FileName);
+ std::string testSubDirectory = GetTestSubDirectory(g_TestDynamicBackendSubDir);
+ std::string sharedObjectFilePath = GetTestFilePath(testSubDirectory, g_TestInvalidTestDynamicBackend2FileName);
void* sharedObjectHandle = nullptr;
BOOST_CHECK_NO_THROW(sharedObjectHandle = DynamicBackendUtils::OpenHandle(sharedObjectFilePath));
@@ -312,7 +349,8 @@ void CreateDynamicBackendObjectInvalidInterface3TestImpl()
using namespace armnn;
- std::string sharedObjectFilePath = GetTestFilePath(g_TestInvalidTestDynamicBackend3FileName);
+ std::string testSubDirectory = GetTestSubDirectory(g_TestDynamicBackendSubDir);
+ std::string sharedObjectFilePath = GetTestFilePath(testSubDirectory, g_TestInvalidTestDynamicBackend3FileName);
void* sharedObjectHandle = nullptr;
BOOST_CHECK_NO_THROW(sharedObjectHandle = DynamicBackendUtils::OpenHandle(sharedObjectFilePath));
@@ -331,7 +369,8 @@ void CreateDynamicBackendObjectInvalidInterface4TestImpl()
using namespace armnn;
- std::string sharedObjectFilePath = GetTestFilePath(g_TestInvalidTestDynamicBackend4FileName);
+ std::string testSubDirectory = GetTestSubDirectory(g_TestDynamicBackendSubDir);
+ std::string sharedObjectFilePath = GetTestFilePath(testSubDirectory, g_TestInvalidTestDynamicBackend4FileName);
void* sharedObjectHandle = nullptr;
BOOST_CHECK_NO_THROW(sharedObjectHandle = DynamicBackendUtils::OpenHandle(sharedObjectFilePath));
@@ -351,7 +390,8 @@ void CreateDynamicBackendObjectInvalidInterface5TestImpl()
using namespace armnn;
- std::string sharedObjectFilePath = GetTestFilePath(g_TestInvalidTestDynamicBackend5FileName);
+ std::string testSubDirectory = GetTestSubDirectory(g_TestDynamicBackendSubDir);
+ std::string sharedObjectFilePath = GetTestFilePath(testSubDirectory, g_TestInvalidTestDynamicBackend5FileName);
void* sharedObjectHandle = nullptr;
BOOST_CHECK_NO_THROW(sharedObjectHandle = DynamicBackendUtils::OpenHandle(sharedObjectFilePath));
@@ -371,7 +411,8 @@ void CreateDynamicBackendObjectInvalidInterface6TestImpl()
using namespace armnn;
- std::string sharedObjectFilePath = GetTestFilePath(g_TestInvalidTestDynamicBackend6FileName);
+ std::string testSubDirectory = GetTestSubDirectory(g_TestDynamicBackendSubDir);
+ std::string sharedObjectFilePath = GetTestFilePath(testSubDirectory, g_TestInvalidTestDynamicBackend6FileName);
void* sharedObjectHandle = nullptr;
BOOST_CHECK_NO_THROW(sharedObjectHandle = DynamicBackendUtils::OpenHandle(sharedObjectFilePath));
@@ -403,7 +444,8 @@ void CreateDynamicBackendObjectInvalidInterface7TestImpl()
using namespace armnn;
- std::string sharedObjectFilePath = GetTestFilePath(g_TestInvalidTestDynamicBackend7FileName);
+ std::string testSubDirectory = GetTestSubDirectory(g_TestDynamicBackendSubDir);
+ std::string sharedObjectFilePath = GetTestFilePath(testSubDirectory, g_TestInvalidTestDynamicBackend7FileName);
void* sharedObjectHandle = nullptr;
BOOST_CHECK_NO_THROW(sharedObjectHandle = DynamicBackendUtils::OpenHandle(sharedObjectFilePath));