• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) Huawei Technologies Co., Ltd. 2023. All rights reserved.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include <gtest/gtest.h>
16 #include <fstream>
17 #include <string>
18 #include <iostream>
19 #include <regex>
20 #include <cmath>
21 #include <unordered_set>
22 #include "stalling_rate_trace.h"
23 #include "sp_log.h"
24 #include "sp_utils.h"
25 
26 using namespace testing::ext;
27 using namespace std;
28 
29 namespace OHOS {
30 namespace SmartPerf {
31 class StallingRateTraceTest : public testing::Test {
32 public:
SetUpTestCase()33     static void SetUpTestCase() {}
TearDownTestCase()34     static void TearDownTestCase() {}
35 
SetUp()36     void SetUp() {}
TearDown()37     void TearDown() {}
38 
39     double nowFrameRate = 0;
40     double nowSwiperFrameRate = 0;
41     double nowTabsFrameRate = 0;
42     double oneThousand = 1000;
43     double roundTime = 0;
44     double roundSwiperTime = 0;
45     double roundTabsTime = 0;
46     int fenceId = 0;
47     int fenceIdSwiper = 0;
48     int fenceIdTabs = 0;
49     double nowTime = 0;
50     double nowSwiperTime = 0;
51     double nowTabsTime = 0;
52     double lastTime = 0;
53     double lastSwiperTime = 0;
54     double lastTabsTime = 0;
55     double frameLossTime = 0;
56     double frameLossRate = 0;
57     double frameLossSwiperTime = 0;
58     double frameLossTabsTime = 0;
59     double swiperFrameLossRate = 0;
60     double appFrameLossRate = 0;
61     double tabsFrameLossRate = 0;
62     double appListDynamicStartTime = 0;
63     double appListDynamicFinishTime = 0;
64     double appTabsDynamicStartTime = 0;
65     double appTabsDynamicFinishTime = 0;
66     double swiperDynamicStartTime = 0;
67     double swiperDynamicFinishTime = 0;
68     bool upperScreenFlag = false;
69     bool upperScreenSwiperFlag = false;
70     bool upperScreenTabsFlag = false;
71     int swiperScrollFlag = 0;
72     int swiperFlingFlag = 0;
73     bool listFlag = false;
74     bool tabsFlag = false;
75     bool swiperFlag = false;
76 };
77 
78 HWTEST_F(StallingRateTraceTest, StallingRateResultTest01, TestSize.Level1)
79 {
80     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
81     std::string file = "non_existent_file.txt";
82     double result = stallingRateTrace.StallingRateResult(file);
83     EXPECT_EQ(result, 0);
84 }
85 
86 HWTEST_F(StallingRateTraceTest, StallingRateResultTest02, TestSize.Level1)
87 {
88     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
89     EXPECT_EQ(stallingRateTrace.CalculateTime(), -1);
90 }
91 
92 HWTEST_F(StallingRateTraceTest, StallingRateResultTest03, TestSize.Level1)
93 {
94     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
95     std::string filename = "test_input.txt";
96     std::ifstream infile(filename);
97     EXPECT_NE(stallingRateTrace.CalculateTime(), 0);
98 }
99 
100 HWTEST_F(StallingRateTraceTest, StallingRateResultTest04, TestSize.Level1)
101 {
102     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
103     std::string filename = "valid_input.txt";
104     std::ifstream infile(filename);
105     double correctValue = -1;
106     EXPECT_EQ(stallingRateTrace.CalculateTime(), correctValue);
107 }
108 
109 HWTEST_F(StallingRateTraceTest, CalcFrameRate01, TestSize.Level1)
110 {
111     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
112     appListDynamicStartTime = 100;
113     appListDynamicFinishTime= 200;
114     frameLossTime = 50;
115     stallingRateTrace.CalcFrameRate();
116     EXPECT_EQ(appFrameLossRate, 0);
117 }
118 
119 HWTEST_F(StallingRateTraceTest, CalcFrameRate02, TestSize.Level1)
120 {
121     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
122     appListDynamicStartTime = 0;
123     appListDynamicFinishTime= 200;
124     stallingRateTrace.CalcFrameRate();
125     EXPECT_EQ(appFrameLossRate, 0);
126 }
127 
128 HWTEST_F(StallingRateTraceTest, CalcFrameRate03, TestSize.Level1)
129 {
130     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
131     appListDynamicStartTime = 100;
132     appListDynamicFinishTime= 200;
133     frameLossSwiperTime = 50;
134     stallingRateTrace.CalcFrameRate();
135     EXPECT_EQ(swiperFrameLossRate, 0);
136 }
137 
138 HWTEST_F(StallingRateTraceTest, CalcFrameRate04, TestSize.Level1)
139 {
140     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
141     appListDynamicStartTime = 0;
142     appListDynamicFinishTime= 200;
143     stallingRateTrace.CalcFrameRate();
144     EXPECT_EQ(swiperFrameLossRate, 0);
145 }
146 
147 HWTEST_F(StallingRateTraceTest, CalcFrameRate05, TestSize.Level1)
148 {
149     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
150     appListDynamicStartTime = 100;
151     appListDynamicFinishTime= 200;
152     frameLossTabsTime = 50;
153     stallingRateTrace.CalcFrameRate();
154     EXPECT_EQ(tabsFrameLossRate, 0);
155 }
156 
157 HWTEST_F(StallingRateTraceTest, CalcFrameRate06, TestSize.Level1)
158 {
159     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
160     appListDynamicStartTime = 0;
161     appListDynamicFinishTime= 200;
162     stallingRateTrace.CalcFrameRate();
163     EXPECT_EQ(tabsFrameLossRate, 0);
164 }
165 
166 HWTEST_F(StallingRateTraceTest, JudgFrameRate01, TestSize.Level1)
167 {
168     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
169     appListDynamicFinishTime= 0;
170     swiperFlag = true;
171     tabsFlag = false;
172     stallingRateTrace.JudgFrameRate();
173     EXPECT_EQ(frameLossRate, swiperFrameLossRate);
174 }
175 
176 HWTEST_F(StallingRateTraceTest, JudgFrameRate02, TestSize.Level1)
177 {
178     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
179     appListDynamicFinishTime= 0;
180     swiperFlag = false;
181     tabsFlag = true;
182     stallingRateTrace.JudgFrameRate();
183     EXPECT_EQ(frameLossRate, tabsFrameLossRate);
184 }
185 
186 HWTEST_F(StallingRateTraceTest, JudgFrameRate03, TestSize.Level1)
187 {
188     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
189     appListDynamicFinishTime= 0;
190     swiperFlag = false;
191     tabsFlag = false;
192     stallingRateTrace.JudgFrameRate();
193     EXPECT_EQ(frameLossRate, 0);
194 }
195 
196 HWTEST_F(StallingRateTraceTest, JudgFrameRate04, TestSize.Level1)
197 {
198     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
199     appListDynamicFinishTime= 1;
200     swiperFlag = false;
201     tabsFlag = false;
202     stallingRateTrace.JudgFrameRate();
203     EXPECT_EQ(frameLossRate, 0);
204 }
205 
206 HWTEST_F(StallingRateTraceTest, AppList01, TestSize.Level1)
207 {
208     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
209     listFlag = false;
210     stallingRateTrace.AppList("test_line", "test_signS", "test_signF");
211     EXPECT_EQ(appListDynamicFinishTime, stallingRateTrace.GetTimes("test_line", "test_signF"));
212     EXPECT_FALSE(listFlag);
213 }
214 
215 HWTEST_F(StallingRateTraceTest, AppList02, TestSize.Level1)
216 {
217     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
218     listFlag = true;
219     stallingRateTrace.AppList("test_line", "test_signS", "test_signF");
220     EXPECT_EQ(appListDynamicFinishTime, stallingRateTrace.GetTimes("test_line", "test_signS"));
221     EXPECT_TRUE(listFlag);
222     EXPECT_EQ(frameLossTime, 0);
223 }
224 
225 HWTEST_F(StallingRateTraceTest, GetFrameLossTime01, TestSize.Level1)
226 {
227     double curTime = 10.0;
228     double prevTime = 5.0;
229     double drawTime = 3.0;
230     double totalFrameLossTime = 0.0;
231     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
232     stallingRateTrace.GetFrameLossTime(curTime, prevTime, drawTime, totalFrameLossTime);
233     EXPECT_EQ(totalFrameLossTime, 2.0);
234 }
235 
236 HWTEST_F(StallingRateTraceTest, GetFrameLossTime02, TestSize.Level1)
237 {
238     double curTime = 5.0;
239     double prevTime = 5.0;
240     double drawTime = 3.0;
241     double totalFrameLossTime = 0.0;
242     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
243     stallingRateTrace.GetFrameLossTime(curTime, prevTime, drawTime, totalFrameLossTime);
244     EXPECT_EQ(totalFrameLossTime, 0.0);
245 }
246 
247 HWTEST_F(StallingRateTraceTest, GetFrameLossTime03, TestSize.Level1)
248 {
249     double curTime = 10.0;
250     double prevTime = 0.0;
251     double drawTime = 3.0;
252     double totalFrameLossTime = 0.0;
253     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
254     stallingRateTrace.GetFrameLossTime(curTime, prevTime, drawTime, totalFrameLossTime);
255     EXPECT_EQ(totalFrameLossTime, 0.0);
256 }
257 
258 HWTEST_F(StallingRateTraceTest, GetRsHardWareRate01, TestSize.Level1)
259 {
260     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
261     double curFrameRate = 10.0;
262     upperScreenFlag = true;
263     std::string line = "H:RSHardwareThread::CommitAndReleaseLayers";
264     OHOS::SmartPerf::StallingRateTrace::SWIM_TYPE type = OHOS::SmartPerf::StallingRateTrace::SWIM_APPLIST;
265     stallingRateTrace.GetRsHardWareRate(curFrameRate, line, type);
266     EXPECT_TRUE(upperScreenFlag);
267 }
268 
269 HWTEST_F(StallingRateTraceTest, GetRsHardWareRate02, TestSize.Level1)
270 {
271     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
272     double curFrameRate = 10.0;
273     upperScreenSwiperFlag = true;
274     std::string line = "H:RSHardwareThread::PerformSetActiveMode setting active mode";
275     OHOS::SmartPerf::StallingRateTrace::SWIM_TYPE type = OHOS::SmartPerf::StallingRateTrace::SWIM_APPSWIPER;
276     stallingRateTrace.GetRsHardWareRate(curFrameRate, line, type);
277     EXPECT_TRUE(upperScreenSwiperFlag);
278 }
279 
280 HWTEST_F(StallingRateTraceTest, GetRsHardWareRate03, TestSize.Level1)
281 {
282     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
283     double curFrameRate = 10.0;
284     upperScreenTabsFlag = true;
285     std::string line = "H:RSHardwareThread::CommitAndReleaseLayers";
286     OHOS::SmartPerf::StallingRateTrace::SWIM_TYPE type = OHOS::SmartPerf::StallingRateTrace::SWIM_APPTABS;
287     stallingRateTrace.GetRsHardWareRate(curFrameRate, line, type);
288     EXPECT_TRUE(upperScreenTabsFlag);
289 }
290 
291 HWTEST_F(StallingRateTraceTest, UpdateRoundTime01, TestSize.Level1)
292 {
293     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
294     stallingRateTrace.UpdateRoundTime(10, OHOS::SmartPerf::StallingRateTrace::SWIM_APPLIST);
295     EXPECT_EQ(roundTime, 0);
296 }
297 
298 HWTEST_F(StallingRateTraceTest, UpdateRoundTime02, TestSize.Level1)
299 {
300     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
301     stallingRateTrace.UpdateRoundTime(10, OHOS::SmartPerf::StallingRateTrace::SWIM_APPSWIPER);
302     EXPECT_EQ(roundTime, 0);
303 }
304 
305 HWTEST_F(StallingRateTraceTest, UpdateRoundTime03, TestSize.Level1)
306 {
307     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
308     stallingRateTrace.UpdateRoundTime(10, OHOS::SmartPerf::StallingRateTrace::SWIM_APPTABS);
309     EXPECT_EQ(roundTime, 0);
310 }
311 
312 HWTEST_F(StallingRateTraceTest, UpdateRoundTime04, TestSize.Level1)
313 {
314     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
315     stallingRateTrace.UpdateRoundTime(0, OHOS::SmartPerf::StallingRateTrace::SWIM_APPLIST);
316     EXPECT_EQ(roundTime, 0);
317 }
318 
319 HWTEST_F(StallingRateTraceTest, AppSwiperScroll01, TestSize.Level1)
320 {
321     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
322     std::string line = "some line";
323     std::string signS = "some signS";
324     std::string signF = "some signF";
325     stallingRateTrace.AppSwiperScroll(line, signS, signF);
326     EXPECT_EQ(swiperScrollFlag, 0);
327     EXPECT_EQ(swiperFlag, false);
328 }
329 
330 HWTEST_F(StallingRateTraceTest, AppSwiperScroll02, TestSize.Level1)
331 {
332     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
333     std::string line = "some line";
334     std::string signS = "some signS";
335     std::string signF = "some signF";
336     swiperScrollFlag = 0;
337     swiperDynamicStartTime = -1;
338     stallingRateTrace.AppSwiperScroll(line, signS, signF);
339     EXPECT_NE(swiperDynamicStartTime, 0);
340 }
341 
342 HWTEST_F(StallingRateTraceTest, AppSwiperScroll03, TestSize.Level1)
343 {
344     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
345     std::string line = "some line";
346     std::string signS = "some signS";
347     std::string signF = "some signF";
348     swiperFlingFlag = 1;
349     swiperDynamicFinishTime = -1;
350     stallingRateTrace.AppSwiperScroll(line, signS, signF);
351     EXPECT_NE(swiperDynamicFinishTime, 0);
352 }
353 
354 HWTEST_F(StallingRateTraceTest, APPTabs01, TestSize.Level1)
355 {
356     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
357     tabsFlag = false;
358     stallingRateTrace.APPTabs("test_line", "test_signS", "test_signF");
359     EXPECT_EQ(appTabsDynamicFinishTime, stallingRateTrace.GetTimes("test_line", "test_signF"));
360     EXPECT_FALSE(tabsFlag);
361 }
362 
363 HWTEST_F(StallingRateTraceTest, APPTabs02, TestSize.Level1)
364 {
365     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
366     tabsFlag = true;
367     stallingRateTrace.APPTabs("test_line", "test_signS", "test_signF");
368     EXPECT_EQ(appTabsDynamicFinishTime, stallingRateTrace.GetTimes("test_line", "test_signS"));
369     EXPECT_TRUE(tabsFlag);
370     EXPECT_EQ(frameLossTabsTime, 0);
371 }
372 
373 HWTEST_F(StallingRateTraceTest, APPTabs03, TestSize.Level1)
374 {
375     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
376     tabsFlag = false;
377     stallingRateTrace.APPTabs("test_line", "test_signS", "test_signF");
378     EXPECT_EQ(appTabsDynamicFinishTime, stallingRateTrace.GetTimes("test_line", "test_signF"));
379     EXPECT_FALSE(tabsFlag);
380 }
381 
382 HWTEST_F(StallingRateTraceTest, GetFrameRate01, TestSize.Level1)
383 {
384     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
385     std::string line = "rate: 60.0";
386     double expectedRate = 60.0;
387     double actualRate = stallingRateTrace.GetFrameRate(line);
388     EXPECT_DOUBLE_EQ(expectedRate, actualRate);
389 }
390 
391 HWTEST_F(StallingRateTraceTest, GetFrameRate02, TestSize.Level1)
392 {
393     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
394     std::string line = "now: 123456";
395     double expectedRate = 0.0;
396     double actualRate = stallingRateTrace.GetFrameRate(line);
397     EXPECT_DOUBLE_EQ(expectedRate, actualRate);
398 }
399 
400 HWTEST_F(StallingRateTraceTest, GetFrameRate03, TestSize.Level1)
401 {
402     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
403     std::string line = "now: 123456, rate: 60.0";
404     double expectedRate = 60.0;
405     double actualRate = stallingRateTrace.GetFrameRate(line);
406     EXPECT_DOUBLE_EQ(expectedRate, actualRate);
407 }
408 
409 HWTEST_F(StallingRateTraceTest, GetFenceId01, TestSize.Level1)
410 {
411     std::string line = "H:Present Fence 12345";
412     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
413     int fenceId = stallingRateTrace.GetFenceId(line);
414     EXPECT_EQ(fenceId, 12345);
415 }
416 
417 HWTEST_F(StallingRateTraceTest, GetFenceId02, TestSize.Level1)
418 {
419     std::string line = "H:Present Fence ";
420     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
421     int fenceId = stallingRateTrace.GetFenceId(line);
422     EXPECT_EQ(fenceId, 0);
423 }
424 
425 HWTEST_F(StallingRateTraceTest, IsAppLaunchPatternMatched01, TestSize.Level1)
426 {
427     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
428     std::string line = "H:LAUNCHER_APP_LAUNCH_FROM_ICON,";
429     EXPECT_TRUE(stallingRateTrace.IsAppLaunchPatternMatched(line));
430 }
431 
432 HWTEST_F(StallingRateTraceTest, IsAppLaunchPatternMatched02, TestSize.Level1)
433 {
434     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
435     std::string line = "H:NOT_A_MATCH";
436     EXPECT_FALSE(stallingRateTrace.IsAppLaunchPatternMatched(line));
437 }
438 
439 HWTEST_F(StallingRateTraceTest, IsAppLaunchPatternMatched03, TestSize.Level1)
440 {
441     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
442     std::string line = "START H:LAUNCHER_APP_LAUNCH_FROM_ICON,";
443     EXPECT_FALSE(stallingRateTrace.IsAppLaunchPatternMatched(line));
444 }
445 
446 HWTEST_F(StallingRateTraceTest, IsAppLaunchPatternMatched04, TestSize.Level1)
447 {
448     OHOS::SmartPerf::StallingRateTrace stallingRateTrace;
449     std::string line = "START H:LAUNCHER_APP_LAUNCH_FROM_ICON";
450     EXPECT_FALSE(stallingRateTrace.IsAppLaunchPatternMatched(line));
451 }
452 
453 }
454 }