• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 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_mock.h"
17 #include "softbus_hisysevent_matcher.h"
18 #include "trans_event.h"
19 #include "trans_hisysevent_matcher.h"
20 #include "gtest/gtest.h"
21 
22 using namespace std;
23 using namespace testing;
24 using namespace testing::ext;
25 
26 namespace OHOS {
27 class TransEventTest : public testing::Test { };
28 
29 /**
30  * @tc.name: TransEventTest001
31  * @tc.desc: Test trans event form size
32  * @tc.type: FUNC
33  * @tc.require: I8HA59
34  */
35 HWTEST_F(TransEventTest, TransEventTest001, TestSize.Level0)
36 {
37     TransEventExtra extra = {
38         .result = 1,
39         .errcode = 2233,
40         .socketName = "testSocket",
41         .dataType = 0, // invalid
42     };
43     constexpr int32_t VALID_EXTRA_SIZE = 4;  //result errcode socketName firstTokenId
44 
45     HiSysEventMock mock;
46     EXPECT_CALL(mock,
47         HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_EVENT_NAME), Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), _,
48             ParamArraySizeMatcher(VALID_EXTRA_SIZE)))
49         .Times(1);
50     TRANS_EVENT(EVENT_SCENE_OPEN_CHANNEL, EVENT_STAGE_OPEN_CHANNEL_START, extra);
51 }
52 
53 /**
54  * @tc.name: TransEventTest002
55  * @tc.desc: Test all valid trans event form items
56  * @tc.type: FUNC
57  * @tc.require: I8HA59
58  */
59 HWTEST_F(TransEventTest, TransEventTest002, TestSize.Level0)
60 {
61     TransEventExtra validExtra = {
62         .result = 1,
63         .errcode = 2,
64         .socketName = "testSocketName",
65         .dataType = 3,
66         .channelType = 4,
67         .laneId = 5,
68         .preferLinkType = 6,
69         .laneTransType = 7,
70         .channelId = 8,
71         .requestId = 9,
72         .connectionId = 10,
73         .linkType = 11,
74         .authId = 12,
75         .socketFd = 13,
76         .costTime = 14,
77         .channelScore = 15,
78         .peerChannelId = 16,
79         .btFlow = 17,
80         .peerNetworkId = "a8ynvpdaihw1f6nknjd2hkfhxljxypkr6kvjsbhnhpp16974uo4fvsrpfa6t50fm",
81         .peerUdid = "a8ynvpdaihw1f6nknjd2hkfhxljxypkr6kvjsbhnhpp16974uo4fvsrpfa6t50fm",
82         .peerDevVer = "NOH-AN00 peer_device_version",
83         .localUdid = "localpdaihw1f6nknjd2hkfhxljxypkr6kvjsbhnhpp16974uo4fvsrpfa6t50fm",
84         .callerPkg = "testCallerPkg",
85         .calleePkg = "testCalleePkg",
86         .firstTokenName = "testfirstToken",
87         .firstTokenId = 0,
88         .firstTokenType = 1,
89         .trafficStats = "localpdaihw1f6nknjd2hkfhxljxypkr6kvjsbhnhpp16974uo4fvsrpfa6t50fm",
90         .osType = 10,
91         .deviceState = 1,
92         .businessId = 1,
93         .businessType = 1,
94         .sessionId = 1,
95         .minBW = 83886080,
96         .maxLatency = 4000,
97         .minLatency = 2000,
98     };
99     constexpr int32_t VALID_EXTRA_SIZE = TRANS_ASSIGNER_SIZE;
100 
101     HiSysEventMock mock;
102     EXPECT_CALL(mock,
103         HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_EVENT_NAME), Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR),
104             TransValidParamArrayMatcher(validExtra, VALID_EXTRA_SIZE), ParamArraySizeMatcher(VALID_EXTRA_SIZE)))
105         .Times(1);
106     TRANS_EVENT(EVENT_SCENE_OPEN_CHANNEL, EVENT_STAGE_OPEN_CHANNEL_END, validExtra);
107 }
108 
109 /**
110  * @tc.name: TransEventTest003
111  * @tc.desc: Test all invalid trans event form items
112  * @tc.type: FUNC
113  * @tc.require: I8HA59
114  */
115 HWTEST_F(TransEventTest, TransEventTest003, TestSize.Level0)
116 {
117     TransEventExtra invalidExtra = {
118         .result = -1,  // valid
119         .errcode = -2, // valid
120         .socketName = "",
121         .dataType = -3,
122         .channelType = -4,
123         .laneId = -5,
124         .preferLinkType = -6,
125         .laneTransType = -7,
126         .channelId = -8,
127         .requestId = -9,
128         .connectionId = -10,
129         .linkType = -11,
130         .authId = -12,
131         .socketFd = -13,
132         .costTime = -14,
133         .channelScore = -15,
134         .peerChannelId = -16,
135         .btFlow = -17,
136         .peerNetworkId = "",
137         .peerUdid = "",
138         .peerDevVer = "",
139         .localUdid = "",
140         .callerPkg = "\0",
141         .calleePkg = nullptr,
142         .firstTokenName = "",
143         .firstTokenId = 0,
144         .firstTokenType = -1,
145         .minBW = -2,
146         .maxLatency = -3,
147         .minLatency = -4,
148     };
149     constexpr int32_t VALID_EXTRA_SIZE = 3; // result, errcode and firstTokenId is valid
150 
151     HiSysEventMock mock;
152     EXPECT_CALL(mock,
153         HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_EVENT_NAME), Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR),
154             TransInvalidParamArrayMatcher(invalidExtra, VALID_EXTRA_SIZE), ParamArraySizeMatcher(VALID_EXTRA_SIZE)))
155         .Times(1);
156     TRANS_EVENT(EVENT_SCENE_CLOSE_CHANNEL_ACTIVE, EVENT_STAGE_CLOSE_CHANNEL, invalidExtra);
157 }
158 
159 /**
160  * @tc.name: TransEventTest004
161  * @tc.desc: Test empty trans event form
162  * @tc.type: FUNC
163  * @tc.require: I8HA59
164  */
165 HWTEST_F(TransEventTest, TransEventTest004, TestSize.Level0)
166 {
167     TransEventExtra emptyExtra = { 0 };
168     constexpr int32_t VALID_EXTRA_SIZE = 3; // result, errcode and firstTokenId is valid
169 
170     HiSysEventMock mock;
171     EXPECT_CALL(mock,
172         HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_EVENT_NAME), Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR),
173             TransInvalidParamArrayMatcher(emptyExtra, VALID_EXTRA_SIZE), ParamArraySizeMatcher(VALID_EXTRA_SIZE)))
174         .Times(1);
175     TRANS_EVENT(EVENT_SCENE_CLOSE_CHANNEL_PASSIVE, EVENT_STAGE_CLOSE_CHANNEL, emptyExtra);
176 }
177 
178 /**
179  * @tc.name: TransEventTest005
180  * @tc.desc: Test trans event form size
181  * @tc.type: FUNC
182  * @tc.require: I8HA59
183  */
184 HWTEST_F(TransEventTest, TransEventTest005, TestSize.Level0)
185 {
186     TransAlarmExtra extra = {
187         .conflictName = nullptr,
188         .conflictedName = nullptr,
189         .occupyedName = nullptr,
190         .permissionName = nullptr,
191         .sessionName = nullptr,
192         .result = 1,
193         .errcode = 2233,
194         .minBw = 32,
195         .linkType = 0, // invalid
196     };
197     constexpr int32_t VALID_EXTRA_SIZE = 3;
198 
199     HiSysEventMock mock;
200     EXPECT_CALL(mock,
201         HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(CONTROL_ALARM_EVENT_NAME),
202             Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), _, ParamArraySizeMatcher(VALID_EXTRA_SIZE)))
203         .Times(1);
204     TRANS_ALARM(BANDWIDTH_INSUFFICIANT_ALARM, CONTROL_ALARM_TYPE, extra);
205 }
206 
207 /**
208  * @tc.name: TransEventTest006
209  * @tc.desc: Test all valid trans event form items
210  * @tc.type: FUNC
211  * @tc.require: I8HA59
212  */
213 HWTEST_F(TransEventTest, TransEventTest006, TestSize.Level0)
214 {
215     TransAlarmExtra validExtra = {
216         .result = 1,
217         .errcode = 2,
218         .callerPid = 3,
219         .linkType = 4,
220         .minBw = 5,
221         .methodId = 6,
222         .duration = 7,
223         .curFlow = 8,
224         .limitFlow = 9,
225         .limitTime = 10,
226         .occupyRes = 11,
227         .syncType = 12,
228         .syncData = 13,
229         .retryCount = 14,
230         .retryReason = 15,
231         .conflictName = "conflictName",
232         .conflictedName = "conflictedName",
233         .occupyedName = "testOccupyName",
234         .permissionName = "testPermissionName",
235         .sessionName = "testSessionName",
236     };
237     constexpr int32_t VALID_EXTRA_SIZE = TRANS_ALARM_ASSIGNER_SIZE;
238 
239     HiSysEventMock mock;
240     EXPECT_CALL(mock,
241         HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(MANAGE_ALARM_EVENT_NAME),
242             Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), TransAlarmValidParamArrayMatcher(validExtra, VALID_EXTRA_SIZE),
243             ParamArraySizeMatcher(VALID_EXTRA_SIZE)))
244         .Times(1);
245     TRANS_ALARM(BANDWIDTH_INSUFFICIANT_ALARM, MANAGE_ALARM_TYPE, validExtra);
246 }
247 
248 /**
249  * @tc.name: TransEventTest007
250  * @tc.desc: Test stats
251  * @tc.type: FUNC
252  * @tc.require: I8HA59
253  */
254 HWTEST_F(TransEventTest, TransEventTest007, TestSize.Level0)
255 {
256     TransEventExtra validExtra = {
257         .result = 1,
258         .errcode = 2,
259         .socketName = "testSocketName",
260         .dataType = 3,
261         .channelType = 4,
262         .laneId = 5,
263         .preferLinkType = 6,
264         .laneTransType = 7,
265         .channelId = 8,
266         .requestId = 9,
267         .connectionId = 10,
268         .linkType = 11,
269         .authId = 12,
270         .socketFd = 13,
271         .costTime = 14,
272         .channelScore = 15,
273         .peerChannelId = 16,
274         .btFlow = 17,
275         .firstTokenId = 0,
276     };
277     constexpr int32_t VALID_EXTRA_SIZE = 19;
278     HiSysEventMock mock;
279     EXPECT_CALL(mock,
280         HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_EVENT_NAME), Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), _,
281             ParamArraySizeMatcher(VALID_EXTRA_SIZE)))
282         .Times(1);
283     TRANS_EVENT(EVENT_SCENE_BT_FLOW, SOFTBUS_DEFAULT_STAGE, validExtra);
284 
285 
286     TransEventExtra validExtra1 = {
287         .result = 1,
288         .errcode = 2,
289         .socketName = "testSocketName",
290         .channelScore = 15,
291         .peerChannelId = 16,
292         .peerNetworkId = "testNetworkId",
293         .callerPkg = "testCallerPkg",
294         .calleePkg = "testCalleePkg",
295         .firstTokenId = 0,
296     };
297     constexpr int32_t VALID_EXTRA_SIZE1 = 9;
298     HiSysEventMock mock1;
299     EXPECT_CALL(mock1,
300         HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_EVENT_NAME), Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), _,
301             ParamArraySizeMatcher(VALID_EXTRA_SIZE1)))
302         .Times(1);
303     TRANS_EVENT(EVENT_SCENE_LANE_SCORE, SOFTBUS_DEFAULT_STAGE, validExtra1);
304 
305     TransEventExtra validExtra2 = {
306         .result = 1,
307         .errcode = 2,
308         .peerChannelId = 16,
309         .peerNetworkId = "testNetworkId",
310         .callerPkg = "testCallerPkg",
311         .calleePkg = "testCalleePkg",
312         .firstTokenId = 0,
313     };
314     constexpr int32_t VALID_EXTRA_SIZE2 = 7;
315     HiSysEventMock mock2;
316     EXPECT_CALL(mock2,
317         HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_EVENT_NAME), Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), _,
318             ParamArraySizeMatcher(VALID_EXTRA_SIZE2)))
319         .Times(1);
320     TRANS_EVENT(EVENT_SCENE_DETECTION, SOFTBUS_DEFAULT_STAGE, validExtra2);
321 
322     TransEventExtra validExtra3 = {
323         .result = 1,
324         .errcode = 2,
325         .peerNetworkId = "testNetworkId",
326         .callerPkg = "testCallerPkg",
327         .calleePkg = "testCalleePkg",
328         .firstTokenId = 0,
329     };
330     constexpr int32_t VALID_EXTRA_SIZE3 = 6;
331     HiSysEventMock mock3;
332     EXPECT_CALL(mock3,
333         HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_EVENT_NAME), Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), _,
334             ParamArraySizeMatcher(VALID_EXTRA_SIZE3)))
335         .Times(1);
336     TRANS_EVENT(EVENT_SCENE_ACTIVATION, SOFTBUS_DEFAULT_STAGE, validExtra3);
337 }
338 
339 /**
340  * @tc.name: TransEventTest008
341  * @tc.desc: Test trans event form size
342  * @tc.type: FUNC
343  * @tc.require: I8HA59
344  */
345 HWTEST_F(TransEventTest, TransEventTest008, TestSize.Level0)
346 {
347     TransAuditExtra extra = {
348         .localIp = nullptr,
349         .localPort = nullptr,
350         .localDevId = nullptr,
351         .localSessName = nullptr,
352         .peerIp = nullptr,
353         .peerPort = nullptr,
354         .peerDevId = nullptr,
355         .peerSessName = nullptr,
356         .hostPkg = "a.b.c.transSudit",
357         .result = 2,
358         .errcode = 9527,
359         .auditType = AUDIT_EVENT_MSG_ERROR,
360     };
361     constexpr int32_t VALID_EXTRA_SIZE = 4;
362 
363     HiSysEventMock mock;
364     EXPECT_CALL(mock,
365         HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_AUDIT_NAME), Eq(SOFTBUS_EVENT_TYPE_SECURITY), _,
366             ParamArraySizeMatcher(VALID_EXTRA_SIZE)))
367         .Times(1);
368     TRANS_AUDIT(AUDIT_SCENE_OPEN_SESSION, extra);
369 }
370 
371 /**
372  * @tc.name: TransEventTest009
373  * @tc.desc: Test all valid trans event form items
374  * @tc.type: FUNC
375  * @tc.require: I8HA59
376  */
377 HWTEST_F(TransEventTest, TransEventTest009, TestSize.Level0)
378 {
379     TransAuditExtra validExtra = {
380         .hostPkg = "a.b.c.transAudit",
381         .result = 1,
382         .errcode = 9527,
383         .auditType = AUDIT_EVENT_MSG_ERROR,
384         .localIp = "*1.123",
385         .localPort = "3435",
386         .localDevId = "*A1B2C3456789",
387         .localDevType = 2,
388         .localSessName = "mySessionName",
389         .localChannelId = 1025,
390         .peerIp = "*1.124",
391         .peerPort = "3436",
392         .peerDevId = "*B1C2D345679",
393         .peerDevType = 2,
394         .peerSessName = "youSessionName",
395         .peerChannelId = 15,
396         .channelType = 16,
397         .authId = 1314520,
398         .reqId = 321,
399         .linkType = 2,
400         .connId = 302234,
401         .socketFd = 223,
402         .dataType = 3,
403         .dataLen = 256,
404         .dataSeq = 41,
405         .costTime = 500,
406         .dataTraffic = 4096,
407         .reqCount = 3,
408     };
409     constexpr int32_t VALID_EXTRA_SIZE = TRANS_AUDIT_ASSIGNER_SIZE;
410 
411     HiSysEventMock mock;
412     EXPECT_CALL(mock,
413         HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_AUDIT_NAME), Eq(SOFTBUS_EVENT_TYPE_SECURITY),
414             TransAuditValidParamArrayMatcher(validExtra, VALID_EXTRA_SIZE), ParamArraySizeMatcher(VALID_EXTRA_SIZE)))
415         .Times(1);
416     TRANS_AUDIT(AUDIT_SCENE_OPEN_SESSION, validExtra);
417 }
418 } // namespace OHOS
419