• 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 #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