1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2019 Arm Ltd and Contributors. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker // 5*89c4ff92SAndroid Build Coastguard Worker 6*89c4ff92SAndroid Build Coastguard Worker #include "ProfilingMocks.hpp" 7*89c4ff92SAndroid Build Coastguard Worker #include "ProfilingTestUtils.hpp" 8*89c4ff92SAndroid Build Coastguard Worker #include "ProfilingOptionsConverter.hpp" 9*89c4ff92SAndroid Build Coastguard Worker #include <Runtime.hpp> 10*89c4ff92SAndroid Build Coastguard Worker #include <ArmNNProfilingServiceInitialiser.hpp> 11*89c4ff92SAndroid Build Coastguard Worker 12*89c4ff92SAndroid Build Coastguard Worker #include <armnn/profiling/ArmNNProfiling.hpp> 13*89c4ff92SAndroid Build Coastguard Worker 14*89c4ff92SAndroid Build Coastguard Worker #include <client/src/BufferManager.hpp> 15*89c4ff92SAndroid Build Coastguard Worker #include <client/src/ProfilingService.hpp> 16*89c4ff92SAndroid Build Coastguard Worker #include <client/src/ProfilingUtils.hpp> 17*89c4ff92SAndroid Build Coastguard Worker #include <client/src/SendTimelinePacket.hpp> 18*89c4ff92SAndroid Build Coastguard Worker #include <client/src/TimelinePacketWriterFactory.hpp> 19*89c4ff92SAndroid Build Coastguard Worker 20*89c4ff92SAndroid Build Coastguard Worker #include <common/include/LabelsAndEventClasses.hpp> 21*89c4ff92SAndroid Build Coastguard Worker #include <common/include/SwTrace.hpp> 22*89c4ff92SAndroid Build Coastguard Worker #include <common/include/Threads.hpp> 23*89c4ff92SAndroid Build Coastguard Worker 24*89c4ff92SAndroid Build Coastguard Worker #include <doctest/doctest.h> 25*89c4ff92SAndroid Build Coastguard Worker 26*89c4ff92SAndroid Build Coastguard Worker #include <functional> 27*89c4ff92SAndroid Build Coastguard Worker 28*89c4ff92SAndroid Build Coastguard Worker using namespace arm::pipe; 29*89c4ff92SAndroid Build Coastguard Worker 30*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("SendTimelinePacketTests") 31*89c4ff92SAndroid Build Coastguard Worker { 32*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("SendTimelineMessageDirectoryPackageTest") 33*89c4ff92SAndroid Build Coastguard Worker { 34*89c4ff92SAndroid Build Coastguard Worker MockBufferManager mockBuffer(512); 35*89c4ff92SAndroid Build Coastguard Worker TimelinePacketWriterFactory timelinePacketWriterFactory(mockBuffer); 36*89c4ff92SAndroid Build Coastguard Worker std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = timelinePacketWriterFactory.GetSendTimelinePacket(); 37*89c4ff92SAndroid Build Coastguard Worker 38*89c4ff92SAndroid Build Coastguard Worker sendTimelinePacket->SendTimelineMessageDirectoryPackage(); 39*89c4ff92SAndroid Build Coastguard Worker 40*89c4ff92SAndroid Build Coastguard Worker // Get the readable buffer 41*89c4ff92SAndroid Build Coastguard Worker auto packetBuffer = mockBuffer.GetReadableBuffer(); 42*89c4ff92SAndroid Build Coastguard Worker 43*89c4ff92SAndroid Build Coastguard Worker unsigned int uint8_t_size = sizeof(uint8_t); 44*89c4ff92SAndroid Build Coastguard Worker unsigned int uint32_t_size = sizeof(uint32_t); 45*89c4ff92SAndroid Build Coastguard Worker unsigned int uint64_t_size = sizeof(uint64_t); 46*89c4ff92SAndroid Build Coastguard Worker 47*89c4ff92SAndroid Build Coastguard Worker // Check the packet header 48*89c4ff92SAndroid Build Coastguard Worker unsigned int offset = 0; 49*89c4ff92SAndroid Build Coastguard Worker uint32_t packetHeaderWord0 = ReadUint32(packetBuffer, offset); 50*89c4ff92SAndroid Build Coastguard Worker uint32_t packetFamily = (packetHeaderWord0 >> 26) & 0x0000003F; 51*89c4ff92SAndroid Build Coastguard Worker uint32_t packetClass = (packetHeaderWord0 >> 19) & 0x0000007F; 52*89c4ff92SAndroid Build Coastguard Worker uint32_t packetType = (packetHeaderWord0 >> 16) & 0x00000007; 53*89c4ff92SAndroid Build Coastguard Worker uint32_t streamId = (packetHeaderWord0 >> 0) & 0x00000007; 54*89c4ff92SAndroid Build Coastguard Worker 55*89c4ff92SAndroid Build Coastguard Worker CHECK(packetFamily == 1); 56*89c4ff92SAndroid Build Coastguard Worker CHECK(packetClass == 0); 57*89c4ff92SAndroid Build Coastguard Worker CHECK(packetType == 0); 58*89c4ff92SAndroid Build Coastguard Worker CHECK(streamId == 0); 59*89c4ff92SAndroid Build Coastguard Worker 60*89c4ff92SAndroid Build Coastguard Worker offset += uint32_t_size; 61*89c4ff92SAndroid Build Coastguard Worker uint32_t packetHeaderWord1 = ReadUint32(packetBuffer, offset); 62*89c4ff92SAndroid Build Coastguard Worker uint32_t sequenceNumbered = (packetHeaderWord1 >> 24) & 0x00000001; 63*89c4ff92SAndroid Build Coastguard Worker uint32_t dataLength = (packetHeaderWord1 >> 0) & 0x00FFFFFF; 64*89c4ff92SAndroid Build Coastguard Worker CHECK(sequenceNumbered == 0); 65*89c4ff92SAndroid Build Coastguard Worker CHECK(dataLength == 443); 66*89c4ff92SAndroid Build Coastguard Worker 67*89c4ff92SAndroid Build Coastguard Worker offset += uint32_t_size; 68*89c4ff92SAndroid Build Coastguard Worker uint8_t readStreamVersion = ReadUint8(packetBuffer, offset); 69*89c4ff92SAndroid Build Coastguard Worker CHECK(readStreamVersion == 4); 70*89c4ff92SAndroid Build Coastguard Worker offset += uint8_t_size; 71*89c4ff92SAndroid Build Coastguard Worker uint8_t readPointerBytes = ReadUint8(packetBuffer, offset); 72*89c4ff92SAndroid Build Coastguard Worker CHECK(readPointerBytes == uint64_t_size); 73*89c4ff92SAndroid Build Coastguard Worker offset += uint8_t_size; 74*89c4ff92SAndroid Build Coastguard Worker uint8_t readThreadIdBytes = ReadUint8(packetBuffer, offset); 75*89c4ff92SAndroid Build Coastguard Worker CHECK(readThreadIdBytes == ThreadIdSize); 76*89c4ff92SAndroid Build Coastguard Worker 77*89c4ff92SAndroid Build Coastguard Worker offset += uint8_t_size; 78*89c4ff92SAndroid Build Coastguard Worker uint32_t DeclCount = ReadUint32(packetBuffer, offset); 79*89c4ff92SAndroid Build Coastguard Worker CHECK(DeclCount == 5); 80*89c4ff92SAndroid Build Coastguard Worker 81*89c4ff92SAndroid Build Coastguard Worker offset += uint32_t_size; 82*89c4ff92SAndroid Build Coastguard Worker arm::pipe::SwTraceMessage swTraceMessage = arm::pipe::ReadSwTraceMessage(packetBuffer->GetReadableData(), 83*89c4ff92SAndroid Build Coastguard Worker offset, 84*89c4ff92SAndroid Build Coastguard Worker packetBuffer->GetSize()); 85*89c4ff92SAndroid Build Coastguard Worker 86*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_Id == 0); 87*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_Name == "declareLabel"); 88*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_UiName == "declare label"); 89*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes.size() == 2); 90*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes[0] == 'p'); 91*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes[1] == 's'); 92*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames.size() == 2); 93*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames[0] == "guid"); 94*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames[1] == "value"); 95*89c4ff92SAndroid Build Coastguard Worker 96*89c4ff92SAndroid Build Coastguard Worker swTraceMessage = arm::pipe::ReadSwTraceMessage(packetBuffer->GetReadableData(), 97*89c4ff92SAndroid Build Coastguard Worker offset, 98*89c4ff92SAndroid Build Coastguard Worker packetBuffer->GetSize()); 99*89c4ff92SAndroid Build Coastguard Worker 100*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_Id == 1); 101*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_Name == "declareEntity"); 102*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_UiName == "declare entity"); 103*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes.size() == 1); 104*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes[0] == 'p'); 105*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames.size() == 1); 106*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames[0] == "guid"); 107*89c4ff92SAndroid Build Coastguard Worker 108*89c4ff92SAndroid Build Coastguard Worker swTraceMessage = arm::pipe::ReadSwTraceMessage(packetBuffer->GetReadableData(), 109*89c4ff92SAndroid Build Coastguard Worker offset, 110*89c4ff92SAndroid Build Coastguard Worker packetBuffer->GetSize()); 111*89c4ff92SAndroid Build Coastguard Worker 112*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_Id == 2); 113*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_Name == "declareEventClass"); 114*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_UiName == "declare event class"); 115*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes.size() == 2); 116*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes[0] == 'p'); 117*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes[1] == 'p'); 118*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames.size() == 2); 119*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames[0] == "guid"); 120*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames[1] == "nameGuid"); 121*89c4ff92SAndroid Build Coastguard Worker 122*89c4ff92SAndroid Build Coastguard Worker swTraceMessage = arm::pipe::ReadSwTraceMessage(packetBuffer->GetReadableData(), 123*89c4ff92SAndroid Build Coastguard Worker offset, 124*89c4ff92SAndroid Build Coastguard Worker packetBuffer->GetSize()); 125*89c4ff92SAndroid Build Coastguard Worker 126*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_Id == 3); 127*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_Name == "declareRelationship"); 128*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_UiName == "declare relationship"); 129*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes.size() == 5); 130*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes[0] == 'I'); 131*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes[1] == 'p'); 132*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes[2] == 'p'); 133*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes[3] == 'p'); 134*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes[4] == 'p'); 135*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames.size() == 5); 136*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames[0] == "relationshipType"); 137*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames[1] == "relationshipGuid"); 138*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames[2] == "headGuid"); 139*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames[3] == "tailGuid"); 140*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames[4] == "attributeGuid"); 141*89c4ff92SAndroid Build Coastguard Worker 142*89c4ff92SAndroid Build Coastguard Worker swTraceMessage = arm::pipe::ReadSwTraceMessage(packetBuffer->GetReadableData(), 143*89c4ff92SAndroid Build Coastguard Worker offset, 144*89c4ff92SAndroid Build Coastguard Worker packetBuffer->GetSize()); 145*89c4ff92SAndroid Build Coastguard Worker 146*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_Id == 4); 147*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_Name == "declareEvent"); 148*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_UiName == "declare event"); 149*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes.size() == 3); 150*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes[0] == '@'); 151*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes[1] == 't'); 152*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgTypes[2] == 'p'); 153*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames.size() == 3); 154*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames[0] == "timestamp"); 155*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames[1] == "threadId"); 156*89c4ff92SAndroid Build Coastguard Worker CHECK(swTraceMessage.m_ArgNames[2] == "eventGuid"); 157*89c4ff92SAndroid Build Coastguard Worker } 158*89c4ff92SAndroid Build Coastguard Worker 159*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("SendTimelineEntityWithEventClassPacketTest") 160*89c4ff92SAndroid Build Coastguard Worker { 161*89c4ff92SAndroid Build Coastguard Worker MockBufferManager bufferManager(40); 162*89c4ff92SAndroid Build Coastguard Worker TimelinePacketWriterFactory timelinePacketWriterFactory(bufferManager); 163*89c4ff92SAndroid Build Coastguard Worker std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = timelinePacketWriterFactory.GetSendTimelinePacket(); 164*89c4ff92SAndroid Build Coastguard Worker 165*89c4ff92SAndroid Build Coastguard Worker const uint64_t entityBinaryPacketProfilingGuid = 123456u; 166*89c4ff92SAndroid Build Coastguard Worker sendTimelinePacket->SendTimelineEntityBinaryPacket(entityBinaryPacketProfilingGuid); 167*89c4ff92SAndroid Build Coastguard Worker 168*89c4ff92SAndroid Build Coastguard Worker const uint64_t eventClassBinaryPacketProfilingGuid = 789123u; 169*89c4ff92SAndroid Build Coastguard Worker const uint64_t eventClassBinaryPacketNameGuid = 8845u; 170*89c4ff92SAndroid Build Coastguard Worker sendTimelinePacket->SendTimelineEventClassBinaryPacket( 171*89c4ff92SAndroid Build Coastguard Worker eventClassBinaryPacketProfilingGuid, eventClassBinaryPacketNameGuid); 172*89c4ff92SAndroid Build Coastguard Worker 173*89c4ff92SAndroid Build Coastguard Worker // Commit the messages 174*89c4ff92SAndroid Build Coastguard Worker sendTimelinePacket->Commit(); 175*89c4ff92SAndroid Build Coastguard Worker 176*89c4ff92SAndroid Build Coastguard Worker // Get the readable buffer 177*89c4ff92SAndroid Build Coastguard Worker auto packetBuffer = bufferManager.GetReadableBuffer(); 178*89c4ff92SAndroid Build Coastguard Worker 179*89c4ff92SAndroid Build Coastguard Worker unsigned int uint32_t_size = sizeof(uint32_t); 180*89c4ff92SAndroid Build Coastguard Worker unsigned int uint64_t_size = sizeof(uint64_t); 181*89c4ff92SAndroid Build Coastguard Worker 182*89c4ff92SAndroid Build Coastguard Worker // Check the packet header 183*89c4ff92SAndroid Build Coastguard Worker unsigned int offset = 0; 184*89c4ff92SAndroid Build Coastguard Worker 185*89c4ff92SAndroid Build Coastguard Worker // Reading TimelineEntityClassBinaryPacket 186*89c4ff92SAndroid Build Coastguard Worker uint32_t entityBinaryPacketHeaderWord0 = ReadUint32(packetBuffer, offset); 187*89c4ff92SAndroid Build Coastguard Worker uint32_t entityBinaryPacketFamily = (entityBinaryPacketHeaderWord0 >> 26) & 0x0000003F; 188*89c4ff92SAndroid Build Coastguard Worker uint32_t entityBinaryPacketClass = (entityBinaryPacketHeaderWord0 >> 19) & 0x0000007F; 189*89c4ff92SAndroid Build Coastguard Worker uint32_t entityBinaryPacketType = (entityBinaryPacketHeaderWord0 >> 16) & 0x00000007; 190*89c4ff92SAndroid Build Coastguard Worker uint32_t entityBinaryPacketStreamId = (entityBinaryPacketHeaderWord0 >> 0) & 0x00000007; 191*89c4ff92SAndroid Build Coastguard Worker 192*89c4ff92SAndroid Build Coastguard Worker CHECK(entityBinaryPacketFamily == 1); 193*89c4ff92SAndroid Build Coastguard Worker CHECK(entityBinaryPacketClass == 0); 194*89c4ff92SAndroid Build Coastguard Worker CHECK(entityBinaryPacketType == 1); 195*89c4ff92SAndroid Build Coastguard Worker CHECK(entityBinaryPacketStreamId == 0); 196*89c4ff92SAndroid Build Coastguard Worker 197*89c4ff92SAndroid Build Coastguard Worker offset += uint32_t_size; 198*89c4ff92SAndroid Build Coastguard Worker 199*89c4ff92SAndroid Build Coastguard Worker uint32_t entityBinaryPacketHeaderWord1 = ReadUint32(packetBuffer, offset); 200*89c4ff92SAndroid Build Coastguard Worker 201*89c4ff92SAndroid Build Coastguard Worker uint32_t entityBinaryPacketSequenceNumbered = (entityBinaryPacketHeaderWord1 >> 24) & 0x00000001; 202*89c4ff92SAndroid Build Coastguard Worker uint32_t entityBinaryPacketDataLength = (entityBinaryPacketHeaderWord1 >> 0) & 0x00FFFFFF; 203*89c4ff92SAndroid Build Coastguard Worker 204*89c4ff92SAndroid Build Coastguard Worker CHECK(entityBinaryPacketSequenceNumbered == 0); 205*89c4ff92SAndroid Build Coastguard Worker CHECK(entityBinaryPacketDataLength == 32); 206*89c4ff92SAndroid Build Coastguard Worker 207*89c4ff92SAndroid Build Coastguard Worker // Check the decl_id 208*89c4ff92SAndroid Build Coastguard Worker offset += uint32_t_size; 209*89c4ff92SAndroid Build Coastguard Worker uint32_t entitytDecId = ReadUint32(packetBuffer, offset); 210*89c4ff92SAndroid Build Coastguard Worker 211*89c4ff92SAndroid Build Coastguard Worker CHECK(entitytDecId == uint32_t(1)); 212*89c4ff92SAndroid Build Coastguard Worker 213*89c4ff92SAndroid Build Coastguard Worker // Check the profiling GUID 214*89c4ff92SAndroid Build Coastguard Worker offset += uint32_t_size; 215*89c4ff92SAndroid Build Coastguard Worker uint64_t readProfilingGuid = ReadUint64(packetBuffer, offset); 216*89c4ff92SAndroid Build Coastguard Worker 217*89c4ff92SAndroid Build Coastguard Worker CHECK(readProfilingGuid == entityBinaryPacketProfilingGuid); 218*89c4ff92SAndroid Build Coastguard Worker 219*89c4ff92SAndroid Build Coastguard Worker // Reading TimelineEventClassBinaryPacket 220*89c4ff92SAndroid Build Coastguard Worker offset += uint64_t_size; 221*89c4ff92SAndroid Build Coastguard Worker 222*89c4ff92SAndroid Build Coastguard Worker uint32_t eventClassDeclId = ReadUint32(packetBuffer, offset); 223*89c4ff92SAndroid Build Coastguard Worker CHECK(eventClassDeclId == uint32_t(2)); 224*89c4ff92SAndroid Build Coastguard Worker 225*89c4ff92SAndroid Build Coastguard Worker // Check the profiling GUID 226*89c4ff92SAndroid Build Coastguard Worker offset += uint32_t_size; 227*89c4ff92SAndroid Build Coastguard Worker readProfilingGuid = ReadUint64(packetBuffer, offset); 228*89c4ff92SAndroid Build Coastguard Worker CHECK(readProfilingGuid == eventClassBinaryPacketProfilingGuid); 229*89c4ff92SAndroid Build Coastguard Worker 230*89c4ff92SAndroid Build Coastguard Worker offset += uint64_t_size; 231*89c4ff92SAndroid Build Coastguard Worker uint64_t readEventClassNameGuid = ReadUint64(packetBuffer, offset); 232*89c4ff92SAndroid Build Coastguard Worker CHECK(readEventClassNameGuid == eventClassBinaryPacketNameGuid); 233*89c4ff92SAndroid Build Coastguard Worker 234*89c4ff92SAndroid Build Coastguard Worker bufferManager.MarkRead(packetBuffer); 235*89c4ff92SAndroid Build Coastguard Worker } 236*89c4ff92SAndroid Build Coastguard Worker 237*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("SendEventClassAfterTimelineEntityPacketTest") 238*89c4ff92SAndroid Build Coastguard Worker { 239*89c4ff92SAndroid Build Coastguard Worker unsigned int uint32_t_size = sizeof(uint32_t); 240*89c4ff92SAndroid Build Coastguard Worker unsigned int uint64_t_size = sizeof(uint64_t); 241*89c4ff92SAndroid Build Coastguard Worker 242*89c4ff92SAndroid Build Coastguard Worker MockBufferManager bufferManager(512); 243*89c4ff92SAndroid Build Coastguard Worker TimelinePacketWriterFactory timelinePacketWriterFactory(bufferManager); 244*89c4ff92SAndroid Build Coastguard Worker std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = timelinePacketWriterFactory.GetSendTimelinePacket(); 245*89c4ff92SAndroid Build Coastguard Worker 246*89c4ff92SAndroid Build Coastguard Worker // Send TimelineEntityClassBinaryPacket 247*89c4ff92SAndroid Build Coastguard Worker const uint64_t entityBinaryPacketProfilingGuid = 123456u; 248*89c4ff92SAndroid Build Coastguard Worker sendTimelinePacket->SendTimelineEntityBinaryPacket(entityBinaryPacketProfilingGuid); 249*89c4ff92SAndroid Build Coastguard Worker 250*89c4ff92SAndroid Build Coastguard Worker // Commit the buffer 251*89c4ff92SAndroid Build Coastguard Worker sendTimelinePacket->Commit(); 252*89c4ff92SAndroid Build Coastguard Worker 253*89c4ff92SAndroid Build Coastguard Worker // Get the readable buffer 254*89c4ff92SAndroid Build Coastguard Worker auto packetBuffer = bufferManager.GetReadableBuffer(); 255*89c4ff92SAndroid Build Coastguard Worker 256*89c4ff92SAndroid Build Coastguard Worker // Check the packet header 257*89c4ff92SAndroid Build Coastguard Worker unsigned int offset = 0; 258*89c4ff92SAndroid Build Coastguard Worker 259*89c4ff92SAndroid Build Coastguard Worker // Reading TimelineEntityClassBinaryPacket 260*89c4ff92SAndroid Build Coastguard Worker uint32_t entityBinaryPacketHeaderWord0 = ReadUint32(packetBuffer, offset); 261*89c4ff92SAndroid Build Coastguard Worker uint32_t entityBinaryPacketFamily = (entityBinaryPacketHeaderWord0 >> 26) & 0x0000003F; 262*89c4ff92SAndroid Build Coastguard Worker uint32_t entityBinaryPacketClass = (entityBinaryPacketHeaderWord0 >> 19) & 0x0000007F; 263*89c4ff92SAndroid Build Coastguard Worker uint32_t entityBinaryPacketType = (entityBinaryPacketHeaderWord0 >> 16) & 0x00000007; 264*89c4ff92SAndroid Build Coastguard Worker uint32_t entityBinaryPacketStreamId = (entityBinaryPacketHeaderWord0 >> 0) & 0x00000007; 265*89c4ff92SAndroid Build Coastguard Worker 266*89c4ff92SAndroid Build Coastguard Worker CHECK(entityBinaryPacketFamily == 1); 267*89c4ff92SAndroid Build Coastguard Worker CHECK(entityBinaryPacketClass == 0); 268*89c4ff92SAndroid Build Coastguard Worker CHECK(entityBinaryPacketType == 1); 269*89c4ff92SAndroid Build Coastguard Worker CHECK(entityBinaryPacketStreamId == 0); 270*89c4ff92SAndroid Build Coastguard Worker 271*89c4ff92SAndroid Build Coastguard Worker offset += uint32_t_size; 272*89c4ff92SAndroid Build Coastguard Worker uint32_t entityBinaryPacketHeaderWord1 = ReadUint32(packetBuffer, offset); 273*89c4ff92SAndroid Build Coastguard Worker uint32_t entityBinaryPacketSequenceNumbered = (entityBinaryPacketHeaderWord1 >> 24) & 0x00000001; 274*89c4ff92SAndroid Build Coastguard Worker uint32_t entityBinaryPacketDataLength = (entityBinaryPacketHeaderWord1 >> 0) & 0x00FFFFFF; 275*89c4ff92SAndroid Build Coastguard Worker CHECK(entityBinaryPacketSequenceNumbered == 0); 276*89c4ff92SAndroid Build Coastguard Worker CHECK(entityBinaryPacketDataLength == 12); 277*89c4ff92SAndroid Build Coastguard Worker 278*89c4ff92SAndroid Build Coastguard Worker // Check the decl_id 279*89c4ff92SAndroid Build Coastguard Worker offset += uint32_t_size; 280*89c4ff92SAndroid Build Coastguard Worker uint32_t entitytDecId = ReadUint32(packetBuffer, offset); 281*89c4ff92SAndroid Build Coastguard Worker 282*89c4ff92SAndroid Build Coastguard Worker CHECK(entitytDecId == uint32_t(1)); 283*89c4ff92SAndroid Build Coastguard Worker 284*89c4ff92SAndroid Build Coastguard Worker // Check the profiling GUID 285*89c4ff92SAndroid Build Coastguard Worker offset += uint32_t_size; 286*89c4ff92SAndroid Build Coastguard Worker uint64_t readProfilingGuid = ReadUint64(packetBuffer, offset); 287*89c4ff92SAndroid Build Coastguard Worker 288*89c4ff92SAndroid Build Coastguard Worker CHECK(readProfilingGuid == entityBinaryPacketProfilingGuid); 289*89c4ff92SAndroid Build Coastguard Worker 290*89c4ff92SAndroid Build Coastguard Worker bufferManager.MarkRead(packetBuffer); 291*89c4ff92SAndroid Build Coastguard Worker 292*89c4ff92SAndroid Build Coastguard Worker // Send TimelineEventClassBinaryPacket 293*89c4ff92SAndroid Build Coastguard Worker const uint64_t eventClassBinaryPacketProfilingGuid = 789123u; 294*89c4ff92SAndroid Build Coastguard Worker const uint64_t eventClassBinaryPacketNameGuid = 8845u; 295*89c4ff92SAndroid Build Coastguard Worker sendTimelinePacket->SendTimelineEventClassBinaryPacket( 296*89c4ff92SAndroid Build Coastguard Worker eventClassBinaryPacketProfilingGuid, eventClassBinaryPacketNameGuid); 297*89c4ff92SAndroid Build Coastguard Worker 298*89c4ff92SAndroid Build Coastguard Worker // Commit the buffer 299*89c4ff92SAndroid Build Coastguard Worker sendTimelinePacket->Commit(); 300*89c4ff92SAndroid Build Coastguard Worker 301*89c4ff92SAndroid Build Coastguard Worker // Get the readable buffer 302*89c4ff92SAndroid Build Coastguard Worker packetBuffer = bufferManager.GetReadableBuffer(); 303*89c4ff92SAndroid Build Coastguard Worker 304*89c4ff92SAndroid Build Coastguard Worker // Check the packet header 305*89c4ff92SAndroid Build Coastguard Worker offset = 0; 306*89c4ff92SAndroid Build Coastguard Worker 307*89c4ff92SAndroid Build Coastguard Worker // Reading TimelineEventClassBinaryPacket 308*89c4ff92SAndroid Build Coastguard Worker uint32_t eventClassBinaryPacketHeaderWord0 = ReadUint32(packetBuffer, offset); 309*89c4ff92SAndroid Build Coastguard Worker uint32_t eventClassBinaryPacketFamily = (eventClassBinaryPacketHeaderWord0 >> 26) & 0x0000003F; 310*89c4ff92SAndroid Build Coastguard Worker uint32_t eventClassBinaryPacketClass = (eventClassBinaryPacketHeaderWord0 >> 19) & 0x0000007F; 311*89c4ff92SAndroid Build Coastguard Worker uint32_t eventClassBinaryPacketType = (eventClassBinaryPacketHeaderWord0 >> 16) & 0x00000007; 312*89c4ff92SAndroid Build Coastguard Worker uint32_t eventClassBinaryPacketStreamId = (eventClassBinaryPacketHeaderWord0 >> 0) & 0x00000007; 313*89c4ff92SAndroid Build Coastguard Worker 314*89c4ff92SAndroid Build Coastguard Worker CHECK(eventClassBinaryPacketFamily == 1); 315*89c4ff92SAndroid Build Coastguard Worker CHECK(eventClassBinaryPacketClass == 0); 316*89c4ff92SAndroid Build Coastguard Worker CHECK(eventClassBinaryPacketType == 1); 317*89c4ff92SAndroid Build Coastguard Worker CHECK(eventClassBinaryPacketStreamId == 0); 318*89c4ff92SAndroid Build Coastguard Worker 319*89c4ff92SAndroid Build Coastguard Worker offset += uint32_t_size; 320*89c4ff92SAndroid Build Coastguard Worker uint32_t eventClassBinaryPacketHeaderWord1 = ReadUint32(packetBuffer, offset); 321*89c4ff92SAndroid Build Coastguard Worker uint32_t eventClassBinaryPacketSequenceNumbered = (eventClassBinaryPacketHeaderWord1 >> 24) & 0x00000001; 322*89c4ff92SAndroid Build Coastguard Worker uint32_t eventClassBinaryPacketDataLength = (eventClassBinaryPacketHeaderWord1 >> 0) & 0x00FFFFFF; 323*89c4ff92SAndroid Build Coastguard Worker CHECK(eventClassBinaryPacketSequenceNumbered == 0); 324*89c4ff92SAndroid Build Coastguard Worker CHECK(eventClassBinaryPacketDataLength == 20); 325*89c4ff92SAndroid Build Coastguard Worker 326*89c4ff92SAndroid Build Coastguard Worker offset += uint32_t_size; 327*89c4ff92SAndroid Build Coastguard Worker uint32_t eventClassDeclId = ReadUint32(packetBuffer, offset); 328*89c4ff92SAndroid Build Coastguard Worker CHECK(eventClassDeclId == uint32_t(2)); 329*89c4ff92SAndroid Build Coastguard Worker 330*89c4ff92SAndroid Build Coastguard Worker // Check the profiling GUID 331*89c4ff92SAndroid Build Coastguard Worker offset += uint32_t_size; 332*89c4ff92SAndroid Build Coastguard Worker readProfilingGuid = ReadUint64(packetBuffer, offset); 333*89c4ff92SAndroid Build Coastguard Worker CHECK(readProfilingGuid == eventClassBinaryPacketProfilingGuid); 334*89c4ff92SAndroid Build Coastguard Worker 335*89c4ff92SAndroid Build Coastguard Worker offset += uint64_t_size; 336*89c4ff92SAndroid Build Coastguard Worker uint64_t readEventClassNameGuid = ReadUint64(packetBuffer, offset); 337*89c4ff92SAndroid Build Coastguard Worker CHECK(readEventClassNameGuid == eventClassBinaryPacketNameGuid); 338*89c4ff92SAndroid Build Coastguard Worker 339*89c4ff92SAndroid Build Coastguard Worker bufferManager.MarkRead(packetBuffer); 340*89c4ff92SAndroid Build Coastguard Worker 341*89c4ff92SAndroid Build Coastguard Worker // Send TimelineEventBinaryPacket 342*89c4ff92SAndroid Build Coastguard Worker const uint64_t timestamp = 456789u; 343*89c4ff92SAndroid Build Coastguard Worker const int threadId = arm::pipe::GetCurrentThreadId(); 344*89c4ff92SAndroid Build Coastguard Worker const uint64_t eventProfilingGuid = 123456u; 345*89c4ff92SAndroid Build Coastguard Worker sendTimelinePacket->SendTimelineEventBinaryPacket(timestamp, threadId, eventProfilingGuid); 346*89c4ff92SAndroid Build Coastguard Worker 347*89c4ff92SAndroid Build Coastguard Worker // Commit the buffer 348*89c4ff92SAndroid Build Coastguard Worker sendTimelinePacket->Commit(); 349*89c4ff92SAndroid Build Coastguard Worker 350*89c4ff92SAndroid Build Coastguard Worker // Get the readable buffer 351*89c4ff92SAndroid Build Coastguard Worker packetBuffer = bufferManager.GetReadableBuffer(); 352*89c4ff92SAndroid Build Coastguard Worker 353*89c4ff92SAndroid Build Coastguard Worker // Check the packet header 354*89c4ff92SAndroid Build Coastguard Worker offset = 0; 355*89c4ff92SAndroid Build Coastguard Worker 356*89c4ff92SAndroid Build Coastguard Worker // Reading TimelineEventBinaryPacket 357*89c4ff92SAndroid Build Coastguard Worker uint32_t eventBinaryPacketHeaderWord0 = ReadUint32(packetBuffer, offset); 358*89c4ff92SAndroid Build Coastguard Worker uint32_t eventBinaryPacketFamily = (eventBinaryPacketHeaderWord0 >> 26) & 0x0000003F; 359*89c4ff92SAndroid Build Coastguard Worker uint32_t eventBinaryPacketClass = (eventBinaryPacketHeaderWord0 >> 19) & 0x0000007F; 360*89c4ff92SAndroid Build Coastguard Worker uint32_t eventBinaryPacketType = (eventBinaryPacketHeaderWord0 >> 16) & 0x00000007; 361*89c4ff92SAndroid Build Coastguard Worker uint32_t eventBinaryPacketStreamId = (eventBinaryPacketHeaderWord0 >> 0) & 0x00000007; 362*89c4ff92SAndroid Build Coastguard Worker 363*89c4ff92SAndroid Build Coastguard Worker CHECK(eventBinaryPacketFamily == 1); 364*89c4ff92SAndroid Build Coastguard Worker CHECK(eventBinaryPacketClass == 0); 365*89c4ff92SAndroid Build Coastguard Worker CHECK(eventBinaryPacketType == 1); 366*89c4ff92SAndroid Build Coastguard Worker CHECK(eventBinaryPacketStreamId == 0); 367*89c4ff92SAndroid Build Coastguard Worker 368*89c4ff92SAndroid Build Coastguard Worker offset += uint32_t_size; 369*89c4ff92SAndroid Build Coastguard Worker uint32_t eventBinaryPacketHeaderWord1 = ReadUint32(packetBuffer, offset); 370*89c4ff92SAndroid Build Coastguard Worker uint32_t eventBinaryPacketSequenceNumbered = (eventBinaryPacketHeaderWord1 >> 24) & 0x00000001; 371*89c4ff92SAndroid Build Coastguard Worker uint32_t eventBinaryPacketDataLength = (eventBinaryPacketHeaderWord1 >> 0) & 0x00FFFFFF; 372*89c4ff92SAndroid Build Coastguard Worker CHECK(eventBinaryPacketSequenceNumbered == 0); 373*89c4ff92SAndroid Build Coastguard Worker CHECK(eventBinaryPacketDataLength == 20 + ThreadIdSize); 374*89c4ff92SAndroid Build Coastguard Worker 375*89c4ff92SAndroid Build Coastguard Worker // Check the decl_id 376*89c4ff92SAndroid Build Coastguard Worker offset += uint32_t_size; 377*89c4ff92SAndroid Build Coastguard Worker uint32_t eventDeclId = ReadUint32(packetBuffer, offset); 378*89c4ff92SAndroid Build Coastguard Worker CHECK(eventDeclId == 4); 379*89c4ff92SAndroid Build Coastguard Worker 380*89c4ff92SAndroid Build Coastguard Worker // Check the timestamp 381*89c4ff92SAndroid Build Coastguard Worker offset += uint32_t_size; 382*89c4ff92SAndroid Build Coastguard Worker uint64_t eventTimestamp = ReadUint64(packetBuffer, offset); 383*89c4ff92SAndroid Build Coastguard Worker CHECK(eventTimestamp == timestamp); 384*89c4ff92SAndroid Build Coastguard Worker 385*89c4ff92SAndroid Build Coastguard Worker // Check the thread id 386*89c4ff92SAndroid Build Coastguard Worker offset += uint64_t_size; 387*89c4ff92SAndroid Build Coastguard Worker std::vector<uint8_t> readThreadId(ThreadIdSize, 0); 388*89c4ff92SAndroid Build Coastguard Worker ReadBytes(packetBuffer, offset, ThreadIdSize, readThreadId.data()); 389*89c4ff92SAndroid Build Coastguard Worker CHECK(readThreadId == threadId); 390*89c4ff92SAndroid Build Coastguard Worker 391*89c4ff92SAndroid Build Coastguard Worker // Check the profiling GUID 392*89c4ff92SAndroid Build Coastguard Worker offset += ThreadIdSize; 393*89c4ff92SAndroid Build Coastguard Worker readProfilingGuid = ReadUint64(packetBuffer, offset); 394*89c4ff92SAndroid Build Coastguard Worker CHECK(readProfilingGuid == eventProfilingGuid); 395*89c4ff92SAndroid Build Coastguard Worker } 396*89c4ff92SAndroid Build Coastguard Worker 397*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("SendTimelinePacketTests2") 398*89c4ff92SAndroid Build Coastguard Worker { 399*89c4ff92SAndroid Build Coastguard Worker MockBufferManager bufferManager(40); 400*89c4ff92SAndroid Build Coastguard Worker TimelinePacketWriterFactory timelinePacketWriterFactory(bufferManager); 401*89c4ff92SAndroid Build Coastguard Worker std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = timelinePacketWriterFactory.GetSendTimelinePacket(); 402*89c4ff92SAndroid Build Coastguard Worker 403*89c4ff92SAndroid Build Coastguard Worker CHECK_THROWS_AS(sendTimelinePacket->SendTimelineMessageDirectoryPackage(), 404*89c4ff92SAndroid Build Coastguard Worker arm::pipe::ProfilingException); 405*89c4ff92SAndroid Build Coastguard Worker } 406*89c4ff92SAndroid Build Coastguard Worker 407*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("SendTimelinePacketTests3") 408*89c4ff92SAndroid Build Coastguard Worker { 409*89c4ff92SAndroid Build Coastguard Worker MockBufferManager bufferManager(512); 410*89c4ff92SAndroid Build Coastguard Worker TimelinePacketWriterFactory timelinePacketWriterFactory(bufferManager); 411*89c4ff92SAndroid Build Coastguard Worker std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = timelinePacketWriterFactory.GetSendTimelinePacket(); 412*89c4ff92SAndroid Build Coastguard Worker 413*89c4ff92SAndroid Build Coastguard Worker // Send TimelineEntityClassBinaryPacket 414*89c4ff92SAndroid Build Coastguard Worker const uint64_t entityBinaryPacketProfilingGuid = 123456u; 415*89c4ff92SAndroid Build Coastguard Worker sendTimelinePacket->SendTimelineEntityBinaryPacket(entityBinaryPacketProfilingGuid); 416*89c4ff92SAndroid Build Coastguard Worker 417*89c4ff92SAndroid Build Coastguard Worker // Commit the buffer 418*89c4ff92SAndroid Build Coastguard Worker sendTimelinePacket->Commit(); 419*89c4ff92SAndroid Build Coastguard Worker 420*89c4ff92SAndroid Build Coastguard Worker // Get the readable buffer 421*89c4ff92SAndroid Build Coastguard Worker auto packetBuffer = bufferManager.GetReadableBuffer(); 422*89c4ff92SAndroid Build Coastguard Worker 423*89c4ff92SAndroid Build Coastguard Worker // Send TimelineEventClassBinaryPacket 424*89c4ff92SAndroid Build Coastguard Worker const uint64_t eventClassBinaryPacketProfilingGuid = 789123u; 425*89c4ff92SAndroid Build Coastguard Worker const uint64_t eventClassBinaryPacketNameGuid = 8845u; 426*89c4ff92SAndroid Build Coastguard Worker CHECK_THROWS_AS(sendTimelinePacket->SendTimelineEventClassBinaryPacket( 427*89c4ff92SAndroid Build Coastguard Worker eventClassBinaryPacketProfilingGuid, eventClassBinaryPacketNameGuid), 428*89c4ff92SAndroid Build Coastguard Worker BufferExhaustion); 429*89c4ff92SAndroid Build Coastguard Worker } 430*89c4ff92SAndroid Build Coastguard Worker 431*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("GetGuidsFromProfilingService") 432*89c4ff92SAndroid Build Coastguard Worker { 433*89c4ff92SAndroid Build Coastguard Worker LogLevelSwapper logLevelSwapper(arm::pipe::LogSeverity::Fatal); 434*89c4ff92SAndroid Build Coastguard Worker 435*89c4ff92SAndroid Build Coastguard Worker armnn::IRuntime::CreationOptions options; 436*89c4ff92SAndroid Build Coastguard Worker options.m_ProfilingOptions.m_EnableProfiling = true; 437*89c4ff92SAndroid Build Coastguard Worker armnn::RuntimeImpl runtime(options); 438*89c4ff92SAndroid Build Coastguard Worker armnn::ArmNNProfilingServiceInitialiser initialiser; 439*89c4ff92SAndroid Build Coastguard Worker ProfilingService profilingService(arm::pipe::MAX_ARMNN_COUNTER, 440*89c4ff92SAndroid Build Coastguard Worker initialiser, 441*89c4ff92SAndroid Build Coastguard Worker arm::pipe::ARMNN_SOFTWARE_INFO, 442*89c4ff92SAndroid Build Coastguard Worker arm::pipe::ARMNN_SOFTWARE_VERSION, 443*89c4ff92SAndroid Build Coastguard Worker arm::pipe::ARMNN_HARDWARE_VERSION, 444*89c4ff92SAndroid Build Coastguard Worker runtime); 445*89c4ff92SAndroid Build Coastguard Worker 446*89c4ff92SAndroid Build Coastguard Worker profilingService.ResetExternalProfilingOptions( 447*89c4ff92SAndroid Build Coastguard Worker ConvertExternalProfilingOptions(options.m_ProfilingOptions), true); 448*89c4ff92SAndroid Build Coastguard Worker ProfilingStaticGuid staticGuid = profilingService.GetStaticId("dummy"); 449*89c4ff92SAndroid Build Coastguard Worker std::hash<std::string> hasher; 450*89c4ff92SAndroid Build Coastguard Worker uint64_t hash = static_cast<uint64_t>(hasher("dummy")); 451*89c4ff92SAndroid Build Coastguard Worker ProfilingStaticGuid expectedStaticValue(hash | MIN_STATIC_GUID); 452*89c4ff92SAndroid Build Coastguard Worker CHECK(staticGuid == expectedStaticValue); 453*89c4ff92SAndroid Build Coastguard Worker ProfilingDynamicGuid dynamicGuid = profilingService.GetNextGuid(); 454*89c4ff92SAndroid Build Coastguard Worker uint64_t dynamicGuidValue = static_cast<uint64_t>(dynamicGuid); 455*89c4ff92SAndroid Build Coastguard Worker ++dynamicGuidValue; 456*89c4ff92SAndroid Build Coastguard Worker ProfilingDynamicGuid expectedDynamicValue(dynamicGuidValue); 457*89c4ff92SAndroid Build Coastguard Worker dynamicGuid = profilingService.GetNextGuid(); 458*89c4ff92SAndroid Build Coastguard Worker CHECK(dynamicGuid == expectedDynamicValue); 459*89c4ff92SAndroid Build Coastguard Worker } 460*89c4ff92SAndroid Build Coastguard Worker 461*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("GetTimelinePackerWriterFromProfilingService") 462*89c4ff92SAndroid Build Coastguard Worker { 463*89c4ff92SAndroid Build Coastguard Worker LogLevelSwapper logLevelSwapper(arm::pipe::LogSeverity::Fatal); 464*89c4ff92SAndroid Build Coastguard Worker 465*89c4ff92SAndroid Build Coastguard Worker ProfilingOptions options; 466*89c4ff92SAndroid Build Coastguard Worker options.m_EnableProfiling = true; 467*89c4ff92SAndroid Build Coastguard Worker armnn::ArmNNProfilingServiceInitialiser initialiser; 468*89c4ff92SAndroid Build Coastguard Worker ProfilingService profilingService(arm::pipe::MAX_ARMNN_COUNTER, 469*89c4ff92SAndroid Build Coastguard Worker initialiser, 470*89c4ff92SAndroid Build Coastguard Worker arm::pipe::ARMNN_SOFTWARE_INFO, 471*89c4ff92SAndroid Build Coastguard Worker arm::pipe::ARMNN_SOFTWARE_VERSION, 472*89c4ff92SAndroid Build Coastguard Worker arm::pipe::ARMNN_HARDWARE_VERSION); 473*89c4ff92SAndroid Build Coastguard Worker profilingService.ResetExternalProfilingOptions(options, true); 474*89c4ff92SAndroid Build Coastguard Worker 475*89c4ff92SAndroid Build Coastguard Worker std::unique_ptr<ISendTimelinePacket> writer = profilingService.GetSendTimelinePacket(); 476*89c4ff92SAndroid Build Coastguard Worker CHECK(writer != nullptr); 477*89c4ff92SAndroid Build Coastguard Worker } 478*89c4ff92SAndroid Build Coastguard Worker 479*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("CheckStaticGuidsAndEvents") 480*89c4ff92SAndroid Build Coastguard Worker { 481*89c4ff92SAndroid Build Coastguard Worker CHECK("name" == LabelsAndEventClasses::NAME_LABEL); 482*89c4ff92SAndroid Build Coastguard Worker CHECK("type" == LabelsAndEventClasses::TYPE_LABEL); 483*89c4ff92SAndroid Build Coastguard Worker CHECK("index" == LabelsAndEventClasses::INDEX_LABEL); 484*89c4ff92SAndroid Build Coastguard Worker 485*89c4ff92SAndroid Build Coastguard Worker std::hash<std::string> hasher; 486*89c4ff92SAndroid Build Coastguard Worker 487*89c4ff92SAndroid Build Coastguard Worker uint64_t hash = static_cast<uint64_t>(hasher(LabelsAndEventClasses::NAME_LABEL)); 488*89c4ff92SAndroid Build Coastguard Worker ProfilingStaticGuid expectedNameGuid(hash | MIN_STATIC_GUID); 489*89c4ff92SAndroid Build Coastguard Worker CHECK(LabelsAndEventClasses::NAME_GUID == expectedNameGuid); 490*89c4ff92SAndroid Build Coastguard Worker 491*89c4ff92SAndroid Build Coastguard Worker hash = static_cast<uint64_t>(hasher(LabelsAndEventClasses::TYPE_LABEL)); 492*89c4ff92SAndroid Build Coastguard Worker ProfilingStaticGuid expectedTypeGuid(hash | MIN_STATIC_GUID); 493*89c4ff92SAndroid Build Coastguard Worker CHECK(LabelsAndEventClasses::TYPE_GUID == expectedTypeGuid); 494*89c4ff92SAndroid Build Coastguard Worker 495*89c4ff92SAndroid Build Coastguard Worker hash = static_cast<uint64_t>(hasher(LabelsAndEventClasses::INDEX_LABEL)); 496*89c4ff92SAndroid Build Coastguard Worker ProfilingStaticGuid expectedIndexGuid(hash | MIN_STATIC_GUID); 497*89c4ff92SAndroid Build Coastguard Worker CHECK(LabelsAndEventClasses::INDEX_GUID == expectedIndexGuid); 498*89c4ff92SAndroid Build Coastguard Worker 499*89c4ff92SAndroid Build Coastguard Worker hash = static_cast<uint64_t>(hasher("ARMNN_PROFILING_SOL")); 500*89c4ff92SAndroid Build Coastguard Worker ProfilingStaticGuid expectedSol(hash | MIN_STATIC_GUID); 501*89c4ff92SAndroid Build Coastguard Worker CHECK(LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS == expectedSol); 502*89c4ff92SAndroid Build Coastguard Worker 503*89c4ff92SAndroid Build Coastguard Worker hash = static_cast<uint64_t>(hasher("ARMNN_PROFILING_EOL")); 504*89c4ff92SAndroid Build Coastguard Worker ProfilingStaticGuid expectedEol(hash | MIN_STATIC_GUID); 505*89c4ff92SAndroid Build Coastguard Worker CHECK(LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS == expectedEol); 506*89c4ff92SAndroid Build Coastguard Worker } 507*89c4ff92SAndroid Build Coastguard Worker 508*89c4ff92SAndroid Build Coastguard Worker } 509