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 #ifndef LNN_HISYSEVENT_MATCHER_H
17 #define LNN_HISYSEVENT_MATCHER_H
18
19 #include <gmock/gmock.h>
20
21 #include "convert/lnn_audit_converter.h"
22 #include "convert/lnn_event_converter.h"
23 #include "hisysevent_c.h"
24 #include "softbus_event.h"
25
MatchLnnEventNameTypeExtraInt32Param(const HiSysEventParam * params,int32_t index,int32_t extraParam)26 static void MatchLnnEventNameTypeExtraInt32Param(const HiSysEventParam *params, int32_t index, int32_t extraParam)
27 {
28 EXPECT_STREQ(params[index].name, g_lnnAssigners[index].name);
29 EXPECT_EQ(params[index].t, g_lnnAssigners[index].type);
30 EXPECT_EQ(params[index].v.i32, extraParam);
31 }
32
MatchLnnEventNameTypeExtraUint32Param(const HiSysEventParam * params,int32_t index,int32_t extraParam)33 static void MatchLnnEventNameTypeExtraUint32Param(const HiSysEventParam *params, int32_t index, int32_t extraParam)
34 {
35 EXPECT_STREQ(params[index].name, g_lnnAssigners[index].name);
36 EXPECT_EQ(params[index].t, g_lnnAssigners[index].type);
37 EXPECT_EQ(params[index].v.ui32, extraParam);
38 }
39
MatchLnnEventNameTypeExtraStrParam(const HiSysEventParam * params,int32_t index,const char * extraParam)40 static void MatchLnnEventNameTypeExtraStrParam(const HiSysEventParam *params, int32_t index, const char *extraParam)
41 {
42 EXPECT_STREQ(params[index].name, g_lnnAssigners[index].name);
43 EXPECT_EQ(params[index].t, g_lnnAssigners[index].type);
44 EXPECT_STREQ(params[index].v.s, extraParam);
45 }
46
MatchLnnEventNameTypeExtraStrParamAnony(const HiSysEventParam * params,int32_t index,const char * extraParam)47 static void MatchLnnEventNameTypeExtraStrParamAnony(const HiSysEventParam *params, int32_t index,
48 const char *extraParam)
49 {
50 char *anonyStr = NULL;
51 EXPECT_STREQ(params[index].name, g_lnnAssigners[index].name);
52 EXPECT_EQ(params[index].t, g_lnnAssigners[index].type);
53
54 Anonymize(extraParam, &anonyStr);
55 EXPECT_STREQ(params[index].v.s, AnonymizeWrapper(anonyStr));
56 AnonymizeFree(anonyStr);
57 }
58
MatchLnnEventNameTypeExtraUint64Param(const HiSysEventParam * params,int32_t index,uint64_t extraParam)59 static void MatchLnnEventNameTypeExtraUint64Param(const HiSysEventParam *params, int32_t index, uint64_t extraParam)
60 {
61 EXPECT_STREQ(params[index].name, g_lnnAssigners[index].name);
62 EXPECT_EQ(params[index].t, g_lnnAssigners[index].type);
63 EXPECT_EQ(params[index].v.ui64, extraParam);
64 }
65
MatchLnnEventNameTypeExtraInt64Param(const HiSysEventParam * params,int32_t index,int64_t extraParam)66 static void MatchLnnEventNameTypeExtraInt64Param(const HiSysEventParam *params, int32_t index, int64_t extraParam)
67 {
68 EXPECT_STREQ(params[index].name, g_lnnAssigners[index].name);
69 EXPECT_EQ(params[index].t, g_lnnAssigners[index].type);
70 EXPECT_EQ(params[index].v.i64, extraParam);
71 }
72
73 MATCHER_P2(LnnValidParamArrayMatcher, inExtra, validSize, "lnn valid param array match fail")
74 {
75 const auto *params = static_cast<const HiSysEventParam *>(arg);
76 params += SOFTBUS_ASSIGNER_SIZE; // Skip softbus params, they are matched by SoftbusParamArrayMatcher
77 auto extra = static_cast<LnnEventExtra>(inExtra);
78 int32_t index = 0;
79 MatchLnnEventNameTypeExtraInt32Param(params, index, extra.result);
80 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.errcode);
81 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.authId);
82 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.discServerType);
83 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.gearCycle);
84 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.gearDuration);
85 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.connectionId);
86 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.authLinkType);
87 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.authRequestId);
88 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.authCostTime);
89 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.lnnType);
90 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.onlineNum);
91 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.peerDeviceAbility);
92 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.onlineType);
93 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.osType);
94 MatchLnnEventNameTypeExtraUint32Param(params, ++index, extra.connOnlineReason);
95 MatchLnnEventNameTypeExtraInt64Param(params, ++index, extra.laneId);
96 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.chanReqId);
97 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.connReqId);
98 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.strategy);
99 MatchLnnEventNameTypeExtraUint64Param(params, ++index, extra.timeLatency);
100 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.triggerReason);
101 MatchLnnEventNameTypeExtraInt64Param(params, ++index, extra.authSeq);
102 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.onlineDevCnt);
103 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.interval);
104 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.laneLinkType);
105 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.hmlChannelId);
106 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.p2pChannelId);
107 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.staChannelId);
108 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.apChannelId);
109 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.laneReqId);
110 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.minBW);
111 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.maxLaneLatency);
112 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.minLaneLatency);
113 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.isWifiDirectReuse);
114 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.bandWidth);
115 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.guideType);
116 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.laneStage);
117 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.laneHandle);
118 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.rttLevel);
119 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.transType);
120 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.localDynamicCap);
121 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.remoteDynamicCap);
122 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.isGuideRetry);
123 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.wifiDetectState);
124 MatchLnnEventNameTypeExtraInt64Param(params, ++index, extra.wifiDetectTime);
125 MatchLnnEventNameTypeExtraInt64Param(params, ++index, extra.buildLinkTime);
126 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.isHmlReuse);
127 MatchLnnEventNameTypeExtraInt32Param(params, ++index, extra.isDelayFree);
128 MatchLnnEventNameTypeExtraInt64Param(params, ++index, extra.freeLinkTime);
129 MatchLnnEventNameTypeExtraStrParam(params, ++index, extra.peerDeviceInfo);
130 MatchLnnEventNameTypeExtraStrParamAnony(params, ++index, extra.peerIp);
131 MatchLnnEventNameTypeExtraStrParamAnony(params, ++index, extra.peerBrMac);
132 MatchLnnEventNameTypeExtraStrParamAnony(params, ++index, extra.peerBleMac);
133 MatchLnnEventNameTypeExtraStrParamAnony(params, ++index, extra.peerWifiMac);
134 MatchLnnEventNameTypeExtraStrParam(params, ++index, extra.peerPort);
135 MatchLnnEventNameTypeExtraStrParamAnony(params, ++index, extra.peerUdid);
136 MatchLnnEventNameTypeExtraStrParamAnony(params, ++index, extra.peerNetworkId);
137 MatchLnnEventNameTypeExtraStrParam(params, ++index, extra.localDeviceType);
138 MatchLnnEventNameTypeExtraStrParam(params, ++index, extra.peerDeviceType);
139 MatchLnnEventNameTypeExtraStrParamAnony(params, ++index, extra.localUdidHash);
140 MatchLnnEventNameTypeExtraStrParamAnony(params, ++index, extra.peerUdidHash);
141 MatchLnnEventNameTypeExtraStrParam(params, ++index, extra.callerPkg);
142 MatchLnnEventNameTypeExtraStrParam(params, ++index, extra.calleePkg);
143
144 EXPECT_EQ(++index, validSize);
145 return true;
146 }
147
148 MATCHER_P2(LnnInvalidParamArrayMatcher, inExtra, validSize, "lnn invalid param array match fail")
149 {
150 const auto *params = static_cast<const HiSysEventParam *>(arg);
151 params += SOFTBUS_ASSIGNER_SIZE; // Skip softbus params, they are matched by SoftbusParamArrayMatcher
152 auto extra = static_cast<LnnEventExtra>(inExtra);
153 int32_t index = 0;
154 MatchLnnEventNameTypeExtraInt32Param(params, index, ((extra.result < 0) ? (-extra.result) : extra.result));
155 MatchLnnEventNameTypeExtraInt32Param(params, ++index, ((extra.errcode < 0) ? (-extra.errcode) : extra.errcode));
156 MatchLnnEventNameTypeExtraInt32Param(params, ++index, ((extra.authId < 0) ? (-extra.authId) : extra.authId));
157
158 EXPECT_EQ(++index, validSize);
159 return true;
160 }
161
MatchLnnAuditNameTypeInt32Param(const HiSysEventParam * params,int32_t index,int32_t extraParam)162 static void MatchLnnAuditNameTypeInt32Param(const HiSysEventParam *params, int32_t index, int32_t extraParam)
163 {
164 EXPECT_STREQ(params[index].name, g_lnnAuditAssigners[index].name);
165 EXPECT_EQ(params[index].t, g_lnnAuditAssigners[index].type);
166 EXPECT_EQ(params[index].v.i32, extraParam);
167 }
168
MatchLnnAuditNameTypeUint32Param(const HiSysEventParam * params,int32_t index,uint32_t extraParam)169 static void MatchLnnAuditNameTypeUint32Param(const HiSysEventParam *params, int32_t index, uint32_t extraParam)
170 {
171 EXPECT_STREQ(params[index].name, g_lnnAuditAssigners[index].name);
172 EXPECT_EQ(params[index].t, g_lnnAuditAssigners[index].type);
173 EXPECT_EQ(params[index].v.ui32, extraParam);
174 }
175
MatchLnnAuditNameTypeUint64Param(const HiSysEventParam * params,int32_t index,uint64_t extraParam)176 static void MatchLnnAuditNameTypeUint64Param(const HiSysEventParam *params, int32_t index, uint64_t extraParam)
177 {
178 EXPECT_STREQ(params[index].name, g_lnnAuditAssigners[index].name);
179 EXPECT_EQ(params[index].t, g_lnnAuditAssigners[index].type);
180 EXPECT_EQ(params[index].v.ui64, extraParam);
181 }
182
MatchLnnAuditNameTypeStrParam(const HiSysEventParam * params,int32_t index,const char * extraParam)183 static void MatchLnnAuditNameTypeStrParam(const HiSysEventParam *params, int32_t index, const char *extraParam)
184 {
185 EXPECT_STREQ(params[index].name, g_lnnAuditAssigners[index].name);
186 EXPECT_EQ(params[index].t, g_lnnAuditAssigners[index].type);
187 EXPECT_STREQ(params[index].v.s, extraParam);
188 }
189
190 MATCHER_P2(LnnAuditValidParamArrayMatcher, inExtra, validSize, "lnn audit valid param array match fail")
191 {
192 const auto *params = static_cast<const HiSysEventParam *>(arg);
193 params += SOFTBUS_ASSIGNER_SIZE - 1; // Skip softbus params, they are matched by SoftbusParamArrayMatcher
194 auto extra = static_cast<LnnAuditExtra>(inExtra);
195 int32_t index = 0;
196 MatchLnnAuditNameTypeInt32Param(params, index, extra.result);
197 MatchLnnAuditNameTypeInt32Param(params, ++index, extra.errCode);
198 MatchLnnAuditNameTypeInt32Param(params, ++index, extra.auditType);
199 MatchLnnAuditNameTypeUint64Param(params, ++index, extra.connId);
200 MatchLnnAuditNameTypeInt32Param(params, ++index, extra.authLinkType);
201 MatchLnnAuditNameTypeUint32Param(params, ++index, extra.authRequestId);
202 MatchLnnAuditNameTypeInt32Param(params, ++index, extra.onlineNum);
203 MatchLnnAuditNameTypeStrParam(params, ++index, extra.hostPkg);
204 MatchLnnAuditNameTypeStrParam(params, ++index, extra.localIp);
205 MatchLnnAuditNameTypeStrParam(params, ++index, extra.localBrMac);
206 MatchLnnAuditNameTypeStrParam(params, ++index, extra.localBleMac);
207 MatchLnnAuditNameTypeStrParam(params, ++index, extra.localUdid);
208 MatchLnnAuditNameTypeStrParam(params, ++index, extra.localNetworkId);
209 MatchLnnAuditNameTypeStrParam(params, ++index, extra.localDevName);
210 MatchLnnAuditNameTypeStrParam(params, ++index, extra.peerIp);
211 MatchLnnAuditNameTypeStrParam(params, ++index, extra.peerBrMac);
212 MatchLnnAuditNameTypeStrParam(params, ++index, extra.peerBleMac);
213 MatchLnnAuditNameTypeStrParam(params, ++index, extra.peerUdid);
214 MatchLnnAuditNameTypeStrParam(params, ++index, extra.peerNetworkId);
215 MatchLnnAuditNameTypeStrParam(params, ++index, extra.peerDevName);
216 MatchLnnAuditNameTypeInt32Param(params, ++index, extra.localAuthPort);
217 MatchLnnAuditNameTypeInt32Param(params, ++index, extra.localProxyPort);
218 MatchLnnAuditNameTypeInt32Param(params, ++index, extra.localSessionPort);
219 MatchLnnAuditNameTypeInt32Param(params, ++index, extra.localDevType);
220 MatchLnnAuditNameTypeInt32Param(params, ++index, extra.peerAuthPort);
221 MatchLnnAuditNameTypeInt32Param(params, ++index, extra.peerProxyPort);
222 MatchLnnAuditNameTypeInt32Param(params, ++index, extra.peerSessionPort);
223 MatchLnnAuditNameTypeInt32Param(params, ++index, extra.peerDevType);
224 MatchLnnAuditNameTypeInt32Param(params, ++index, extra.attackTimes);
225 MatchLnnAuditNameTypeInt32Param(params, ++index, extra.beAttackedPort);
226
227 EXPECT_EQ(++index, validSize);
228 return true;
229 }
230
231 MATCHER_P2(LnnAuditInvalidParamArrayMatcher, inExtra, validSize, "lnn audit invalid param array match fail")
232 {
233 const auto *params = static_cast<const HiSysEventParam *>(arg);
234 params += SOFTBUS_ASSIGNER_SIZE; // Skip softbus params, they are matched by SoftbusParamArrayMatcher
235 auto extra = static_cast<LnnAuditExtra>(inExtra);
236 int32_t index = 0;
237 MatchLnnAuditNameTypeInt32Param(params, index, ((extra.result < 0) ? (-extra.result) : extra.result));
238 MatchLnnAuditNameTypeInt32Param(params, ++index, ((extra.errCode < 0) ? (-extra.errCode) : extra.errCode));
239 EXPECT_EQ(++index, validSize);
240 return true;
241 }
242 #endif // LNN_HISYSEVENT_MATCHER_H
243