22TEST(FrameTimingsRecorderTest, RecordVsync) {
23 auto recorder = std::make_unique<FrameTimingsRecorder>();
26 recorder->RecordVsync(st, en);
28 ASSERT_EQ(st, recorder->GetVsyncStartTime());
29 ASSERT_EQ(en, recorder->GetVsyncTargetTime());
32TEST(FrameTimingsRecorderTest, RecordBuildTimes) {
33 auto recorder = std::make_unique<FrameTimingsRecorder>();
37 recorder->RecordVsync(st, en);
41 recorder->RecordBuildStart(build_start);
42 recorder->RecordBuildEnd(build_end);
44 ASSERT_EQ(build_start, recorder->GetBuildStartTime());
45 ASSERT_EQ(build_end, recorder->GetBuildEndTime());
48TEST(FrameTimingsRecorderTest, RecordRasterTimes) {
49 auto recorder = std::make_unique<FrameTimingsRecorder>();
53 recorder->RecordVsync(st, en);
57 recorder->RecordBuildStart(build_start);
58 recorder->RecordBuildEnd(build_end);
60 using namespace std::chrono_literals;
63 recorder->RecordRasterStart(raster_start);
65 std::this_thread::sleep_for(1ms);
66 const auto timing = recorder->RecordRasterEnd();
67 std::this_thread::sleep_for(1ms);
70 ASSERT_EQ(raster_start, recorder->GetRasterStartTime());
71 ASSERT_GT(recorder->GetRasterEndWallTime(), before_raster_end_wall_time);
72 ASSERT_LT(recorder->GetRasterEndWallTime(), after_raster_end_wall_time);
73 ASSERT_EQ(recorder->GetFrameNumber(), timing.GetFrameNumber());
74 ASSERT_EQ(recorder->GetLayerCacheCount(), 0u);
75 ASSERT_EQ(recorder->GetLayerCacheBytes(), 0u);
76 ASSERT_EQ(recorder->GetPictureCacheCount(), 0u);
77 ASSERT_EQ(recorder->GetPictureCacheBytes(), 0u);
80TEST(FrameTimingsRecorderTest, RecordRasterTimesWithCache) {
81 auto recorder = std::make_unique<FrameTimingsRecorder>();
85 recorder->RecordVsync(st, en);
89 recorder->RecordBuildStart(build_start);
90 recorder->RecordBuildEnd(build_end);
92 using namespace std::chrono_literals;
98 recorder->RecordRasterStart(raster_start);
102 EXPECT_GT(layer_bytes, 0u);
105 EXPECT_GT(picture_bytes, 0u);
111 std::this_thread::sleep_for(1ms);
112 const auto timing = recorder->RecordRasterEnd(&cache);
113 std::this_thread::sleep_for(1ms);
116 ASSERT_EQ(raster_start, recorder->GetRasterStartTime());
117 ASSERT_GT(recorder->GetRasterEndWallTime(), before_raster_end_wall_time);
118 ASSERT_LT(recorder->GetRasterEndWallTime(), after_raster_end_wall_time);
119 ASSERT_EQ(recorder->GetFrameNumber(), timing.GetFrameNumber());
120 ASSERT_EQ(recorder->GetLayerCacheCount(), 1u);
121 ASSERT_EQ(recorder->GetLayerCacheBytes(), layer_bytes);
122 ASSERT_EQ(recorder->GetPictureCacheCount(), 1u);
123 ASSERT_EQ(recorder->GetPictureCacheBytes(), picture_bytes);
154TEST(FrameTimingsRecorderTest, RecordersHaveUniqueFrameNumbers) {
155 auto recorder1 = std::make_unique<FrameTimingsRecorder>();
156 auto recorder2 = std::make_unique<FrameTimingsRecorder>();
158 ASSERT_TRUE(recorder2->GetFrameNumber() > recorder1->GetFrameNumber());
169TEST(FrameTimingsRecorderTest, ClonedHasSameVsyncStartAndTarget) {
170 auto recorder = std::make_unique<FrameTimingsRecorder>();
176 ASSERT_EQ(recorder->GetFrameNumber(), cloned->GetFrameNumber());
177 ASSERT_EQ(recorder->GetVsyncStartTime(), cloned->GetVsyncStartTime());
178 ASSERT_EQ(recorder->GetVsyncTargetTime(), cloned->GetVsyncTargetTime());
181TEST(FrameTimingsRecorderTest, ClonedHasSameBuildStart) {
182 auto recorder = std::make_unique<FrameTimingsRecorder>();
189 ASSERT_EQ(recorder->GetFrameNumber(), cloned->GetFrameNumber());
190 ASSERT_EQ(recorder->GetVsyncStartTime(), cloned->GetVsyncStartTime());
191 ASSERT_EQ(recorder->GetVsyncTargetTime(), cloned->GetVsyncTargetTime());
192 ASSERT_EQ(recorder->GetBuildStartTime(), cloned->GetBuildStartTime());
195TEST(FrameTimingsRecorderTest, ClonedHasSameBuildEnd) {
196 auto recorder = std::make_unique<FrameTimingsRecorder>();
204 ASSERT_EQ(recorder->GetFrameNumber(), cloned->GetFrameNumber());
205 ASSERT_EQ(recorder->GetVsyncStartTime(), cloned->GetVsyncStartTime());
206 ASSERT_EQ(recorder->GetVsyncTargetTime(), cloned->GetVsyncTargetTime());
207 ASSERT_EQ(recorder->GetBuildStartTime(), cloned->GetBuildStartTime());
208 ASSERT_EQ(recorder->GetBuildEndTime(), cloned->GetBuildEndTime());
211TEST(FrameTimingsRecorderTest, ClonedHasSameRasterStart) {
212 auto recorder = std::make_unique<FrameTimingsRecorder>();
221 ASSERT_EQ(recorder->GetFrameNumber(), cloned->GetFrameNumber());
222 ASSERT_EQ(recorder->GetVsyncStartTime(), cloned->GetVsyncStartTime());
223 ASSERT_EQ(recorder->GetVsyncTargetTime(), cloned->GetVsyncTargetTime());
224 ASSERT_EQ(recorder->GetBuildStartTime(), cloned->GetBuildStartTime());
225 ASSERT_EQ(recorder->GetBuildEndTime(), cloned->GetBuildEndTime());
226 ASSERT_EQ(recorder->GetRasterStartTime(), cloned->GetRasterStartTime());
229TEST(FrameTimingsRecorderTest, ClonedHasSameRasterEnd) {
230 auto recorder = std::make_unique<FrameTimingsRecorder>();
237 recorder->RecordRasterEnd();
240 ASSERT_EQ(recorder->GetFrameNumber(), cloned->GetFrameNumber());
241 ASSERT_EQ(recorder->GetVsyncStartTime(), cloned->GetVsyncStartTime());
242 ASSERT_EQ(recorder->GetVsyncTargetTime(), cloned->GetVsyncTargetTime());
243 ASSERT_EQ(recorder->GetBuildStartTime(), cloned->GetBuildStartTime());
244 ASSERT_EQ(recorder->GetBuildEndTime(), cloned->GetBuildEndTime());
245 ASSERT_EQ(recorder->GetRasterStartTime(), cloned->GetRasterStartTime());
246 ASSERT_EQ(recorder->GetRasterEndTime(), cloned->GetRasterEndTime());
247 ASSERT_EQ(recorder->GetRasterEndWallTime(), cloned->GetRasterEndWallTime());
248 ASSERT_EQ(recorder->GetLayerCacheCount(), cloned->GetLayerCacheCount());
249 ASSERT_EQ(recorder->GetLayerCacheBytes(), cloned->GetLayerCacheBytes());
250 ASSERT_EQ(recorder->GetPictureCacheCount(), cloned->GetPictureCacheCount());
251 ASSERT_EQ(recorder->GetPictureCacheBytes(), cloned->GetPictureCacheBytes());
254TEST(FrameTimingsRecorderTest, ClonedHasSameRasterEndWithCache) {
255 auto recorder = std::make_unique<FrameTimingsRecorder>();
267 EXPECT_GT(layer_bytes, 0u);
270 EXPECT_GT(picture_bytes, 0u);
273 recorder->RecordRasterEnd(&cache);
276 ASSERT_EQ(recorder->GetFrameNumber(), cloned->GetFrameNumber());
277 ASSERT_EQ(recorder->GetVsyncStartTime(), cloned->GetVsyncStartTime());
278 ASSERT_EQ(recorder->GetVsyncTargetTime(), cloned->GetVsyncTargetTime());
279 ASSERT_EQ(recorder->GetBuildStartTime(), cloned->GetBuildStartTime());
280 ASSERT_EQ(recorder->GetBuildEndTime(), cloned->GetBuildEndTime());
281 ASSERT_EQ(recorder->GetRasterStartTime(), cloned->GetRasterStartTime());
282 ASSERT_EQ(recorder->GetRasterEndTime(), cloned->GetRasterEndTime());
283 ASSERT_EQ(recorder->GetRasterEndWallTime(), cloned->GetRasterEndWallTime());
284 ASSERT_EQ(recorder->GetLayerCacheCount(), cloned->GetLayerCacheCount());
285 ASSERT_EQ(recorder->GetLayerCacheBytes(), cloned->GetLayerCacheBytes());
286 ASSERT_EQ(recorder->GetPictureCacheCount(), cloned->GetPictureCacheCount());
287 ASSERT_EQ(recorder->GetPictureCacheBytes(), cloned->GetPictureCacheBytes());
290TEST(FrameTimingsRecorderTest, FrameNumberTraceArgIsValid) {
291 auto recorder = std::make_unique<FrameTimingsRecorder>();
293 std::string actual_arg =
294 std::format(
"{}",
static_cast<int>(recorder->GetFrameNumber()));
295 std::string expected_arg = recorder->GetFrameNumberTraceArg();
297 ASSERT_EQ(actual_arg, expected_arg);