• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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 "xcollie_interface_test.h"
17 
18 #include <gtest/gtest.h>
19 #include <string>
20 
21 #include "xcollie.h"
22 #include "watchdog.h"
23 
24 using namespace testing::ext;
25 
26 namespace OHOS {
27 namespace HiviewDFX {
SetUpTestCase(void)28 void XCollieInterfaceTest::SetUpTestCase(void)
29 {
30 }
31 
TearDownTestCase(void)32 void XCollieInterfaceTest::TearDownTestCase(void)
33 {
34 }
35 
SetUp(void)36 void XCollieInterfaceTest::SetUp(void)
37 {
38 }
39 
TearDown(void)40 void XCollieInterfaceTest::TearDown(void)
41 {
42 }
43 
44 /**
45  * @tc.name: XCollieTimerParamTest
46  * @tc.desc: Verify xcollie timer interface param
47  * @tc.type: FUNC
48  * @tc.require: SR000CPN2F AR000CTAMB
49  * @tc.author: yangjing
50  */
51 HWTEST_F(XCollieInterfaceTest, XCollieTimerParam_001, TestSize.Level1)
52 {
53     /**
54      * @tc.steps: step1. input param name include special string
55      * @tc.expected: step1. set timer successfully;
56      */
57     int id = XCollie::GetInstance().SetTimer("TimeoutTimerxce!@#$%^&*()", 1, nullptr, nullptr, XCOLLIE_FLAG_NOOP);
58     ASSERT_GT(id, 0);
59 
60     /**
61      * @tc.steps: step2. input param name include special string,cancel timer
62      * @tc.expected: step2. update timer successfully;
63      */
64     XCollie::GetInstance().CancelTimer(id);
65 
66     /**
67      * @tc.steps: step3. input param timeout is invalid
68      * @tc.expected: step3. set timer failed;
69      */
70     id = XCollie::GetInstance().SetTimer("XCollieTimerParam_001", 0, nullptr, nullptr, XCOLLIE_FLAG_NOOP);
71     ASSERT_EQ(id, INVALID_ID);
72 
73     /**
74      * @tc.steps: step4. cancelTimer, input param id is invalid
75      * @tc.expected: step4. cancel timer failed;
76      */
77     XCollie::GetInstance().CancelTimer(-1);
78 }
79 
80 /**
81  * @tc.name: XCollieTimerParamTest
82  * @tc.desc: Verify xcollie timer interface param
83  * @tc.type: FUNC
84  * @tc.require: SR000CPN2F AR000CTAMB
85  * @tc.author: yangjing
86  */
87 HWTEST_F(XCollieInterfaceTest, XCollieTimerParam_002, TestSize.Level0)
88 {
89     Watchdog::GetInstance().SetSpecifiedProcessName("foundation");
90     /**
91      * @tc.steps: step5. multiple timer
92      * @tc.expected: step5. cancel timer successfully;
93      */
94     bool flag = false;
__anon574be3160102(void *) 95     XCollieCallback callbackFunc = [&flag](void *) {
96         flag = true;
97     };
98     bool flag1 = false;
__anon574be3160202(void *) 99     XCollieCallback callbackFunc1 = [&flag1](void *) {
100         flag1 = true;
101     };
102     int id = XCollie::GetInstance().SetTimer("XCollieTimerParam_002", 2, callbackFunc, nullptr, XCOLLIE_FLAG_NOOP);
103     ASSERT_GT(id, 0);
104     int id1 = XCollie::GetInstance().SetTimer("XCollieTimerParam_002", 3, callbackFunc1, nullptr, XCOLLIE_FLAG_NOOP);
105     ASSERT_GT(id1, 0);
106     sleep(1);
107     XCollie::GetInstance().CancelTimer(id);
108     sleep(3);
109     ASSERT_EQ(flag, false);
110     ASSERT_EQ(flag1, true);
111 
112     flag = false;
113     flag1 = false;
114     id = XCollie::GetInstance().SetTimer("XCollieTimerParam_002", 2, callbackFunc, nullptr, XCOLLIE_FLAG_NOOP);
115     ASSERT_GT(id, 0);
116     id1 = XCollie::GetInstance().SetTimer("XCollieTimerParam_002", 3, callbackFunc1, nullptr, XCOLLIE_FLAG_NOOP);
117     ASSERT_GT(id1, 0);
118     sleep(1);
119     XCollie::GetInstance().CancelTimer(id1);
120     sleep(3);
121     ASSERT_EQ(flag, true);
122     ASSERT_EQ(flag1, false);
123 }
124 
125 /**
126  * @tc.name: XCollieTimerParamTest
127  * @tc.desc: Verify xcollie timer interface param
128  * @tc.type: FUNC
129  * @tc.require: SR000CPN2F AR000CTAMB
130  * @tc.author: yangjing
131  */
132 HWTEST_F(XCollieInterfaceTest, XCollieTimerParam_003, TestSize.Level1)
133 {
134     /**
135      * @tc.steps: step6. log event
136      * @tc.expected: step6. log event successfully
137      */
138     int id = XCollie::GetInstance().SetTimer("XCollieTimerParam_003", 1, nullptr, nullptr, XCOLLIE_FLAG_LOG);
139     ASSERT_GT(id, 0);
140     sleep(2);
141     XCollie::GetInstance().CancelTimer(id);
142 
143     /**
144      * @tc.steps: step7. callback test
145      * @tc.expected: step7. callback can be executed successfully
146      */
147     bool flag = false;
__anon574be3160302(void *) 148     XCollieCallback callbackFunc = [&flag](void *) {
149         flag = true;
150     };
151     id = XCollie::GetInstance().SetTimer("XCollieTimerParam_003", 1, callbackFunc, nullptr, XCOLLIE_FLAG_LOG);
152     ASSERT_GT(id, 0);
153 
154     int id1 = XCollie::GetInstance().SetTimer("XCollieTimerParam_003", 2, callbackFunc, nullptr, XCOLLIE_FLAG_LOG);
155     ASSERT_GT(id1, 0);
156     sleep(2);
157     XCollie::GetInstance().CancelTimer(id1);
158     ASSERT_EQ(flag, true);
159 
160     /**
161      * @tc.steps: step8. recover test
162      * @tc.expected: step8. recover can be executed successfully
163      */
164     id = XCollie::GetInstance().SetTimer("XCollieTimerParam_003", 2, nullptr, nullptr, XCOLLIE_FLAG_RECOVERY);
165     ASSERT_GT(id, 0);
166     sleep(1);
167 }
168 
169 /**
170  * @tc.name: XCollieTimerParamTest
171  * @tc.desc: Verify xcollie timer interface param
172  * @tc.type: FUNC
173  */
174 HWTEST_F(XCollieInterfaceTest, XCollieTimerParam_004, TestSize.Level1)
175 {
176     bool flag = false;
__anon574be3160402(void *) 177     XCollieCallback callbackFunc = [&flag](void *) {
178         flag = true;
179     };
180     int id = XCollie::GetInstance().SetTimer("XCollieTimerParam_004", 3, callbackFunc, nullptr, XCOLLIE_FLAG_LOG);
181     ASSERT_GT(id, 0);
182     sleep(2);
183     sleep(3);
184     XCollie::GetInstance().CancelTimer(id);
185     ASSERT_EQ(flag, true);
186     flag = false;
187     id = XCollie::GetInstance().SetTimer("XCollieTimerParam_005", 3, callbackFunc, nullptr, XCOLLIE_FLAG_LOG);
188     ASSERT_GT(id, 0);
189     id = XCollie::GetInstance().SetTimer("XCollieTimerParam_006", 3, callbackFunc, nullptr, XCOLLIE_FLAG_LOG);
190     ASSERT_GT(id, 0);
191     XCollie::GetInstance().CancelTimer(0);
192     ASSERT_EQ(flag, false);
193 }
194 
195 /**
196  * @tc.name: XCollieTimerParamTest
197  * @tc.desc: Verify xcollie timer interface param
198  * @tc.type: FUNC
199  */
200 HWTEST_F(XCollieInterfaceTest, XCollieTimerParam_005, TestSize.Level1)
201 {
202     int id = XCollie::GetInstance().SetTimerCount("HIT_EMPTY_WARNING", 2, 3);
203     ASSERT_GT(id, 0);
204     int i = 0;
205     while (i < 3) {
206         XCollie::GetInstance().TriggerTimerCount("HIT_EMPTY_WARNING", true, std::to_string(i));
207         usleep(600 * 1000);
208         i++;
209     }
210     sleep(1);
211 }
212 } // namespace HiviewDFX
213 } // namespace OHOS
214