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 TRANS_HISYSEVENT_MATCHER_H
17 #define TRANS_HISYSEVENT_MATCHER_H
18
19 #include <gmock/gmock.h>
20
21 #include "convert/trans_audit_converter.h"
22 #include "convert/trans_event_converter.h"
23 #include "hisysevent_c.h"
24 #include "softbus_event.h"
25
MatchTransEventNameTypeExtraInt32Param(const HiSysEventParam * params,int32_t index,int32_t extraParam)26 static void MatchTransEventNameTypeExtraInt32Param(const HiSysEventParam *params, int32_t index, int32_t extraParam)
27 {
28 EXPECT_STREQ(params[index].name, TRANS_ASSIGNERS[index].name);
29 EXPECT_EQ(params[index].t, TRANS_ASSIGNERS[index].type);
30 EXPECT_EQ(params[index].v.i32, extraParam);
31 }
32
MatchTransEventNameTypeExtraInt64Param(const HiSysEventParam * params,int32_t index,int64_t extraParam)33 static void MatchTransEventNameTypeExtraInt64Param(const HiSysEventParam *params, int32_t index, int64_t extraParam)
34 {
35 EXPECT_STREQ(params[index].name, TRANS_ASSIGNERS[index].name);
36 EXPECT_EQ(params[index].t, TRANS_ASSIGNERS[index].type);
37 EXPECT_EQ(params[index].v.i64, extraParam);
38 }
39
MatchTransEventNameTypeExtraStrParam(const HiSysEventParam * params,int32_t index,const char * extraParam)40 static void MatchTransEventNameTypeExtraStrParam(const HiSysEventParam *params, int32_t index,
41 const char * extraParam)
42 {
43 EXPECT_STREQ(params[index].name, TRANS_ASSIGNERS[index].name);
44 EXPECT_EQ(params[index].t, TRANS_ASSIGNERS[index].type);
45 EXPECT_STREQ(params[index].v.s, extraParam);
46 }
47
MatchTransEventNameTypeExtraStrParamAnony(const HiSysEventParam * params,int32_t index,const char * extraParam)48 static void MatchTransEventNameTypeExtraStrParamAnony(const HiSysEventParam *params, int32_t index,
49 const char * extraParam)
50 {
51 char *anonyStr = NULL;
52 EXPECT_STREQ(params[index].name, TRANS_ASSIGNERS[index].name);
53 EXPECT_EQ(params[index].t, TRANS_ASSIGNERS[index].type);
54
55 Anonymize(extraParam, &anonyStr);
56 EXPECT_STREQ(params[index].v.s, AnonymizeWrapper(anonyStr));
57 AnonymizeFree(anonyStr);
58 }
59
60 MATCHER_P2(TransValidParamArrayMatcher, inExtra, validSize, "trans valid param array match fail")
61 {
62 const auto *params = static_cast<const HiSysEventParam *>(arg);
63 params += SOFTBUS_ASSIGNER_SIZE; // Skip softbus params, they are matched by SoftbusParamArrayMatcher
64 auto extra = static_cast<TransEventExtra>(inExtra);
65 int32_t index = 0;
66 MatchTransEventNameTypeExtraInt32Param(params, index, extra.result);
67 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.errcode);
68 MatchTransEventNameTypeExtraStrParamAnony(params, ++index, extra.socketName);
69 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.dataType);
70 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.channelType);
71 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.laneId);
72 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.preferLinkType);
73 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.laneTransType);
74 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.channelId);
75 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.requestId);
76 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.connectionId);
77 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.linkType);
78 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.authId);
79 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.socketFd);
80 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.costTime);
81 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.channelScore);
82 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.peerChannelId);
83 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.btFlow);
84 MatchTransEventNameTypeExtraStrParamAnony(params, ++index, extra.peerNetworkId);
85 MatchTransEventNameTypeExtraStrParamAnony(params, ++index, extra.peerUdid);
86 MatchTransEventNameTypeExtraStrParam(params, ++index, extra.peerDevVer);
87 MatchTransEventNameTypeExtraStrParamAnony(params, ++index, extra.localUdid);
88 MatchTransEventNameTypeExtraStrParam(params, ++index, extra.callerPkg);
89 MatchTransEventNameTypeExtraStrParam(params, ++index, extra.calleePkg);
90 MatchTransEventNameTypeExtraStrParam(params, ++index, extra.firstTokenName);
91 MatchTransEventNameTypeExtraInt64Param(params, ++index, extra.firstTokenId);
92 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.firstTokenType);
93 MatchTransEventNameTypeExtraStrParam(params, ++index, extra.trafficStats);
94 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.osType);
95 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.deviceState);
96 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.businessId);
97 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.businessType);
98 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.sessionId);
99 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.minBW);
100 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.maxLatency);
101 MatchTransEventNameTypeExtraInt32Param(params, ++index, extra.minLatency);
102 EXPECT_EQ(++index, validSize);
103 return true;
104 }
105
106 MATCHER_P2(TransInvalidParamArrayMatcher, inExtra, validSize, "trans invalid param array match fail")
107 {
108 const auto *params = static_cast<const HiSysEventParam *>(arg);
109 params += SOFTBUS_ASSIGNER_SIZE; // Skip softbus params, they are matched by SoftbusParamArrayMatcher
110 auto extra = static_cast<TransEventExtra>(inExtra);
111 int32_t index = 0;
112 MatchTransEventNameTypeExtraInt32Param(params, index, ((extra.result < 0) ? (-extra.result) : extra.result));
113 MatchTransEventNameTypeExtraInt32Param(params, ++index, ((extra.errcode < 0) ? (-extra.errcode) : extra.errcode));
114 ++index;
115 int32_t num = 25;
116 EXPECT_STREQ(params[index].name, TRANS_ASSIGNERS[num].name);
117 EXPECT_EQ(params[index].t, TRANS_ASSIGNERS[num].type);
118 EXPECT_EQ(params[index].v.i64, extra.firstTokenId);
119 EXPECT_EQ(++index, validSize);
120 return true;
121 }
122
MatchTransAlarmNameTypeExtraInt32Param(const HiSysEventParam * params,int32_t index,int32_t extraParam)123 static void MatchTransAlarmNameTypeExtraInt32Param(const HiSysEventParam *params, int32_t index, int32_t extraParam)
124 {
125 EXPECT_STREQ(params[index].name, g_transAlarmAssigners[index].name);
126 EXPECT_EQ(params[index].t, g_transAlarmAssigners[index].type);
127 EXPECT_EQ(params[index].v.i32, extraParam);
128 }
129
MatchTransAlarmNameTypeExtraStrParam(const HiSysEventParam * params,int32_t index,const char * extraParam)130 static void MatchTransAlarmNameTypeExtraStrParam(const HiSysEventParam *params, int32_t index, const char *extraParam)
131 {
132 EXPECT_STREQ(params[index].name, g_transAlarmAssigners[index].name);
133 EXPECT_EQ(params[index].t, g_transAlarmAssigners[index].type);
134 EXPECT_STREQ(params[index].v.s, extraParam);
135 }
136
MatchTransAlarmNameTypeExtraStrParamAnony(const HiSysEventParam * params,int32_t index,const char * extraParam)137 static void MatchTransAlarmNameTypeExtraStrParamAnony(const HiSysEventParam *params, int32_t index,
138 const char *extraParam)
139 {
140 char *anonyStr = NULL;
141 EXPECT_STREQ(params[index].name, g_transAlarmAssigners[index].name);
142 EXPECT_EQ(params[index].t, g_transAlarmAssigners[index].type);
143
144 Anonymize(extraParam, &anonyStr);
145 EXPECT_STREQ(params[index].v.s, AnonymizeWrapper(anonyStr));
146 AnonymizeFree(anonyStr);
147 }
148
149 MATCHER_P2(TransAlarmValidParamArrayMatcher, inExtra, validSize, "trans alarm valid param array match fail")
150 {
151 const auto *params = static_cast<const HiSysEventParam *>(arg);
152 params += SOFTBUS_ASSIGNER_SIZE; // Skip softbus params, they are matched by SoftbusParamArrayMatcher
153 auto extra = static_cast<TransAlarmExtra>(inExtra);
154 int32_t index = 0;
155 MatchTransAlarmNameTypeExtraInt32Param(params, index, extra.result);
156 MatchTransAlarmNameTypeExtraInt32Param(params, ++index, extra.errcode);
157 MatchTransAlarmNameTypeExtraInt32Param(params, ++index, extra.callerPid);
158 MatchTransAlarmNameTypeExtraInt32Param(params, ++index, extra.linkType);
159 MatchTransAlarmNameTypeExtraInt32Param(params, ++index, extra.minBw);
160 MatchTransAlarmNameTypeExtraInt32Param(params, ++index, extra.methodId);
161 MatchTransAlarmNameTypeExtraInt32Param(params, ++index, extra.duration);
162 MatchTransAlarmNameTypeExtraInt32Param(params, ++index, extra.curFlow);
163 MatchTransAlarmNameTypeExtraInt32Param(params, ++index, extra.limitFlow);
164 MatchTransAlarmNameTypeExtraInt32Param(params, ++index, extra.limitTime);
165 MatchTransAlarmNameTypeExtraInt32Param(params, ++index, extra.occupyRes);
166 MatchTransAlarmNameTypeExtraInt32Param(params, ++index, extra.syncType);
167 MatchTransAlarmNameTypeExtraInt32Param(params, ++index, extra.syncData);
168 MatchTransAlarmNameTypeExtraInt32Param(params, ++index, extra.retryCount);
169 MatchTransAlarmNameTypeExtraInt32Param(params, ++index, extra.retryReason);
170 MatchTransAlarmNameTypeExtraStrParam(params, ++index, extra.conflictName);
171 MatchTransAlarmNameTypeExtraStrParam(params, ++index, extra.conflictedName);
172 MatchTransAlarmNameTypeExtraStrParam(params, ++index, extra.occupyedName);
173 MatchTransAlarmNameTypeExtraStrParam(params, ++index, extra.permissionName);
174 MatchTransAlarmNameTypeExtraStrParamAnony(params, ++index, extra.sessionName);
175 EXPECT_EQ(++index, validSize);
176 return true;
177 }
178
MatchTransAuditNameTypeExtraInt32Param(const HiSysEventParam * params,int32_t index,int32_t extraParam)179 static void MatchTransAuditNameTypeExtraInt32Param(const HiSysEventParam *params, int32_t index, int32_t extraParam)
180 {
181 EXPECT_STREQ(params[index].name, g_transAuditAssigners[index].name);
182 EXPECT_EQ(params[index].t, g_transAuditAssigners[index].type);
183 EXPECT_EQ(params[index].v.i32, extraParam);
184 }
185
MatchTransAuditNameTypeExtraStrParam(const HiSysEventParam * params,int32_t index,const char * extraParam)186 static void MatchTransAuditNameTypeExtraStrParam(const HiSysEventParam *params, int32_t index, const char *extraParam)
187 {
188 EXPECT_STREQ(params[index].name, g_transAuditAssigners[index].name);
189 EXPECT_EQ(params[index].t, g_transAuditAssigners[index].type);
190 EXPECT_STREQ(params[index].v.s, extraParam);
191 }
192
193 MATCHER_P2(TransAuditValidParamArrayMatcher, inExtra, validSize, "trans valid param array match fail")
194 {
195 const auto *params = static_cast<const HiSysEventParam *>(arg);
196 params += SOFTBUS_ASSIGNER_SIZE; // Skip softbus params, they are matched by SoftbusParamArrayMatcher
197 auto extra = static_cast<TransAuditExtra>(inExtra);
198 int32_t index = 0;
199 MatchTransAuditNameTypeExtraStrParam(params, index, extra.hostPkg);
200 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.result);
201 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.errcode);
202 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.auditType);
203 MatchTransAuditNameTypeExtraStrParam(params, ++index, extra.localIp);
204 MatchTransAuditNameTypeExtraStrParam(params, ++index, extra.localPort);
205 MatchTransAuditNameTypeExtraStrParam(params, ++index, extra.localDevId);
206 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.localDevType);
207 MatchTransAuditNameTypeExtraStrParam(params, ++index, extra.localSessName);
208 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.localChannelId);
209 MatchTransAuditNameTypeExtraStrParam(params, ++index, extra.peerIp);
210 MatchTransAuditNameTypeExtraStrParam(params, ++index, extra.peerPort);
211 MatchTransAuditNameTypeExtraStrParam(params, ++index, extra.peerDevId);
212 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.peerDevType);
213 MatchTransAuditNameTypeExtraStrParam(params, ++index, extra.peerSessName);
214 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.peerChannelId);
215 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.channelType);
216 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.authId);
217 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.reqId);
218 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.linkType);
219 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.connId);
220 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.socketFd);
221 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.dataType);
222 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.dataLen);
223 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.dataSeq);
224 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.costTime);
225 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.dataTraffic);
226 MatchTransAuditNameTypeExtraInt32Param(params, ++index, extra.reqCount);
227
228 EXPECT_EQ(++index, validSize);
229 return true;
230 }
231 #endif // TRANS_HISYSEVENT_MATCHER_H
232