IVGCVSW-5170 Do not resend timeline data if TimelineReporting is already enabled
authorFinn Williams <Finn.Williams@arm.com>
Fri, 7 Aug 2020 10:43:24 +0000 (11:43 +0100)
committerFinn Williams <Finn.Williams@arm.com>
Fri, 7 Aug 2020 10:43:24 +0000 (11:43 +0100)
Signed-off-by: Finn Williams <Finn.Williams@arm.com>
Change-Id: I79f19dd1c1b66d199008c0010c33b5a55e0e89f2

src/profiling/ActivateTimelineReportingCommandHandler.cpp
tests/profiling/gatordmock/tests/GatordMockTests.cpp

index 614417c..6d5f32f 100644 (file)
@@ -41,15 +41,18 @@ void ActivateTimelineReportingCommandHandler::operator()(const arm::pipe::Packet
                                            + " id = " + std::to_string(packet.GetPacketId()));
             }
 
-            m_SendTimelinePacket.SendTimelineMessageDirectoryPackage();
+            if(!m_TimelineReporting)
+            {
+                m_SendTimelinePacket.SendTimelineMessageDirectoryPackage();
 
-            TimelineUtilityMethods::SendWellKnownLabelsAndEventClasses(m_SendTimelinePacket);
+                TimelineUtilityMethods::SendWellKnownLabelsAndEventClasses(m_SendTimelinePacket);
 
-            m_TimelineReporting = true;
+                m_TimelineReporting = true;
 
-            m_ReportStructure.value().ReportStructure();
+                m_ReportStructure.value().ReportStructure();
 
-            m_BackendNotifier.NotifyBackendsForTimelineReporting();
+                m_BackendNotifier.NotifyBackendsForTimelineReporting();
+            }
 
             break;
         default:
index 941e284..303a36a 100644 (file)
@@ -477,6 +477,10 @@ BOOST_AUTO_TEST_CASE(GatorDMockTimeLineActivation)
     WaitFor([&](){return mockBackEndProfilingContext->TimelineReportingEnabled();},
             "Timeline packets were not activated");
 
+    // Once TimelineReporting is Enabled additional activateTimelinePackets should be ignored
+    mockService.SendActivateTimelinePacket();
+    mockService.SendActivateTimelinePacket();
+
     // Once timeline packets have been reactivated the ActivateTimelineReportingCommandHandler will resend the
     // SendWellKnownLabelsAndEventClasses and then send the structure of any loaded networks
     WaitFor([&](){return timelineDecoder.GetModel().m_Labels.size() >= 24;},