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 CONN_HISYSEVENT_MATCHER_H
17 #define CONN_HISYSEVENT_MATCHER_H
18
19 #include <gmock/gmock.h>
20
21 #include "convert/conn_audit_converter.h"
22 #include "convert/conn_event_converter.h"
23 #include "hisysevent_c.h"
24 #include "softbus_event.h"
25
MatchConnEventNameTypeExtraInt32Param(const HiSysEventParam * params,int32_t index,int32_t extraParam)26 static void MatchConnEventNameTypeExtraInt32Param(const HiSysEventParam *params, int32_t index, int32_t extraParam)
27 {
28 EXPECT_STREQ(params[index].name, g_connAssigners[index].name);
29 EXPECT_EQ(params[index].t, g_connAssigners[index].type);
30 EXPECT_EQ(params[index].v.i32, extraParam);
31 }
32
MatchConnEventNameTypeExtraUint32Param(const HiSysEventParam * params,int32_t index,uint32_t extraParam)33 static void MatchConnEventNameTypeExtraUint32Param(const HiSysEventParam *params, int32_t index, uint32_t extraParam)
34 {
35 EXPECT_STREQ(params[index].name, g_connAssigners[index].name);
36 EXPECT_EQ(params[index].t, g_connAssigners[index].type);
37 EXPECT_EQ(params[index].v.ui32, extraParam);
38 }
39
MatchConnEventNameTypeExtraUint64Param(const HiSysEventParam * params,int32_t index,uint64_t extraParam)40 static void MatchConnEventNameTypeExtraUint64Param(const HiSysEventParam *params, int32_t index, uint64_t extraParam)
41 {
42 EXPECT_STREQ(params[index].name, g_connAssigners[index].name);
43 EXPECT_EQ(params[index].t, g_connAssigners[index].type);
44 EXPECT_EQ(params[index].v.ui64, extraParam);
45 }
46
MatchConnEventNameTypeExtraStrParam(const HiSysEventParam * params,int32_t index,const char * extraParam)47 static void MatchConnEventNameTypeExtraStrParam(const HiSysEventParam *params, int32_t index, const char * extraParam)
48 {
49 EXPECT_STREQ(params[index].name, g_connAssigners[index].name);
50 EXPECT_EQ(params[index].t, g_connAssigners[index].type);
51 EXPECT_STREQ(params[index].v.s, extraParam);
52 }
53
MatchConnEventNameTypeExtraStrParamAnony(const HiSysEventParam * params,int32_t index,const char * extraParam)54 static void MatchConnEventNameTypeExtraStrParamAnony(const HiSysEventParam *params, int32_t index,
55 const char * extraParam)
56 {
57 char *anonyStr = NULL;
58 EXPECT_STREQ(params[index].name, g_connAssigners[index].name);
59 EXPECT_EQ(params[index].t, g_connAssigners[index].type);
60
61 Anonymize(extraParam, &anonyStr);
62 EXPECT_STREQ(params[index].v.s, AnonymizeWrapper(anonyStr));
63 AnonymizeFree(anonyStr);
64 }
65
66 MATCHER_P2(ConnValidParamArrayMatcher, inExtra, validSize, "conn valid param array match fail")
67 {
68 const auto *params = static_cast<const HiSysEventParam *>(arg);
69 params += SOFTBUS_ASSIGNER_SIZE; // Skip softbus params, they are matched by SoftbusParamArrayMatcher
70 auto extra = static_cast<ConnEventExtra>(inExtra);
71 int32_t index = 0;
72 MatchConnEventNameTypeExtraInt32Param(params, index, extra.result);
73 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.errcode);
74 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.connectionId);
75 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.requestId);
76 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.linkType);
77 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.authType);
78 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.authId);
79 MatchConnEventNameTypeExtraStrParam(params, ++index, extra.lnnType);
80 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.expectRole);
81 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.costTime);
82 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.rssi);
83 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.load);
84 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.frequency);
85 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.connProtocol);
86 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.connRole);
87 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.connRcDelta);
88 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.connRc);
89 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.supportFeature);
90 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.moduleId);
91 MatchConnEventNameTypeExtraUint32Param(params, ++index, extra.proType);
92 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.fd);
93 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.cfd);
94 MatchConnEventNameTypeExtraStrParam(params, ++index, extra.challengeCode);
95 MatchConnEventNameTypeExtraStrParamAnony(params, ++index, extra.peerIp);
96 MatchConnEventNameTypeExtraStrParamAnony(params, ++index, extra.peerBrMac);
97 MatchConnEventNameTypeExtraStrParamAnony(params, ++index, extra.peerBleMac);
98 MatchConnEventNameTypeExtraStrParamAnony(params, ++index, extra.peerWifiMac);
99 MatchConnEventNameTypeExtraStrParam(params, ++index, extra.peerPort);
100 MatchConnEventNameTypeExtraStrParamAnony(params, ++index, extra.peerNetworkId);
101 MatchConnEventNameTypeExtraStrParamAnony(params, ++index, extra.peerUdid);
102 MatchConnEventNameTypeExtraStrParam(params, ++index, extra.peerDeviceType);
103 MatchConnEventNameTypeExtraStrParamAnony(params, ++index, extra.localNetworkId);
104 MatchConnEventNameTypeExtraStrParam(params, ++index, extra.callerPkg);
105 MatchConnEventNameTypeExtraStrParam(params, ++index, extra.calleePkg);
106 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.bootLinkType);
107 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.isRenegotiate);
108 MatchConnEventNameTypeExtraInt32Param(params, ++index, extra.isReuse);
109 MatchConnEventNameTypeExtraUint64Param(params, ++index, extra.negotiateTime);
110 MatchConnEventNameTypeExtraUint64Param(params, ++index, extra.linkTime);
111 EXPECT_EQ(++index, validSize);
112 return true;
113 }
114
115 MATCHER_P2(ConnInvalidParamArrayMatcher, inExtra, validSize, "conn invalid param array match fail")
116 {
117 const auto *params = static_cast<const HiSysEventParam *>(arg);
118 params += SOFTBUS_ASSIGNER_SIZE; // Skip softbus params, they are matched by SoftbusParamArrayMatcher
119 auto extra = static_cast<ConnEventExtra>(inExtra);
120 int32_t index = 0;
121 MatchConnEventNameTypeExtraInt32Param(params, index, ((extra.result < 0) ? (-extra.result) : extra.result));
122 MatchConnEventNameTypeExtraInt32Param(params, ++index, ((extra.errcode < 0) ? (-extra.errcode) : extra.errcode));
123 EXPECT_EQ(++index, validSize);
124 return true;
125 }
126
MatchConnAuditNameTypeExtraInt32Param(const HiSysEventParam * params,int32_t index,int32_t extraParam)127 static void MatchConnAuditNameTypeExtraInt32Param(const HiSysEventParam *params, int32_t index, int32_t extraParam)
128 {
129 EXPECT_STREQ(params[index].name, g_connAuditAssigners[index].name);
130 EXPECT_EQ(params[index].t, g_connAuditAssigners[index].type);
131 EXPECT_EQ(params[index].v.i32, extraParam);
132 }
133
MatchConnAuditNameTypeExtraStrParam(const HiSysEventParam * params,int32_t index,const char * extraParam)134 static void MatchConnAuditNameTypeExtraStrParam(const HiSysEventParam *params, int32_t index, const char *extraParam)
135 {
136 EXPECT_STREQ(params[index].name, g_connAuditAssigners[index].name);
137 EXPECT_EQ(params[index].t, g_connAuditAssigners[index].type);
138 EXPECT_STREQ(params[index].v.s, extraParam);
139 }
140
141 MATCHER_P2(ConnAuditValidParamArrayMatcher, inExtra, validSize, "conn valid param array match fail")
142 {
143 const auto *params = static_cast<const HiSysEventParam *>(arg);
144 params += SOFTBUS_ASSIGNER_SIZE; // Skip softbus params, they are matched by SoftbusParamArrayMatcher
145 auto extra = static_cast<ConnAuditExtra>(inExtra);
146 int32_t index = 0;
147
148 MatchConnAuditNameTypeExtraInt32Param(params, index, extra.errcode);
149 MatchConnAuditNameTypeExtraInt32Param(params, ++index, extra.auditType);
150 MatchConnAuditNameTypeExtraInt32Param(params, ++index, extra.connectionId);
151 MatchConnAuditNameTypeExtraInt32Param(params, ++index, extra.requestId);
152 MatchConnAuditNameTypeExtraInt32Param(params, ++index, extra.linkType);
153 MatchConnAuditNameTypeExtraInt32Param(params, ++index, extra.expectRole);
154 MatchConnAuditNameTypeExtraInt32Param(params, ++index, extra.costTime);
155 MatchConnAuditNameTypeExtraInt32Param(params, ++index, extra.connectTimes);
156 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.frequency);
157 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.challengeCode);
158 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.peerBrMac);
159 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.localBrMac);
160 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.peerBleMac);
161 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.localBleMac);
162 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.peerDeviceType);
163 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.peerUdid);
164 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.localUdid);
165 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.connPayload);
166 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.localDeviceName);
167 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.peerIp);
168 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.localIp);
169 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.callerPkg);
170 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.calleePkg);
171 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.peerPort);
172 MatchConnAuditNameTypeExtraStrParam(params, ++index, extra.localPort);
173
174 EXPECT_EQ(++index, validSize);
175 return true;
176 }
177 #endif // CONN_HISYSEVENT_MATCHER_H
178