1 /*
2 * Copyright (c) 2023-2024 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 "hisysevent_delay_test.h"
17
18 #include <gtest/gtest.h>
19
20 #include <iosfwd>
21 #include <string>
22 #include <thread>
23 #include <unistd.h>
24 #include <vector>
25
26 #include "gtest/gtest-message.h"
27 #include "gtest/gtest-test-part.h"
28 #include "gtest/hwext/gtest-ext.h"
29 #include "gtest/hwext/gtest-tag.h"
30
31 #include "hisysevent.h"
32 #include "string_ex.h"
33 #include "string_util.h"
34
35 using namespace testing::ext;
36 using namespace OHOS;
37 using namespace OHOS::HiviewDFX;
38
39 namespace {
40 constexpr int WROTE_TOTAL_CNT = 30;
41
WriteStringWithLength(const std::string testCaseName,const std::string testCaseDescription,int cnt)42 void WriteStringWithLength(const std::string testCaseName, const std::string testCaseDescription, int cnt)
43 {
44 string param;
45 param.append(cnt, 'a');
46 std::vector<int> wroteRet;
47 int ret = SUCCESS;
48 for (int i = 0; i < WROTE_TOTAL_CNT; ++i) {
49 ret = HiSysEventWrite(HiSysEvent::Domain::AAFWK, "LIFECYCLE_TIMEOUT", HiSysEvent::EventType::FAULT, "key",
50 param);
51 wroteRet.emplace_back(ret);
52 }
53 ASSERT_EQ(wroteRet.size(), WROTE_TOTAL_CNT);
54 ASSERT_EQ(std::count(wroteRet.begin(), wroteRet.end(), SUCCESS), WROTE_TOTAL_CNT);
55 }
56
57 template<typename T>
WriteSingleValue(const std::string testCaseName,const std::string testCaseDescription,T val)58 void WriteSingleValue(const std::string testCaseName, const std::string testCaseDescription, T val)
59 {
60 std::vector<int> wroteRet;
61 int ret = SUCCESS;
62 for (int i = 0; i < WROTE_TOTAL_CNT; ++i) {
63 ret = HiSysEventWrite(HiSysEvent::Domain::AAFWK, "LIFECYCLE_TIMEOUT", HiSysEvent::EventType::FAULT, "key",
64 val);
65 wroteRet.emplace_back(ret);
66 }
67 ASSERT_EQ(wroteRet.size(), WROTE_TOTAL_CNT);
68 ASSERT_EQ(std::count(wroteRet.begin(), wroteRet.end(), SUCCESS), WROTE_TOTAL_CNT);
69 }
70 }
71
SetUpTestCase(void)72 void HiSysEventDelayTest::SetUpTestCase(void)
73 {
74 }
75
TearDownTestCase(void)76 void HiSysEventDelayTest::TearDownTestCase(void)
77 {
78 }
79
SetUp(void)80 void HiSysEventDelayTest::SetUp(void)
81 {
82 }
83
TearDown(void)84 void HiSysEventDelayTest::TearDown(void)
85 {
86 }
87
88 /**
89 * @tc.name: HiSysEventDelayTest001
90 * @tc.desc: Write a sysevent without any parameter
91 * @tc.type: FUNC
92 * @tc.require: issueI76V6J
93 */
94 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest001, TestSize.Level1)
95 {
96 std::vector<int> wroteRet;
97 int ret = SUCCESS;
98 for (int i = 0; i < WROTE_TOTAL_CNT; ++i) {
99 ret = HiSysEventWrite(HiSysEvent::Domain::AAFWK, "LIFECYCLE_TIMEOUT", HiSysEvent::EventType::FAULT);
100 wroteRet.emplace_back(ret);
101 }
102 ASSERT_EQ(wroteRet.size(), WROTE_TOTAL_CNT);
103 ASSERT_EQ(std::count(wroteRet.begin(), wroteRet.end(), SUCCESS), WROTE_TOTAL_CNT);
104 }
105
106 /**
107 * @tc.name: HiSysEventDelayTest002
108 * @tc.desc: Write sysevent with a bool parameter
109 * @tc.type: FUNC
110 * @tc.require: issueI76V6J
111 */
112 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest002, TestSize.Level1)
113 {
114 bool value = true;
115 WriteSingleValue("HiSysEventDelayTest002", "Write sysevent with a bool parameter", value);
116 }
117
118 /**
119 * @tc.name: HiSysEventDelayTest003
120 * @tc.desc: Write sysevent with a char parameter
121 * @tc.type: FUNC
122 * @tc.require: issueI76V6J
123 */
124 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest003, TestSize.Level1)
125 {
126 char value = 'a';
127 WriteSingleValue("HiSysEventDelayTest003", "Write sysevent with a char parameter", value);
128 }
129
130 /**
131 * @tc.name: HiSysEventDelayTest004
132 * @tc.desc: Write sysevent with a double parameter
133 * @tc.type: FUNC
134 * @tc.require: issueI76V6J
135 */
136 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest004, TestSize.Level1)
137 {
138 double value = 30949.374;
139 WriteSingleValue("HiSysEventDelayTest004", "Write sysevent with a double parameter", value);
140 }
141
142 /**
143 * @tc.name: HiSysEventDelayTest005
144 * @tc.desc: Write sysevent with a float parameter
145 * @tc.type: FUNC
146 * @tc.require: issueI76V6J
147 */
148 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest005, TestSize.Level1)
149 {
150 float value = 230.47;
151 WriteSingleValue("HiSysEventDelayTest005", "Write sysevent with a float parameter", value);
152 }
153
154 /**
155 * @tc.name: HiSysEventDelayTest006
156 * @tc.desc: Write sysevent with a integer parameter
157 * @tc.type: FUNC
158 * @tc.require: issueI76V6J
159 */
160 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest006, TestSize.Level1)
161 {
162 int value = 100;
163 WriteSingleValue("HiSysEventDelayTest006", "Write sysevent with a integer parameter", value);
164 }
165
166 /**
167 * @tc.name: HiSysEventDelayTest007
168 * @tc.desc: Write sysevent with a long parameter
169 * @tc.type: FUNC
170 * @tc.require: issueI76V6J
171 */
172 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest007, TestSize.Level1)
173 {
174 long value = 1000000;
175 WriteSingleValue("HiSysEventDelayTest007", "Write sysevent with a long parameter", value);
176 }
177
178 /**
179 * @tc.name: HiSysEventDelayTest008
180 * @tc.desc: Write sysevent with a short parameter
181 * @tc.type: FUNC
182 * @tc.require: issueI76V6J
183 */
184 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest008, TestSize.Level1)
185 {
186 short value = 10;
187 WriteSingleValue("HiSysEventDelayTest008", "Write sysevent with a short parameter", value);
188 }
189
190 /**
191 * @tc.name: HiSysEventDelayTest009
192 * @tc.desc: Write a sysevent with a string param whose length is 32
193 * @tc.type: FUNC
194 * @tc.require: issueI76V6J
195 */
196 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest009, TestSize.Level1)
197 {
198 WriteStringWithLength("HiSysEventDelayTest009", "Write a sysevent with a string param whose length is 32",
199 32);
200 }
201
202 /**
203 * @tc.name: HiSysEventDelayTest010
204 * @tc.desc: Write a sysevent with a string param whose length is 64
205 * @tc.type: FUNC
206 * @tc.require: issueI76V6J
207 */
208 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest010, TestSize.Level1)
209 {
210 WriteStringWithLength("HiSysEventDelayTest010", "Write a sysevent with a string param whose length is 64",
211 64);
212 }
213
214 /**
215 * @tc.name: HiSysEventDelayTest011
216 * @tc.desc: Write a sysevent with a string param whose length is 128
217 * @tc.type: FUNC
218 * @tc.require: issueI76V6J
219 */
220 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest011, TestSize.Level1)
221 {
222 WriteStringWithLength("HiSysEventDelayTest011", "Write a sysevent with a string param whose length is 128",
223 128);
224 }
225
226 /**
227 * @tc.name: HiSysEventDelayTest012
228 * @tc.desc: Write a sysevent with a string param whose length is 256
229 * @tc.type: FUNC
230 * @tc.require: issueI76V6J
231 */
232 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest012, TestSize.Level1)
233 {
234 WriteStringWithLength("HiSysEventDelayTest012", "Write a sysevent with a string param whose length is 256",
235 256);
236 }
237
238
239 /**
240 * @tc.name: HiSysEventDelayTest013
241 * @tc.desc: Write a sysevent with a string param whose length is 512
242 * @tc.type: FUNC
243 * @tc.require: issueI76V6J
244 */
245 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest013, TestSize.Level1)
246 {
247 WriteStringWithLength("HiSysEventDelayTest013", "Write a sysevent with a string param whose length is 512",
248 512);
249 }
250
251 /**
252 * @tc.name: HiSysEventDelayTest014
253 * @tc.desc: Write a sysevent with a string param whose length is 1024
254 * @tc.type: FUNC
255 * @tc.require: issueI76V6J
256 */
257 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest014, TestSize.Level1)
258 {
259 WriteStringWithLength("HiSysEventDelayTest014", "Write a sysevent with a string param whose length is 1024",
260 1024);
261 }
262
263 /**
264 * @tc.name: HiSysEventDelayTest015
265 * @tc.desc: Write a sysevent with a string param whose length is 2048
266 * @tc.type: FUNC
267 * @tc.require: issueI76V6J
268 */
269 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest015, TestSize.Level1)
270 {
271 WriteStringWithLength("HiSysEventDelayTest015", "Write a sysevent with a string param whose length is 2048",
272 2048);
273 }
274
275 /**
276 * @tc.name: HiSysEventDelayTest016
277 * @tc.desc: Write a sysevent with a string param whose length is 3072
278 * @tc.type: FUNC
279 * @tc.require: issueI76V6J
280 */
281 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest016, TestSize.Level1)
282 {
283 WriteStringWithLength("HiSysEventDelayTest016", "Write a sysevent with a string param whose length is 3072",
284 3072);
285 }
286
287 /**
288 * @tc.name: HiSysEventDelayTest017
289 * @tc.desc: Write a sysevent with a string param whose length is 4096
290 * @tc.type: FUNC
291 * @tc.require: issueI76V6J
292 */
293 HWTEST_F(HiSysEventDelayTest, HiSysEventDelayTest017, TestSize.Level1)
294 {
295 WriteStringWithLength("HiSysEventDelayTest017", "Write a sysevent with a string param whose length is 4096",
296 4096);
297 }