1 /* 2 * Copyright (C) 2025 Huawei Device Co., Ltd. 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 <iostream> 17 #include <sstream> 18 #include <thread> 19 #include <chrono> 20 #include "unistd.h" 21 #include "sp_utils.h" 22 #include "ByTrace.h" 23 #include "common.h" 24 25 using namespace testing::ext; 26 using namespace std; 27 28 namespace OHOS { 29 namespace SmartPerf { 30 class ByTraceTest : public testing::Test { 31 public: SetUpTestCase()32 static void SetUpTestCase() {} TearDownTestCase()33 static void TearDownTestCase() {} 34 SetUp()35 void SetUp() {} TearDown()36 void TearDown() {} 37 }; 38 39 HWTEST_F(ByTraceTest, SetByTraceTest01, TestSize.Level1) 40 { 41 ByTrace &byTrace = ByTrace::GetInstance(); 42 byTrace.jittersAndLowFps = ""; 43 byTrace.SetByTrace(); 44 long long jitterTimes = byTrace.GetThreshold(); 45 int lowFps = byTrace.GetLowFps(); 46 EXPECT_EQ(jitterTimes, 0); 47 EXPECT_EQ(lowFps, -1); 48 } 49 50 HWTEST_F(ByTraceTest, SetByTraceTest02, TestSize.Level1) 51 { 52 ByTrace &byTrace = ByTrace::GetInstance(); 53 byTrace.jittersAndLowFps = "fpsJitterTime=100||lowFps=20"; 54 byTrace.SetByTrace(); 55 long long jitterTimes = byTrace.GetThreshold(); 56 int lowFps = byTrace.GetLowFps(); 57 EXPECT_EQ(jitterTimes, 100); 58 EXPECT_EQ(lowFps, 20); 59 } 60 61 HWTEST_F(ByTraceTest, SetByTraceTest03, TestSize.Level1) 62 { 63 ByTrace &byTrace = ByTrace::GetInstance(); 64 byTrace.jittersAndLowFps = "fpsJitterTime=100"; 65 byTrace.SetByTrace(); 66 EXPECT_EQ(byTrace.GetThreshold(), 100); 67 EXPECT_EQ(byTrace.GetLowFps(), 20); 68 } 69 70 HWTEST_F(ByTraceTest, ClearTraceFilesTest, TestSize.Level1) 71 { 72 ByTrace &byTrace = ByTrace::GetInstance(); 73 byTrace.traceCpPath_ = "/data/local/tmp/hitrace"; 74 byTrace.ClearTraceFiles(); 75 EXPECT_FALSE(std::filesystem::exists(byTrace.traceCpPath_)); 76 } 77 78 HWTEST_F(ByTraceTest, RemoveTraceFiles01, TestSize.Level1) 79 { 80 ByTrace &byTrace = ByTrace::GetInstance(); 81 byTrace.traceCpPath_ = "/data/local/tmp/hitrace"; 82 std::filesystem::create_directory(byTrace.traceCpPath_); 83 std::ofstream file(byTrace.traceCpPath_ + "/test_file.txt"); 84 file << "test content"; 85 file.close(); 86 byTrace.RemoveTraceFiles(); 87 EXPECT_FALSE(std::filesystem::exists(byTrace.traceCpPath_ + "/test_file.txt")); 88 } 89 90 HWTEST_F(ByTraceTest, RemoveTraceFiles02, TestSize.Level1) 91 { 92 ByTrace &byTrace = ByTrace::GetInstance(); 93 byTrace.traceCpPath_ = "/data/local/tmp/hitrace"; 94 std::filesystem::remove_all(byTrace.traceCpPath_); 95 byTrace.RemoveTraceFiles(); 96 EXPECT_FALSE(std::filesystem::exists(byTrace.traceCpPath_)); 97 } 98 99 HWTEST_F(ByTraceTest, CheckFpsJittersTest01, TestSize.Level1) 100 { 101 ByTrace &byTrace = ByTrace::GetInstance(); 102 long long jitters = 0; 103 int cfps = 60; 104 byTrace.times = 3; 105 byTrace.lastEnableTime = 1000; 106 byTrace.nowTime = 2000; 107 byTrace.CheckFpsJitters(jitters, cfps); 108 EXPECT_EQ(byTrace.lastEnableTime, 0); 109 } 110 111 HWTEST_F(ByTraceTest, CheckFpsJittersTest02, TestSize.Level1) 112 { 113 ByTrace &byTrace = ByTrace::GetInstance(); 114 long long jitters = 0; 115 int cfps = 60; 116 byTrace.times = 1; 117 byTrace.lastEnableTime = 1000; 118 byTrace.nowTime = 1001; 119 byTrace.CheckFpsJitters(jitters, cfps); 120 EXPECT_EQ(byTrace.lastEnableTime, 1000); 121 } 122 } 123 }