xref: /aosp_15_r20/external/armnn/src/profiling/test/TimelineUtilityMethodsTests.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker 
6*89c4ff92SAndroid Build Coastguard Worker #include "ProfilingMocks.hpp"
7*89c4ff92SAndroid Build Coastguard Worker #include "ProfilingTestUtils.hpp"
8*89c4ff92SAndroid Build Coastguard Worker 
9*89c4ff92SAndroid Build Coastguard Worker #include <ArmNNProfilingServiceInitialiser.hpp>
10*89c4ff92SAndroid Build Coastguard Worker 
11*89c4ff92SAndroid Build Coastguard Worker #include <armnn/profiling/ArmNNProfiling.hpp>
12*89c4ff92SAndroid Build Coastguard Worker 
13*89c4ff92SAndroid Build Coastguard Worker #include <client/include/TimelineUtilityMethods.hpp>
14*89c4ff92SAndroid Build Coastguard Worker 
15*89c4ff92SAndroid Build Coastguard Worker #include <client/src/SendTimelinePacket.hpp>
16*89c4ff92SAndroid Build Coastguard Worker #include <client/src/ProfilingService.hpp>
17*89c4ff92SAndroid Build Coastguard Worker 
18*89c4ff92SAndroid Build Coastguard Worker #include <common/include/LabelsAndEventClasses.hpp>
19*89c4ff92SAndroid Build Coastguard Worker 
20*89c4ff92SAndroid Build Coastguard Worker #include <memory>
21*89c4ff92SAndroid Build Coastguard Worker 
22*89c4ff92SAndroid Build Coastguard Worker #include <doctest/doctest.h>
23*89c4ff92SAndroid Build Coastguard Worker 
24*89c4ff92SAndroid Build Coastguard Worker using namespace armnn;
25*89c4ff92SAndroid Build Coastguard Worker using namespace arm::pipe;
26*89c4ff92SAndroid Build Coastguard Worker 
27*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("TimelineUtilityMethodsTests")
28*89c4ff92SAndroid Build Coastguard Worker {
29*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("CreateTypedLabelTest")
30*89c4ff92SAndroid Build Coastguard Worker {
31*89c4ff92SAndroid Build Coastguard Worker     MockBufferManager mockBufferManager(1024);
32*89c4ff92SAndroid Build Coastguard Worker     armnn::ArmNNProfilingServiceInitialiser initialiser;
33*89c4ff92SAndroid Build Coastguard Worker     ProfilingService profilingService(arm::pipe::MAX_ARMNN_COUNTER,
34*89c4ff92SAndroid Build Coastguard Worker                                       initialiser,
35*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_SOFTWARE_INFO,
36*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_SOFTWARE_VERSION,
37*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_HARDWARE_VERSION);
38*89c4ff92SAndroid Build Coastguard Worker 
39*89c4ff92SAndroid Build Coastguard Worker     std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = std::make_unique<SendTimelinePacket>(mockBufferManager);
40*89c4ff92SAndroid Build Coastguard Worker     TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket);
41*89c4ff92SAndroid Build Coastguard Worker 
42*89c4ff92SAndroid Build Coastguard Worker     // Generate first guid to ensure that the named typed entity guid is not 0 on local single test.
43*89c4ff92SAndroid Build Coastguard Worker     profilingService.NextGuid();
44*89c4ff92SAndroid Build Coastguard Worker 
45*89c4ff92SAndroid Build Coastguard Worker     ProfilingGuid entityGuid(123);
46*89c4ff92SAndroid Build Coastguard Worker     const std::string entityName = "some entity";
47*89c4ff92SAndroid Build Coastguard Worker     ProfilingStaticGuid labelTypeGuid(456);
48*89c4ff92SAndroid Build Coastguard Worker 
49*89c4ff92SAndroid Build Coastguard Worker     CHECK_NOTHROW(timelineUtilityMethods.MarkEntityWithLabel(entityGuid, entityName, labelTypeGuid));
50*89c4ff92SAndroid Build Coastguard Worker 
51*89c4ff92SAndroid Build Coastguard Worker     // Commit all packets at once
52*89c4ff92SAndroid Build Coastguard Worker     timelineUtilityMethods.Commit();
53*89c4ff92SAndroid Build Coastguard Worker 
54*89c4ff92SAndroid Build Coastguard Worker     // Get the readable buffer
55*89c4ff92SAndroid Build Coastguard Worker     auto readableBuffer = mockBufferManager.GetReadableBuffer();
56*89c4ff92SAndroid Build Coastguard Worker     CHECK(readableBuffer != nullptr);
57*89c4ff92SAndroid Build Coastguard Worker     unsigned int size = readableBuffer->GetSize();
58*89c4ff92SAndroid Build Coastguard Worker     CHECK(size == 76);
59*89c4ff92SAndroid Build Coastguard Worker     const unsigned char* readableData = readableBuffer->GetReadableData();
60*89c4ff92SAndroid Build Coastguard Worker     CHECK(readableData != nullptr);
61*89c4ff92SAndroid Build Coastguard Worker 
62*89c4ff92SAndroid Build Coastguard Worker     // Utils
63*89c4ff92SAndroid Build Coastguard Worker     unsigned int offset = 0;
64*89c4ff92SAndroid Build Coastguard Worker 
65*89c4ff92SAndroid Build Coastguard Worker     // Verify Header
66*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineHeaderBinary(readableData, offset, 68);
67*89c4ff92SAndroid Build Coastguard Worker 
68*89c4ff92SAndroid Build Coastguard Worker     // First dataset sent: TimelineLabelBinaryPacket
69*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(arm::pipe::EmptyOptional(), entityName, readableData, offset);
70*89c4ff92SAndroid Build Coastguard Worker 
71*89c4ff92SAndroid Build Coastguard Worker     // Second dataset sent: TimelineRelationshipBinaryPacket
72*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink,
73*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
74*89c4ff92SAndroid Build Coastguard Worker                                                entityGuid,
75*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
76*89c4ff92SAndroid Build Coastguard Worker                                                labelTypeGuid,
77*89c4ff92SAndroid Build Coastguard Worker                                                readableData,
78*89c4ff92SAndroid Build Coastguard Worker                                                offset);
79*89c4ff92SAndroid Build Coastguard Worker 
80*89c4ff92SAndroid Build Coastguard Worker     // Mark the buffer as read
81*89c4ff92SAndroid Build Coastguard Worker     mockBufferManager.MarkRead(readableBuffer);
82*89c4ff92SAndroid Build Coastguard Worker }
83*89c4ff92SAndroid Build Coastguard Worker 
84*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("SendWellKnownLabelsAndEventClassesTest")
85*89c4ff92SAndroid Build Coastguard Worker {
86*89c4ff92SAndroid Build Coastguard Worker     MockBufferManager mockBufferManager(1024);
87*89c4ff92SAndroid Build Coastguard Worker     armnn::ArmNNProfilingServiceInitialiser initialiser;
88*89c4ff92SAndroid Build Coastguard Worker     ProfilingService profilingService(arm::pipe::MAX_ARMNN_COUNTER,
89*89c4ff92SAndroid Build Coastguard Worker                                       initialiser,
90*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_SOFTWARE_INFO,
91*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_SOFTWARE_VERSION,
92*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_HARDWARE_VERSION);
93*89c4ff92SAndroid Build Coastguard Worker     SendTimelinePacket sendTimelinePacket(mockBufferManager);
94*89c4ff92SAndroid Build Coastguard Worker 
95*89c4ff92SAndroid Build Coastguard Worker     CHECK_NOTHROW(TimelineUtilityMethods::SendWellKnownLabelsAndEventClasses(sendTimelinePacket));
96*89c4ff92SAndroid Build Coastguard Worker 
97*89c4ff92SAndroid Build Coastguard Worker     // Get the readable buffer
98*89c4ff92SAndroid Build Coastguard Worker     auto readableBuffer = mockBufferManager.GetReadableBuffer();
99*89c4ff92SAndroid Build Coastguard Worker     CHECK(readableBuffer != nullptr);
100*89c4ff92SAndroid Build Coastguard Worker     unsigned int size = readableBuffer->GetSize();
101*89c4ff92SAndroid Build Coastguard Worker     CHECK(size == 460);
102*89c4ff92SAndroid Build Coastguard Worker     const unsigned char* readableData = readableBuffer->GetReadableData();
103*89c4ff92SAndroid Build Coastguard Worker     CHECK(readableData != nullptr);
104*89c4ff92SAndroid Build Coastguard Worker 
105*89c4ff92SAndroid Build Coastguard Worker     // Utils
106*89c4ff92SAndroid Build Coastguard Worker     unsigned int offset = 0;
107*89c4ff92SAndroid Build Coastguard Worker 
108*89c4ff92SAndroid Build Coastguard Worker     // Verify Header
109*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineHeaderBinary(readableData, offset, 452);
110*89c4ff92SAndroid Build Coastguard Worker 
111*89c4ff92SAndroid Build Coastguard Worker     // First "well-known" label: NAME
112*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(LabelsAndEventClasses::NAME_GUID,
113*89c4ff92SAndroid Build Coastguard Worker                                         LabelsAndEventClasses::NAME_LABEL,
114*89c4ff92SAndroid Build Coastguard Worker                                         readableData,
115*89c4ff92SAndroid Build Coastguard Worker                                         offset);
116*89c4ff92SAndroid Build Coastguard Worker 
117*89c4ff92SAndroid Build Coastguard Worker     // Second "well-known" label: TYPE
118*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(LabelsAndEventClasses::TYPE_GUID,
119*89c4ff92SAndroid Build Coastguard Worker                                         LabelsAndEventClasses::TYPE_LABEL,
120*89c4ff92SAndroid Build Coastguard Worker                                         readableData,
121*89c4ff92SAndroid Build Coastguard Worker                                         offset);
122*89c4ff92SAndroid Build Coastguard Worker 
123*89c4ff92SAndroid Build Coastguard Worker     // Third "well-known" label: INDEX
124*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(LabelsAndEventClasses::INDEX_GUID,
125*89c4ff92SAndroid Build Coastguard Worker                                         LabelsAndEventClasses::INDEX_LABEL,
126*89c4ff92SAndroid Build Coastguard Worker                                         readableData,
127*89c4ff92SAndroid Build Coastguard Worker                                         offset);
128*89c4ff92SAndroid Build Coastguard Worker 
129*89c4ff92SAndroid Build Coastguard Worker     // Forth "well-known" label: BACKENDID
130*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(LabelsAndEventClasses::BACKENDID_GUID,
131*89c4ff92SAndroid Build Coastguard Worker                                         LabelsAndEventClasses::BACKENDID_LABEL,
132*89c4ff92SAndroid Build Coastguard Worker                                         readableData,
133*89c4ff92SAndroid Build Coastguard Worker                                         offset);
134*89c4ff92SAndroid Build Coastguard Worker 
135*89c4ff92SAndroid Build Coastguard Worker     // Fifth "well-known" label: CHILD
136*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(LabelsAndEventClasses::CHILD_GUID,
137*89c4ff92SAndroid Build Coastguard Worker                                         LabelsAndEventClasses::CHILD_LABEL,
138*89c4ff92SAndroid Build Coastguard Worker                                         readableData,
139*89c4ff92SAndroid Build Coastguard Worker                                         offset);
140*89c4ff92SAndroid Build Coastguard Worker 
141*89c4ff92SAndroid Build Coastguard Worker     // Sixth "well-known" label: EXECUTION_OF
142*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(LabelsAndEventClasses::EXECUTION_OF_GUID,
143*89c4ff92SAndroid Build Coastguard Worker                                         LabelsAndEventClasses::EXECUTION_OF_LABEL,
144*89c4ff92SAndroid Build Coastguard Worker                                         readableData,
145*89c4ff92SAndroid Build Coastguard Worker                                         offset);
146*89c4ff92SAndroid Build Coastguard Worker 
147*89c4ff92SAndroid Build Coastguard Worker     // Seventh "well-known" label: PROCESS_ID_LABEL
148*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(LabelsAndEventClasses::PROCESS_ID_GUID,
149*89c4ff92SAndroid Build Coastguard Worker                                         LabelsAndEventClasses::PROCESS_ID_LABEL,
150*89c4ff92SAndroid Build Coastguard Worker                                         readableData,
151*89c4ff92SAndroid Build Coastguard Worker                                         offset);
152*89c4ff92SAndroid Build Coastguard Worker 
153*89c4ff92SAndroid Build Coastguard Worker     // Well-known types
154*89c4ff92SAndroid Build Coastguard Worker     // Layer
155*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(LabelsAndEventClasses::LAYER_GUID,
156*89c4ff92SAndroid Build Coastguard Worker                                         LabelsAndEventClasses::LAYER,
157*89c4ff92SAndroid Build Coastguard Worker                                         readableData,
158*89c4ff92SAndroid Build Coastguard Worker                                         offset);
159*89c4ff92SAndroid Build Coastguard Worker 
160*89c4ff92SAndroid Build Coastguard Worker     // Workload
161*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(LabelsAndEventClasses::WORKLOAD_GUID,
162*89c4ff92SAndroid Build Coastguard Worker                                         LabelsAndEventClasses::WORKLOAD,
163*89c4ff92SAndroid Build Coastguard Worker                                         readableData,
164*89c4ff92SAndroid Build Coastguard Worker                                         offset);
165*89c4ff92SAndroid Build Coastguard Worker 
166*89c4ff92SAndroid Build Coastguard Worker     // Network
167*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(LabelsAndEventClasses::NETWORK_GUID,
168*89c4ff92SAndroid Build Coastguard Worker                                         LabelsAndEventClasses::NETWORK,
169*89c4ff92SAndroid Build Coastguard Worker                                         readableData,
170*89c4ff92SAndroid Build Coastguard Worker                                         offset);
171*89c4ff92SAndroid Build Coastguard Worker 
172*89c4ff92SAndroid Build Coastguard Worker     // Connection
173*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(LabelsAndEventClasses::CONNECTION_GUID,
174*89c4ff92SAndroid Build Coastguard Worker                                         LabelsAndEventClasses::CONNECTION,
175*89c4ff92SAndroid Build Coastguard Worker                                         readableData,
176*89c4ff92SAndroid Build Coastguard Worker                                         offset);
177*89c4ff92SAndroid Build Coastguard Worker 
178*89c4ff92SAndroid Build Coastguard Worker     // Inference
179*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(LabelsAndEventClasses::INFERENCE_GUID,
180*89c4ff92SAndroid Build Coastguard Worker                                         LabelsAndEventClasses::INFERENCE,
181*89c4ff92SAndroid Build Coastguard Worker                                         readableData,
182*89c4ff92SAndroid Build Coastguard Worker                                         offset);
183*89c4ff92SAndroid Build Coastguard Worker 
184*89c4ff92SAndroid Build Coastguard Worker     // Workload Execution
185*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(LabelsAndEventClasses::WORKLOAD_EXECUTION_GUID,
186*89c4ff92SAndroid Build Coastguard Worker                                         LabelsAndEventClasses::WORKLOAD_EXECUTION,
187*89c4ff92SAndroid Build Coastguard Worker                                         readableData,
188*89c4ff92SAndroid Build Coastguard Worker                                         offset);
189*89c4ff92SAndroid Build Coastguard Worker 
190*89c4ff92SAndroid Build Coastguard Worker     // First "well-known" event class: START OF LIFE
191*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS_NAME_GUID,
192*89c4ff92SAndroid Build Coastguard Worker                                         LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS_NAME,
193*89c4ff92SAndroid Build Coastguard Worker                                         readableData,
194*89c4ff92SAndroid Build Coastguard Worker                                         offset);
195*89c4ff92SAndroid Build Coastguard Worker 
196*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineEventClassBinaryPacketData(LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS,
197*89c4ff92SAndroid Build Coastguard Worker                                              LabelsAndEventClasses::ARMNN_PROFILING_SOL_EVENT_CLASS_NAME_GUID,
198*89c4ff92SAndroid Build Coastguard Worker                                              readableData,
199*89c4ff92SAndroid Build Coastguard Worker                                              offset);
200*89c4ff92SAndroid Build Coastguard Worker 
201*89c4ff92SAndroid Build Coastguard Worker     // Second "well-known" event class: END OF LIFE
202*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS_NAME_GUID,
203*89c4ff92SAndroid Build Coastguard Worker                                         LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS_NAME,
204*89c4ff92SAndroid Build Coastguard Worker                                         readableData,
205*89c4ff92SAndroid Build Coastguard Worker                                         offset);
206*89c4ff92SAndroid Build Coastguard Worker 
207*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineEventClassBinaryPacketData(LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS,
208*89c4ff92SAndroid Build Coastguard Worker                                              LabelsAndEventClasses::ARMNN_PROFILING_EOL_EVENT_CLASS_NAME_GUID,
209*89c4ff92SAndroid Build Coastguard Worker                                              readableData,
210*89c4ff92SAndroid Build Coastguard Worker                                              offset);
211*89c4ff92SAndroid Build Coastguard Worker 
212*89c4ff92SAndroid Build Coastguard Worker     // Mark the buffer as read
213*89c4ff92SAndroid Build Coastguard Worker     mockBufferManager.MarkRead(readableBuffer);
214*89c4ff92SAndroid Build Coastguard Worker }
215*89c4ff92SAndroid Build Coastguard Worker 
216*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("CreateNamedTypedChildEntityTest")
217*89c4ff92SAndroid Build Coastguard Worker {
218*89c4ff92SAndroid Build Coastguard Worker     MockBufferManager mockBufferManager(1024);
219*89c4ff92SAndroid Build Coastguard Worker     armnn::ArmNNProfilingServiceInitialiser initialiser;
220*89c4ff92SAndroid Build Coastguard Worker     ProfilingService profilingService(arm::pipe::MAX_ARMNN_COUNTER,
221*89c4ff92SAndroid Build Coastguard Worker                                       initialiser,
222*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_SOFTWARE_INFO,
223*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_SOFTWARE_VERSION,
224*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_HARDWARE_VERSION);
225*89c4ff92SAndroid Build Coastguard Worker     std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = std::make_unique<SendTimelinePacket>(mockBufferManager);
226*89c4ff92SAndroid Build Coastguard Worker     TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket);
227*89c4ff92SAndroid Build Coastguard Worker 
228*89c4ff92SAndroid Build Coastguard Worker     ProfilingDynamicGuid childEntityGuid(0);
229*89c4ff92SAndroid Build Coastguard Worker     ProfilingGuid parentEntityGuid(123);
230*89c4ff92SAndroid Build Coastguard Worker     const std::string entityName = "some entity";
231*89c4ff92SAndroid Build Coastguard Worker     const std::string entityType = "some type";
232*89c4ff92SAndroid Build Coastguard Worker 
233*89c4ff92SAndroid Build Coastguard Worker     // Generate first guid to ensure that the named typed entity guid is not 0 on local single test.
234*89c4ff92SAndroid Build Coastguard Worker     profilingService.NextGuid();
235*89c4ff92SAndroid Build Coastguard Worker 
236*89c4ff92SAndroid Build Coastguard Worker     CHECK_THROWS_AS(timelineUtilityMethods.CreateNamedTypedChildEntity(parentEntityGuid, "", entityType),
237*89c4ff92SAndroid Build Coastguard Worker                       arm::pipe::InvalidArgumentException);
238*89c4ff92SAndroid Build Coastguard Worker     CHECK_THROWS_AS(timelineUtilityMethods.CreateNamedTypedChildEntity(parentEntityGuid, entityName, ""),
239*89c4ff92SAndroid Build Coastguard Worker                     arm::pipe::InvalidArgumentException);
240*89c4ff92SAndroid Build Coastguard Worker     CHECK_THROWS_AS(timelineUtilityMethods.CreateNamedTypedChildEntity(
241*89c4ff92SAndroid Build Coastguard Worker         childEntityGuid, parentEntityGuid, "", entityType), arm::pipe::InvalidArgumentException);
242*89c4ff92SAndroid Build Coastguard Worker     CHECK_THROWS_AS(timelineUtilityMethods.CreateNamedTypedChildEntity(
243*89c4ff92SAndroid Build Coastguard Worker         childEntityGuid, parentEntityGuid, entityName, ""), arm::pipe::InvalidArgumentException);
244*89c4ff92SAndroid Build Coastguard Worker 
245*89c4ff92SAndroid Build Coastguard Worker     CHECK_NOTHROW(childEntityGuid = timelineUtilityMethods.CreateNamedTypedChildEntity(parentEntityGuid,
246*89c4ff92SAndroid Build Coastguard Worker                                                                                               entityName,
247*89c4ff92SAndroid Build Coastguard Worker                                                                                               entityType));
248*89c4ff92SAndroid Build Coastguard Worker     CHECK(childEntityGuid != ProfilingGuid(0));
249*89c4ff92SAndroid Build Coastguard Worker 
250*89c4ff92SAndroid Build Coastguard Worker     // Commit all packets at onceTimelineUtilityMethodsTests.cpp
251*89c4ff92SAndroid Build Coastguard Worker     timelineUtilityMethods.Commit();
252*89c4ff92SAndroid Build Coastguard Worker 
253*89c4ff92SAndroid Build Coastguard Worker     // Get the readable buffer
254*89c4ff92SAndroid Build Coastguard Worker     auto readableBuffer = mockBufferManager.GetReadableBuffer();
255*89c4ff92SAndroid Build Coastguard Worker     CHECK(readableBuffer != nullptr);
256*89c4ff92SAndroid Build Coastguard Worker     unsigned int size = readableBuffer->GetSize();
257*89c4ff92SAndroid Build Coastguard Worker     CHECK(size == 196);
258*89c4ff92SAndroid Build Coastguard Worker     const unsigned char* readableData = readableBuffer->GetReadableData();
259*89c4ff92SAndroid Build Coastguard Worker     CHECK(readableData != nullptr);
260*89c4ff92SAndroid Build Coastguard Worker 
261*89c4ff92SAndroid Build Coastguard Worker     // Utils
262*89c4ff92SAndroid Build Coastguard Worker     unsigned int offset = 0;
263*89c4ff92SAndroid Build Coastguard Worker 
264*89c4ff92SAndroid Build Coastguard Worker     // Verify Header
265*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineHeaderBinary(readableData, offset, 188);
266*89c4ff92SAndroid Build Coastguard Worker 
267*89c4ff92SAndroid Build Coastguard Worker     // First dataset sent: TimelineEntityBinaryPacket
268*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineEntityBinaryPacketData(arm::pipe::EmptyOptional(), readableData, offset);
269*89c4ff92SAndroid Build Coastguard Worker 
270*89c4ff92SAndroid Build Coastguard Worker     // Second dataset sent: TimelineLabelBinaryPacket
271*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(arm::pipe::EmptyOptional(), entityName, readableData, offset);
272*89c4ff92SAndroid Build Coastguard Worker 
273*89c4ff92SAndroid Build Coastguard Worker     // Third dataset sent: TimelineRelationshipBinaryPacket
274*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink,
275*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
276*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
277*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
278*89c4ff92SAndroid Build Coastguard Worker                                                LabelsAndEventClasses::NAME_GUID,
279*89c4ff92SAndroid Build Coastguard Worker                                                readableData,
280*89c4ff92SAndroid Build Coastguard Worker                                                offset);
281*89c4ff92SAndroid Build Coastguard Worker 
282*89c4ff92SAndroid Build Coastguard Worker     // Fifth dataset sent: TimelineLabelBinaryPacket
283*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(arm::pipe::EmptyOptional(), entityType, readableData, offset);
284*89c4ff92SAndroid Build Coastguard Worker 
285*89c4ff92SAndroid Build Coastguard Worker     // Sixth dataset sent: TimelineRelationshipBinaryPacket
286*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink,
287*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
288*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
289*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
290*89c4ff92SAndroid Build Coastguard Worker                                                LabelsAndEventClasses::TYPE_GUID,
291*89c4ff92SAndroid Build Coastguard Worker                                                readableData,
292*89c4ff92SAndroid Build Coastguard Worker                                                offset);
293*89c4ff92SAndroid Build Coastguard Worker 
294*89c4ff92SAndroid Build Coastguard Worker 
295*89c4ff92SAndroid Build Coastguard Worker     // Eighth dataset sent: TimelineRelationshipBinaryPacket
296*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::RetentionLink,
297*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
298*89c4ff92SAndroid Build Coastguard Worker                                                parentEntityGuid,
299*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
300*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
301*89c4ff92SAndroid Build Coastguard Worker                                                readableData,
302*89c4ff92SAndroid Build Coastguard Worker                                                offset);
303*89c4ff92SAndroid Build Coastguard Worker 
304*89c4ff92SAndroid Build Coastguard Worker     // Mark the buffer as read
305*89c4ff92SAndroid Build Coastguard Worker     mockBufferManager.MarkRead(readableBuffer);
306*89c4ff92SAndroid Build Coastguard Worker }
307*89c4ff92SAndroid Build Coastguard Worker 
308*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("DeclareLabelTest")
309*89c4ff92SAndroid Build Coastguard Worker {
310*89c4ff92SAndroid Build Coastguard Worker     MockBufferManager mockBufferManager(1024);
311*89c4ff92SAndroid Build Coastguard Worker     armnn::ArmNNProfilingServiceInitialiser initialiser;
312*89c4ff92SAndroid Build Coastguard Worker     ProfilingService profilingService(arm::pipe::MAX_ARMNN_COUNTER,
313*89c4ff92SAndroid Build Coastguard Worker                                       initialiser,
314*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_SOFTWARE_INFO,
315*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_SOFTWARE_VERSION,
316*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_HARDWARE_VERSION);
317*89c4ff92SAndroid Build Coastguard Worker     std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = std::make_unique<SendTimelinePacket>(mockBufferManager);
318*89c4ff92SAndroid Build Coastguard Worker     TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket);
319*89c4ff92SAndroid Build Coastguard Worker 
320*89c4ff92SAndroid Build Coastguard Worker     // Generate first guid to ensure that the named typed entity guid is not 0 on local single test.
321*89c4ff92SAndroid Build Coastguard Worker     profilingService.NextGuid();
322*89c4ff92SAndroid Build Coastguard Worker 
323*89c4ff92SAndroid Build Coastguard Worker     // Try declaring an invalid (empty) label
324*89c4ff92SAndroid Build Coastguard Worker     CHECK_THROWS_AS(timelineUtilityMethods.DeclareLabel(""), arm::pipe::InvalidArgumentException);
325*89c4ff92SAndroid Build Coastguard Worker 
326*89c4ff92SAndroid Build Coastguard Worker     // Try declaring an invalid (wrong SWTrace format) label
327*89c4ff92SAndroid Build Coastguard Worker     CHECK_THROWS_AS(timelineUtilityMethods.DeclareLabel("inv@lid lab€l"), arm::pipe::ProfilingException);
328*89c4ff92SAndroid Build Coastguard Worker 
329*89c4ff92SAndroid Build Coastguard Worker     // Declare a valid label
330*89c4ff92SAndroid Build Coastguard Worker     const std::string labelName = "valid label";
331*89c4ff92SAndroid Build Coastguard Worker     ProfilingGuid labelGuid = 0;
332*89c4ff92SAndroid Build Coastguard Worker     CHECK_NOTHROW(labelGuid = timelineUtilityMethods.DeclareLabel(labelName));
333*89c4ff92SAndroid Build Coastguard Worker     CHECK(labelGuid != ProfilingGuid(0));
334*89c4ff92SAndroid Build Coastguard Worker 
335*89c4ff92SAndroid Build Coastguard Worker     // Try adding the same label as before
336*89c4ff92SAndroid Build Coastguard Worker     ProfilingGuid newLabelGuid = 0;
337*89c4ff92SAndroid Build Coastguard Worker     CHECK_NOTHROW(newLabelGuid = timelineUtilityMethods.DeclareLabel(labelName));
338*89c4ff92SAndroid Build Coastguard Worker     CHECK(newLabelGuid != ProfilingGuid(0));
339*89c4ff92SAndroid Build Coastguard Worker     CHECK(newLabelGuid == labelGuid);
340*89c4ff92SAndroid Build Coastguard Worker }
341*89c4ff92SAndroid Build Coastguard Worker 
342*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("CreateNameTypeEntityInvalidTest")
343*89c4ff92SAndroid Build Coastguard Worker {
344*89c4ff92SAndroid Build Coastguard Worker     MockBufferManager mockBufferManager(1024);
345*89c4ff92SAndroid Build Coastguard Worker     armnn::ArmNNProfilingServiceInitialiser initialiser;
346*89c4ff92SAndroid Build Coastguard Worker     ProfilingService profilingService(arm::pipe::MAX_ARMNN_COUNTER,
347*89c4ff92SAndroid Build Coastguard Worker                                       initialiser,
348*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_SOFTWARE_INFO,
349*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_SOFTWARE_VERSION,
350*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_HARDWARE_VERSION);
351*89c4ff92SAndroid Build Coastguard Worker     std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = std::make_unique<SendTimelinePacket>(mockBufferManager);
352*89c4ff92SAndroid Build Coastguard Worker     TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket);
353*89c4ff92SAndroid Build Coastguard Worker 
354*89c4ff92SAndroid Build Coastguard Worker     // Invalid name
355*89c4ff92SAndroid Build Coastguard Worker     CHECK_THROWS_AS(timelineUtilityMethods.CreateNamedTypedEntity("", "Type"), arm::pipe::InvalidArgumentException);
356*89c4ff92SAndroid Build Coastguard Worker 
357*89c4ff92SAndroid Build Coastguard Worker     // Invalid type
358*89c4ff92SAndroid Build Coastguard Worker     CHECK_THROWS_AS(timelineUtilityMethods.CreateNamedTypedEntity("Name", ""), arm::pipe::InvalidArgumentException);
359*89c4ff92SAndroid Build Coastguard Worker 
360*89c4ff92SAndroid Build Coastguard Worker     ProfilingDynamicGuid guid = profilingService.NextGuid();
361*89c4ff92SAndroid Build Coastguard Worker 
362*89c4ff92SAndroid Build Coastguard Worker     // CreatedNamedTypedEntity with Guid - Invalid name
363*89c4ff92SAndroid Build Coastguard Worker     CHECK_THROWS_AS(timelineUtilityMethods.CreateNamedTypedEntity(guid, "", "Type"),
364*89c4ff92SAndroid Build Coastguard Worker                     arm::pipe::InvalidArgumentException);
365*89c4ff92SAndroid Build Coastguard Worker 
366*89c4ff92SAndroid Build Coastguard Worker     // CreatedNamedTypedEntity with Guid - Invalid type
367*89c4ff92SAndroid Build Coastguard Worker     CHECK_THROWS_AS(timelineUtilityMethods.CreateNamedTypedEntity(guid, "Name", ""),
368*89c4ff92SAndroid Build Coastguard Worker                     arm::pipe::InvalidArgumentException);
369*89c4ff92SAndroid Build Coastguard Worker 
370*89c4ff92SAndroid Build Coastguard Worker }
371*89c4ff92SAndroid Build Coastguard Worker 
372*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("CreateNameTypeEntityTest")
373*89c4ff92SAndroid Build Coastguard Worker {
374*89c4ff92SAndroid Build Coastguard Worker     MockBufferManager mockBufferManager(1024);
375*89c4ff92SAndroid Build Coastguard Worker     armnn::ArmNNProfilingServiceInitialiser initialiser;
376*89c4ff92SAndroid Build Coastguard Worker     ProfilingService profilingService(arm::pipe::MAX_ARMNN_COUNTER,
377*89c4ff92SAndroid Build Coastguard Worker                                       initialiser,
378*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_SOFTWARE_INFO,
379*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_SOFTWARE_VERSION,
380*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_HARDWARE_VERSION);
381*89c4ff92SAndroid Build Coastguard Worker     std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = std::make_unique<SendTimelinePacket>(mockBufferManager);
382*89c4ff92SAndroid Build Coastguard Worker     TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket);
383*89c4ff92SAndroid Build Coastguard Worker 
384*89c4ff92SAndroid Build Coastguard Worker     const std::string entityName = "Entity0";
385*89c4ff92SAndroid Build Coastguard Worker     const std::string entityType = "Type0";
386*89c4ff92SAndroid Build Coastguard Worker 
387*89c4ff92SAndroid Build Coastguard Worker     // Generate first guid to ensure that the named typed entity guid is not 0 on local single test.
388*89c4ff92SAndroid Build Coastguard Worker     profilingService.NextGuid();
389*89c4ff92SAndroid Build Coastguard Worker 
390*89c4ff92SAndroid Build Coastguard Worker     ProfilingDynamicGuid guid = timelineUtilityMethods.CreateNamedTypedEntity(entityName, entityType);
391*89c4ff92SAndroid Build Coastguard Worker     CHECK(guid != ProfilingGuid(0));
392*89c4ff92SAndroid Build Coastguard Worker 
393*89c4ff92SAndroid Build Coastguard Worker     // Commit all packets at once
394*89c4ff92SAndroid Build Coastguard Worker     timelineUtilityMethods.Commit();
395*89c4ff92SAndroid Build Coastguard Worker 
396*89c4ff92SAndroid Build Coastguard Worker     // Get the readable buffer
397*89c4ff92SAndroid Build Coastguard Worker     auto readableBuffer = mockBufferManager.GetReadableBuffer();
398*89c4ff92SAndroid Build Coastguard Worker     CHECK(readableBuffer != nullptr);
399*89c4ff92SAndroid Build Coastguard Worker     unsigned int size = readableBuffer->GetSize();
400*89c4ff92SAndroid Build Coastguard Worker     CHECK(size == 148);
401*89c4ff92SAndroid Build Coastguard Worker     const unsigned char* readableData = readableBuffer->GetReadableData();
402*89c4ff92SAndroid Build Coastguard Worker     CHECK(readableData != nullptr);
403*89c4ff92SAndroid Build Coastguard Worker 
404*89c4ff92SAndroid Build Coastguard Worker     // Utils
405*89c4ff92SAndroid Build Coastguard Worker     unsigned int offset = 0;
406*89c4ff92SAndroid Build Coastguard Worker 
407*89c4ff92SAndroid Build Coastguard Worker     // Verify Header
408*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineHeaderBinary(readableData, offset, 140);
409*89c4ff92SAndroid Build Coastguard Worker 
410*89c4ff92SAndroid Build Coastguard Worker     // First dataset sent: TimelineEntityBinaryPacket
411*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineEntityBinaryPacketData(guid, readableData, offset);
412*89c4ff92SAndroid Build Coastguard Worker 
413*89c4ff92SAndroid Build Coastguard Worker     // Packets for Name Entity
414*89c4ff92SAndroid Build Coastguard Worker     // First dataset sent: TimelineLabelBinaryPacket
415*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(arm::pipe::EmptyOptional(), entityName, readableData, offset);
416*89c4ff92SAndroid Build Coastguard Worker 
417*89c4ff92SAndroid Build Coastguard Worker     // Second dataset sent: TimelineRelationshipBinaryPacket
418*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink,
419*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
420*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
421*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
422*89c4ff92SAndroid Build Coastguard Worker                                                LabelsAndEventClasses::NAME_GUID,
423*89c4ff92SAndroid Build Coastguard Worker                                                readableData,
424*89c4ff92SAndroid Build Coastguard Worker                                                offset);
425*89c4ff92SAndroid Build Coastguard Worker 
426*89c4ff92SAndroid Build Coastguard Worker     // Packets for Type Entity
427*89c4ff92SAndroid Build Coastguard Worker     // First dataset sent: TimelineLabelBinaryPacket
428*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineLabelBinaryPacketData(arm::pipe::EmptyOptional(), entityType, readableData, offset);
429*89c4ff92SAndroid Build Coastguard Worker 
430*89c4ff92SAndroid Build Coastguard Worker     // Second dataset sent: TimelineRelationshipBinaryPacket
431*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::LabelLink,
432*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
433*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
434*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
435*89c4ff92SAndroid Build Coastguard Worker                                                LabelsAndEventClasses::TYPE_GUID,
436*89c4ff92SAndroid Build Coastguard Worker                                                readableData,
437*89c4ff92SAndroid Build Coastguard Worker                                                offset);
438*89c4ff92SAndroid Build Coastguard Worker 
439*89c4ff92SAndroid Build Coastguard Worker 
440*89c4ff92SAndroid Build Coastguard Worker     // Mark the buffer as read
441*89c4ff92SAndroid Build Coastguard Worker     mockBufferManager.MarkRead(readableBuffer);
442*89c4ff92SAndroid Build Coastguard Worker }
443*89c4ff92SAndroid Build Coastguard Worker 
444*89c4ff92SAndroid Build Coastguard Worker TEST_CASE("RecordEventTest")
445*89c4ff92SAndroid Build Coastguard Worker {
446*89c4ff92SAndroid Build Coastguard Worker     MockBufferManager mockBufferManager(1024);
447*89c4ff92SAndroid Build Coastguard Worker     armnn::ArmNNProfilingServiceInitialiser initialiser;
448*89c4ff92SAndroid Build Coastguard Worker     ProfilingService profilingService(arm::pipe::MAX_ARMNN_COUNTER,
449*89c4ff92SAndroid Build Coastguard Worker                                       initialiser,
450*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_SOFTWARE_INFO,
451*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_SOFTWARE_VERSION,
452*89c4ff92SAndroid Build Coastguard Worker                                       arm::pipe::ARMNN_HARDWARE_VERSION);
453*89c4ff92SAndroid Build Coastguard Worker     std::unique_ptr<ISendTimelinePacket> sendTimelinePacket = std::make_unique<SendTimelinePacket>(mockBufferManager);
454*89c4ff92SAndroid Build Coastguard Worker     TimelineUtilityMethods timelineUtilityMethods(sendTimelinePacket);
455*89c4ff92SAndroid Build Coastguard Worker     // Generate first guid to ensure that the named typed entity guid is not 0 on local single test.
456*89c4ff92SAndroid Build Coastguard Worker     profilingService.NextGuid();
457*89c4ff92SAndroid Build Coastguard Worker 
458*89c4ff92SAndroid Build Coastguard Worker     ProfilingGuid entityGuid(123);
459*89c4ff92SAndroid Build Coastguard Worker     ProfilingStaticGuid eventClassGuid(456);
460*89c4ff92SAndroid Build Coastguard Worker     ProfilingDynamicGuid eventGuid(0);
461*89c4ff92SAndroid Build Coastguard Worker     CHECK_NOTHROW(eventGuid = timelineUtilityMethods.RecordEvent(entityGuid, eventClassGuid));
462*89c4ff92SAndroid Build Coastguard Worker     CHECK(eventGuid != ProfilingGuid(0));
463*89c4ff92SAndroid Build Coastguard Worker 
464*89c4ff92SAndroid Build Coastguard Worker     // Commit all packets at once
465*89c4ff92SAndroid Build Coastguard Worker     timelineUtilityMethods.Commit();
466*89c4ff92SAndroid Build Coastguard Worker 
467*89c4ff92SAndroid Build Coastguard Worker     // Get the readable buffer
468*89c4ff92SAndroid Build Coastguard Worker     auto readableBuffer = mockBufferManager.GetReadableBuffer();
469*89c4ff92SAndroid Build Coastguard Worker     CHECK(readableBuffer != nullptr);
470*89c4ff92SAndroid Build Coastguard Worker     unsigned int size = readableBuffer->GetSize();
471*89c4ff92SAndroid Build Coastguard Worker 
472*89c4ff92SAndroid Build Coastguard Worker     CHECK(size == 68 + ThreadIdSize);
473*89c4ff92SAndroid Build Coastguard Worker 
474*89c4ff92SAndroid Build Coastguard Worker     const unsigned char* readableData = readableBuffer->GetReadableData();
475*89c4ff92SAndroid Build Coastguard Worker     CHECK(readableData != nullptr);
476*89c4ff92SAndroid Build Coastguard Worker 
477*89c4ff92SAndroid Build Coastguard Worker     // Utils
478*89c4ff92SAndroid Build Coastguard Worker     unsigned int offset = 0;
479*89c4ff92SAndroid Build Coastguard Worker 
480*89c4ff92SAndroid Build Coastguard Worker     // Verify Header
481*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineHeaderBinary(readableData, offset, 60 + ThreadIdSize);
482*89c4ff92SAndroid Build Coastguard Worker 
483*89c4ff92SAndroid Build Coastguard Worker     // First dataset sent: TimelineEntityBinaryPacket
484*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineEventBinaryPacket(
485*89c4ff92SAndroid Build Coastguard Worker         arm::pipe::EmptyOptional(), arm::pipe::EmptyOptional(), arm::pipe::EmptyOptional(), readableData, offset);
486*89c4ff92SAndroid Build Coastguard Worker 
487*89c4ff92SAndroid Build Coastguard Worker     // Second dataset sent: TimelineRelationshipBinaryPacket
488*89c4ff92SAndroid Build Coastguard Worker     VerifyTimelineRelationshipBinaryPacketData(ProfilingRelationshipType::ExecutionLink,
489*89c4ff92SAndroid Build Coastguard Worker                                                arm::pipe::EmptyOptional(),
490*89c4ff92SAndroid Build Coastguard Worker                                                entityGuid,
491*89c4ff92SAndroid Build Coastguard Worker                                                eventGuid,
492*89c4ff92SAndroid Build Coastguard Worker                                                eventClassGuid,
493*89c4ff92SAndroid Build Coastguard Worker                                                readableData,
494*89c4ff92SAndroid Build Coastguard Worker                                                offset);
495*89c4ff92SAndroid Build Coastguard Worker 
496*89c4ff92SAndroid Build Coastguard Worker     // Mark the buffer as read
497*89c4ff92SAndroid Build Coastguard Worker     mockBufferManager.MarkRead(readableBuffer);
498*89c4ff92SAndroid Build Coastguard Worker }
499*89c4ff92SAndroid Build Coastguard Worker 
500*89c4ff92SAndroid Build Coastguard Worker }
501