blob: 71e76b194344d1b7e223e284a62bae4b1d81de34 [file] [log] [blame]
Éanna Ó Catháin0de47122020-04-01 15:40:12 +01001//
2// Copyright © 2020 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include <JSONTimelineDecoder.hpp>
7#include <TimelineCaptureCommandHandler.hpp>
8#include <TimelineDecoder.hpp>
9
10#include <boost/test/test_tools.hpp>
11#include <boost/test/unit_test_suite.hpp>
12
13#include <fstream>
14
15BOOST_AUTO_TEST_SUITE(JSONTimelineDecoderTests)
16
17using namespace armnn;
18using namespace timelinedecoder;
19
20void RunSimpleModelThroughDecoder(JSONTimelineDecoder& timelineDecoder)
21{
22 /*
23 * Building Simple model structure to test
24 */
25 ITimelineDecoder::Label name;
26 name.m_Guid = uint64_t(10420554295983197538U);
27 name.m_Name = "name";
28 timelineDecoder.CreateLabel(name);
29
30 ITimelineDecoder::Label type;
31 type.m_Guid = uint64_t(14196220359693045352U);
32 type.m_Name = "type";
33 timelineDecoder.CreateLabel(type);
34
35 ITimelineDecoder::Label index;
36 index.m_Guid = uint64_t(13922236767355949814U);
37 index.m_Name = "index";
38 timelineDecoder.CreateLabel(index);
39
40 ITimelineDecoder::Label backendId;
41 backendId.m_Guid = uint64_t(10874037804557439415U);
42 backendId.m_Name = "backendId";
43 timelineDecoder.CreateLabel(backendId);
44
45 ITimelineDecoder::Label layer;
46 layer.m_Guid = uint64_t(14761340794127440397U);
47 layer.m_Name = "layer";
48 timelineDecoder.CreateLabel(layer);
49
50 ITimelineDecoder::Label workload;
51 workload.m_Guid = uint64_t(15704252740552608110U);
52 workload.m_Name = "workload";
53 timelineDecoder.CreateLabel(workload);
54
55 ITimelineDecoder::Label network;
56 network.m_Guid = uint64_t(16862199137063532871U);
57 network.m_Name = "network";
58 timelineDecoder.CreateLabel(network);
59
60 ITimelineDecoder::Label connection;
61 connection.m_Guid = uint64_t(15733717748792475675U);
62 connection.m_Name = "connection";
63 timelineDecoder.CreateLabel(connection);
64
65 ITimelineDecoder::Label inference;
66 inference.m_Guid = uint64_t(15026600058430441282U);
67 inference.m_Name = "inference";
68 timelineDecoder.CreateLabel(inference);
69
70 ITimelineDecoder::Label workload_execution;
71 workload_execution.m_Guid = uint64_t(10172155312650606003U);
72 workload_execution.m_Name = "workload_execution";
73 timelineDecoder.CreateLabel(workload_execution);
74
75 ITimelineDecoder::EventClass eventClass1;
76 eventClass1.m_Guid = uint64_t(17170418158534996719U);
77 timelineDecoder.CreateEventClass(eventClass1);
78
79 ITimelineDecoder::EventClass eventClass2;
80 eventClass2.m_Guid = uint64_t(10812061579584851344U);
81 timelineDecoder.CreateEventClass(eventClass2);
82
83 ITimelineDecoder::Entity entity6;
84 entity6.m_Guid = uint64_t(6);
85 timelineDecoder.CreateEntity(entity6);
86
87 ITimelineDecoder::Relationship relationship7;
88 relationship7.m_Guid = uint64_t(7);
89 relationship7.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
90 relationship7.m_HeadGuid = uint64_t(6);
91 relationship7.m_TailGuid = uint64_t(16862199137063532871U);
92 timelineDecoder.CreateRelationship(relationship7);
93
94 ITimelineDecoder::Relationship relationship8;
95 relationship8.m_Guid = uint64_t(8);
96 relationship8.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
97 relationship8.m_HeadGuid = uint64_t(7);
98 relationship8.m_TailGuid = uint64_t(14196220359693045352U);
99 timelineDecoder.CreateRelationship(relationship8);
100
101 // Adding normalization layer
102 ITimelineDecoder::Entity entity0;
103 entity0.m_Guid = uint64_t(0);
104 timelineDecoder.CreateEntity(entity0);
105
106 ITimelineDecoder::Label input;
107 input.m_Guid = uint64_t(18179123836411086572U);
108 input.m_Name = "input";
109 timelineDecoder.CreateLabel(input);
110
111 ITimelineDecoder::Relationship relationship9;
112 relationship9.m_Guid = uint64_t(9);
113 relationship9.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
114 relationship9.m_HeadGuid = uint64_t(0);
115 relationship9.m_TailGuid = uint64_t(18179123836411086572U);
116 timelineDecoder.CreateRelationship(relationship9);
117
118 ITimelineDecoder::Relationship relationship10;
119 relationship10.m_Guid = uint64_t(10);
120 relationship10.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
121 relationship10.m_HeadGuid = uint64_t(9);
122 relationship10.m_TailGuid = uint64_t(10420554295983197538U);
123 timelineDecoder.CreateRelationship(relationship10);
124
125 ITimelineDecoder::Relationship relationship11;
126 relationship11.m_Guid = uint64_t(11);
127 relationship11.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
128 relationship11.m_HeadGuid = uint64_t(0);
129 relationship11.m_TailGuid = uint64_t(14761340794127440397U);
130 timelineDecoder.CreateRelationship(relationship11);
131
132 ITimelineDecoder::Relationship relationship12;
133 relationship12.m_Guid = uint64_t(12);
134 relationship12.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
135 relationship12.m_HeadGuid = uint64_t(11);
136 relationship12.m_TailGuid = uint64_t(14196220359693045352U);
137 timelineDecoder.CreateRelationship(relationship12);
138
139 ITimelineDecoder::Relationship relationship13;
140 relationship13.m_Guid = uint64_t(13);
141 relationship13.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
142 relationship13.m_HeadGuid = uint64_t(6);
143 relationship13.m_TailGuid = uint64_t(0);
144 timelineDecoder.CreateRelationship(relationship13);
145
146
147 // Adding normalization layer
148 ITimelineDecoder::Entity entity1;
149 entity1.m_Guid = uint64_t(1);
150 timelineDecoder.CreateEntity(entity1);
151
152 ITimelineDecoder::Label normalization;
153 normalization.m_Guid = uint64_t(15955949569988957863U);
154 normalization.m_Name = "normalization";
155 timelineDecoder.CreateLabel(normalization);
156
157 ITimelineDecoder::Relationship relationship14;
158 relationship14.m_Guid = uint64_t(14);
159 relationship14.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
160 relationship14.m_HeadGuid = uint64_t(1);
161 relationship14.m_TailGuid = uint64_t(15955949569988957863U);
162 timelineDecoder.CreateRelationship(relationship14);
163
164 ITimelineDecoder::Relationship relationship15;
165 relationship15.m_Guid = uint64_t(15);
166 relationship15.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
167 relationship15.m_HeadGuid = uint64_t(14);
168 relationship15.m_TailGuid = uint64_t(10420554295983197538U);
169 timelineDecoder.CreateRelationship(relationship15);
170
171 ITimelineDecoder::Relationship relationship16;
172 relationship16.m_Guid = uint64_t(16);
173 relationship16.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
174 relationship16.m_HeadGuid = uint64_t(1);
175 relationship16.m_TailGuid = uint64_t(14761340794127440397U);
176 timelineDecoder.CreateRelationship(relationship16);
177
178 ITimelineDecoder::Relationship relationship17;
179 relationship17.m_Guid = uint64_t(17);
180 relationship17.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
181 relationship17.m_HeadGuid = uint64_t(16);
182 relationship17.m_TailGuid = uint64_t(14196220359693045352U);
183 timelineDecoder.CreateRelationship(relationship17);
184
185 ITimelineDecoder::Relationship relationship18;
186 relationship18.m_Guid = uint64_t(18);
187 relationship18.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
188 relationship18.m_HeadGuid = uint64_t(6);
189 relationship18.m_TailGuid = uint64_t(1);
190 timelineDecoder.CreateRelationship(relationship18);
191
192 ITimelineDecoder::Relationship relationship19;
193 relationship19.m_Guid = uint64_t(19);
194 relationship19.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
195 relationship19.m_HeadGuid = uint64_t(0);
196 relationship19.m_TailGuid = uint64_t(1);
197 timelineDecoder.CreateRelationship(relationship19);
198
199 ITimelineDecoder::Relationship relationship20;
200 relationship20.m_Guid = uint64_t(20);
201 relationship20.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
202 relationship20.m_HeadGuid = uint64_t(19);
203 relationship20.m_TailGuid = uint64_t(15733717748792475675U);
204 timelineDecoder.CreateRelationship(relationship20);
205
206 ITimelineDecoder::Relationship relationship21;
207 relationship21.m_Guid = uint64_t(21);
208 relationship21.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
209 relationship21.m_HeadGuid = uint64_t(20);
210 relationship21.m_TailGuid = uint64_t(14196220359693045352U);
211 timelineDecoder.CreateRelationship(relationship21);
212
213
214 ITimelineDecoder::Entity entity22;
215 entity22.m_Guid = uint64_t(22);
216 timelineDecoder.CreateEntity(entity22);
217
218 ITimelineDecoder::Relationship relationship23;
219 relationship23.m_Guid = uint64_t(23);
220 relationship23.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
221 relationship23.m_HeadGuid = uint64_t(22);
222 relationship23.m_TailGuid = uint64_t(15704252740552608110U);
223 timelineDecoder.CreateRelationship(relationship23);
224
225 ITimelineDecoder::Relationship relationship24;
226 relationship24.m_Guid = uint64_t(24);
227 relationship24.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
228 relationship24.m_HeadGuid = uint64_t(23);
229 relationship24.m_TailGuid = uint64_t(14196220359693045352U);
230 timelineDecoder.CreateRelationship(relationship24);
231
232
233 ITimelineDecoder::Label CpuRef;
234 CpuRef.m_Guid = uint64_t(9690680943817437852U);
235 CpuRef.m_Name = "CpuRef";
236 timelineDecoder.CreateLabel(CpuRef);
237
238
239 ITimelineDecoder::Relationship relationship25;
240 relationship25.m_Guid = uint64_t(25);
241 relationship25.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
242 relationship25.m_HeadGuid = uint64_t(22);
243 relationship25.m_TailGuid = uint64_t(9690680943817437852U);
244 timelineDecoder.CreateRelationship(relationship25);
245
246 ITimelineDecoder::Relationship relationship26;
247 relationship26.m_Guid = uint64_t(26);
248 relationship26.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
249 relationship26.m_HeadGuid = uint64_t(25);
250 relationship26.m_TailGuid = uint64_t(10874037804557439415U);
251 timelineDecoder.CreateRelationship(relationship26);
252
253 ITimelineDecoder::Relationship relationship27;
254 relationship27.m_Guid = uint64_t(27);
255 relationship27.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink ;
256 relationship27.m_HeadGuid = uint64_t(1);
257 relationship27.m_TailGuid = uint64_t(22);
258 timelineDecoder.CreateRelationship(relationship27);
259
260 // Adding output layer
261 ITimelineDecoder::Entity entity2;
262 entity2.m_Guid = uint64_t(2);
263 timelineDecoder.CreateEntity(entity2);
264
265 ITimelineDecoder::Label output;
266 output.m_Guid = uint64_t(18419179028513879730U);
267 output.m_Name = "output";
268 timelineDecoder.CreateLabel(output);
269
270 ITimelineDecoder::Relationship relationship28;
271 relationship28.m_Guid = uint64_t(28);
272 relationship28.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
273 relationship28.m_HeadGuid = uint64_t(2);
274 relationship28.m_TailGuid = uint64_t(18419179028513879730U);
275 timelineDecoder.CreateRelationship(relationship28);
276
277 ITimelineDecoder::Relationship relationship29;
278 relationship29.m_Guid = uint64_t(29);
279 relationship29.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
280 relationship29.m_HeadGuid = uint64_t(28);
281 relationship29.m_TailGuid = uint64_t(10420554295983197538U);
282 timelineDecoder.CreateRelationship(relationship29);
283
284 ITimelineDecoder::Relationship relationship30;
285 relationship30.m_Guid = uint64_t(30);
286 relationship30.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
287 relationship30.m_HeadGuid = uint64_t(2);
288 relationship30.m_TailGuid = uint64_t(14761340794127440397U);
289 timelineDecoder.CreateRelationship(relationship30);
290
291 ITimelineDecoder::Relationship relationship31;
292 relationship31.m_Guid = uint64_t(31);
293 relationship31.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
294 relationship31.m_HeadGuid = uint64_t(30);
295 relationship31.m_TailGuid = uint64_t(14196220359693045352U);
296 timelineDecoder.CreateRelationship(relationship31);
297
298 ITimelineDecoder::Relationship relationship32;
299 relationship32.m_Guid = uint64_t(32);
300 relationship32.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
301 relationship32.m_HeadGuid = uint64_t(6);
302 relationship32.m_TailGuid = uint64_t(2);
303 timelineDecoder.CreateRelationship(relationship32);
304
305 ITimelineDecoder::Relationship relationship33;
306 relationship33.m_Guid = uint64_t(33);
307 relationship33.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
308 relationship33.m_HeadGuid = uint64_t(1);
309 relationship33.m_TailGuid = uint64_t(2);
310 timelineDecoder.CreateRelationship(relationship33);
311
312 ITimelineDecoder::Relationship relationship34;
313 relationship34.m_Guid = uint64_t(34);
314 relationship34.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
315 relationship34.m_HeadGuid = uint64_t(33);
316 relationship34.m_TailGuid = uint64_t(15733717748792475675U);
317 timelineDecoder.CreateRelationship(relationship34);
318
319 ITimelineDecoder::Relationship relationship35;
320 relationship35.m_Guid = uint64_t(35);
321 relationship35.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
322 relationship35.m_HeadGuid = uint64_t(34);
323 relationship35.m_TailGuid = uint64_t(14196220359693045352U);
324 timelineDecoder.CreateRelationship(relationship35);
325
326
327 ITimelineDecoder::Entity entity36;
328 entity36.m_Guid = uint64_t(36);
329 timelineDecoder.CreateEntity(entity36);
330
331 ITimelineDecoder::Relationship relationship37;
332 relationship37.m_Guid = uint64_t(37);
333 relationship37.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
334 relationship37.m_HeadGuid = uint64_t(36);
335 relationship37.m_TailGuid = uint64_t(15704252740552608110U);
336 timelineDecoder.CreateRelationship(relationship37);
337
338 ITimelineDecoder::Relationship relationship38;
339 relationship38.m_Guid = uint64_t(38);
340 relationship38.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
341 relationship38.m_HeadGuid = uint64_t(37);
342 relationship38.m_TailGuid = uint64_t(14196220359693045352U);
343 timelineDecoder.CreateRelationship(relationship38);
344
345 ITimelineDecoder::Relationship relationship39;
346 relationship39.m_Guid = uint64_t(39);
347 relationship39.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
348 relationship39.m_HeadGuid = uint64_t(36);
349 relationship39.m_TailGuid = uint64_t(9690680943817437852U);
350 timelineDecoder.CreateRelationship(relationship39);
351
352 ITimelineDecoder::Relationship relationship40;
353 relationship40.m_Guid = uint64_t(40);
354 relationship40.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
355 relationship40.m_HeadGuid = uint64_t(39);
356 relationship40.m_TailGuid = uint64_t(10874037804557439415U);
357 timelineDecoder.CreateRelationship(relationship40);
358
359 ITimelineDecoder::Relationship relationship41;
360 relationship41.m_Guid = uint64_t(41);
361 relationship41.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
362 relationship41.m_HeadGuid = uint64_t(0);
363 relationship41.m_TailGuid = uint64_t(36);
364 timelineDecoder.CreateRelationship(relationship41);
365
366
367 ITimelineDecoder::Entity entity42;
368 entity42.m_Guid = uint64_t(42);
369 timelineDecoder.CreateEntity(entity42);
370
371 ITimelineDecoder::Relationship relationship43;
372 relationship43.m_Guid = uint64_t(43);
373 relationship43.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
374 relationship43.m_HeadGuid = uint64_t(42);
375 relationship43.m_TailGuid = uint64_t(15704252740552608110U);
376 timelineDecoder.CreateRelationship(relationship43);
377
378 ITimelineDecoder::Relationship relationship44;
379 relationship44.m_Guid = uint64_t(44);
380 relationship44.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
381 relationship44.m_HeadGuid = uint64_t(43);
382 relationship44.m_TailGuid = uint64_t(14196220359693045352U);
383 timelineDecoder.CreateRelationship(relationship44);
384
385 ITimelineDecoder::Relationship relationship45;
386 relationship45.m_Guid = uint64_t(45);
387 relationship45.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
388 relationship45.m_HeadGuid = uint64_t(42);
389 relationship45.m_TailGuid = uint64_t(9690680943817437852U);
390 timelineDecoder.CreateRelationship(relationship45);
391
392 ITimelineDecoder::Relationship relationship46;
393 relationship46.m_Guid = uint64_t(46);
394 relationship46.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
395 relationship46.m_HeadGuid = uint64_t(45);
396 relationship46.m_TailGuid = uint64_t(10874037804557439415U);
397 timelineDecoder.CreateRelationship(relationship46);
398
399 ITimelineDecoder::Relationship relationship47;
400 relationship47.m_Guid = uint64_t(47);
401 relationship47.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
402 relationship47.m_HeadGuid = uint64_t(2);
403 relationship47.m_TailGuid = uint64_t(42);
404 timelineDecoder.CreateRelationship(relationship47);
405
406 ITimelineDecoder::Entity entity48;
407 entity48.m_Guid = uint64_t(48);
408 timelineDecoder.CreateEntity(entity48);
409
410 ITimelineDecoder::Relationship relationship49;
411 relationship49.m_Guid = uint64_t(49);
412 relationship49.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
413 relationship49.m_HeadGuid = uint64_t(48);
414 relationship49.m_TailGuid = uint64_t(15026600058430441282U);
415 timelineDecoder.CreateRelationship(relationship49);
416
417 ITimelineDecoder::Relationship relationship50;
418 relationship50.m_Guid = uint64_t(50);
419 relationship50.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
420 relationship50.m_HeadGuid = uint64_t(49);
421 relationship50.m_TailGuid = uint64_t(14196220359693045352U);
422 timelineDecoder.CreateRelationship(relationship50);
423
424 ITimelineDecoder::Relationship relationship51;
425 relationship51.m_Guid = uint64_t(51);
426 relationship51.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
427 relationship51.m_HeadGuid = uint64_t(6);
428 relationship51.m_TailGuid = uint64_t(48);
429 timelineDecoder.CreateRelationship(relationship51);
430
431 ITimelineDecoder::Relationship relationship53;
432 relationship53.m_Guid = uint64_t(53);
433 relationship53.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink;
434 relationship53.m_HeadGuid = uint64_t(48);
435 relationship53.m_TailGuid = uint64_t(52);
436 timelineDecoder.CreateRelationship(relationship53);
437
438 ITimelineDecoder::Relationship relationship54;
439 relationship54.m_Guid = uint64_t(54);
440 relationship54.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink;
441 relationship54.m_HeadGuid = uint64_t(52);
442 relationship54.m_TailGuid = uint64_t(17170418158534996719U);
443 timelineDecoder.CreateRelationship(relationship54);
444
445
446 ITimelineDecoder::Entity entity55;
447 entity55.m_Guid = uint64_t(55);
448 timelineDecoder.CreateEntity(entity55);
449
450 ITimelineDecoder::Relationship relationship56;
451 relationship56.m_Guid = uint64_t(56);
452 relationship56.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
453 relationship56.m_HeadGuid = uint64_t(55);
454 relationship56.m_TailGuid = uint64_t(10172155312650606003U);
455 timelineDecoder.CreateRelationship(relationship56);
456
457 ITimelineDecoder::Relationship relationship57;
458 relationship57.m_Guid = uint64_t(57);
459 relationship57.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
460 relationship57.m_HeadGuid = uint64_t(56);
461 relationship57.m_TailGuid = uint64_t(14196220359693045352U);
462 timelineDecoder.CreateRelationship(relationship57);
463
464 ITimelineDecoder::Relationship relationship58;
465 relationship58.m_Guid = uint64_t(58);
466 relationship58.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
467 relationship58.m_HeadGuid = uint64_t(48);
468 relationship58.m_TailGuid = uint64_t(55);
469 timelineDecoder.CreateRelationship(relationship58);
470
471 ITimelineDecoder::Relationship relationship59;
472 relationship59.m_Guid = uint64_t(59);
473 relationship59.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
474 relationship59.m_HeadGuid = uint64_t(36);
475 relationship59.m_TailGuid = uint64_t(55);
476 timelineDecoder.CreateRelationship(relationship59);
477
478 ITimelineDecoder::Event event60;
479 event60.m_Guid = uint64_t(60);
480 event60.m_TimeStamp = uint64_t(96557081111036);
481 event60.m_ThreadId = uint64_t(140522431862592);
482 timelineDecoder.CreateEvent(event60);
483
484 ITimelineDecoder::Relationship relationship61;
485 relationship61.m_Guid = uint64_t(61);
486 relationship61.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink;
487 relationship61.m_HeadGuid = uint64_t(55);
488 relationship61.m_TailGuid = uint64_t(60);
489 timelineDecoder.CreateRelationship(relationship61);
490
491 ITimelineDecoder::Relationship relationship62;
492 relationship62.m_Guid = uint64_t(62);
493 relationship62.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink;
494 relationship62.m_HeadGuid = uint64_t(60);
495 relationship62.m_TailGuid = uint64_t(17170418158534996719U);
496 timelineDecoder.CreateRelationship(relationship62);
497
498 ITimelineDecoder::Event event63;
499 event63.m_Guid = uint64_t(63);
500 event63.m_TimeStamp = uint64_t(96557081149730);
501 event63.m_ThreadId = uint64_t(140522431862592);
502 timelineDecoder.CreateEvent(event63);
503
504 ITimelineDecoder::Relationship relationship64;
505 relationship64.m_Guid = uint64_t(61);
506 relationship64.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink;
507 relationship64.m_HeadGuid = uint64_t(55);
508 relationship64.m_TailGuid = uint64_t(63);
509 timelineDecoder.CreateRelationship(relationship64);
510
511 ITimelineDecoder::Relationship relationship65;
512 relationship65.m_Guid = uint64_t(62);
513 relationship65.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink;
514 relationship65.m_HeadGuid = uint64_t(63);
515 relationship65.m_TailGuid = uint64_t(10812061579584851344U);
516 timelineDecoder.CreateRelationship(relationship65);
517
518
519 ITimelineDecoder::Entity entity66;
520 entity66.m_Guid = uint64_t(66);
521 timelineDecoder.CreateEntity(entity66);
522
523 ITimelineDecoder::Relationship relationship67;
524 relationship67.m_Guid = uint64_t(67);
525 relationship67.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
526 relationship67.m_HeadGuid = uint64_t(66);
527 relationship67.m_TailGuid = uint64_t(10172155312650606003U);
528 timelineDecoder.CreateRelationship(relationship67);
529
530 ITimelineDecoder::Relationship relationship68;
531 relationship68.m_Guid = uint64_t(68);
532 relationship68.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
533 relationship68.m_HeadGuid = uint64_t(67);
534 relationship68.m_TailGuid = uint64_t(14196220359693045352U);
535 timelineDecoder.CreateRelationship(relationship68);
536
537 ITimelineDecoder::Relationship relationship69;
538 relationship69.m_Guid = uint64_t(69);
539 relationship69.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
540 relationship69.m_HeadGuid = uint64_t(48);
541 relationship69.m_TailGuid = uint64_t(66);
542 timelineDecoder.CreateRelationship(relationship69);
543
544 ITimelineDecoder::Relationship relationship70;
545 relationship70.m_Guid = uint64_t(70);
546 relationship70.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
547 relationship70.m_HeadGuid = uint64_t(22);
548 relationship70.m_TailGuid = uint64_t(66);
549 timelineDecoder.CreateRelationship(relationship70);
550
551
552 ITimelineDecoder::Event event71;
553 event71.m_Guid = uint64_t(71);
554 event71.m_TimeStamp = uint64_t(96557081156464);
555 event71.m_ThreadId = uint64_t(140522431862592);
556 timelineDecoder.CreateEvent(event71);
557
558 ITimelineDecoder::Relationship relationship72;
559 relationship72.m_Guid = uint64_t(72);
560 relationship72.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink;
561 relationship72.m_HeadGuid = uint64_t(66);
562 relationship72.m_TailGuid = uint64_t(71);
563 timelineDecoder.CreateRelationship(relationship72);
564
565 ITimelineDecoder::Relationship relationship73;
566 relationship73.m_Guid = uint64_t(73);
567 relationship73.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink;
568 relationship73.m_HeadGuid = uint64_t(71);
569 relationship73.m_TailGuid = uint64_t(17170418158534996719U);
570 timelineDecoder.CreateRelationship(relationship73);
571
572 ITimelineDecoder::Event event74;
573 event74.m_Guid = uint64_t(74);
574 event74.m_TimeStamp = uint64_t(96557081220825);
575 event74.m_ThreadId = uint64_t(140522431862592);
576 timelineDecoder.CreateEvent(event74);
577
578 ITimelineDecoder::Relationship relationship75;
579 relationship75.m_Guid = uint64_t(75);
580 relationship75.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink;
581 relationship75.m_HeadGuid = uint64_t(66);
582 relationship75.m_TailGuid = uint64_t(74);
583 timelineDecoder.CreateRelationship(relationship75);
584
585 ITimelineDecoder::Relationship relationship76;
586 relationship76.m_Guid = uint64_t(76);
587 relationship76.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink;
588 relationship76.m_HeadGuid = uint64_t(74);
589 relationship76.m_TailGuid = uint64_t(10812061579584851344U);
590 timelineDecoder.CreateRelationship(relationship76);
591
592 ITimelineDecoder::Entity entity77;
593 entity77.m_Guid = uint64_t(77);
594 timelineDecoder.CreateEntity(entity77);
595
596 ITimelineDecoder::Relationship relationship78;
597 relationship78.m_Guid = uint64_t(78);
598 relationship78.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
599 relationship78.m_HeadGuid = uint64_t(77);
600 relationship78.m_TailGuid = uint64_t(10172155312650606003U);
601 timelineDecoder.CreateRelationship(relationship78);
602
603 ITimelineDecoder::Relationship relationship79;
604 relationship79.m_Guid = uint64_t(79);
605 relationship79.m_RelationshipType = ITimelineDecoder::RelationshipType::LabelLink;
606 relationship79.m_HeadGuid = uint64_t(78);
607 relationship79.m_TailGuid = uint64_t(14196220359693045352U);
608 timelineDecoder.CreateRelationship(relationship79);
609
610 ITimelineDecoder::Relationship relationship80;
611 relationship80.m_Guid = uint64_t(80);
612 relationship80.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
613 relationship80.m_HeadGuid = uint64_t(48);
614 relationship80.m_TailGuid = uint64_t(77);
615 timelineDecoder.CreateRelationship(relationship80);
616
617 ITimelineDecoder::Relationship relationship81;
618 relationship81.m_Guid = uint64_t(81);
619 relationship81.m_RelationshipType = ITimelineDecoder::RelationshipType::RetentionLink;
620 relationship81.m_HeadGuid = uint64_t(42);
621 relationship81.m_TailGuid = uint64_t(77);
622 timelineDecoder.CreateRelationship(relationship81);
623
624 ITimelineDecoder::Event event82;
625 event82.m_Guid = uint64_t(82);
626 event82.m_TimeStamp = uint64_t(96557081227643);
627 event82.m_ThreadId = uint64_t(140522431862592);
628 timelineDecoder.CreateEvent(event82);
629
630 ITimelineDecoder::Relationship relationship83;
631 relationship83.m_Guid = uint64_t(83);
632 relationship83.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink;
633 relationship83.m_HeadGuid = uint64_t(77);
634 relationship83.m_TailGuid = uint64_t(82);
635 timelineDecoder.CreateRelationship(relationship83);
636
637 ITimelineDecoder::Relationship relationship84;
638 relationship84.m_Guid = uint64_t(84);
639 relationship84.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink;
640 relationship84.m_HeadGuid = uint64_t(82);
641 relationship84.m_TailGuid = uint64_t(17170418158534996719U);
642 timelineDecoder.CreateRelationship(relationship84);
643
644 ITimelineDecoder::Event event85;
645 event85.m_Guid = uint64_t(85);
646 event85.m_TimeStamp = uint64_t(96557081240332);
647 event85.m_ThreadId = uint64_t(140522431862592);
648 timelineDecoder.CreateEvent(event85);
649
650 ITimelineDecoder::Relationship relationship86;
651 relationship86.m_Guid = uint64_t(86);
652 relationship86.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink;
653 relationship86.m_HeadGuid = uint64_t(77);
654 relationship86.m_TailGuid = uint64_t(85);
655 timelineDecoder.CreateRelationship(relationship86);
656
657 ITimelineDecoder::Relationship relationship87;
658 relationship87.m_Guid = uint64_t(87);
659 relationship87.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink;
660 relationship87.m_HeadGuid = uint64_t(85);
661 relationship87.m_TailGuid = uint64_t(10812061579584851344U);
662 timelineDecoder.CreateRelationship(relationship87);
663
664 ITimelineDecoder::Event event88;
665 event88.m_Guid = uint64_t(88);
666 event88.m_TimeStamp = uint64_t(96557081243146);
667 event88.m_ThreadId = uint64_t(140522431862592);
668 timelineDecoder.CreateEvent(event88);
669
670 ITimelineDecoder::Relationship relationship89;
671 relationship89.m_Guid = uint64_t(89);
672 relationship89.m_RelationshipType = ITimelineDecoder::RelationshipType::ExecutionLink;
673 relationship89.m_HeadGuid = uint64_t(48);
674 relationship89.m_TailGuid = uint64_t(88);
675 timelineDecoder.CreateRelationship(relationship89);
676
677 ITimelineDecoder::Relationship relationship90;
678 relationship90.m_Guid = uint64_t(90);
679 relationship90.m_RelationshipType = ITimelineDecoder::RelationshipType::DataLink;
680 relationship90.m_HeadGuid = uint64_t(88);
681 relationship90.m_TailGuid = uint64_t(10812061579584851344U);
682 timelineDecoder.CreateRelationship(relationship90);
683}
684
685BOOST_AUTO_TEST_CASE(JSONTimelineDecoderTestStructure)
686{
687 JSONTimelineDecoder timelineDecoder;
688 RunSimpleModelThroughDecoder(timelineDecoder);
689
690 JSONTimelineDecoder::Model model = timelineDecoder.GetModel();
691 BOOST_CHECK(model.jsonEntities.size() == 20);
692 JSONTimelineDecoder::JSONEntity rootEntity = model.jsonEntities.at(6);
693 BOOST_CHECK(rootEntity.childEntities.size() == 4);
694
695 // Testing input layer model
696 JSONTimelineDecoder::JSONEntity entity0 = model.jsonEntities.at(rootEntity.childEntities[0]);
697 BOOST_CHECK(entity0.GetName() == "input");
698 BOOST_CHECK(entity0.GetType() == "layer");
699
700 BOOST_CHECK(entity0.childEntities.size() == 1);
701 JSONTimelineDecoder::JSONEntity input_workload_entity = model.jsonEntities.at(entity0.childEntities[0]);
702 BOOST_CHECK(input_workload_entity.childEntities.size() == 1);
703 BOOST_CHECK(input_workload_entity.GetType() == "workload");
704 BOOST_CHECK(input_workload_entity.extendedData.at("backendId") == "CpuRef");
705
706 JSONTimelineDecoder::JSONEntity input_workload_execution_entity = model.jsonEntities
707 .at(input_workload_entity.childEntities[0]);
708 BOOST_CHECK(input_workload_execution_entity.childEntities.size() == 2);
709 BOOST_CHECK(input_workload_execution_entity.GetType() == "workload_execution");
710
711 JSONTimelineDecoder::JSONEntity input_workload_execution_event0 = model.jsonEntities
712 .at(input_workload_execution_entity.childEntities[0]);
713 BOOST_CHECK(input_workload_execution_event0.GetType() == "Event");
714 BOOST_CHECK(input_workload_execution_event0.childEntities.size() == 0);
715 BOOST_CHECK(model.events.at(input_workload_execution_event0.GetGuid()).m_ThreadId > uint64_t(0));
716 BOOST_CHECK(model.events.at(input_workload_execution_event0.GetGuid()).m_TimeStamp > uint64_t(0));
717
718 JSONTimelineDecoder::JSONEntity input_workload_execution_event1 = model.jsonEntities
719 .at(input_workload_execution_entity.childEntities[1]);
720 BOOST_CHECK(input_workload_execution_event0.GetType() == "Event");
721 BOOST_CHECK(input_workload_execution_event1.childEntities.size() == 0);
722 BOOST_CHECK(model.events.at(input_workload_execution_event1.GetGuid()).m_ThreadId > uint64_t(0));
723 BOOST_CHECK(model.events.at(input_workload_execution_event1.GetGuid()).m_TimeStamp > uint64_t(0));
724
725 // Testing normalization layer model
726 JSONTimelineDecoder::JSONEntity entity1 = model.jsonEntities.at(rootEntity.childEntities[1]);
727 BOOST_CHECK(entity1.GetName() == "normalization");
728 BOOST_CHECK(entity1.GetType() == "layer");
729
730 JSONTimelineDecoder::JSONEntity normalization_workload_entity = model.jsonEntities
731 .at(entity1.childEntities[0]);
732 BOOST_CHECK(normalization_workload_entity.GetType() == "workload");
733 BOOST_CHECK(normalization_workload_entity.extendedData.at("backendId") == "CpuRef");
734
735 JSONTimelineDecoder::JSONEntity normalization_workload_execution_entity = model.jsonEntities
736 .at(normalization_workload_entity.childEntities[0]);
737 BOOST_CHECK(normalization_workload_execution_entity.GetType() == "workload_execution");
738
739 JSONTimelineDecoder::JSONEntity normalization_workload_execution_event0 = model.jsonEntities
740 .at(normalization_workload_execution_entity.childEntities[0]);
741 BOOST_CHECK(normalization_workload_execution_event0.GetType() == "Event");
742 BOOST_CHECK(model.events.at(normalization_workload_execution_event0.GetGuid()).m_ThreadId > uint64_t(0));
743 BOOST_CHECK(model.events.at(normalization_workload_execution_event0.GetGuid()).m_TimeStamp > uint64_t(0));
744
745 JSONTimelineDecoder::JSONEntity normalization_workload_execution_event1 = model.jsonEntities
746 .at(normalization_workload_execution_entity.childEntities[1]);
747 BOOST_CHECK(normalization_workload_execution_event1.GetType() == "Event");
748 BOOST_CHECK(model.events.at(normalization_workload_execution_event1.GetGuid()).m_ThreadId > uint64_t(0));
749 BOOST_CHECK(model.events.at(normalization_workload_execution_event1.GetGuid()).m_TimeStamp > uint64_t(0));
750
751 // Testing output layer model
752 JSONTimelineDecoder::JSONEntity entity2 = model.jsonEntities.at(rootEntity.childEntities[2]);
753 BOOST_CHECK(entity2.GetName() == "output");
754 BOOST_CHECK(entity2.GetType() == "layer");
755
756 JSONTimelineDecoder::JSONEntity output_workload_entity = model.jsonEntities.at(entity2.childEntities[0]);
757 BOOST_CHECK(output_workload_entity.GetType() == "workload");
758 BOOST_CHECK(output_workload_entity.extendedData.at("backendId") == "CpuRef");
759
760 JSONTimelineDecoder::JSONEntity output_workload_execution_entity = model.jsonEntities
761 .at(output_workload_entity.childEntities[0]);
762 BOOST_CHECK(output_workload_execution_entity.GetType() == "workload_execution");
763
764 JSONTimelineDecoder::JSONEntity output_workload_execution_event0 = model.jsonEntities
765 .at(output_workload_execution_entity.childEntities[0]);
766 BOOST_CHECK(output_workload_execution_event0.GetType() == "Event");
767 BOOST_CHECK(model.events.at(output_workload_execution_event0.GetGuid()).m_ThreadId > uint64_t(0));
768 BOOST_CHECK(model.events.at(output_workload_execution_event0.GetGuid()).m_TimeStamp > uint64_t(0));
769
770 JSONTimelineDecoder::JSONEntity output_workload_execution_event1 = model.jsonEntities
771 .at(output_workload_execution_entity.childEntities[1]);
772 BOOST_CHECK(output_workload_execution_event1.GetType() == "Event");
773 BOOST_CHECK(model.events.at(output_workload_execution_event1.GetGuid()).m_ThreadId > uint64_t(0));
774 BOOST_CHECK(model.events.at(output_workload_execution_event1.GetGuid()).m_TimeStamp > uint64_t(0));
775
776 JSONTimelineDecoder::JSONEntity entity48 = model.jsonEntities.at(rootEntity.childEntities[3]);
777 BOOST_CHECK(entity48.GetName() == "");
778 BOOST_CHECK(entity48.GetType() == "inference");
779}
780
781BOOST_AUTO_TEST_CASE(JSONTimelineDecoderTestJSON)
782{
783 JSONTimelineDecoder timelineDecoder;
784 RunSimpleModelThroughDecoder(timelineDecoder);
785
786 JSONTimelineDecoder::Model model = timelineDecoder.GetModel();
787 JSONTimelineDecoder::JSONEntity rootEntity = model.jsonEntities.at(6);
788
789 std::string jsonString = timelineDecoder.GetJSONString(rootEntity);
790 BOOST_CHECK(jsonString != "");
791 BOOST_CHECK(jsonString.find("input_0: {")!=std::string::npos);
792 BOOST_CHECK(jsonString.find("type: Measurement,\n"
793 "\t\t\tbackendId :CpuRef,")!=std::string::npos);
794 BOOST_CHECK(jsonString.find("normalization_2: {")!=std::string::npos);
795 BOOST_CHECK(jsonString.find("output_4: {")!=std::string::npos);
796
797 timelineDecoder.PrintJSON(rootEntity);
798
799 std::ifstream inFile;
800 inFile.open("/tmp/output.json"); //open the input file
801
802 std::stringstream strStream;
803 strStream << inFile.rdbuf(); //read the file
804 std::string outfileJson = strStream.str();
805
806 BOOST_CHECK(outfileJson != "");
807 BOOST_CHECK(outfileJson.find("input_0: {")!=std::string::npos);
808 BOOST_CHECK(outfileJson.find("type: Measurement,\n"
809 "\t\t\tbackendId :CpuRef,")!=std::string::npos);
810 BOOST_CHECK(outfileJson.find("normalization_2: {")!=std::string::npos);
811 BOOST_CHECK(outfileJson.find("output_4: {")!=std::string::npos);
812}
813BOOST_AUTO_TEST_SUITE_END()