//
// 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 <doctest/doctest.h>

#include <fstream>

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);
}

TEST_CASE("JSONTimelineDecoderTestStructure")
{
    JSONTimelineDecoder timelineDecoder;
    RunSimpleModelThroughDecoder(timelineDecoder);

    JSONTimelineDecoder::Model model = timelineDecoder.GetModel();
    CHECK(model.jsonEntities.size() == 20);
    JSONTimelineDecoder::JSONEntity rootEntity = model.jsonEntities.at(6);
    CHECK(rootEntity.childEntities.size() == 4);

    // Testing input layer model
    JSONTimelineDecoder::JSONEntity entity0 = model.jsonEntities.at(rootEntity.childEntities[0]);
    CHECK(entity0.GetName() == "input");
    CHECK(entity0.GetType() == "layer");

    CHECK(entity0.childEntities.size() == 1);
    JSONTimelineDecoder::JSONEntity input_workload_entity = model.jsonEntities.at(entity0.childEntities[0]);
    CHECK(input_workload_entity.childEntities.size() == 1);
    CHECK(input_workload_entity.GetType() == "workload");
    CHECK(input_workload_entity.extendedData.at("backendId") == "CpuRef");

    JSONTimelineDecoder::JSONEntity input_workload_execution_entity = model.jsonEntities
            .at(input_workload_entity.childEntities[0]);
    CHECK(input_workload_execution_entity.childEntities.size() == 2);
    CHECK(input_workload_execution_entity.GetType() == "workload_execution");

    JSONTimelineDecoder::JSONEntity input_workload_execution_event0 = model.jsonEntities
            .at(input_workload_execution_entity.childEntities[0]);
    CHECK(input_workload_execution_event0.GetType() == "Event");
    CHECK(input_workload_execution_event0.childEntities.size() == 0);
    CHECK(model.events.at(input_workload_execution_event0.GetGuid()).m_ThreadId > uint64_t(0));
    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]);
    CHECK(input_workload_execution_event0.GetType() == "Event");
    CHECK(input_workload_execution_event1.childEntities.size() == 0);
    CHECK(model.events.at(input_workload_execution_event1.GetGuid()).m_ThreadId > uint64_t(0));
    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]);
    CHECK(entity1.GetName() == "normalization");
    CHECK(entity1.GetType() == "layer");

    JSONTimelineDecoder::JSONEntity normalization_workload_entity = model.jsonEntities
            .at(entity1.childEntities[0]);
    CHECK(normalization_workload_entity.GetType() == "workload");
    CHECK(normalization_workload_entity.extendedData.at("backendId") == "CpuRef");

    JSONTimelineDecoder::JSONEntity normalization_workload_execution_entity = model.jsonEntities
            .at(normalization_workload_entity.childEntities[0]);
    CHECK(normalization_workload_execution_entity.GetType() == "workload_execution");

    JSONTimelineDecoder::JSONEntity normalization_workload_execution_event0 = model.jsonEntities
            .at(normalization_workload_execution_entity.childEntities[0]);
    CHECK(normalization_workload_execution_event0.GetType() == "Event");
    CHECK(model.events.at(normalization_workload_execution_event0.GetGuid()).m_ThreadId > uint64_t(0));
    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]);
    CHECK(normalization_workload_execution_event1.GetType() == "Event");
    CHECK(model.events.at(normalization_workload_execution_event1.GetGuid()).m_ThreadId > uint64_t(0));
    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]);
    CHECK(entity2.GetName() == "output");
    CHECK(entity2.GetType() == "layer");

    JSONTimelineDecoder::JSONEntity output_workload_entity = model.jsonEntities.at(entity2.childEntities[0]);
    CHECK(output_workload_entity.GetType() == "workload");
    CHECK(output_workload_entity.extendedData.at("backendId") == "CpuRef");

    JSONTimelineDecoder::JSONEntity output_workload_execution_entity = model.jsonEntities
            .at(output_workload_entity.childEntities[0]);
    CHECK(output_workload_execution_entity.GetType() == "workload_execution");

    JSONTimelineDecoder::JSONEntity output_workload_execution_event0 = model.jsonEntities
            .at(output_workload_execution_entity.childEntities[0]);
    CHECK(output_workload_execution_event0.GetType() == "Event");
    CHECK(model.events.at(output_workload_execution_event0.GetGuid()).m_ThreadId > uint64_t(0));
    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]);
    CHECK(output_workload_execution_event1.GetType() == "Event");
    CHECK(model.events.at(output_workload_execution_event1.GetGuid()).m_ThreadId > uint64_t(0));
    CHECK(model.events.at(output_workload_execution_event1.GetGuid()).m_TimeStamp > uint64_t(0));

    JSONTimelineDecoder::JSONEntity entity48 =  model.jsonEntities.at(rootEntity.childEntities[3]);
    CHECK(entity48.GetName() == "");
    CHECK(entity48.GetType() == "inference");
}

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);
    CHECK(jsonString != "");
    CHECK(jsonString.find("input_0: {")!=std::string::npos);
    CHECK(jsonString.find("type: Measurement,\n"
                                   "\t\t\tbackendId :CpuRef,")!=std::string::npos);
    CHECK(jsonString.find("normalization_2: {")!=std::string::npos);
    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();

    CHECK(outfileJson != "");
    CHECK(outfileJson.find("input_0: {")!=std::string::npos);
    CHECK(outfileJson.find("type: Measurement,\n"
                                "\t\t\tbackendId :CpuRef,")!=std::string::npos);
    CHECK(outfileJson.find("normalization_2: {")!=std::string::npos);
    CHECK(outfileJson.find("output_4: {")!=std::string::npos);

    // Remove temporary file
    fs::remove(tempFile);
}
}