@@ -179,23 +179,35 @@ TEST_F(FrameTracerTest, canTraceAfterAddingLayer) {
179179 tracingSession->StopBlocking ();
180180
181181 auto packets = readGraphicsFramePacketsBlocking (tracingSession.get ());
182- EXPECT_EQ (packets.size (), 1 );
183-
184- const auto & packet = packets[0 ];
185- ASSERT_TRUE (packet.has_timestamp ());
186- EXPECT_EQ (packet.timestamp (), timestamp);
187- ASSERT_TRUE (packet.has_graphics_frame_event ());
188- const auto & frame_event = packet.graphics_frame_event ();
189- ASSERT_TRUE (frame_event.has_buffer_event ());
190- const auto & buffer_event = frame_event.buffer_event ();
191- ASSERT_TRUE (buffer_event.has_buffer_id ());
192- EXPECT_EQ (buffer_event.buffer_id (), bufferID);
193- ASSERT_TRUE (buffer_event.has_frame_number ());
194- EXPECT_EQ (buffer_event.frame_number (), frameNumber);
195- ASSERT_TRUE (buffer_event.has_type ());
196- EXPECT_EQ (buffer_event.type (), perfetto::protos::GraphicsFrameEvent_BufferEventType (type));
197- ASSERT_TRUE (buffer_event.has_duration_ns ());
198- EXPECT_EQ (buffer_event.duration_ns (), duration);
182+ ASSERT_EQ (packets.size (), 2 );
183+
184+ const auto & packet1 = packets[0 ];
185+ ASSERT_TRUE (packet1.has_timestamp ());
186+ EXPECT_EQ (packet1.timestamp (), timestamp);
187+ ASSERT_TRUE (packet1.has_graphics_frame_event ());
188+ const auto & frame_event1 = packet1.graphics_frame_event ();
189+ ASSERT_TRUE (frame_event1.has_buffer_event ());
190+ const auto & buffer_event1 = frame_event1.buffer_event ();
191+ ASSERT_TRUE (buffer_event1.has_buffer_id ());
192+ EXPECT_EQ (buffer_event1.buffer_id (), bufferID);
193+ ASSERT_TRUE (buffer_event1.has_frame_number ());
194+ EXPECT_EQ (buffer_event1.frame_number (), frameNumber);
195+ ASSERT_TRUE (buffer_event1.has_type ());
196+ EXPECT_EQ (buffer_event1.type (), perfetto::protos::GraphicsFrameEvent_BufferEventType (type));
197+ ASSERT_TRUE (buffer_event1.has_duration_ns ());
198+ EXPECT_EQ (buffer_event1.duration_ns (), duration);
199+
200+ const auto & packet2 = packets[1 ];
201+ ASSERT_TRUE (packet2.has_timestamp ());
202+ EXPECT_EQ (packet2.timestamp (), 0 );
203+ ASSERT_TRUE (packet2.has_graphics_frame_event ());
204+ const auto & frame_event2 = packet2.graphics_frame_event ();
205+ ASSERT_TRUE (frame_event2.has_buffer_event ());
206+ const auto & buffer_event2 = frame_event2.buffer_event ();
207+ ASSERT_TRUE (buffer_event2.has_type ());
208+ EXPECT_EQ (buffer_event2.type (),
209+ perfetto::protos::GraphicsFrameEvent_BufferEventType (
210+ FrameTracer::FrameEvent::UNSPECIFIED));
199211 }
200212}
201213
@@ -219,7 +231,18 @@ TEST_F(FrameTracerTest, traceFenceTriggersOnNextTraceAfterFenceFired) {
219231 tracingSession->StopBlocking ();
220232
221233 auto packets = readGraphicsFramePacketsBlocking (tracingSession.get ());
222- EXPECT_EQ (packets.size (), 0 );
234+ ASSERT_EQ (packets.size (), 1 );
235+ const auto & packet = packets[0 ];
236+ ASSERT_TRUE (packet.has_timestamp ());
237+ EXPECT_EQ (packet.timestamp (), 0 );
238+ ASSERT_TRUE (packet.has_graphics_frame_event ());
239+ const auto & frame_event = packet.graphics_frame_event ();
240+ ASSERT_TRUE (frame_event.has_buffer_event ());
241+ const auto & buffer_event = frame_event.buffer_event ();
242+ ASSERT_TRUE (buffer_event.has_type ());
243+ EXPECT_EQ (buffer_event.type (),
244+ perfetto::protos::GraphicsFrameEvent_BufferEventType (
245+ FrameTracer::FrameEvent::UNSPECIFIED));
223246 }
224247
225248 {
@@ -235,22 +258,56 @@ TEST_F(FrameTracerTest, traceFenceTriggersOnNextTraceAfterFenceFired) {
235258 tracingSession->StopBlocking ();
236259
237260 auto packets = readGraphicsFramePacketsBlocking (tracingSession.get ());
238- EXPECT_EQ (packets.size (), 2 ); // Two packets because of the extra trace made above.
239-
240- const auto & packet = packets[1 ];
241- ASSERT_TRUE (packet.has_timestamp ());
242- EXPECT_EQ (packet.timestamp (), timestamp);
243- ASSERT_TRUE (packet.has_graphics_frame_event ());
244- const auto & frame_event = packet.graphics_frame_event ();
245- ASSERT_TRUE (frame_event.has_buffer_event ());
246- const auto & buffer_event = frame_event.buffer_event ();
247- ASSERT_TRUE (buffer_event.has_buffer_id ());
248- EXPECT_EQ (buffer_event.buffer_id (), bufferID);
249- ASSERT_TRUE (buffer_event.has_frame_number ());
250- EXPECT_EQ (buffer_event.frame_number (), frameNumber);
251- ASSERT_TRUE (buffer_event.has_type ());
252- EXPECT_EQ (buffer_event.type (), perfetto::protos::GraphicsFrameEvent_BufferEventType (type));
253- EXPECT_FALSE (buffer_event.has_duration_ns ());
261+ ASSERT_EQ (packets.size (), 3 );
262+
263+ const auto & packet1 = packets[0 ];
264+ ASSERT_TRUE (packet1.has_timestamp ());
265+ EXPECT_EQ (packet1.timestamp (), timestamp);
266+ ASSERT_TRUE (packet1.has_graphics_frame_event ());
267+ const auto & frame_event1 = packet1.graphics_frame_event ();
268+ ASSERT_TRUE (frame_event1.has_buffer_event ());
269+ const auto & buffer_event1 = frame_event1.buffer_event ();
270+ ASSERT_TRUE (buffer_event1.has_buffer_id ());
271+ EXPECT_EQ (buffer_event1.buffer_id (), bufferID);
272+ ASSERT_TRUE (buffer_event1.has_frame_number ());
273+ EXPECT_EQ (buffer_event1.frame_number (), frameNumber);
274+ ASSERT_TRUE (buffer_event1.has_type ());
275+ EXPECT_EQ (buffer_event1.type (),
276+ perfetto::protos::GraphicsFrameEvent::BufferEventType (type));
277+ EXPECT_FALSE (buffer_event1.has_duration_ns ());
278+
279+ const auto & packet2 = packets[1 ];
280+ ASSERT_TRUE (packet2.has_timestamp ());
281+ EXPECT_EQ (packet2.timestamp (), timestamp);
282+ ASSERT_TRUE (packet2.has_graphics_frame_event ());
283+ const auto & frame_event2 = packet2.graphics_frame_event ();
284+ ASSERT_TRUE (frame_event2.has_buffer_event ());
285+ const auto & buffer_event2 = frame_event2.buffer_event ();
286+ ASSERT_TRUE (buffer_event2.has_buffer_id ());
287+ EXPECT_EQ (buffer_event2.buffer_id (), bufferID);
288+ ASSERT_TRUE (buffer_event2.has_frame_number ());
289+ EXPECT_EQ (buffer_event2.frame_number (), frameNumber);
290+ ASSERT_TRUE (buffer_event2.has_type ());
291+ EXPECT_EQ (buffer_event2.type (),
292+ perfetto::protos::GraphicsFrameEvent::BufferEventType (type));
293+ EXPECT_FALSE (buffer_event2.has_duration_ns ());
294+
295+ const auto & packet3 = packets[2 ];
296+ ASSERT_TRUE (packet3.has_timestamp ());
297+ EXPECT_EQ (packet3.timestamp (), 0 );
298+ ASSERT_TRUE (packet3.has_graphics_frame_event ());
299+ const auto & frame_event3 = packet3.graphics_frame_event ();
300+ ASSERT_TRUE (frame_event3.has_buffer_event ());
301+ const auto & buffer_event3 = frame_event3.buffer_event ();
302+ ASSERT_TRUE (buffer_event3.has_buffer_id ());
303+ EXPECT_EQ (buffer_event3.buffer_id (), bufferID);
304+ ASSERT_TRUE (buffer_event3.has_frame_number ());
305+ EXPECT_EQ (buffer_event3.frame_number (), 0 );
306+ ASSERT_TRUE (buffer_event3.has_type ());
307+ EXPECT_EQ (buffer_event3.type (),
308+ perfetto::protos::GraphicsFrameEvent::BufferEventType (
309+ FrameTracer::FrameEvent::UNSPECIFIED));
310+ EXPECT_FALSE (buffer_event3.has_duration_ns ());
254311 }
255312}
256313
@@ -285,21 +342,34 @@ TEST_F(FrameTracerTest, traceFenceWithStartTimeAfterSignalTime_ShouldHaveNoDurat
285342 tracingSession->StopBlocking ();
286343
287344 auto packets = readGraphicsFramePacketsBlocking (tracingSession.get ());
288- EXPECT_EQ (packets.size (), 2 );
345+ ASSERT_EQ (packets.size (), 3 );
289346
290347 const auto & packet1 = packets[0 ];
291348 ASSERT_TRUE (packet1.has_timestamp ());
292349 EXPECT_EQ (packet1.timestamp (), signalTime1);
293350 ASSERT_TRUE (packet1.has_graphics_frame_event ());
294351 ASSERT_TRUE (packet1.graphics_frame_event ().has_buffer_event ());
295352 ASSERT_FALSE (packet1.graphics_frame_event ().buffer_event ().has_duration_ns ());
353+ EXPECT_EQ (packet1.graphics_frame_event ().buffer_event ().type (),
354+ perfetto::protos::GraphicsFrameEvent::BufferEventType (type));
296355
297356 const auto & packet2 = packets[1 ];
298357 ASSERT_TRUE (packet2.has_timestamp ());
299358 EXPECT_EQ (packet2.timestamp (), signalTime2);
300359 ASSERT_TRUE (packet2.has_graphics_frame_event ());
301360 ASSERT_TRUE (packet2.graphics_frame_event ().has_buffer_event ());
302361 ASSERT_FALSE (packet2.graphics_frame_event ().buffer_event ().has_duration_ns ());
362+ EXPECT_EQ (packet2.graphics_frame_event ().buffer_event ().type (),
363+ perfetto::protos::GraphicsFrameEvent::BufferEventType (type));
364+
365+ const auto & packet3 = packets[2 ];
366+ ASSERT_TRUE (packet3.has_timestamp ());
367+ EXPECT_EQ (packet3.timestamp (), 0 );
368+ ASSERT_TRUE (packet3.has_graphics_frame_event ());
369+ ASSERT_TRUE (packet3.graphics_frame_event ().has_buffer_event ());
370+ EXPECT_EQ (packet3.graphics_frame_event ().buffer_event ().type (),
371+ perfetto::protos::GraphicsFrameEvent::BufferEventType (
372+ FrameTracer::FrameEvent::UNSPECIFIED));
303373}
304374
305375TEST_F (FrameTracerTest, traceFenceOlderThanDeadline_ShouldBeIgnored) {
@@ -322,7 +392,15 @@ TEST_F(FrameTracerTest, traceFenceOlderThanDeadline_ShouldBeIgnored) {
322392 tracingSession->StopBlocking ();
323393
324394 auto packets = readGraphicsFramePacketsBlocking (tracingSession.get ());
325- EXPECT_EQ (packets.size (), 0 );
395+ ASSERT_EQ (packets.size (), 1 );
396+ const auto & packet = packets[0 ];
397+ ASSERT_TRUE (packet.has_timestamp ());
398+ EXPECT_EQ (packet.timestamp (), 0 );
399+ ASSERT_TRUE (packet.has_graphics_frame_event ());
400+ ASSERT_TRUE (packet.graphics_frame_event ().has_buffer_event ());
401+ EXPECT_EQ (packet.graphics_frame_event ().buffer_event ().type (),
402+ perfetto::protos::GraphicsFrameEvent::BufferEventType (
403+ FrameTracer::FrameEvent::UNSPECIFIED));
326404}
327405
328406TEST_F (FrameTracerTest, traceFenceWithValidStartTime_ShouldHaveCorrectDuration) {
@@ -357,7 +435,7 @@ TEST_F(FrameTracerTest, traceFenceWithValidStartTime_ShouldHaveCorrectDuration)
357435 tracingSession->StopBlocking ();
358436
359437 auto packets = readGraphicsFramePacketsBlocking (tracingSession.get ());
360- EXPECT_EQ (packets.size (), 2 );
438+ ASSERT_EQ (packets.size (), 3 );
361439
362440 const auto & packet1 = packets[0 ];
363441 ASSERT_TRUE (packet1.has_timestamp ());
@@ -367,6 +445,7 @@ TEST_F(FrameTracerTest, traceFenceWithValidStartTime_ShouldHaveCorrectDuration)
367445 ASSERT_TRUE (packet1.graphics_frame_event ().buffer_event ().has_duration_ns ());
368446 const auto & buffer_event1 = packet1.graphics_frame_event ().buffer_event ();
369447 EXPECT_EQ (buffer_event1.duration_ns (), duration);
448+ EXPECT_EQ (buffer_event1.type (), perfetto::protos::GraphicsFrameEvent::BufferEventType (type));
370449
371450 const auto & packet2 = packets[1 ];
372451 ASSERT_TRUE (packet2.has_timestamp ());
@@ -376,6 +455,17 @@ TEST_F(FrameTracerTest, traceFenceWithValidStartTime_ShouldHaveCorrectDuration)
376455 ASSERT_TRUE (packet2.graphics_frame_event ().buffer_event ().has_duration_ns ());
377456 const auto & buffer_event2 = packet2.graphics_frame_event ().buffer_event ();
378457 EXPECT_EQ (buffer_event2.duration_ns (), duration);
458+ EXPECT_EQ (buffer_event2.type (), perfetto::protos::GraphicsFrameEvent::BufferEventType (type));
459+
460+ const auto & packet3 = packets[2 ];
461+ ASSERT_TRUE (packet3.has_timestamp ());
462+ EXPECT_EQ (packet3.timestamp (), 0 );
463+ ASSERT_TRUE (packet3.has_graphics_frame_event ());
464+ ASSERT_TRUE (packet3.graphics_frame_event ().has_buffer_event ());
465+ const auto & buffer_event3 = packet3.graphics_frame_event ().buffer_event ();
466+ EXPECT_EQ (buffer_event3.type (),
467+ perfetto::protos::GraphicsFrameEvent::BufferEventType (
468+ FrameTracer::FrameEvent::UNSPECIFIED));
379469}
380470
381471} // namespace
0 commit comments