aboutsummaryrefslogtreecommitdiff
path: root/tests/profiling/gatordmock/GatordMockMain.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/profiling/gatordmock/GatordMockMain.cpp')
-rw-r--r--tests/profiling/gatordmock/GatordMockMain.cpp71
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/profiling/gatordmock/GatordMockMain.cpp b/tests/profiling/gatordmock/GatordMockMain.cpp
new file mode 100644
index 0000000000..500b016669
--- /dev/null
+++ b/tests/profiling/gatordmock/GatordMockMain.cpp
@@ -0,0 +1,71 @@
+//
+// Copyright © 2019 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "CommandFileParser.hpp"
+#include "CommandLineProcessor.hpp"
+#include "GatordMockService.hpp"
+#include "MockUtils.hpp"
+#include "PeriodicCounterCaptureCommandHandler.hpp"
+
+#include <string>
+
+int main(int argc, char *argv[])
+{
+ // Process command line arguments
+ armnn::gatordmock::CommandLineProcessor cmdLine;
+ if (!cmdLine.ProcessCommandLine(argc, argv))
+ {
+ return EXIT_FAILURE;
+ }
+
+ // Initialise functors and register into the CommandHandlerRegistry
+ uint32_t version = 1;
+
+ // Create headers
+ uint32_t counterCaptureCommandHeader = armnn::gatordmock::ConstructHeader(1,0,0);
+
+ // Create the Command Handler Registry
+ armnn::profiling::CommandHandlerRegistry registry;
+
+ // Update with derived functors
+ armnn::gatordmock::PeriodicCounterCaptureCommandHandler counterCaptureCommandHandler(counterCaptureCommandHeader,
+ version,
+ cmdLine.IsEchoEnabled());
+
+ // Register different derived functors
+ registry.RegisterFunctor(&counterCaptureCommandHandler);
+
+ armnn::gatordmock::GatordMockService mockService(registry, cmdLine.IsEchoEnabled());
+
+ if (!mockService.OpenListeningSocket(cmdLine.GetUdsNamespace()))
+ {
+ return EXIT_FAILURE;
+ }
+
+ // Wait for a single connection.
+ if (-1 == mockService.BlockForOneClient())
+ {
+ return EXIT_FAILURE;
+ }
+
+ // Send receive the strweam metadata and send connection ack.
+ if (!mockService.WaitForStreamMetaData())
+ {
+ return EXIT_FAILURE;
+ }
+ mockService.SendConnectionAck();
+
+ // Prepare to receive data.
+ mockService.LaunchReceivingThread();
+
+ // Process the SET and WAIT command from the file.
+ armnn::gatordmock::CommandFileParser commandLineParser;
+ commandLineParser.ParseFile(cmdLine.GetCommandFile(), mockService);
+
+ // Once we've finished processing the file wait for the receiving thread to close.
+ mockService.WaitForReceivingThread();
+
+ return EXIT_SUCCESS;
+}