blob: 3961f9bfb595baede952f28907bddce3efbaf8d6 [file] [log] [blame]
//
// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include <JSONTimelineDecoder.hpp>
#include <TimelineCaptureCommandHandler.hpp>
#include <TimelineDecoder.hpp>
#include <Filesystem.hpp>
#include <boost/test/test_tools.hpp>
#include <boost/test/unit_test_suite.hpp>
#include <fstream>
BOOST_AUTO_TEST_SUITE(JSONTimelineDecoderTests)
using namespace armnn;
using namespace timelinedecoder;
void RunSimpleModelThroughDecoder(JSONTimelineDecoder& timelineDecoder)
{
/*
* Building Simple model structure to test
*/
ITimelineDecoder::Label name;
name.m_Guid = uint64_t(10420554295983197538U);
name.m_Name = "name";
timelineDecoder.CreateLabel(name);
ITimelineDecoder::Label type;
type.m_Guid = uint64_t(14196220359693045352U);
type.m_Name = "type";
timelineDecoder.CreateLabel(type);
ITimelineDecoder::Label index;
index.m_Guid = uint64_t(13922236767355949814U);
index.m_Name = "index";
timelineDecoder.CreateLabel(index);
ITimelineDecoder::Label backendId;
backendId.m_Guid = uint64_t(10874037804557439415U);
backendId.m_Name = "backendId";
timelineDecoder.CreateLabel(backendId);
ITimelineDecoder::Label layer;
layer.m_Guid = uint64_t(14761340794127440397U);
layer.m_Name = "layer";
timelineDecoder.CreateLabel(layer);
ITimelineDecoder::Label workload;
workload.m_Guid = uint64_t(15704252740552608110U);
workload.m_Name = "workload";
timelineDecoder.CreateLabel(workload);
ITimelineDecoder::Label network;
network.m_Guid = uint64_t(16862199137063532871U);
network.m_Name = "network";
timelineDecoder.CreateLabel(network);
ITimelineDecoder::Label connection;
connection.m_Guid = uint64_t(15733717748792475675U);
connection.m_Name = "connection";
timelineDecoder.CreateLabel(connection);
ITimelineDecoder::Label inference;
inference.m_Guid = uint64_t(15026600058430441282U);
inference.m_Name = "inference";
timelineDecoder.CreateLabel(inference);
ITimelineDecoder::Label workload_execution;
workload_execution.m_Guid = uint64_t(10172155312650606003U);
workload_execution.m_Name = "workload_execution";
timelineDecoder.CreateLabel(workload_execution);
ITimelineDecoder::EventClass eventClass1;
eventClass1.m_Guid = uint64_t(17170418158534996719U);
timelineDecoder.CreateEventClass(eventClass1);
ITimelineDecoder::EventClass eventClass2;
eventClass2.m_Guid = uint64_t(10812061579584851344U);
timelineDecoder.CreateEventClass(eventClass2);
ITimelineDecoder::Entity entity6;
entity6.m_Guid = uint64_t(6);
timelineDecoder.CreateEntity(entity6);
ITimelineDecoder::Relationship relationship7;
relationship7.m_Guid = uint64_t(7);
relationship7.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship7.m_HeadGuid = uint64_t(6);
relationship7.m_TailGuid = uint64_t(16862199137063532871U);
timelineDecoder.CreateRelationship(relationship7);
ITimelineDecoder::Relationship relationship8;
relationship8.m_Guid = uint64_t(8);
relationship8.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship8.m_HeadGuid = uint64_t(7);
relationship8.m_TailGuid = uint64_t(14196220359693045352U);
timelineDecoder.CreateRelationship(relationship8);
// Adding normalization layer
ITimelineDecoder::Entity entity0;
entity0.m_Guid = uint64_t(0);
timelineDecoder.CreateEntity(entity0);
ITimelineDecoder::Label input;
input.m_Guid = uint64_t(18179123836411086572U);
input.m_Name = "input";
timelineDecoder.CreateLabel(input);
ITimelineDecoder::Relationship relationship9;
relationship9.m_Guid = uint64_t(9);
relationship9.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship9.m_HeadGuid = uint64_t(0);
relationship9.m_TailGuid = uint64_t(18179123836411086572U);
timelineDecoder.CreateRelationship(relationship9);
ITimelineDecoder::Relationship relationship10;
relationship10.m_Guid = uint64_t(10);
relationship10.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship10.m_HeadGuid = uint64_t(9);
relationship10.m_TailGuid = uint64_t(10420554295983197538U);
timelineDecoder.CreateRelationship(relationship10);
ITimelineDecoder::Relationship relationship11;
relationship11.m_Guid = uint64_t(11);
relationship11.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship11.m_HeadGuid = uint64_t(0);
relationship11.m_TailGuid = uint64_t(14761340794127440397U);
timelineDecoder.CreateRelationship(relationship11);
ITimelineDecoder::Relationship relationship12;
relationship12.m_Guid = uint64_t(12);
relationship12.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship12.m_HeadGuid = uint64_t(11);
relationship12.m_TailGuid = uint64_t(14196220359693045352U);
timelineDecoder.CreateRelationship(relationship12);
ITimelineDecoder::Relationship relationship13;
relationship13.m_Guid = uint64_t(13);
relationship13.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
relationship13.m_HeadGuid = uint64_t(6);
relationship13.m_TailGuid = uint64_t(0);
timelineDecoder.CreateRelationship(relationship13);
// Adding normalization layer
ITimelineDecoder::Entity entity1;
entity1.m_Guid = uint64_t(1);
timelineDecoder.CreateEntity(entity1);
ITimelineDecoder::Label normalization;
normalization.m_Guid = uint64_t(15955949569988957863U);
normalization.m_Name = "normalization";
timelineDecoder.CreateLabel(normalization);
ITimelineDecoder::Relationship relationship14;
relationship14.m_Guid = uint64_t(14);
relationship14.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship14.m_HeadGuid = uint64_t(1);
relationship14.m_TailGuid = uint64_t(15955949569988957863U);
timelineDecoder.CreateRelationship(relationship14);
ITimelineDecoder::Relationship relationship15;
relationship15.m_Guid = uint64_t(15);
relationship15.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship15.m_HeadGuid = uint64_t(14);
relationship15.m_TailGuid = uint64_t(10420554295983197538U);
timelineDecoder.CreateRelationship(relationship15);
ITimelineDecoder::Relationship relationship16;
relationship16.m_Guid = uint64_t(16);
relationship16.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship16.m_HeadGuid = uint64_t(1);
relationship16.m_TailGuid = uint64_t(14761340794127440397U);
timelineDecoder.CreateRelationship(relationship16);
ITimelineDecoder::Relationship relationship17;
relationship17.m_Guid = uint64_t(17);
relationship17.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship17.m_HeadGuid = uint64_t(16);
relationship17.m_TailGuid = uint64_t(14196220359693045352U);
timelineDecoder.CreateRelationship(relationship17);
ITimelineDecoder::Relationship relationship18;
relationship18.m_Guid = uint64_t(18);
relationship18.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
relationship18.m_HeadGuid = uint64_t(6);
relationship18.m_TailGuid = uint64_t(1);
timelineDecoder.CreateRelationship(relationship18);
ITimelineDecoder::Relationship relationship19;
relationship19.m_Guid = uint64_t(19);
relationship19.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
relationship19.m_HeadGuid = uint64_t(0);
relationship19.m_TailGuid = uint64_t(1);
timelineDecoder.CreateRelationship(relationship19);
ITimelineDecoder::Relationship relationship20;
relationship20.m_Guid = uint64_t(20);
relationship20.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship20.m_HeadGuid = uint64_t(19);
relationship20.m_TailGuid = uint64_t(15733717748792475675U);
timelineDecoder.CreateRelationship(relationship20);
ITimelineDecoder::Relationship relationship21;
relationship21.m_Guid = uint64_t(21);
relationship21.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship21.m_HeadGuid = uint64_t(20);
relationship21.m_TailGuid = uint64_t(14196220359693045352U);
timelineDecoder.CreateRelationship(relationship21);
ITimelineDecoder::Entity entity22;
entity22.m_Guid = uint64_t(22);
timelineDecoder.CreateEntity(entity22);
ITimelineDecoder::Relationship relationship23;
relationship23.m_Guid = uint64_t(23);
relationship23.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship23.m_HeadGuid = uint64_t(22);
relationship23.m_TailGuid = uint64_t(15704252740552608110U);
timelineDecoder.CreateRelationship(relationship23);
ITimelineDecoder::Relationship relationship24;
relationship24.m_Guid = uint64_t(24);
relationship24.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship24.m_HeadGuid = uint64_t(23);
relationship24.m_TailGuid = uint64_t(14196220359693045352U);
timelineDecoder.CreateRelationship(relationship24);
ITimelineDecoder::Label CpuRef;
CpuRef.m_Guid = uint64_t(9690680943817437852U);
CpuRef.m_Name = "CpuRef";
timelineDecoder.CreateLabel(CpuRef);
ITimelineDecoder::Relationship relationship25;
relationship25.m_Guid = uint64_t(25);
relationship25.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship25.m_HeadGuid = uint64_t(22);
relationship25.m_TailGuid = uint64_t(9690680943817437852U);
timelineDecoder.CreateRelationship(relationship25);
ITimelineDecoder::Relationship relationship26;
relationship26.m_Guid = uint64_t(26);
relationship26.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship26.m_HeadGuid = uint64_t(25);
relationship26.m_TailGuid = uint64_t(10874037804557439415U);
timelineDecoder.CreateRelationship(relationship26);
ITimelineDecoder::Relationship relationship27;
relationship27.m_Guid = uint64_t(27);
relationship27.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink ;
relationship27.m_HeadGuid = uint64_t(1);
relationship27.m_TailGuid = uint64_t(22);
timelineDecoder.CreateRelationship(relationship27);
// Adding output layer
ITimelineDecoder::Entity entity2;
entity2.m_Guid = uint64_t(2);
timelineDecoder.CreateEntity(entity2);
ITimelineDecoder::Label output;
output.m_Guid = uint64_t(18419179028513879730U);
output.m_Name = "output";
timelineDecoder.CreateLabel(output);
ITimelineDecoder::Relationship relationship28;
relationship28.m_Guid = uint64_t(28);
relationship28.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship28.m_HeadGuid = uint64_t(2);
relationship28.m_TailGuid = uint64_t(18419179028513879730U);
timelineDecoder.CreateRelationship(relationship28);
ITimelineDecoder::Relationship relationship29;
relationship29.m_Guid = uint64_t(29);
relationship29.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship29.m_HeadGuid = uint64_t(28);
relationship29.m_TailGuid = uint64_t(10420554295983197538U);
timelineDecoder.CreateRelationship(relationship29);
ITimelineDecoder::Relationship relationship30;
relationship30.m_Guid = uint64_t(30);
relationship30.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship30.m_HeadGuid = uint64_t(2);
relationship30.m_TailGuid = uint64_t(14761340794127440397U);
timelineDecoder.CreateRelationship(relationship30);
ITimelineDecoder::Relationship relationship31;
relationship31.m_Guid = uint64_t(31);
relationship31.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship31.m_HeadGuid = uint64_t(30);
relationship31.m_TailGuid = uint64_t(14196220359693045352U);
timelineDecoder.CreateRelationship(relationship31);
ITimelineDecoder::Relationship relationship32;
relationship32.m_Guid = uint64_t(32);
relationship32.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
relationship32.m_HeadGuid = uint64_t(6);
relationship32.m_TailGuid = uint64_t(2);
timelineDecoder.CreateRelationship(relationship32);
ITimelineDecoder::Relationship relationship33;
relationship33.m_Guid = uint64_t(33);
relationship33.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
relationship33.m_HeadGuid = uint64_t(1);
relationship33.m_TailGuid = uint64_t(2);
timelineDecoder.CreateRelationship(relationship33);
ITimelineDecoder::Relationship relationship34;
relationship34.m_Guid = uint64_t(34);
relationship34.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship34.m_HeadGuid = uint64_t(33);
relationship34.m_TailGuid = uint64_t(15733717748792475675U);
timelineDecoder.CreateRelationship(relationship34);
ITimelineDecoder::Relationship relationship35;
relationship35.m_Guid = uint64_t(35);
relationship35.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship35.m_HeadGuid = uint64_t(34);
relationship35.m_TailGuid = uint64_t(14196220359693045352U);
timelineDecoder.CreateRelationship(relationship35);
ITimelineDecoder::Entity entity36;
entity36.m_Guid = uint64_t(36);
timelineDecoder.CreateEntity(entity36);
ITimelineDecoder::Relationship relationship37;
relationship37.m_Guid = uint64_t(37);
relationship37.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship37.m_HeadGuid = uint64_t(36);
relationship37.m_TailGuid = uint64_t(15704252740552608110U);
timelineDecoder.CreateRelationship(relationship37);
ITimelineDecoder::Relationship relationship38;
relationship38.m_Guid = uint64_t(38);
relationship38.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship38.m_HeadGuid = uint64_t(37);
relationship38.m_TailGuid = uint64_t(14196220359693045352U);
timelineDecoder.CreateRelationship(relationship38);
ITimelineDecoder::Relationship relationship39;
relationship39.m_Guid = uint64_t(39);
relationship39.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship39.m_HeadGuid = uint64_t(36);
relationship39.m_TailGuid = uint64_t(9690680943817437852U);
timelineDecoder.CreateRelationship(relationship39);
ITimelineDecoder::Relationship relationship40;
relationship40.m_Guid = uint64_t(40);
relationship40.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship40.m_HeadGuid = uint64_t(39);
relationship40.m_TailGuid = uint64_t(10874037804557439415U);
timelineDecoder.CreateRelationship(relationship40);
ITimelineDecoder::Relationship relationship41;
relationship41.m_Guid = uint64_t(41);
relationship41.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
relationship41.m_HeadGuid = uint64_t(0);
relationship41.m_TailGuid = uint64_t(36);
timelineDecoder.CreateRelationship(relationship41);
ITimelineDecoder::Entity entity42;
entity42.m_Guid = uint64_t(42);
timelineDecoder.CreateEntity(entity42);
ITimelineDecoder::Relationship relationship43;
relationship43.m_Guid = uint64_t(43);
relationship43.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship43.m_HeadGuid = uint64_t(42);
relationship43.m_TailGuid = uint64_t(15704252740552608110U);
timelineDecoder.CreateRelationship(relationship43);
ITimelineDecoder::Relationship relationship44;
relationship44.m_Guid = uint64_t(44);
relationship44.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship44.m_HeadGuid = uint64_t(43);
relationship44.m_TailGuid = uint64_t(14196220359693045352U);
timelineDecoder.CreateRelationship(relationship44);
ITimelineDecoder::Relationship relationship45;
relationship45.m_Guid = uint64_t(45);
relationship45.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship45.m_HeadGuid = uint64_t(42);
relationship45.m_TailGuid = uint64_t(9690680943817437852U);
timelineDecoder.CreateRelationship(relationship45);
ITimelineDecoder::Relationship relationship46;
relationship46.m_Guid = uint64_t(46);
relationship46.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship46.m_HeadGuid = uint64_t(45);
relationship46.m_TailGuid = uint64_t(10874037804557439415U);
timelineDecoder.CreateRelationship(relationship46);
ITimelineDecoder::Relationship relationship47;
relationship47.m_Guid = uint64_t(47);
relationship47.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
relationship47.m_HeadGuid = uint64_t(2);
relationship47.m_TailGuid = uint64_t(42);
timelineDecoder.CreateRelationship(relationship47);
ITimelineDecoder::Entity entity48;
entity48.m_Guid = uint64_t(48);
timelineDecoder.CreateEntity(entity48);
ITimelineDecoder::Relationship relationship49;
relationship49.m_Guid = uint64_t(49);
relationship49.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship49.m_HeadGuid = uint64_t(48);
relationship49.m_TailGuid = uint64_t(15026600058430441282U);
timelineDecoder.CreateRelationship(relationship49);
ITimelineDecoder::Relationship relationship50;
relationship50.m_Guid = uint64_t(50);
relationship50.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship50.m_HeadGuid = uint64_t(49);
relationship50.m_TailGuid = uint64_t(14196220359693045352U);
timelineDecoder.CreateRelationship(relationship50);
ITimelineDecoder::Relationship relationship51;
relationship51.m_Guid = uint64_t(51);
relationship51.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
relationship51.m_HeadGuid = uint64_t(6);
relationship51.m_TailGuid = uint64_t(48);
timelineDecoder.CreateRelationship(relationship51);
ITimelineDecoder::Relationship relationship53;
relationship53.m_Guid = uint64_t(53);
relationship53.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink;
relationship53.m_HeadGuid = uint64_t(48);
relationship53.m_TailGuid = uint64_t(52);
timelineDecoder.CreateRelationship(relationship53);
ITimelineDecoder::Relationship relationship54;
relationship54.m_Guid = uint64_t(54);
relationship54.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink;
relationship54.m_HeadGuid = uint64_t(52);
relationship54.m_TailGuid = uint64_t(17170418158534996719U);
timelineDecoder.CreateRelationship(relationship54);
ITimelineDecoder::Entity entity55;
entity55.m_Guid = uint64_t(55);
timelineDecoder.CreateEntity(entity55);
ITimelineDecoder::Relationship relationship56;
relationship56.m_Guid = uint64_t(56);
relationship56.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship56.m_HeadGuid = uint64_t(55);
relationship56.m_TailGuid = uint64_t(10172155312650606003U);
timelineDecoder.CreateRelationship(relationship56);
ITimelineDecoder::Relationship relationship57;
relationship57.m_Guid = uint64_t(57);
relationship57.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship57.m_HeadGuid = uint64_t(56);
relationship57.m_TailGuid = uint64_t(14196220359693045352U);
timelineDecoder.CreateRelationship(relationship57);
ITimelineDecoder::Relationship relationship58;
relationship58.m_Guid = uint64_t(58);
relationship58.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
relationship58.m_HeadGuid = uint64_t(48);
relationship58.m_TailGuid = uint64_t(55);
timelineDecoder.CreateRelationship(relationship58);
ITimelineDecoder::Relationship relationship59;
relationship59.m_Guid = uint64_t(59);
relationship59.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
relationship59.m_HeadGuid = uint64_t(36);
relationship59.m_TailGuid = uint64_t(55);
timelineDecoder.CreateRelationship(relationship59);
ITimelineDecoder::Event event60;
event60.m_Guid = uint64_t(60);
event60.m_TimeStamp = uint64_t(96557081111036);
event60.m_ThreadId = uint64_t(140522431862592);
timelineDecoder.CreateEvent(event60);
ITimelineDecoder::Relationship relationship61;
relationship61.m_Guid = uint64_t(61);
relationship61.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink;
relationship61.m_HeadGuid = uint64_t(55);
relationship61.m_TailGuid = uint64_t(60);
timelineDecoder.CreateRelationship(relationship61);
ITimelineDecoder::Relationship relationship62;
relationship62.m_Guid = uint64_t(62);
relationship62.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink;
relationship62.m_HeadGuid = uint64_t(60);
relationship62.m_TailGuid = uint64_t(17170418158534996719U);
timelineDecoder.CreateRelationship(relationship62);
ITimelineDecoder::Event event63;
event63.m_Guid = uint64_t(63);
event63.m_TimeStamp = uint64_t(96557081149730);
event63.m_ThreadId = uint64_t(140522431862592);
timelineDecoder.CreateEvent(event63);
ITimelineDecoder::Relationship relationship64;
relationship64.m_Guid = uint64_t(61);
relationship64.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink;
relationship64.m_HeadGuid = uint64_t(55);
relationship64.m_TailGuid = uint64_t(63);
timelineDecoder.CreateRelationship(relationship64);
ITimelineDecoder::Relationship relationship65;
relationship65.m_Guid = uint64_t(62);
relationship65.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink;
relationship65.m_HeadGuid = uint64_t(63);
relationship65.m_TailGuid = uint64_t(10812061579584851344U);
timelineDecoder.CreateRelationship(relationship65);
ITimelineDecoder::Entity entity66;
entity66.m_Guid = uint64_t(66);
timelineDecoder.CreateEntity(entity66);
ITimelineDecoder::Relationship relationship67;
relationship67.m_Guid = uint64_t(67);
relationship67.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship67.m_HeadGuid = uint64_t(66);
relationship67.m_TailGuid = uint64_t(10172155312650606003U);
timelineDecoder.CreateRelationship(relationship67);
ITimelineDecoder::Relationship relationship68;
relationship68.m_Guid = uint64_t(68);
relationship68.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship68.m_HeadGuid = uint64_t(67);
relationship68.m_TailGuid = uint64_t(14196220359693045352U);
timelineDecoder.CreateRelationship(relationship68);
ITimelineDecoder::Relationship relationship69;
relationship69.m_Guid = uint64_t(69);
relationship69.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
relationship69.m_HeadGuid = uint64_t(48);
relationship69.m_TailGuid = uint64_t(66);
timelineDecoder.CreateRelationship(relationship69);
ITimelineDecoder::Relationship relationship70;
relationship70.m_Guid = uint64_t(70);
relationship70.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
relationship70.m_HeadGuid = uint64_t(22);
relationship70.m_TailGuid = uint64_t(66);
timelineDecoder.CreateRelationship(relationship70);
ITimelineDecoder::Event event71;
event71.m_Guid = uint64_t(71);
event71.m_TimeStamp = uint64_t(96557081156464);
event71.m_ThreadId = uint64_t(140522431862592);
timelineDecoder.CreateEvent(event71);
ITimelineDecoder::Relationship relationship72;
relationship72.m_Guid = uint64_t(72);
relationship72.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink;
relationship72.m_HeadGuid = uint64_t(66);
relationship72.m_TailGuid = uint64_t(71);
timelineDecoder.CreateRelationship(relationship72);
ITimelineDecoder::Relationship relationship73;
relationship73.m_Guid = uint64_t(73);
relationship73.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink;
relationship73.m_HeadGuid = uint64_t(71);
relationship73.m_TailGuid = uint64_t(17170418158534996719U);
timelineDecoder.CreateRelationship(relationship73);
ITimelineDecoder::Event event74;
event74.m_Guid = uint64_t(74);
event74.m_TimeStamp = uint64_t(96557081220825);
event74.m_ThreadId = uint64_t(140522431862592);
timelineDecoder.CreateEvent(event74);
ITimelineDecoder::Relationship relationship75;
relationship75.m_Guid = uint64_t(75);
relationship75.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink;
relationship75.m_HeadGuid = uint64_t(66);
relationship75.m_TailGuid = uint64_t(74);
timelineDecoder.CreateRelationship(relationship75);
ITimelineDecoder::Relationship relationship76;
relationship76.m_Guid = uint64_t(76);
relationship76.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink;
relationship76.m_HeadGuid = uint64_t(74);
relationship76.m_TailGuid = uint64_t(10812061579584851344U);
timelineDecoder.CreateRelationship(relationship76);
ITimelineDecoder::Entity entity77;
entity77.m_Guid = uint64_t(77);
timelineDecoder.CreateEntity(entity77);
ITimelineDecoder::Relationship relationship78;
relationship78.m_Guid = uint64_t(78);
relationship78.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship78.m_HeadGuid = uint64_t(77);
relationship78.m_TailGuid = uint64_t(10172155312650606003U);
timelineDecoder.CreateRelationship(relationship78);
ITimelineDecoder::Relationship relationship79;
relationship79.m_Guid = uint64_t(79);
relationship79.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
relationship79.m_HeadGuid = uint64_t(78);
relationship79.m_TailGuid = uint64_t(14196220359693045352U);
timelineDecoder.CreateRelationship(relationship79);
ITimelineDecoder::Relationship relationship80;
relationship80.m_Guid = uint64_t(80);
relationship80.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
relationship80.m_HeadGuid = uint64_t(48);
relationship80.m_TailGuid = uint64_t(77);
timelineDecoder.CreateRelationship(relationship80);
ITimelineDecoder::Relationship relationship81;
relationship81.m_Guid = uint64_t(81);
relationship81.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
relationship81.m_HeadGuid = uint64_t(42);
relationship81.m_TailGuid = uint64_t(77);
timelineDecoder.CreateRelationship(relationship81);
ITimelineDecoder::Event event82;
event82.m_Guid = uint64_t(82);
event82.m_TimeStamp = uint64_t(96557081227643);
event82.m_ThreadId = uint64_t(140522431862592);
timelineDecoder.CreateEvent(event82);
ITimelineDecoder::Relationship relationship83;
relationship83.m_Guid = uint64_t(83);
relationship83.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink;
relationship83.m_HeadGuid = uint64_t(77);
relationship83.m_TailGuid = uint64_t(82);
timelineDecoder.CreateRelationship(relationship83);
ITimelineDecoder::Relationship relationship84;
relationship84.m_Guid = uint64_t(84);
relationship84.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink;
relationship84.m_HeadGuid = uint64_t(82);
relationship84.m_TailGuid = uint64_t(17170418158534996719U);
timelineDecoder.CreateRelationship(relationship84);
ITimelineDecoder::Event event85;
event85.m_Guid = uint64_t(85);
event85.m_TimeStamp = uint64_t(96557081240332);
event85.m_ThreadId = uint64_t(140522431862592);
timelineDecoder.CreateEvent(event85);
ITimelineDecoder::Relationship relationship86;
relationship86.m_Guid = uint64_t(86);
relationship86.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink;
relationship86.m_HeadGuid = uint64_t(77);
relationship86.m_TailGuid = uint64_t(85);
timelineDecoder.CreateRelationship(relationship86);
ITimelineDecoder::Relationship relationship87;
relationship87.m_Guid = uint64_t(87);
relationship87.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink;
relationship87.m_HeadGuid = uint64_t(85);
relationship87.m_TailGuid = uint64_t(10812061579584851344U);
timelineDecoder.CreateRelationship(relationship87);
ITimelineDecoder::Event event88;
event88.m_Guid = uint64_t(88);
event88.m_TimeStamp = uint64_t(96557081243146);
event88.m_ThreadId = uint64_t(140522431862592);
timelineDecoder.CreateEvent(event88);
ITimelineDecoder::Relationship relationship89;
relationship89.m_Guid = uint64_t(89);
relationship89.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink;
relationship89.m_HeadGuid = uint64_t(48);
relationship89.m_TailGuid = uint64_t(88);
timelineDecoder.CreateRelationship(relationship89);
ITimelineDecoder::Relationship relationship90;
relationship90.m_Guid = uint64_t(90);
relationship90.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink;
relationship90.m_HeadGuid = uint64_t(88);
relationship90.m_TailGuid = uint64_t(10812061579584851344U);
timelineDecoder.CreateRelationship(relationship90);
}
BOOST_AUTO_TEST_CASE(JSONTimelineDecoderTestStructure)
{
JSONTimelineDecoder timelineDecoder;
RunSimpleModelThroughDecoder(timelineDecoder);
JSONTimelineDecoder::Model model = timelineDecoder.GetModel();
BOOST_CHECK(model.jsonEntities.size() == 20);
JSONTimelineDecoder::JSONEntity rootEntity = model.jsonEntities.at(6);
BOOST_CHECK(rootEntity.childEntities.size() == 4);
// Testing input layer model
JSONTimelineDecoder::JSONEntity entity0 = model.jsonEntities.at(rootEntity.childEntities[0]);
BOOST_CHECK(entity0.GetName() == "input");
BOOST_CHECK(entity0.GetType() == "layer");
BOOST_CHECK(entity0.childEntities.size() == 1);
JSONTimelineDecoder::JSONEntity input_workload_entity = model.jsonEntities.at(entity0.childEntities[0]);
BOOST_CHECK(input_workload_entity.childEntities.size() == 1);
BOOST_CHECK(input_workload_entity.GetType() == "workload");
BOOST_CHECK(input_workload_entity.extendedData.at("backendId") == "CpuRef");
JSONTimelineDecoder::JSONEntity input_workload_execution_entity = model.jsonEntities
.at(input_workload_entity.childEntities[0]);
BOOST_CHECK(input_workload_execution_entity.childEntities.size() == 2);
BOOST_CHECK(input_workload_execution_entity.GetType() == "workload_execution");
JSONTimelineDecoder::JSONEntity input_workload_execution_event0 = model.jsonEntities
.at(input_workload_execution_entity.childEntities[0]);
BOOST_CHECK(input_workload_execution_event0.GetType() == "Event");
BOOST_CHECK(input_workload_execution_event0.childEntities.size() == 0);
BOOST_CHECK(model.events.at(input_workload_execution_event0.GetGuid()).m_ThreadId > uint64_t(0));
BOOST_CHECK(model.events.at(input_workload_execution_event0.GetGuid()).m_TimeStamp > uint64_t(0));
JSONTimelineDecoder::JSONEntity input_workload_execution_event1 = model.jsonEntities
.at(input_workload_execution_entity.childEntities[1]);
BOOST_CHECK(input_workload_execution_event0.GetType() == "Event");
BOOST_CHECK(input_workload_execution_event1.childEntities.size() == 0);
BOOST_CHECK(model.events.at(input_workload_execution_event1.GetGuid()).m_ThreadId > uint64_t(0));
BOOST_CHECK(model.events.at(input_workload_execution_event1.GetGuid()).m_TimeStamp > uint64_t(0));
// Testing normalization layer model
JSONTimelineDecoder::JSONEntity entity1 = model.jsonEntities.at(rootEntity.childEntities[1]);
BOOST_CHECK(entity1.GetName() == "normalization");
BOOST_CHECK(entity1.GetType() == "layer");
JSONTimelineDecoder::JSONEntity normalization_workload_entity = model.jsonEntities
.at(entity1.childEntities[0]);
BOOST_CHECK(normalization_workload_entity.GetType() == "workload");
BOOST_CHECK(normalization_workload_entity.extendedData.at("backendId") == "CpuRef");
JSONTimelineDecoder::JSONEntity normalization_workload_execution_entity = model.jsonEntities
.at(normalization_workload_entity.childEntities[0]);
BOOST_CHECK(normalization_workload_execution_entity.GetType() == "workload_execution");
JSONTimelineDecoder::JSONEntity normalization_workload_execution_event0 = model.jsonEntities
.at(normalization_workload_execution_entity.childEntities[0]);
BOOST_CHECK(normalization_workload_execution_event0.GetType() == "Event");
BOOST_CHECK(model.events.at(normalization_workload_execution_event0.GetGuid()).m_ThreadId > uint64_t(0));
BOOST_CHECK(model.events.at(normalization_workload_execution_event0.GetGuid()).m_TimeStamp > uint64_t(0));
JSONTimelineDecoder::JSONEntity normalization_workload_execution_event1 = model.jsonEntities
.at(normalization_workload_execution_entity.childEntities[1]);
BOOST_CHECK(normalization_workload_execution_event1.GetType() == "Event");
BOOST_CHECK(model.events.at(normalization_workload_execution_event1.GetGuid()).m_ThreadId > uint64_t(0));
BOOST_CHECK(model.events.at(normalization_workload_execution_event1.GetGuid()).m_TimeStamp > uint64_t(0));
// Testing output layer model
JSONTimelineDecoder::JSONEntity entity2 = model.jsonEntities.at(rootEntity.childEntities[2]);
BOOST_CHECK(entity2.GetName() == "output");
BOOST_CHECK(entity2.GetType() == "layer");
JSONTimelineDecoder::JSONEntity output_workload_entity = model.jsonEntities.at(entity2.childEntities[0]);
BOOST_CHECK(output_workload_entity.GetType() == "workload");
BOOST_CHECK(output_workload_entity.extendedData.at("backendId") == "CpuRef");
JSONTimelineDecoder::JSONEntity output_workload_execution_entity = model.jsonEntities
.at(output_workload_entity.childEntities[0]);
BOOST_CHECK(output_workload_execution_entity.GetType() == "workload_execution");
JSONTimelineDecoder::JSONEntity output_workload_execution_event0 = model.jsonEntities
.at(output_workload_execution_entity.childEntities[0]);
BOOST_CHECK(output_workload_execution_event0.GetType() == "Event");
BOOST_CHECK(model.events.at(output_workload_execution_event0.GetGuid()).m_ThreadId > uint64_t(0));
BOOST_CHECK(model.events.at(output_workload_execution_event0.GetGuid()).m_TimeStamp > uint64_t(0));
JSONTimelineDecoder::JSONEntity output_workload_execution_event1 = model.jsonEntities
.at(output_workload_execution_entity.childEntities[1]);
BOOST_CHECK(output_workload_execution_event1.GetType() == "Event");
BOOST_CHECK(model.events.at(output_workload_execution_event1.GetGuid()).m_ThreadId > uint64_t(0));
BOOST_CHECK(model.events.at(output_workload_execution_event1.GetGuid()).m_TimeStamp > uint64_t(0));
JSONTimelineDecoder::JSONEntity entity48 = model.jsonEntities.at(rootEntity.childEntities[3]);
BOOST_CHECK(entity48.GetName() == "");
BOOST_CHECK(entity48.GetType() == "inference");
}
BOOST_AUTO_TEST_CASE(JSONTimelineDecoderTestJSON)
{
JSONTimelineDecoder timelineDecoder;
RunSimpleModelThroughDecoder(timelineDecoder);
JSONTimelineDecoder::Model model = timelineDecoder.GetModel();
JSONTimelineDecoder::JSONEntity rootEntity = model.jsonEntities.at(6);
std::string jsonString = timelineDecoder.GetJSONString(rootEntity);
BOOST_CHECK(jsonString != "");
BOOST_CHECK(jsonString.find("input_0: {")!=std::string::npos);
BOOST_CHECK(jsonString.find("type: Measurement,\n"
"\t\t\tbackendId :CpuRef,")!=std::string::npos);
BOOST_CHECK(jsonString.find("normalization_2: {")!=std::string::npos);
BOOST_CHECK(jsonString.find("output_4: {")!=std::string::npos);
// Create a temporary file to write Json output to
fs::path tempFile = armnnUtils::Filesystem::NamedTempFile("JSONTimelineDecoderTestJSON.json");
// open temp file
std::ofstream ofs{tempFile};
// tell the timeline decoder to print into our temp file (you could also use std::cout)
timelineDecoder.PrintJSON(rootEntity, ofs);
// close temp file
ofs.close();
// Now everything in opposite order
fs::ifstream inFile;
//reopen the file this time for reading
inFile.open(tempFile);
std::stringstream strStream;
strStream << inFile.rdbuf(); //read the file
inFile.close();
std::string outfileJson = strStream.str();
BOOST_CHECK(outfileJson != "");
BOOST_CHECK(outfileJson.find("input_0: {")!=std::string::npos);
BOOST_CHECK(outfileJson.find("type: Measurement,\n"
"\t\t\tbackendId :CpuRef,")!=std::string::npos);
BOOST_CHECK(outfileJson.find("normalization_2: {")!=std::string::npos);
BOOST_CHECK(outfileJson.find("output_4: {")!=std::string::npos);
// Remove temporary file
fs::remove(tempFile);
}
BOOST_AUTO_TEST_SUITE_END()