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