diff options
Diffstat (limited to 'src/timelineDecoder/tests/JSONTimelineDecoderTests.cpp')
-rw-r--r-- | src/timelineDecoder/tests/JSONTimelineDecoderTests.cpp | 813 |
1 files changed, 813 insertions, 0 deletions
diff --git a/src/timelineDecoder/tests/JSONTimelineDecoderTests.cpp b/src/timelineDecoder/tests/JSONTimelineDecoderTests.cpp new file mode 100644 index 0000000000..71e76b1943 --- /dev/null +++ b/src/timelineDecoder/tests/JSONTimelineDecoderTests.cpp @@ -0,0 +1,813 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include <JSONTimelineDecoder.hpp> +#include <TimelineCaptureCommandHandler.hpp> +#include <TimelineDecoder.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); + + timelineDecoder.PrintJSON(rootEntity); + + std::ifstream inFile; + inFile.open("/tmp/output.json"); //open the input file + + std::stringstream strStream; + strStream << inFile.rdbuf(); //read the file + 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); +} +BOOST_AUTO_TEST_SUITE_END()
\ No newline at end of file |