IVGCVSW-3719 Create test program executable.
authorColm Donelan <Colm.Donelan@arm.com>
Thu, 5 Sep 2019 09:03:56 +0000 (10:03 +0100)
committerMatteo Martincigh <matteo.martincigh@arm.com>
Fri, 6 Sep 2019 12:13:51 +0000 (12:13 +0000)
Introduce a new test utility that simulates the Gatord service.
This will be used to test the external profiling features.

Change-Id: Ib7c75c1302650e140945cd66d272c23af3aac760
Signed-off-by: Colm Donelan <Colm.Donelan@arm.com>
CMakeLists.txt
cmake/GlobalConfig.cmake
tests/profiling/CommandLineProcessor.cpp [new file with mode: 0644]
tests/profiling/CommandLineProcessor.hpp [new file with mode: 0644]
tests/profiling/GatordMockMain.cpp [new file with mode: 0644]

index ef87c6d..b29a709 100644 (file)
@@ -818,3 +818,22 @@ if (BUILD_ARMNN_SERIALIZER AND (BUILD_TF_PARSER OR BUILD_TF_LITE_PARSER OR BUILD
         ${Boost_PROGRAM_OPTIONS_LIBRARY})
     addDllCopyCommands(ArmnnConverter)
 endif()
+
+if(BUILD_GATORD_MOCK)
+    set(gatord_mock_sources)
+    list(APPEND gatord_mock_sources
+        tests/profiling/GatordMockMain.cpp
+        tests/profiling/CommandLineProcessor.hpp
+        tests/profiling/CommandLineProcessor.cpp
+        )
+
+    include_directories( ${Boost_INCLUDE_DIRS} )
+
+    add_executable_ex(GartordMock ${gatord_mock_sources})
+
+    target_link_libraries(GartordMock
+        ${Boost_PROGRAM_OPTIONS_LIBRARY}
+        )
+
+endif()
+
index 9c59abf..4880d59 100644 (file)
@@ -21,6 +21,7 @@ option(FLATC_DIR "Path to Flatbuffers compiler" OFF)
 option(TF_LITE_GENERATED_PATH "Tensorflow lite generated C++ schema location" OFF)
 option(FLATBUFFERS_ROOT "Location where the flatbuffers 'include' and 'lib' folders to be found" Off)
 option(DYNAMIC_BACKEND_PATHS "Colon seperated list of paths where to load the dynamic backends from" "")
+option(BUILD_GATORD_MOCK "Build the Gatord simulator for external profiling testing." OFF)
 
 include(SelectLibraryConfigurations)
 
diff --git a/tests/profiling/CommandLineProcessor.cpp b/tests/profiling/CommandLineProcessor.cpp
new file mode 100644 (file)
index 0000000..6affbbe
--- /dev/null
@@ -0,0 +1,59 @@
+//
+// Copyright © 2019 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "CommandLineProcessor.hpp"
+
+#include <boost/program_options.hpp>
+
+#include <iostream>
+
+namespace armnn
+{
+namespace gatordmock
+{
+
+bool CommandLineProcessor::ProcessCommandLine(int argc, char *argv[])
+{
+    namespace po = boost::program_options;
+
+    po::options_description desc("Options");
+    try
+    {
+        desc.add_options()("help,h", "Display help messages");
+    }
+    catch (const std::exception& e)
+    {
+        std::cerr << "Fatal internal error: [" << e.what() << "]" << std::endl;
+        return false;
+    }
+
+    po::variables_map vm;
+    try
+    {
+        po::store(po::parse_command_line(argc, argv, desc), vm);
+
+        if (vm.count("help") || argc <= 1)
+        {
+            std::cout << "Simulate a Gatord server to interact with ArmNN external profiling." << std::endl;
+            std::cout << std::endl;
+            std::cout << desc << std::endl;
+            return false;
+        }
+
+        po::notify(vm);
+    }
+    catch (const po::error& e)
+    {
+        std::cerr << e.what() << std::endl << std::endl;
+        std::cerr << desc << std::endl;
+        return false;
+    }
+
+    return true;
+}
+
+} // namespace gatordmock
+
+} // namespace armnn
\ No newline at end of file
diff --git a/tests/profiling/CommandLineProcessor.hpp b/tests/profiling/CommandLineProcessor.hpp
new file mode 100644 (file)
index 0000000..441d7cd
--- /dev/null
@@ -0,0 +1,25 @@
+//
+// Copyright © 2019 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+#pragma once
+
+namespace armnn
+{
+
+namespace gatordmock
+{
+
+// Parses the command line to extract:
+//
+
+class CommandLineProcessor
+{
+public:
+    bool ProcessCommandLine(int argc, char *argv[]);
+
+};
+
+} // namespace gatordmock
+
+} // namespace armnn
diff --git a/tests/profiling/GatordMockMain.cpp b/tests/profiling/GatordMockMain.cpp
new file mode 100644 (file)
index 0000000..91fa907
--- /dev/null
@@ -0,0 +1,18 @@
+//
+// Copyright © 2019 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "CommandLineProcessor.hpp"
+
+#include <cstdlib>
+
+int main(int argc, char *argv[])
+{
+    armnn::gatordmock::CommandLineProcessor cmdline;
+    if (!cmdline.ProcessCommandLine(argc, argv))
+    {
+        return EXIT_FAILURE;
+    }
+    return EXIT_SUCCESS;
+}