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
16 #include "hiperf_local_test.h"
17
18 #include "test_utilities.h"
19 #include "utilities.h"
20
21 using namespace testing::ext;
22 using namespace std;
23 namespace OHOS {
24 namespace Developtools {
25 namespace HiPerf {
26 class HiperfLocalTest : public testing::Test {
27 public:
28 static void SetUpTestCase(void);
29 static void TearDownTestCase(void);
30 void SetUp();
31 void TearDown();
32 };
33
SetUpTestCase()34 void HiperfLocalTest::SetUpTestCase() {}
35
TearDownTestCase()36 void HiperfLocalTest::TearDownTestCase()
37 {
38 }
39
SetUp()40 void HiperfLocalTest::SetUp() {}
41
TearDown()42 void HiperfLocalTest::TearDown()
43 {
44 }
45
46 HWTEST_F(HiperfLocalTest, RecordWithInvalidTid, TestSize.Level2)
47 {
48 if (IsHM()) {
49 EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().StartProcessStackSampling({}, 100, 5000, false), -1);
50 std::string sampleStack;
51 EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().CollectSampleStackByTid(getpid(), sampleStack), -1);
52 ASSERT_TRUE(sampleStack.size() == 0);
53 EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().FinishProcessStackSampling(), 0);
54 }
55 }
56
57 HWTEST_F(HiperfLocalTest, RecordWithInvalidFreq1, TestSize.Level2)
58 {
59 if (IsHM()) {
60 EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().StartProcessStackSampling({ getpid() }, 2000, 5000, false), -1);
61 std::string sampleStack;
62 EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().CollectSampleStackByTid(getpid(), sampleStack), -1);
63 ASSERT_TRUE(sampleStack.size() == 0);
64 EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().FinishProcessStackSampling(), 0);
65 }
66 }
67
68 HWTEST_F(HiperfLocalTest, RecordWithInvalidFreq2, TestSize.Level2)
69 {
70 if (IsHM()) {
71 EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().StartProcessStackSampling({ getpid() }, -1, 5000, false), -1);
72 std::string sampleStack;
73 EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().CollectSampleStackByTid(getpid(), sampleStack), -1);
74 ASSERT_TRUE(sampleStack.size() == 0);
75 EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().FinishProcessStackSampling(), 0);
76 }
77 }
78
79 HWTEST_F(HiperfLocalTest, RecordWithInvalidTime1, TestSize.Level2)
80 {
81 if (IsHM()) {
82 EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().StartProcessStackSampling({ getpid() }, 100, 20000, false), -1);
83 std::string sampleStack;
84 EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().CollectSampleStackByTid(getpid(), sampleStack), -1);
85 ASSERT_TRUE(sampleStack.size() == 0);
86 EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().FinishProcessStackSampling(), 0);
87 }
88 }
89
90 HWTEST_F(HiperfLocalTest, RecordWithInvalidTime2, TestSize.Level2)
91 {
92 if (IsHM()) {
93 EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().StartProcessStackSampling({ getpid() }, 100, -1, false), -1);
94 std::string sampleStack;
95 EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().CollectSampleStackByTid(getpid(), sampleStack), -1);
96 ASSERT_TRUE(sampleStack.size() == 0);
97 EXPECT_EQ(HiPerfLocal::Lperf::GetInstance().FinishProcessStackSampling(), 0);
98 }
99 }
100 } // namespace HiPerf
101 } // namespace Developtools
102 } // namespace OHOS