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