//
// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//

#include <JSONTimelineDecoder.hpp>
#include <server/include/timelineDecoder/TimelineCaptureCommandHandler.hpp>
#include <server/include/timelineDecoder/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
    */
    arm::pipe::ITimelineDecoder::Label name;
    name.m_Guid = uint64_t(10420554295983197538U);
    name.m_Name = "name";
    timelineDecoder.CreateLabel(name);

    arm::pipe::ITimelineDecoder::Label type;
    type.m_Guid = uint64_t(14196220359693045352U);
    type.m_Name = "type";
    timelineDecoder.CreateLabel(type);

    arm::pipe::ITimelineDecoder::Label index;
    index.m_Guid = uint64_t(13922236767355949814U);
    index.m_Name = "index";
    timelineDecoder.CreateLabel(index);

    arm::pipe::ITimelineDecoder::Label backendId;
    backendId.m_Guid = uint64_t(10874037804557439415U);
    backendId.m_Name = "backendId";
    timelineDecoder.CreateLabel(backendId);

    arm::pipe::ITimelineDecoder::Label layer;
    layer.m_Guid = uint64_t(14761340794127440397U);
    layer.m_Name = "layer";
    timelineDecoder.CreateLabel(layer);

    arm::pipe::ITimelineDecoder::Label workload;
    workload.m_Guid = uint64_t(15704252740552608110U);
    workload.m_Name = "workload";
    timelineDecoder.CreateLabel(workload);

    arm::pipe::ITimelineDecoder::Label network;
    network.m_Guid = uint64_t(16862199137063532871U);
    network.m_Name = "network";
    timelineDecoder.CreateLabel(network);

    arm::pipe::ITimelineDecoder::Label connection;
    connection.m_Guid = uint64_t(15733717748792475675U);
    connection.m_Name = "connection";
    timelineDecoder.CreateLabel(connection);

    arm::pipe::ITimelineDecoder::Label inference;
    inference.m_Guid = uint64_t(15026600058430441282U);
    inference.m_Name = "inference";
    timelineDecoder.CreateLabel(inference);

    arm::pipe::ITimelineDecoder::Label workload_execution;
    workload_execution.m_Guid = uint64_t(10172155312650606003U);
    workload_execution.m_Name = "workload_execution";
    timelineDecoder.CreateLabel(workload_execution);

    arm::pipe::ITimelineDecoder::EventClass eventClass1;
    eventClass1.m_Guid = uint64_t(17170418158534996719U);
    timelineDecoder.CreateEventClass(eventClass1);

    arm::pipe::ITimelineDecoder::EventClass eventClass2;
    eventClass2.m_Guid = uint64_t(10812061579584851344U);
    timelineDecoder.CreateEventClass(eventClass2);

    arm::pipe::ITimelineDecoder::Entity entity6;
    entity6.m_Guid = uint64_t(6);
    timelineDecoder.CreateEntity(entity6);

    arm::pipe::ITimelineDecoder::Relationship relationship7;
    relationship7.m_Guid = uint64_t(7);
    relationship7.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship7.m_HeadGuid = uint64_t(6);
    relationship7.m_TailGuid = uint64_t(16862199137063532871U);
    timelineDecoder.CreateRelationship(relationship7);

    arm::pipe::ITimelineDecoder::Relationship relationship8;
    relationship8.m_Guid = uint64_t(8);
    relationship8.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship8.m_HeadGuid = uint64_t(7);
    relationship8.m_TailGuid = uint64_t(14196220359693045352U);
    timelineDecoder.CreateRelationship(relationship8);

    // Adding normalization layer
    arm::pipe::ITimelineDecoder::Entity entity0;
    entity0.m_Guid = uint64_t(0);
    timelineDecoder.CreateEntity(entity0);

    arm::pipe::ITimelineDecoder::Label input;
    input.m_Guid = uint64_t(18179123836411086572U);
    input.m_Name = "input";
    timelineDecoder.CreateLabel(input);

    arm::pipe::ITimelineDecoder::Relationship relationship9;
    relationship9.m_Guid = uint64_t(9);
    relationship9.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship9.m_HeadGuid = uint64_t(0);
    relationship9.m_TailGuid = uint64_t(18179123836411086572U);
    timelineDecoder.CreateRelationship(relationship9);

    arm::pipe::ITimelineDecoder::Relationship relationship10;
    relationship10.m_Guid = uint64_t(10);
    relationship10.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship10.m_HeadGuid = uint64_t(9);
    relationship10.m_TailGuid = uint64_t(10420554295983197538U);
    timelineDecoder.CreateRelationship(relationship10);

    arm::pipe::ITimelineDecoder::Relationship relationship11;
    relationship11.m_Guid = uint64_t(11);
    relationship11.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship11.m_HeadGuid = uint64_t(0);
    relationship11.m_TailGuid = uint64_t(14761340794127440397U);
    timelineDecoder.CreateRelationship(relationship11);

    arm::pipe::ITimelineDecoder::Relationship relationship12;
    relationship12.m_Guid = uint64_t(12);
    relationship12.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship12.m_HeadGuid = uint64_t(11);
    relationship12.m_TailGuid = uint64_t(14196220359693045352U);
    timelineDecoder.CreateRelationship(relationship12);

    arm::pipe::ITimelineDecoder::Relationship relationship13;
    relationship13.m_Guid = uint64_t(13);
    relationship13.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink;
    relationship13.m_HeadGuid = uint64_t(6);
    relationship13.m_TailGuid = uint64_t(0);
    timelineDecoder.CreateRelationship(relationship13);


    // Adding normalization layer
    arm::pipe::ITimelineDecoder::Entity entity1;
    entity1.m_Guid = uint64_t(1);
    timelineDecoder.CreateEntity(entity1);

    arm::pipe::ITimelineDecoder::Label normalization;
    normalization.m_Guid = uint64_t(15955949569988957863U);
    normalization.m_Name = "normalization";
    timelineDecoder.CreateLabel(normalization);

    arm::pipe::ITimelineDecoder::Relationship relationship14;
    relationship14.m_Guid = uint64_t(14);
    relationship14.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship14.m_HeadGuid = uint64_t(1);
    relationship14.m_TailGuid = uint64_t(15955949569988957863U);
    timelineDecoder.CreateRelationship(relationship14);

    arm::pipe::ITimelineDecoder::Relationship relationship15;
    relationship15.m_Guid = uint64_t(15);
    relationship15.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship15.m_HeadGuid = uint64_t(14);
    relationship15.m_TailGuid = uint64_t(10420554295983197538U);
    timelineDecoder.CreateRelationship(relationship15);

    arm::pipe::ITimelineDecoder::Relationship relationship16;
    relationship16.m_Guid = uint64_t(16);
    relationship16.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship16.m_HeadGuid = uint64_t(1);
    relationship16.m_TailGuid = uint64_t(14761340794127440397U);
    timelineDecoder.CreateRelationship(relationship16);

    arm::pipe::ITimelineDecoder::Relationship relationship17;
    relationship17.m_Guid = uint64_t(17);
    relationship17.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship17.m_HeadGuid = uint64_t(16);
    relationship17.m_TailGuid = uint64_t(14196220359693045352U);
    timelineDecoder.CreateRelationship(relationship17);

    arm::pipe::ITimelineDecoder::Relationship relationship18;
    relationship18.m_Guid = uint64_t(18);
    relationship18.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink;
    relationship18.m_HeadGuid = uint64_t(6);
    relationship18.m_TailGuid = uint64_t(1);
    timelineDecoder.CreateRelationship(relationship18);

    arm::pipe::ITimelineDecoder::Relationship relationship19;
    relationship19.m_Guid = uint64_t(19);
    relationship19.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink;
    relationship19.m_HeadGuid = uint64_t(0);
    relationship19.m_TailGuid = uint64_t(1);
    timelineDecoder.CreateRelationship(relationship19);

    arm::pipe::ITimelineDecoder::Relationship relationship20;
    relationship20.m_Guid = uint64_t(20);
    relationship20.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship20.m_HeadGuid = uint64_t(19);
    relationship20.m_TailGuid = uint64_t(15733717748792475675U);
    timelineDecoder.CreateRelationship(relationship20);

    arm::pipe::ITimelineDecoder::Relationship relationship21;
    relationship21.m_Guid = uint64_t(21);
    relationship21.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship21.m_HeadGuid = uint64_t(20);
    relationship21.m_TailGuid = uint64_t(14196220359693045352U);
    timelineDecoder.CreateRelationship(relationship21);


    arm::pipe::ITimelineDecoder::Entity entity22;
    entity22.m_Guid = uint64_t(22);
    timelineDecoder.CreateEntity(entity22);

    arm::pipe::ITimelineDecoder::Relationship relationship23;
    relationship23.m_Guid = uint64_t(23);
    relationship23.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship23.m_HeadGuid = uint64_t(22);
    relationship23.m_TailGuid = uint64_t(15704252740552608110U);
    timelineDecoder.CreateRelationship(relationship23);

    arm::pipe::ITimelineDecoder::Relationship relationship24;
    relationship24.m_Guid = uint64_t(24);
    relationship24.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship24.m_HeadGuid = uint64_t(23);
    relationship24.m_TailGuid = uint64_t(14196220359693045352U);
    timelineDecoder.CreateRelationship(relationship24);


    arm::pipe::ITimelineDecoder::Label CpuRef;
    CpuRef.m_Guid = uint64_t(9690680943817437852U);
    CpuRef.m_Name = "CpuRef";
    timelineDecoder.CreateLabel(CpuRef);


    arm::pipe::ITimelineDecoder::Relationship relationship25;
    relationship25.m_Guid = uint64_t(25);
    relationship25.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship25.m_HeadGuid = uint64_t(22);
    relationship25.m_TailGuid = uint64_t(9690680943817437852U);
    timelineDecoder.CreateRelationship(relationship25);

    arm::pipe::ITimelineDecoder::Relationship relationship26;
    relationship26.m_Guid = uint64_t(26);
    relationship26.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship26.m_HeadGuid = uint64_t(25);
    relationship26.m_TailGuid = uint64_t(10874037804557439415U);
    timelineDecoder.CreateRelationship(relationship26);

    arm::pipe::ITimelineDecoder::Relationship relationship27;
    relationship27.m_Guid = uint64_t(27);
    relationship27.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink   ;
    relationship27.m_HeadGuid = uint64_t(1);
    relationship27.m_TailGuid = uint64_t(22);
    timelineDecoder.CreateRelationship(relationship27);

    // Adding output layer
    arm::pipe::ITimelineDecoder::Entity entity2;
    entity2.m_Guid = uint64_t(2);
    timelineDecoder.CreateEntity(entity2);

    arm::pipe::ITimelineDecoder::Label output;
    output.m_Guid = uint64_t(18419179028513879730U);
    output.m_Name = "output";
    timelineDecoder.CreateLabel(output);

    arm::pipe::ITimelineDecoder::Relationship relationship28;
    relationship28.m_Guid = uint64_t(28);
    relationship28.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship28.m_HeadGuid = uint64_t(2);
    relationship28.m_TailGuid = uint64_t(18419179028513879730U);
    timelineDecoder.CreateRelationship(relationship28);

    arm::pipe::ITimelineDecoder::Relationship relationship29;
    relationship29.m_Guid = uint64_t(29);
    relationship29.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship29.m_HeadGuid = uint64_t(28);
    relationship29.m_TailGuid = uint64_t(10420554295983197538U);
    timelineDecoder.CreateRelationship(relationship29);

    arm::pipe::ITimelineDecoder::Relationship relationship30;
    relationship30.m_Guid = uint64_t(30);
    relationship30.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship30.m_HeadGuid = uint64_t(2);
    relationship30.m_TailGuid = uint64_t(14761340794127440397U);
    timelineDecoder.CreateRelationship(relationship30);

    arm::pipe::ITimelineDecoder::Relationship relationship31;
    relationship31.m_Guid = uint64_t(31);
    relationship31.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship31.m_HeadGuid = uint64_t(30);
    relationship31.m_TailGuid = uint64_t(14196220359693045352U);
    timelineDecoder.CreateRelationship(relationship31);

    arm::pipe::ITimelineDecoder::Relationship relationship32;
    relationship32.m_Guid = uint64_t(32);
    relationship32.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink;
    relationship32.m_HeadGuid = uint64_t(6);
    relationship32.m_TailGuid = uint64_t(2);
    timelineDecoder.CreateRelationship(relationship32);

    arm::pipe::ITimelineDecoder::Relationship relationship33;
    relationship33.m_Guid = uint64_t(33);
    relationship33.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink;
    relationship33.m_HeadGuid = uint64_t(1);
    relationship33.m_TailGuid = uint64_t(2);
    timelineDecoder.CreateRelationship(relationship33);

    arm::pipe::ITimelineDecoder::Relationship relationship34;
    relationship34.m_Guid = uint64_t(34);
    relationship34.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship34.m_HeadGuid = uint64_t(33);
    relationship34.m_TailGuid = uint64_t(15733717748792475675U);
    timelineDecoder.CreateRelationship(relationship34);

    arm::pipe::ITimelineDecoder::Relationship relationship35;
    relationship35.m_Guid = uint64_t(35);
    relationship35.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship35.m_HeadGuid = uint64_t(34);
    relationship35.m_TailGuid = uint64_t(14196220359693045352U);
    timelineDecoder.CreateRelationship(relationship35);


    arm::pipe::ITimelineDecoder::Entity entity36;
    entity36.m_Guid = uint64_t(36);
    timelineDecoder.CreateEntity(entity36);

    arm::pipe::ITimelineDecoder::Relationship relationship37;
    relationship37.m_Guid = uint64_t(37);
    relationship37.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship37.m_HeadGuid = uint64_t(36);
    relationship37.m_TailGuid = uint64_t(15704252740552608110U);
    timelineDecoder.CreateRelationship(relationship37);

    arm::pipe::ITimelineDecoder::Relationship relationship38;
    relationship38.m_Guid = uint64_t(38);
    relationship38.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship38.m_HeadGuid = uint64_t(37);
    relationship38.m_TailGuid = uint64_t(14196220359693045352U);
    timelineDecoder.CreateRelationship(relationship38);

    arm::pipe::ITimelineDecoder::Relationship relationship39;
    relationship39.m_Guid = uint64_t(39);
    relationship39.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship39.m_HeadGuid = uint64_t(36);
    relationship39.m_TailGuid = uint64_t(9690680943817437852U);
    timelineDecoder.CreateRelationship(relationship39);

    arm::pipe::ITimelineDecoder::Relationship relationship40;
    relationship40.m_Guid = uint64_t(40);
    relationship40.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship40.m_HeadGuid = uint64_t(39);
    relationship40.m_TailGuid = uint64_t(10874037804557439415U);
    timelineDecoder.CreateRelationship(relationship40);

    arm::pipe::ITimelineDecoder::Relationship relationship41;
    relationship41.m_Guid = uint64_t(41);
    relationship41.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink;
    relationship41.m_HeadGuid = uint64_t(0);
    relationship41.m_TailGuid = uint64_t(36);
    timelineDecoder.CreateRelationship(relationship41);


    arm::pipe::ITimelineDecoder::Entity entity42;
    entity42.m_Guid = uint64_t(42);
    timelineDecoder.CreateEntity(entity42);

    arm::pipe::ITimelineDecoder::Relationship relationship43;
    relationship43.m_Guid = uint64_t(43);
    relationship43.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship43.m_HeadGuid = uint64_t(42);
    relationship43.m_TailGuid = uint64_t(15704252740552608110U);
    timelineDecoder.CreateRelationship(relationship43);

    arm::pipe::ITimelineDecoder::Relationship relationship44;
    relationship44.m_Guid = uint64_t(44);
    relationship44.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship44.m_HeadGuid = uint64_t(43);
    relationship44.m_TailGuid = uint64_t(14196220359693045352U);
    timelineDecoder.CreateRelationship(relationship44);

    arm::pipe::ITimelineDecoder::Relationship relationship45;
    relationship45.m_Guid = uint64_t(45);
    relationship45.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship45.m_HeadGuid = uint64_t(42);
    relationship45.m_TailGuid = uint64_t(9690680943817437852U);
    timelineDecoder.CreateRelationship(relationship45);

    arm::pipe::ITimelineDecoder::Relationship relationship46;
    relationship46.m_Guid = uint64_t(46);
    relationship46.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship46.m_HeadGuid = uint64_t(45);
    relationship46.m_TailGuid = uint64_t(10874037804557439415U);
    timelineDecoder.CreateRelationship(relationship46);

    arm::pipe::ITimelineDecoder::Relationship relationship47;
    relationship47.m_Guid = uint64_t(47);
    relationship47.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink;
    relationship47.m_HeadGuid = uint64_t(2);
    relationship47.m_TailGuid = uint64_t(42);
    timelineDecoder.CreateRelationship(relationship47);

    arm::pipe::ITimelineDecoder::Entity entity48;
    entity48.m_Guid = uint64_t(48);
    timelineDecoder.CreateEntity(entity48);

    arm::pipe::ITimelineDecoder::Relationship relationship49;
    relationship49.m_Guid = uint64_t(49);
    relationship49.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship49.m_HeadGuid = uint64_t(48);
    relationship49.m_TailGuid = uint64_t(15026600058430441282U);
    timelineDecoder.CreateRelationship(relationship49);

    arm::pipe::ITimelineDecoder::Relationship relationship50;
    relationship50.m_Guid = uint64_t(50);
    relationship50.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship50.m_HeadGuid = uint64_t(49);
    relationship50.m_TailGuid = uint64_t(14196220359693045352U);
    timelineDecoder.CreateRelationship(relationship50);

    arm::pipe::ITimelineDecoder::Relationship relationship51;
    relationship51.m_Guid = uint64_t(51);
    relationship51.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink;
    relationship51.m_HeadGuid = uint64_t(6);
    relationship51.m_TailGuid = uint64_t(48);
    timelineDecoder.CreateRelationship(relationship51);

    arm::pipe::ITimelineDecoder::Relationship relationship53;
    relationship53.m_Guid = uint64_t(53);
    relationship53.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::DataLink;
    relationship53.m_HeadGuid = uint64_t(48);
    relationship53.m_TailGuid = uint64_t(52);
    timelineDecoder.CreateRelationship(relationship53);

    arm::pipe::ITimelineDecoder::Relationship relationship54;
    relationship54.m_Guid = uint64_t(54);
    relationship54.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::ExecutionLink;
    relationship54.m_HeadGuid = uint64_t(52);
    relationship54.m_TailGuid = uint64_t(17170418158534996719U);
    timelineDecoder.CreateRelationship(relationship54);


    arm::pipe::ITimelineDecoder::Entity entity55;
    entity55.m_Guid = uint64_t(55);
    timelineDecoder.CreateEntity(entity55);

    arm::pipe::ITimelineDecoder::Relationship relationship56;
    relationship56.m_Guid = uint64_t(56);
    relationship56.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship56.m_HeadGuid = uint64_t(55);
    relationship56.m_TailGuid = uint64_t(10172155312650606003U);
    timelineDecoder.CreateRelationship(relationship56);

    arm::pipe::ITimelineDecoder::Relationship relationship57;
    relationship57.m_Guid = uint64_t(57);
    relationship57.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship57.m_HeadGuid = uint64_t(56);
    relationship57.m_TailGuid = uint64_t(14196220359693045352U);
    timelineDecoder.CreateRelationship(relationship57);

    arm::pipe::ITimelineDecoder::Relationship relationship58;
    relationship58.m_Guid = uint64_t(58);
    relationship58.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink;
    relationship58.m_HeadGuid = uint64_t(48);
    relationship58.m_TailGuid = uint64_t(55);
    timelineDecoder.CreateRelationship(relationship58);

    arm::pipe::ITimelineDecoder::Relationship relationship59;
    relationship59.m_Guid = uint64_t(59);
    relationship59.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink;
    relationship59.m_HeadGuid = uint64_t(36);
    relationship59.m_TailGuid = uint64_t(55);
    timelineDecoder.CreateRelationship(relationship59);

    arm::pipe::ITimelineDecoder::Event event60;
    event60.m_Guid = uint64_t(60);
    event60.m_TimeStamp = uint64_t(96557081111036);
    event60.m_ThreadId = uint64_t(140522431862592);
    timelineDecoder.CreateEvent(event60);

    arm::pipe::ITimelineDecoder::Relationship relationship61;
    relationship61.m_Guid = uint64_t(61);
    relationship61.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::ExecutionLink;
    relationship61.m_HeadGuid = uint64_t(55);
    relationship61.m_TailGuid = uint64_t(60);
    timelineDecoder.CreateRelationship(relationship61);

    arm::pipe::ITimelineDecoder::Relationship relationship62;
    relationship62.m_Guid = uint64_t(62);
    relationship62.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::DataLink;
    relationship62.m_HeadGuid = uint64_t(60);
    relationship62.m_TailGuid = uint64_t(17170418158534996719U);
    timelineDecoder.CreateRelationship(relationship62);

    arm::pipe::ITimelineDecoder::Event event63;
    event63.m_Guid = uint64_t(63);
    event63.m_TimeStamp = uint64_t(96557081149730);
    event63.m_ThreadId = uint64_t(140522431862592);
    timelineDecoder.CreateEvent(event63);

    arm::pipe::ITimelineDecoder::Relationship relationship64;
    relationship64.m_Guid = uint64_t(61);
    relationship64.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::ExecutionLink;
    relationship64.m_HeadGuid = uint64_t(55);
    relationship64.m_TailGuid = uint64_t(63);
    timelineDecoder.CreateRelationship(relationship64);

    arm::pipe::ITimelineDecoder::Relationship relationship65;
    relationship65.m_Guid = uint64_t(62);
    relationship65.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::DataLink;
    relationship65.m_HeadGuid = uint64_t(63);
    relationship65.m_TailGuid = uint64_t(10812061579584851344U);
    timelineDecoder.CreateRelationship(relationship65);


    arm::pipe::ITimelineDecoder::Entity entity66;
    entity66.m_Guid = uint64_t(66);
    timelineDecoder.CreateEntity(entity66);

    arm::pipe::ITimelineDecoder::Relationship relationship67;
    relationship67.m_Guid = uint64_t(67);
    relationship67.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship67.m_HeadGuid = uint64_t(66);
    relationship67.m_TailGuid = uint64_t(10172155312650606003U);
    timelineDecoder.CreateRelationship(relationship67);

    arm::pipe::ITimelineDecoder::Relationship relationship68;
    relationship68.m_Guid = uint64_t(68);
    relationship68.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship68.m_HeadGuid = uint64_t(67);
    relationship68.m_TailGuid = uint64_t(14196220359693045352U);
    timelineDecoder.CreateRelationship(relationship68);

    arm::pipe::ITimelineDecoder::Relationship relationship69;
    relationship69.m_Guid = uint64_t(69);
    relationship69.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink;
    relationship69.m_HeadGuid = uint64_t(48);
    relationship69.m_TailGuid = uint64_t(66);
    timelineDecoder.CreateRelationship(relationship69);

    arm::pipe::ITimelineDecoder::Relationship relationship70;
    relationship70.m_Guid = uint64_t(70);
    relationship70.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink;
    relationship70.m_HeadGuid = uint64_t(22);
    relationship70.m_TailGuid = uint64_t(66);
    timelineDecoder.CreateRelationship(relationship70);


    arm::pipe::ITimelineDecoder::Event event71;
    event71.m_Guid = uint64_t(71);
    event71.m_TimeStamp = uint64_t(96557081156464);
    event71.m_ThreadId = uint64_t(140522431862592);
    timelineDecoder.CreateEvent(event71);

    arm::pipe::ITimelineDecoder::Relationship relationship72;
    relationship72.m_Guid = uint64_t(72);
    relationship72.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::ExecutionLink;
    relationship72.m_HeadGuid = uint64_t(66);
    relationship72.m_TailGuid = uint64_t(71);
    timelineDecoder.CreateRelationship(relationship72);

    arm::pipe::ITimelineDecoder::Relationship relationship73;
    relationship73.m_Guid = uint64_t(73);
    relationship73.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::DataLink;
    relationship73.m_HeadGuid = uint64_t(71);
    relationship73.m_TailGuid = uint64_t(17170418158534996719U);
    timelineDecoder.CreateRelationship(relationship73);

    arm::pipe::ITimelineDecoder::Event event74;
    event74.m_Guid = uint64_t(74);
    event74.m_TimeStamp = uint64_t(96557081220825);
    event74.m_ThreadId = uint64_t(140522431862592);
    timelineDecoder.CreateEvent(event74);

    arm::pipe::ITimelineDecoder::Relationship relationship75;
    relationship75.m_Guid = uint64_t(75);
    relationship75.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::ExecutionLink;
    relationship75.m_HeadGuid = uint64_t(66);
    relationship75.m_TailGuid = uint64_t(74);
    timelineDecoder.CreateRelationship(relationship75);

    arm::pipe::ITimelineDecoder::Relationship relationship76;
    relationship76.m_Guid = uint64_t(76);
    relationship76.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::DataLink;
    relationship76.m_HeadGuid = uint64_t(74);
    relationship76.m_TailGuid = uint64_t(10812061579584851344U);
    timelineDecoder.CreateRelationship(relationship76);

    arm::pipe::ITimelineDecoder::Entity entity77;
    entity77.m_Guid = uint64_t(77);
    timelineDecoder.CreateEntity(entity77);

    arm::pipe::ITimelineDecoder::Relationship relationship78;
    relationship78.m_Guid = uint64_t(78);
    relationship78.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship78.m_HeadGuid = uint64_t(77);
    relationship78.m_TailGuid = uint64_t(10172155312650606003U);
    timelineDecoder.CreateRelationship(relationship78);

    arm::pipe::ITimelineDecoder::Relationship relationship79;
    relationship79.m_Guid = uint64_t(79);
    relationship79.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::LabelLink;
    relationship79.m_HeadGuid = uint64_t(78);
    relationship79.m_TailGuid = uint64_t(14196220359693045352U);
    timelineDecoder.CreateRelationship(relationship79);

    arm::pipe::ITimelineDecoder::Relationship relationship80;
    relationship80.m_Guid = uint64_t(80);
    relationship80.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink;
    relationship80.m_HeadGuid = uint64_t(48);
    relationship80.m_TailGuid = uint64_t(77);
    timelineDecoder.CreateRelationship(relationship80);

    arm::pipe::ITimelineDecoder::Relationship relationship81;
    relationship81.m_Guid = uint64_t(81);
    relationship81.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::RetentionLink;
    relationship81.m_HeadGuid = uint64_t(42);
    relationship81.m_TailGuid = uint64_t(77);
    timelineDecoder.CreateRelationship(relationship81);

    arm::pipe::ITimelineDecoder::Event event82;
    event82.m_Guid = uint64_t(82);
    event82.m_TimeStamp = uint64_t(96557081227643);
    event82.m_ThreadId = uint64_t(140522431862592);
    timelineDecoder.CreateEvent(event82);

    arm::pipe::ITimelineDecoder::Relationship relationship83;
    relationship83.m_Guid = uint64_t(83);
    relationship83.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::ExecutionLink;
    relationship83.m_HeadGuid = uint64_t(77);
    relationship83.m_TailGuid = uint64_t(82);
    timelineDecoder.CreateRelationship(relationship83);

    arm::pipe::ITimelineDecoder::Relationship relationship84;
    relationship84.m_Guid = uint64_t(84);
    relationship84.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::DataLink;
    relationship84.m_HeadGuid = uint64_t(82);
    relationship84.m_TailGuid = uint64_t(17170418158534996719U);
    timelineDecoder.CreateRelationship(relationship84);

    arm::pipe::ITimelineDecoder::Event event85;
    event85.m_Guid = uint64_t(85);
    event85.m_TimeStamp = uint64_t(96557081240332);
    event85.m_ThreadId = uint64_t(140522431862592);
    timelineDecoder.CreateEvent(event85);

    arm::pipe::ITimelineDecoder::Relationship relationship86;
    relationship86.m_Guid = uint64_t(86);
    relationship86.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::ExecutionLink;
    relationship86.m_HeadGuid = uint64_t(77);
    relationship86.m_TailGuid = uint64_t(85);
    timelineDecoder.CreateRelationship(relationship86);

    arm::pipe::ITimelineDecoder::Relationship relationship87;
    relationship87.m_Guid = uint64_t(87);
    relationship87.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::DataLink;
    relationship87.m_HeadGuid = uint64_t(85);
    relationship87.m_TailGuid = uint64_t(10812061579584851344U);
    timelineDecoder.CreateRelationship(relationship87);

    arm::pipe::ITimelineDecoder::Event event88;
    event88.m_Guid = uint64_t(88);
    event88.m_TimeStamp = uint64_t(96557081243146);
    event88.m_ThreadId = uint64_t(140522431862592);
    timelineDecoder.CreateEvent(event88);

    arm::pipe::ITimelineDecoder::Relationship relationship89;
    relationship89.m_Guid = uint64_t(89);
    relationship89.m_RelationshipType = arm::pipe::ITimelineDecoder::RelationshipType::ExecutionLink;
    relationship89.m_HeadGuid = uint64_t(48);
    relationship89.m_TailGuid = uint64_t(88);
    timelineDecoder.CreateRelationship(relationship89);

    arm::pipe::ITimelineDecoder::Relationship relationship90;
    relationship90.m_Guid = uint64_t(90);
    relationship90.m_RelationshipType = arm::pipe::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()