diff options
Diffstat (limited to 'src/profiling/test')
-rw-r--r-- | src/profiling/test/FileOnlyProfilingDecoratorTests.cpp | 5 | ||||
-rw-r--r-- | src/profiling/test/ProfilingMocks.hpp | 8 | ||||
-rw-r--r-- | src/profiling/test/ProfilingTestUtils.cpp | 21 | ||||
-rw-r--r-- | src/profiling/test/ProfilingTestUtils.hpp | 6 | ||||
-rw-r--r-- | src/profiling/test/ProfilingTests.cpp | 112 | ||||
-rw-r--r-- | src/profiling/test/ProfilingTests.hpp | 15 | ||||
-rw-r--r-- | src/profiling/test/SendTimelinePacketTests.cpp | 10 | ||||
-rw-r--r-- | src/profiling/test/TimelineUtilityMethodsTests.cpp | 34 |
8 files changed, 118 insertions, 93 deletions
diff --git a/src/profiling/test/FileOnlyProfilingDecoratorTests.cpp b/src/profiling/test/FileOnlyProfilingDecoratorTests.cpp index 7db42de416..baadb8555d 100644 --- a/src/profiling/test/FileOnlyProfilingDecoratorTests.cpp +++ b/src/profiling/test/FileOnlyProfilingDecoratorTests.cpp @@ -30,8 +30,9 @@ class FileOnlyHelperService : public ProfilingService // Wait for a notification from the send thread bool WaitForPacketsSent(uint32_t timeout = 1000) { - return ProfilingService::WaitForPacketSent(ProfilingService::Instance(), timeout); + return ProfilingService::WaitForPacketSent(m_ProfilingService, timeout); } + armnn::profiling::ProfilingService m_ProfilingService; }; BOOST_AUTO_TEST_SUITE(FileOnlyProfilingDecoratorTests) @@ -52,7 +53,7 @@ BOOST_AUTO_TEST_CASE(DumpOutgoingValidFileEndToEnd, * boost::unit_test::disabled FileOnlyHelperService helper; // Enable the profiling service - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); // Bring the profiling service to the "WaitingForAck" state profilingService.Update(); diff --git a/src/profiling/test/ProfilingMocks.hpp b/src/profiling/test/ProfilingMocks.hpp index 944aea6454..eeb641e878 100644 --- a/src/profiling/test/ProfilingMocks.hpp +++ b/src/profiling/test/ProfilingMocks.hpp @@ -7,7 +7,7 @@ #include <Holder.hpp> #include <IProfilingConnectionFactory.hpp> -#include <IProfilingService.hpp> +#include <ProfilingService.hpp> #include <ProfilingGuidGenerator.hpp> #include <ProfilingUtils.hpp> #include <SendCounterPacket.hpp> @@ -620,7 +620,7 @@ private: Counters m_Counters; }; -class MockProfilingService : public IProfilingService, public IRegisterCounterMapping +class MockProfilingService : public ProfilingService { public: MockProfilingService(MockBufferManager& mockBufferManager, @@ -670,12 +670,12 @@ public: void RegisterMapping(uint16_t globalCounterId, uint16_t backendCounterId, - const armnn::BackendId& backendId) override + const armnn::BackendId& backendId) { m_CounterMapping.RegisterMapping(globalCounterId, backendCounterId, backendId); } - void Reset() override + void Reset() { m_CounterMapping.Reset(); } diff --git a/src/profiling/test/ProfilingTestUtils.cpp b/src/profiling/test/ProfilingTestUtils.cpp index 89b5926da7..17291bad64 100644 --- a/src/profiling/test/ProfilingTestUtils.cpp +++ b/src/profiling/test/ProfilingTestUtils.cpp @@ -9,6 +9,7 @@ #include <armnn/Descriptors.hpp> #include <LabelsAndEventClasses.hpp> #include <ProfilingService.hpp> +#include <Runtime.hpp> #include <boost/test/unit_test.hpp> @@ -78,7 +79,8 @@ void VerifyTimelineLabelBinaryPacketData(Optional<ProfilingGuid> guid, } else { - BOOST_CHECK(readProfilingGuid == ProfilingService::Instance().GenerateStaticId(label)); + armnn::profiling::ProfilingService profilingService; + BOOST_CHECK(readProfilingGuid == profilingService.GetStaticId(label)); } // Check the SWTrace label @@ -294,9 +296,8 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // Create runtime in which test will run 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::IRuntimePtr runtime(armnn::IRuntime::Create(options)); +// armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options)); + armnn::Runtime runtime(options); // build up the structure of the network INetworkPtr net(INetwork::Create()); @@ -354,15 +355,15 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) // optimize the network std::vector<armnn::BackendId> backends = { backendId }; - IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime->GetDeviceSpec()); + IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime.GetDeviceSpec()); ProfilingGuid optNetGuid = optNet->GetGuid(); // Load it into the runtime. It should success. armnn::NetworkId netId; - BOOST_TEST(runtime->LoadNetwork(netId, std::move(optNet)) == Status::Success); + BOOST_TEST(runtime.LoadNetwork(netId, std::move(optNet)) == Status::Success); - profiling::ProfilingServiceRuntimeHelper profilingServiceHelper; + profiling::ProfilingServiceRuntimeHelper profilingServiceHelper(GetProfilingService(&runtime)); profiling::BufferManager& bufferManager = profilingServiceHelper.GetProfilingBufferManager(); auto readableBuffer = bufferManager.GetReadableBuffer(); @@ -762,15 +763,15 @@ void VerifyPostOptimisationStructureTestImpl(armnn::BackendId backendId) InputTensors inputTensors { - { 0, ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data()) } + {0, ConstTensor(runtime.GetInputTensorInfo(netId, 0), inputData.data())} }; OutputTensors outputTensors { - { 0, Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data()) } + {0, Tensor(runtime.GetOutputTensorInfo(netId, 0), outputData.data())} }; // Does the inference. - runtime->EnqueueWorkload(netId, inputTensors, outputTensors); + runtime.EnqueueWorkload(netId, inputTensors, outputTensors); // Get readable buffer for inference timeline auto inferenceReadableBuffer = bufferManager.GetReadableBuffer(); diff --git a/src/profiling/test/ProfilingTestUtils.hpp b/src/profiling/test/ProfilingTestUtils.hpp index 175c9cc167..459d62435b 100644 --- a/src/profiling/test/ProfilingTestUtils.hpp +++ b/src/profiling/test/ProfilingTestUtils.hpp @@ -59,13 +59,15 @@ namespace profiling class ProfilingServiceRuntimeHelper : public ProfilingService { public: - ProfilingServiceRuntimeHelper() = default; + ProfilingServiceRuntimeHelper(ProfilingService& profilingService) + : m_ProfilingService(profilingService) {} ~ProfilingServiceRuntimeHelper() = default; BufferManager& GetProfilingBufferManager() { - return GetBufferManager(ProfilingService::Instance()); + return GetBufferManager(m_ProfilingService); } + armnn::profiling::ProfilingService& m_ProfilingService; }; } // namespace profiling diff --git a/src/profiling/test/ProfilingTests.cpp b/src/profiling/test/ProfilingTests.cpp index 0e91696af8..29c5299bd3 100644 --- a/src/profiling/test/ProfilingTests.cpp +++ b/src/profiling/test/ProfilingTests.cpp @@ -645,7 +645,7 @@ BOOST_AUTO_TEST_CASE(CaptureDataMethods) BOOST_AUTO_TEST_CASE(CheckProfilingServiceDisabled) { armnn::Runtime::CreationOptions::ExternalProfilingOptions options; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); BOOST_CHECK(profilingService.GetCurrentState() == ProfilingState::Uninitialised); profilingService.Update(); @@ -655,7 +655,7 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceDisabled) BOOST_AUTO_TEST_CASE(CheckProfilingServiceCounterDirectory) { armnn::Runtime::CreationOptions::ExternalProfilingOptions options; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); const ICounterDirectory& counterDirectory0 = profilingService.GetCounterDirectory(); @@ -679,7 +679,7 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceCounterValues) { armnn::Runtime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); profilingService.Update(); @@ -2332,9 +2332,6 @@ BOOST_AUTO_TEST_CASE(RequestCounterDirectoryCommandHandlerTest2) BOOST_AUTO_TEST_CASE(CheckProfilingServiceGoodConnectionAcknowledgedPacket) { - // Swap the profiling connection factory in the profiling service instance with our mock one - SwapProfilingConnectionFactoryHelper helper; - // Calculate the size of a Stream Metadata packet std::string processName = GetProcessName().substr(0, 60); unsigned int processNameSize = processName.empty() ? 0 : boost::numeric_cast<unsigned int>(processName.size()) + 1; @@ -2343,9 +2340,12 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceGoodConnectionAcknowledgedPacket) // Reset the profiling service to the uninitialized state armnn::Runtime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); + // Swap the profiling connection factory in the profiling service instance with our mock one + SwapProfilingConnectionFactoryHelper helper(profilingService); + // Bring the profiling service to the "WaitingForAck" state BOOST_CHECK(profilingService.GetCurrentState() == ProfilingState::Uninitialised); profilingService.Update(); // Initialize the counter directory @@ -2397,15 +2397,15 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceGoodConnectionAcknowledgedPacket) BOOST_AUTO_TEST_CASE(CheckProfilingServiceGoodRequestCounterDirectoryPacket) { - // Swap the profiling connection factory in the profiling service instance with our mock one - SwapProfilingConnectionFactoryHelper helper; - // Reset the profiling service to the uninitialized state armnn::Runtime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); + // Swap the profiling connection factory in the profiling service instance with our mock one + SwapProfilingConnectionFactoryHelper helper(profilingService); + // Bring the profiling service to the "Active" state BOOST_CHECK(profilingService.GetCurrentState() == ProfilingState::Uninitialised); profilingService.Update(); // Initialize the counter directory @@ -2455,15 +2455,15 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceGoodRequestCounterDirectoryPacket) BOOST_AUTO_TEST_CASE(CheckProfilingServiceBadPeriodicCounterSelectionPacketInvalidCounterUid) { - // Swap the profiling connection factory in the profiling service instance with our mock one - SwapProfilingConnectionFactoryHelper helper; - // Reset the profiling service to the uninitialized state armnn::Runtime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); + // Swap the profiling connection factory in the profiling service instance with our mock one + SwapProfilingConnectionFactoryHelper helper(profilingService); + // Bring the profiling service to the "Active" state BOOST_CHECK(profilingService.GetCurrentState() == ProfilingState::Uninitialised); profilingService.Update(); // Initialize the counter directory @@ -2533,15 +2533,15 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceBadPeriodicCounterSelectionPacketInval BOOST_AUTO_TEST_CASE(CheckProfilingServiceGoodPeriodicCounterSelectionPacketNoCounters) { - // Swap the profiling connection factory in the profiling service instance with our mock one - SwapProfilingConnectionFactoryHelper helper; - // Reset the profiling service to the uninitialized state armnn::Runtime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); + // Swap the profiling connection factory in the profiling service instance with our mock one + SwapProfilingConnectionFactoryHelper helper(profilingService); + // Bring the profiling service to the "Active" state BOOST_CHECK(profilingService.GetCurrentState() == ProfilingState::Uninitialised); profilingService.Update(); // Initialize the counter directory @@ -2597,15 +2597,15 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceGoodPeriodicCounterSelectionPacketNoCo BOOST_AUTO_TEST_CASE(CheckProfilingServiceGoodPeriodicCounterSelectionPacketSingleCounter) { - // Swap the profiling connection factory in the profiling service instance with our mock one - SwapProfilingConnectionFactoryHelper helper; - // Reset the profiling service to the uninitialized state armnn::Runtime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); + // Swap the profiling connection factory in the profiling service instance with our mock one + SwapProfilingConnectionFactoryHelper helper(profilingService); + // Bring the profiling service to the "Active" state BOOST_CHECK(profilingService.GetCurrentState() == ProfilingState::Uninitialised); profilingService.Update(); // Initialize the counter directory @@ -2674,14 +2674,15 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceGoodPeriodicCounterSelectionPacketSing BOOST_AUTO_TEST_CASE(CheckProfilingServiceGoodPeriodicCounterSelectionPacketMultipleCounters) { - // Swap the profiling connection factory in the profiling service instance with our mock one - SwapProfilingConnectionFactoryHelper helper; // Reset the profiling service to the uninitialized state armnn::Runtime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); + // Swap the profiling connection factory in the profiling service instance with our mock one + SwapProfilingConnectionFactoryHelper helper(profilingService); + // Bring the profiling service to the "Active" state BOOST_CHECK(profilingService.GetCurrentState() == ProfilingState::Uninitialised); profilingService.Update(); // Initialize the counter directory @@ -2752,14 +2753,15 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceGoodPeriodicCounterSelectionPacketMult BOOST_AUTO_TEST_CASE(CheckProfilingServiceDisconnect) { - // Swap the profiling connection factory in the profiling service instance with our mock one - SwapProfilingConnectionFactoryHelper helper; // Reset the profiling service to the uninitialized state armnn::Runtime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); + // Swap the profiling connection factory in the profiling service instance with our mock one + SwapProfilingConnectionFactoryHelper helper(profilingService); + // Try to disconnect the profiling service while in the "Uninitialised" state BOOST_CHECK(profilingService.GetCurrentState() == ProfilingState::Uninitialised); profilingService.Disconnect(); @@ -2809,14 +2811,15 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceDisconnect) BOOST_AUTO_TEST_CASE(CheckProfilingServiceGoodPerJobCounterSelectionPacket) { - // Swap the profiling connection factory in the profiling service instance with our mock one - SwapProfilingConnectionFactoryHelper helper; // Reset the profiling service to the uninitialized state armnn::Runtime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); + // Swap the profiling connection factory in the profiling service instance with our mock one + SwapProfilingConnectionFactoryHelper helper(profilingService); + // Bring the profiling service to the "Active" state BOOST_CHECK(profilingService.GetCurrentState() == ProfilingState::Uninitialised); profilingService.Update(); // Initialize the counter directory @@ -2877,7 +2880,7 @@ BOOST_AUTO_TEST_CASE(CheckConfigureProfilingServiceOn) { armnn::Runtime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; BOOST_CHECK(profilingService.GetCurrentState() == ProfilingState::Uninitialised); profilingService.ConfigureProfilingService(options); // should get as far as NOT_CONNECTED @@ -2890,7 +2893,7 @@ BOOST_AUTO_TEST_CASE(CheckConfigureProfilingServiceOn) BOOST_AUTO_TEST_CASE(CheckConfigureProfilingServiceOff) { armnn::Runtime::CreationOptions::ExternalProfilingOptions options; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; BOOST_CHECK(profilingService.GetCurrentState() == ProfilingState::Uninitialised); profilingService.ConfigureProfilingService(options); // should not move from Uninitialised @@ -2906,7 +2909,7 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceEnabled) LogLevelSwapper logLevelSwapper(armnn::LogSeverity::Warning); armnn::Runtime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); BOOST_CHECK(profilingService.GetCurrentState() == ProfilingState::Uninitialised); profilingService.Update(); @@ -2936,7 +2939,7 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceEnabledRuntime) // Locally reduce log level to "Warning", as this test needs to parse a warning message from the standard output LogLevelSwapper logLevelSwapper(armnn::LogSeverity::Warning); armnn::Runtime::CreationOptions::ExternalProfilingOptions options; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); BOOST_CHECK(profilingService.GetCurrentState() == ProfilingState::Uninitialised); profilingService.Update(); @@ -2970,8 +2973,7 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceBadConnectionAcknowledgedPacket) { // Locally reduce log level to "Warning", as this test needs to parse a warning message from the standard output LogLevelSwapper logLevelSwapper(armnn::LogSeverity::Warning); - // Swap the profiling connection factory in the profiling service instance with our mock one - SwapProfilingConnectionFactoryHelper helper; + // Redirect the standard output to a local stream so that we can parse the warning message std::stringstream ss; @@ -2980,9 +2982,12 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceBadConnectionAcknowledgedPacket) // Reset the profiling service to the uninitialized state armnn::Runtime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); + // Swap the profiling connection factory in the profiling service instance with our mock one + SwapProfilingConnectionFactoryHelper helper(profilingService); + // Bring the profiling service to the "WaitingForAck" state BOOST_CHECK(profilingService.GetCurrentState() == ProfilingState::Uninitialised); profilingService.Update(); // Initialize the counter directory @@ -3031,8 +3036,6 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceBadRequestCounterDirectoryPacket) { // Locally reduce log level to "Warning", as this test needs to parse a warning message from the standard output LogLevelSwapper logLevelSwapper(armnn::LogSeverity::Warning); - // Swap the profiling connection factory in the profiling service instance with our mock one - SwapProfilingConnectionFactoryHelper helper; // Redirect the standard output to a local stream so that we can parse the warning message std::stringstream ss; @@ -3041,9 +3044,12 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceBadRequestCounterDirectoryPacket) // Reset the profiling service to the uninitialized state armnn::Runtime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); + // Swap the profiling connection factory in the profiling service instance with our mock one + SwapProfilingConnectionFactoryHelper helper(profilingService); + // Bring the profiling service to the "Active" state BOOST_CHECK(profilingService.GetCurrentState() == ProfilingState::Uninitialised); helper.ForceTransitionToState(ProfilingState::NotConnected); @@ -3094,8 +3100,6 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceBadPeriodicCounterSelectionPacket) { // Locally reduce log level to "Warning", as this test needs to parse a warning message from the standard output LogLevelSwapper logLevelSwapper(armnn::LogSeverity::Warning); - // Swap the profiling connection factory in the profiling service instance with our mock one - SwapProfilingConnectionFactoryHelper helper; // Redirect the standard output to a local stream so that we can parse the warning message std::stringstream ss; @@ -3104,9 +3108,12 @@ BOOST_AUTO_TEST_CASE(CheckProfilingServiceBadPeriodicCounterSelectionPacket) // Reset the profiling service to the uninitialized state armnn::Runtime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); + // Swap the profiling connection factory in the profiling service instance with our mock one + SwapProfilingConnectionFactoryHelper helper(profilingService); + // Bring the profiling service to the "Active" state BOOST_CHECK(profilingService.GetCurrentState() == ProfilingState::Uninitialised); profilingService.Update(); // Initialize the counter directory @@ -3198,14 +3205,16 @@ BOOST_AUTO_TEST_CASE(CheckRegisterBackendCounters) uint16_t globalCounterIds = armnn::profiling::INFERENCES_RUN; armnn::BackendId cpuRefId(armnn::Compute::CpuRef); - RegisterBackendCounters registerBackendCounters(globalCounterIds, cpuRefId); - // Reset the profiling service to the uninitialized state armnn::Runtime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); + RegisterBackendCounters registerBackendCounters(globalCounterIds, cpuRefId, profilingService); + + + BOOST_CHECK(profilingService.GetCounterDirectory().GetCategories().empty()); registerBackendCounters.RegisterCategory("categoryOne"); auto categoryOnePtr = profilingService.GetCounterDirectory().GetCategory("categoryOne"); @@ -3248,7 +3257,7 @@ BOOST_AUTO_TEST_CASE(CheckCounterStatusQuery) options.m_ProfilingOptions.m_EnableProfiling = true; // Reset the profiling service to the uninitialized state - ProfilingService& profilingService = ProfilingService::Instance(); + ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options.m_ProfilingOptions, true); const armnn::BackendId cpuRefId(armnn::Compute::CpuRef); @@ -3261,7 +3270,7 @@ BOOST_AUTO_TEST_CASE(CheckCounterStatusQuery) uint16_t initialNumGlobalCounterIds = armnn::profiling::INFERENCES_RUN; // Create RegisterBackendCounters for CpuRef - RegisterBackendCounters registerBackendCountersCpuRef(initialNumGlobalCounterIds, cpuRefId); + RegisterBackendCounters registerBackendCountersCpuRef(initialNumGlobalCounterIds, cpuRefId, profilingService); // Create 'testCategory' in CounterDirectory (backend agnostic) BOOST_CHECK(profilingService.GetCounterDirectory().GetCategories().empty()); @@ -3298,7 +3307,7 @@ BOOST_AUTO_TEST_CASE(CheckCounterStatusQuery) BOOST_CHECK(backendMapping.second == cpuRefId); // Create RegisterBackendCounters for CpuAcc - RegisterBackendCounters registerBackendCountersCpuAcc(currentNumGlobalCounterIds, cpuAccId); + RegisterBackendCounters registerBackendCountersCpuAcc(currentNumGlobalCounterIds, cpuAccId, profilingService); // Register the backend counter for CpuAcc and validate GetGlobalId and GetBackendId currentNumGlobalCounterIds = registerBackendCountersCpuAcc.RegisterCounter( @@ -3384,6 +3393,7 @@ BOOST_AUTO_TEST_CASE(CheckRegisterCounters) armnn::Runtime::CreationOptions options; options.m_ProfilingOptions.m_EnableProfiling = true; MockBufferManager mockBuffer(1024); + CaptureData captureData; MockProfilingService mockProfilingService( mockBuffer, options.m_ProfilingOptions.m_EnableProfiling, captureData); diff --git a/src/profiling/test/ProfilingTests.hpp b/src/profiling/test/ProfilingTests.hpp index 008110392c..a5971e0a4b 100644 --- a/src/profiling/test/ProfilingTests.hpp +++ b/src/profiling/test/ProfilingTests.hpp @@ -204,13 +204,15 @@ class SwapProfilingConnectionFactoryHelper : public ProfilingService public: using MockProfilingConnectionFactoryPtr = std::unique_ptr<MockProfilingConnectionFactory>; - SwapProfilingConnectionFactoryHelper() + SwapProfilingConnectionFactoryHelper(armnn::profiling::ProfilingService& profilingService) : ProfilingService() + , m_ProfilingService(profilingService) , m_MockProfilingConnectionFactory(new MockProfilingConnectionFactory()) , m_BackupProfilingConnectionFactory(nullptr) + { BOOST_CHECK(m_MockProfilingConnectionFactory); - SwapProfilingConnectionFactory(ProfilingService::Instance(), + SwapProfilingConnectionFactory(m_ProfilingService, m_MockProfilingConnectionFactory.get(), m_BackupProfilingConnectionFactory); BOOST_CHECK(m_BackupProfilingConnectionFactory); @@ -219,20 +221,20 @@ public: { BOOST_CHECK(m_BackupProfilingConnectionFactory); IProfilingConnectionFactory* temp = nullptr; - SwapProfilingConnectionFactory(ProfilingService::Instance(), + SwapProfilingConnectionFactory(m_ProfilingService, m_BackupProfilingConnectionFactory, temp); } MockProfilingConnection* GetMockProfilingConnection() { - IProfilingConnection* profilingConnection = GetProfilingConnection(ProfilingService::Instance()); + IProfilingConnection* profilingConnection = GetProfilingConnection(m_ProfilingService); return boost::polymorphic_downcast<MockProfilingConnection*>(profilingConnection); } void ForceTransitionToState(ProfilingState newState) { - TransitionToState(ProfilingService::Instance(), newState); + TransitionToState(m_ProfilingService, newState); } long WaitForPacketsSent(MockProfilingConnection* mockProfilingConnection, @@ -247,7 +249,7 @@ public: { std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now(); // Wait for a notification from the send thread - ProfilingService::WaitForPacketSent(ProfilingService::Instance(), timeout); + ProfilingService::WaitForPacketSent(m_ProfilingService, timeout); std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now(); @@ -268,6 +270,7 @@ public: } private: + armnn::profiling::ProfilingService& m_ProfilingService; MockProfilingConnectionFactoryPtr m_MockProfilingConnectionFactory; IProfilingConnectionFactory* m_BackupProfilingConnectionFactory; }; diff --git a/src/profiling/test/SendTimelinePacketTests.cpp b/src/profiling/test/SendTimelinePacketTests.cpp index 2e64c75b90..c03e745574 100644 --- a/src/profiling/test/SendTimelinePacketTests.cpp +++ b/src/profiling/test/SendTimelinePacketTests.cpp @@ -397,18 +397,18 @@ BOOST_AUTO_TEST_CASE(GetGuidsFromProfilingService) { armnn::IRuntime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); - ProfilingStaticGuid staticGuid = profilingService.GenerateStaticId("dummy"); + ProfilingStaticGuid staticGuid = profilingService.GetStaticId("dummy"); std::hash<std::string> hasher; uint64_t hash = static_cast<uint64_t>(hasher("dummy")); ProfilingStaticGuid expectedStaticValue(hash | MIN_STATIC_GUID); BOOST_CHECK(staticGuid == expectedStaticValue); - ProfilingDynamicGuid dynamicGuid = profilingService.NextGuid(); + ProfilingDynamicGuid dynamicGuid = profilingService.GetNextGuid(); uint64_t dynamicGuidValue = static_cast<uint64_t>(dynamicGuid); ++dynamicGuidValue; ProfilingDynamicGuid expectedDynamicValue(dynamicGuidValue); - dynamicGuid = profilingService.NextGuid(); + dynamicGuid = profilingService.GetNextGuid(); BOOST_CHECK(dynamicGuid == expectedDynamicValue); } @@ -416,7 +416,7 @@ BOOST_AUTO_TEST_CASE(GetTimelinePackerWriterFromProfilingService) { armnn::IRuntime::CreationOptions::ExternalProfilingOptions options; options.m_EnableProfiling = true; - ProfilingService& profilingService = ProfilingService::Instance(); + armnn::profiling::ProfilingService profilingService; profilingService.ResetExternalProfilingOptions(options, true); std::unique_ptr<ISendTimelinePacket> writer = profilingService.GetSendTimelinePacket(); diff --git a/src/profiling/test/TimelineUtilityMethodsTests.cpp b/src/profiling/test/TimelineUtilityMethodsTests.cpp index fed31c3def..f83a9622ca 100644 --- a/src/profiling/test/TimelineUtilityMethodsTests.cpp +++ b/src/profiling/test/TimelineUtilityMethodsTests.cpp @@ -23,11 +23,13 @@ BOOST_AUTO_TEST_SUITE(TimelineUtilityMethodsTests) BOOST_AUTO_TEST_CASE(CreateTypedLabelTest) { MockBufferManager mockBufferManager(1024); + ProfilingService profilingService; + std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = std::make_unique<SendTimelinePacket>(mockBufferManager); - TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket); + TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket, profilingService); // Generate first guid to ensure that the named typed entity guid is not 0 on local single test. - ProfilingService::Instance().NextGuid(); + profilingService.NextGuid(); ProfilingGuid entityGuid(123); const std::string entityName = "some entity"; @@ -78,8 +80,9 @@ BOOST_AUTO_TEST_CASE(CreateTypedLabelTest) BOOST_AUTO_TEST_CASE(SendWellKnownLabelsAndEventClassesTest) { MockBufferManager mockBufferManager(1024); + ProfilingService profilingService; std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = std::make_unique<SendTimelinePacket>(mockBufferManager); - TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket); + TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket, profilingService); BOOST_CHECK_NO_THROW(timelineUtilityMethods.SendWellKnownLabelsAndEventClasses()); @@ -178,8 +181,9 @@ BOOST_AUTO_TEST_CASE(SendWellKnownLabelsAndEventClassesTest) BOOST_AUTO_TEST_CASE(CreateNamedTypedChildEntityTest) { MockBufferManager mockBufferManager(1024); + ProfilingService profilingService; std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = std::make_unique<SendTimelinePacket>(mockBufferManager); - TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket); + TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket, profilingService); ProfilingDynamicGuid childEntityGuid(0); ProfilingGuid parentEntityGuid(123); @@ -187,7 +191,7 @@ BOOST_AUTO_TEST_CASE(CreateNamedTypedChildEntityTest) const std::string entityType = "some type"; // Generate first guid to ensure that the named typed entity guid is not 0 on local single test. - ProfilingService::Instance().NextGuid(); + profilingService.NextGuid(); BOOST_CHECK_THROW(timelineUtilityMethods.CreateNamedTypedChildEntity(parentEntityGuid, "", entityType), InvalidArgumentException); @@ -276,11 +280,12 @@ BOOST_AUTO_TEST_CASE(CreateNamedTypedChildEntityTest) BOOST_AUTO_TEST_CASE(DeclareLabelTest) { MockBufferManager mockBufferManager(1024); + ProfilingService profilingService; std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = std::make_unique<SendTimelinePacket>(mockBufferManager); - TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket); + TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket, profilingService); // Generate first guid to ensure that the named typed entity guid is not 0 on local single test. - ProfilingService::Instance().NextGuid(); + profilingService.NextGuid(); // Try declaring an invalid (empty) label BOOST_CHECK_THROW(timelineUtilityMethods.DeclareLabel(""), InvalidArgumentException); @@ -304,8 +309,9 @@ BOOST_AUTO_TEST_CASE(DeclareLabelTest) BOOST_AUTO_TEST_CASE(CreateNameTypeEntityInvalidTest) { MockBufferManager mockBufferManager(1024); + ProfilingService profilingService; std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = std::make_unique<SendTimelinePacket>(mockBufferManager); - TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket); + TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket, profilingService); // Invalid name BOOST_CHECK_THROW(timelineUtilityMethods.CreateNamedTypedEntity("", "Type"), InvalidArgumentException); @@ -313,7 +319,7 @@ BOOST_AUTO_TEST_CASE(CreateNameTypeEntityInvalidTest) // Invalid type BOOST_CHECK_THROW(timelineUtilityMethods.CreateNamedTypedEntity("Name", ""), InvalidArgumentException); - ProfilingDynamicGuid guid = ProfilingService::Instance().NextGuid(); + ProfilingDynamicGuid guid = profilingService.NextGuid(); // CreatedNamedTypedEntity with Guid - Invalid name BOOST_CHECK_THROW(timelineUtilityMethods.CreateNamedTypedEntity(guid, "", "Type"), @@ -328,14 +334,15 @@ BOOST_AUTO_TEST_CASE(CreateNameTypeEntityInvalidTest) BOOST_AUTO_TEST_CASE(CreateNameTypeEntityTest) { MockBufferManager mockBufferManager(1024); + ProfilingService profilingService; std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = std::make_unique<SendTimelinePacket>(mockBufferManager); - TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket); + TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket, profilingService); const std::string entityName = "Entity0"; const std::string entityType = "Type0"; // Generate first guid to ensure that the named typed entity guid is not 0 on local single test. - ProfilingService::Instance().NextGuid(); + profilingService.NextGuid(); ProfilingDynamicGuid guid = timelineUtilityMethods.CreateNamedTypedEntity(entityName, entityType); BOOST_CHECK(guid != ProfilingGuid(0)); @@ -407,10 +414,11 @@ BOOST_AUTO_TEST_CASE(CreateNameTypeEntityTest) BOOST_AUTO_TEST_CASE(RecordEventTest) { MockBufferManager mockBufferManager(1024); + ProfilingService profilingService; std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = std::make_unique<SendTimelinePacket>(mockBufferManager); - TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket); + TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket, profilingService); // Generate first guid to ensure that the named typed entity guid is not 0 on local single test. - ProfilingService::Instance().NextGuid(); + profilingService.NextGuid(); ProfilingGuid entityGuid(123); ProfilingStaticGuid eventClassGuid(456); |