IVGCVSW-4400 Backend Counter Registry Functionality

 * Adding BackendProfilingContext to the MockBackend
 * Made IBackendProfilingContext pure Virtual
 * Added UnitTest using MockBackend for testing Backend Counter Registration
 * Moved Registry of backend counters from Initialize() to AddBackendProfilingContext()
 * Added m_MaxGlobalCounterId to ProfilingService
 * Removed automatic registration of MockBack in BackendRegistry()

Signed-off-by: David Monahan <david.monahan@arm.com>
Change-Id: Ie1c6c31e56d1ac7079d6116ecad041961014aedc
diff --git a/src/backends/backendsCommon/test/BackendProfilingTests.cpp b/src/backends/backendsCommon/test/BackendProfilingTests.cpp
new file mode 100644
index 0000000..fc21730
--- /dev/null
+++ b/src/backends/backendsCommon/test/BackendProfilingTests.cpp
@@ -0,0 +1,41 @@
+//
+// Copyright © 2020 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "MockBackend.hpp"
+#include "MockBackendId.hpp"
+#include "Runtime.hpp"
+
+#include <armnn/BackendId.hpp>
+#include <boost/test/unit_test.hpp>
+#include <vector>
+
+BOOST_AUTO_TEST_SUITE(BackendProfilingTestSuite)
+
+BOOST_AUTO_TEST_CASE(BackendProfilingCounterRegisterMockBackendTest)
+{
+    // Reset the profiling service to the uninitialized state
+    armnn::IRuntime::CreationOptions options;
+    options.m_ProfilingOptions.m_EnableProfiling = true;
+    armnn::profiling::ProfilingService& profilingService = armnn::profiling::ProfilingService::Instance();
+    profilingService.ConfigureProfilingService(options.m_ProfilingOptions, true);
+
+    armnn::MockBackendInitialiser initialiser;
+    // Create a runtime
+    armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
+
+    // Check if the MockBackends 3 dummy counters {0, 1, 2-5 (four cores)} are registered
+    armnn::BackendId mockId = armnn::MockBackendId();
+    const armnn::profiling::ICounterMappings& counterMap = profilingService.GetCounterMappings();
+    BOOST_CHECK(counterMap.GetGlobalId(0, mockId) == 5);
+    BOOST_CHECK(counterMap.GetGlobalId(1, mockId) == 6);
+    BOOST_CHECK(counterMap.GetGlobalId(2, mockId) == 7);
+    BOOST_CHECK(counterMap.GetGlobalId(3, mockId) == 8);
+    BOOST_CHECK(counterMap.GetGlobalId(4, mockId) == 9);
+    BOOST_CHECK(counterMap.GetGlobalId(5, mockId) == 10);
+    options.m_ProfilingOptions.m_EnableProfiling = false;
+    profilingService.ResetExternalProfilingOptions(options.m_ProfilingOptions, true);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
\ No newline at end of file