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 #include "hisysevent_mock.h" 17 #include "softbus_hisysevent_matcher.h" 18 #include "trans_event.h" 19 #include "trans_hisysevent_matcher.h" 20 #include "gtest/gtest.h" 21 22 using namespace std; 23 using namespace testing; 24 using namespace testing::ext; 25 26 namespace OHOS { 27 class TransEventTest : public testing::Test { }; 28 29 /** 30 * @tc.name: TransEventTest001 31 * @tc.desc: Test trans event form size 32 * @tc.type: FUNC 33 * @tc.require: I8HA59 34 */ 35 HWTEST_F(TransEventTest, TransEventTest001, TestSize.Level0) 36 { 37 TransEventExtra extra = { 38 .result = 1, 39 .errcode = 2233, 40 .socketName = "testSocket", 41 .dataType = 0, // invalid 42 }; 43 constexpr int32_t VALID_EXTRA_SIZE = 4; //result errcode socketName firstTokenId 44 45 HiSysEventMock mock; 46 EXPECT_CALL(mock, 47 HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_EVENT_NAME), Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), _, 48 ParamArraySizeMatcher(VALID_EXTRA_SIZE))) 49 .Times(1); 50 TRANS_EVENT(EVENT_SCENE_OPEN_CHANNEL, EVENT_STAGE_OPEN_CHANNEL_START, extra); 51 } 52 53 /** 54 * @tc.name: TransEventTest002 55 * @tc.desc: Test all valid trans event form items 56 * @tc.type: FUNC 57 * @tc.require: I8HA59 58 */ 59 HWTEST_F(TransEventTest, TransEventTest002, TestSize.Level0) 60 { 61 TransEventExtra validExtra = { 62 .result = 1, 63 .errcode = 2, 64 .socketName = "testSocketName", 65 .dataType = 3, 66 .channelType = 4, 67 .laneId = 5, 68 .preferLinkType = 6, 69 .laneTransType = 7, 70 .channelId = 8, 71 .requestId = 9, 72 .connectionId = 10, 73 .linkType = 11, 74 .authId = 12, 75 .socketFd = 13, 76 .costTime = 14, 77 .channelScore = 15, 78 .peerChannelId = 16, 79 .btFlow = 17, 80 .peerNetworkId = "a8ynvpdaihw1f6nknjd2hkfhxljxypkr6kvjsbhnhpp16974uo4fvsrpfa6t50fm", 81 .peerUdid = "a8ynvpdaihw1f6nknjd2hkfhxljxypkr6kvjsbhnhpp16974uo4fvsrpfa6t50fm", 82 .peerDevVer = "NOH-AN00 peer_device_version", 83 .localUdid = "localpdaihw1f6nknjd2hkfhxljxypkr6kvjsbhnhpp16974uo4fvsrpfa6t50fm", 84 .callerPkg = "testCallerPkg", 85 .calleePkg = "testCalleePkg", 86 .firstTokenName = "testfirstToken", 87 .firstTokenId = 0, 88 .firstTokenType = 1, 89 .trafficStats = "localpdaihw1f6nknjd2hkfhxljxypkr6kvjsbhnhpp16974uo4fvsrpfa6t50fm", 90 .osType = 10, 91 .deviceState = 1, 92 .businessId = 1, 93 .businessType = 1, 94 }; 95 constexpr int32_t VALID_EXTRA_SIZE = TRANS_ASSIGNER_SIZE; 96 97 HiSysEventMock mock; 98 EXPECT_CALL(mock, 99 HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_EVENT_NAME), Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), 100 TransValidParamArrayMatcher(validExtra, VALID_EXTRA_SIZE), ParamArraySizeMatcher(VALID_EXTRA_SIZE))) 101 .Times(1); 102 TRANS_EVENT(EVENT_SCENE_OPEN_CHANNEL, EVENT_STAGE_OPEN_CHANNEL_END, validExtra); 103 } 104 105 /** 106 * @tc.name: TransEventTest003 107 * @tc.desc: Test all invalid trans event form items 108 * @tc.type: FUNC 109 * @tc.require: I8HA59 110 */ 111 HWTEST_F(TransEventTest, TransEventTest003, TestSize.Level0) 112 { 113 TransEventExtra invalidExtra = { 114 .result = -1, // valid 115 .errcode = -2, // valid 116 .socketName = "", 117 .dataType = -3, 118 .channelType = -4, 119 .laneId = -5, 120 .preferLinkType = -6, 121 .laneTransType = -7, 122 .channelId = -8, 123 .requestId = -9, 124 .connectionId = -10, 125 .linkType = -11, 126 .authId = -12, 127 .socketFd = -13, 128 .costTime = -14, 129 .channelScore = -15, 130 .peerChannelId = -16, 131 .btFlow = -17, 132 .peerNetworkId = "", 133 .peerUdid = "", 134 .peerDevVer = "", 135 .localUdid = "", 136 .callerPkg = "\0", 137 .calleePkg = nullptr, 138 .firstTokenName = "", 139 .firstTokenId = 0, 140 .firstTokenType = -1, 141 }; 142 constexpr int32_t VALID_EXTRA_SIZE = 3; // result, errcode and firstTokenId is valid 143 144 HiSysEventMock mock; 145 EXPECT_CALL(mock, 146 HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_EVENT_NAME), Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), 147 TransInvalidParamArrayMatcher(invalidExtra, VALID_EXTRA_SIZE), ParamArraySizeMatcher(VALID_EXTRA_SIZE))) 148 .Times(1); 149 TRANS_EVENT(EVENT_SCENE_CLOSE_CHANNEL_ACTIVE, EVENT_STAGE_CLOSE_CHANNEL, invalidExtra); 150 } 151 152 /** 153 * @tc.name: TransEventTest004 154 * @tc.desc: Test empty trans event form 155 * @tc.type: FUNC 156 * @tc.require: I8HA59 157 */ 158 HWTEST_F(TransEventTest, TransEventTest004, TestSize.Level0) 159 { 160 TransEventExtra emptyExtra = { 0 }; 161 constexpr int32_t VALID_EXTRA_SIZE = 3; // result, errcode and firstTokenId is valid 162 163 HiSysEventMock mock; 164 EXPECT_CALL(mock, 165 HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_EVENT_NAME), Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), 166 TransInvalidParamArrayMatcher(emptyExtra, VALID_EXTRA_SIZE), ParamArraySizeMatcher(VALID_EXTRA_SIZE))) 167 .Times(1); 168 TRANS_EVENT(EVENT_SCENE_CLOSE_CHANNEL_PASSIVE, EVENT_STAGE_CLOSE_CHANNEL, emptyExtra); 169 } 170 171 /** 172 * @tc.name: TransEventTest005 173 * @tc.desc: Test trans event form size 174 * @tc.type: FUNC 175 * @tc.require: I8HA59 176 */ 177 HWTEST_F(TransEventTest, TransEventTest005, TestSize.Level0) 178 { 179 TransAlarmExtra extra = { 180 .conflictName = NULL, 181 .conflictedName = NULL, 182 .occupyedName = NULL, 183 .permissionName = NULL, 184 .sessionName = NULL, 185 .result = 1, 186 .errcode = 2233, 187 .minBw = 32, 188 .linkType = 0, // invalid 189 }; 190 constexpr int32_t VALID_EXTRA_SIZE = 3; 191 192 HiSysEventMock mock; 193 EXPECT_CALL(mock, 194 HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(CONTROL_ALARM_EVENT_NAME), 195 Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), _, ParamArraySizeMatcher(VALID_EXTRA_SIZE))) 196 .Times(1); 197 TRANS_ALARM(BANDWIDTH_INSUFFICIANT_ALARM, CONTROL_ALARM_TYPE, extra); 198 } 199 200 /** 201 * @tc.name: TransEventTest006 202 * @tc.desc: Test all valid trans event form items 203 * @tc.type: FUNC 204 * @tc.require: I8HA59 205 */ 206 HWTEST_F(TransEventTest, TransEventTest006, TestSize.Level0) 207 { 208 TransAlarmExtra validExtra = { 209 .result = 1, 210 .errcode = 2, 211 .callerPid = 3, 212 .linkType = 4, 213 .minBw = 5, 214 .methodId = 6, 215 .duration = 7, 216 .curFlow = 8, 217 .limitFlow = 9, 218 .limitTime = 10, 219 .occupyRes = 11, 220 .syncType = 12, 221 .syncData = 13, 222 .retryCount = 14, 223 .retryReason = 15, 224 .conflictName = "conflictName", 225 .conflictedName = "conflictedName", 226 .occupyedName = "testOccupyName", 227 .permissionName = "testPermissionName", 228 .sessionName = "testSessionName", 229 }; 230 constexpr int32_t VALID_EXTRA_SIZE = TRANS_ALARM_ASSIGNER_SIZE; 231 232 HiSysEventMock mock; 233 EXPECT_CALL(mock, 234 HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(MANAGE_ALARM_EVENT_NAME), 235 Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), TransAlarmValidParamArrayMatcher(validExtra, VALID_EXTRA_SIZE), 236 ParamArraySizeMatcher(VALID_EXTRA_SIZE))) 237 .Times(1); 238 TRANS_ALARM(BANDWIDTH_INSUFFICIANT_ALARM, MANAGE_ALARM_TYPE, validExtra); 239 } 240 241 /** 242 * @tc.name: TransEventTest007 243 * @tc.desc: Test stats 244 * @tc.type: FUNC 245 * @tc.require: I8HA59 246 */ 247 HWTEST_F(TransEventTest, TransEventTest007, TestSize.Level0) 248 { 249 TransEventExtra validExtra = { 250 .result = 1, 251 .errcode = 2, 252 .socketName = "testSocketName", 253 .dataType = 3, 254 .channelType = 4, 255 .laneId = 5, 256 .preferLinkType = 6, 257 .laneTransType = 7, 258 .channelId = 8, 259 .requestId = 9, 260 .connectionId = 10, 261 .linkType = 11, 262 .authId = 12, 263 .socketFd = 13, 264 .costTime = 14, 265 .channelScore = 15, 266 .peerChannelId = 16, 267 .btFlow = 17, 268 .firstTokenId = 0, 269 }; 270 constexpr int32_t VALID_EXTRA_SIZE = 19; 271 HiSysEventMock mock; 272 EXPECT_CALL(mock, 273 HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_EVENT_NAME), Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), _, 274 ParamArraySizeMatcher(VALID_EXTRA_SIZE))) 275 .Times(1); 276 TRANS_EVENT(EVENT_SCENE_BT_FLOW, SOFTBUS_DEFAULT_STAGE, validExtra); 277 278 279 TransEventExtra validExtra1 = { 280 .result = 1, 281 .errcode = 2, 282 .socketName = "testSocketName", 283 .channelScore = 15, 284 .peerChannelId = 16, 285 .peerNetworkId = "testNetworkId", 286 .callerPkg = "testCallerPkg", 287 .calleePkg = "testCalleePkg", 288 .firstTokenId = 0, 289 }; 290 constexpr int32_t VALID_EXTRA_SIZE1 = 9; 291 HiSysEventMock mock1; 292 EXPECT_CALL(mock1, 293 HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_EVENT_NAME), Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), _, 294 ParamArraySizeMatcher(VALID_EXTRA_SIZE1))) 295 .Times(1); 296 TRANS_EVENT(EVENT_SCENE_LANE_SCORE, SOFTBUS_DEFAULT_STAGE, validExtra1); 297 298 TransEventExtra validExtra2 = { 299 .result = 1, 300 .errcode = 2, 301 .peerChannelId = 16, 302 .peerNetworkId = "testNetworkId", 303 .callerPkg = "testCallerPkg", 304 .calleePkg = "testCalleePkg", 305 .firstTokenId = 0, 306 }; 307 constexpr int32_t VALID_EXTRA_SIZE2 = 7; 308 HiSysEventMock mock2; 309 EXPECT_CALL(mock2, 310 HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_EVENT_NAME), Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), _, 311 ParamArraySizeMatcher(VALID_EXTRA_SIZE2))) 312 .Times(1); 313 TRANS_EVENT(EVENT_SCENE_DETECTION, SOFTBUS_DEFAULT_STAGE, validExtra2); 314 315 TransEventExtra validExtra3 = { 316 .result = 1, 317 .errcode = 2, 318 .peerNetworkId = "testNetworkId", 319 .callerPkg = "testCallerPkg", 320 .calleePkg = "testCalleePkg", 321 .firstTokenId = 0, 322 }; 323 constexpr int32_t VALID_EXTRA_SIZE3 = 6; 324 HiSysEventMock mock3; 325 EXPECT_CALL(mock3, 326 HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_EVENT_NAME), Eq(SOFTBUS_EVENT_TYPE_BEHAVIOR), _, 327 ParamArraySizeMatcher(VALID_EXTRA_SIZE3))) 328 .Times(1); 329 TRANS_EVENT(EVENT_SCENE_ACTIVATION, SOFTBUS_DEFAULT_STAGE, validExtra3); 330 } 331 332 /** 333 * @tc.name: TransEventTest008 334 * @tc.desc: Test trans event form size 335 * @tc.type: FUNC 336 * @tc.require: I8HA59 337 */ 338 HWTEST_F(TransEventTest, TransEventTest008, TestSize.Level0) 339 { 340 TransAuditExtra extra = { 341 .localIp = NULL, 342 .localPort = NULL, 343 .localDevId = NULL, 344 .localSessName = NULL, 345 .peerIp = NULL, 346 .peerPort = NULL, 347 .peerDevId = NULL, 348 .peerSessName = NULL, 349 .hostPkg = "a.b.c.transSudit", 350 .result = 2, 351 .errcode = 9527, 352 .auditType = AUDIT_EVENT_MSG_ERROR, 353 }; 354 constexpr int32_t VALID_EXTRA_SIZE = 4; 355 356 HiSysEventMock mock; 357 EXPECT_CALL(mock, 358 HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_AUDIT_NAME), Eq(SOFTBUS_EVENT_TYPE_SECURITY), _, 359 ParamArraySizeMatcher(VALID_EXTRA_SIZE))) 360 .Times(1); 361 TRANS_AUDIT(AUDIT_SCENE_OPEN_SESSION, extra); 362 } 363 364 /** 365 * @tc.name: TransEventTest009 366 * @tc.desc: Test all valid trans event form items 367 * @tc.type: FUNC 368 * @tc.require: I8HA59 369 */ 370 HWTEST_F(TransEventTest, TransEventTest009, TestSize.Level0) 371 { 372 TransAuditExtra validExtra = { 373 .hostPkg = "a.b.c.transAudit", 374 .result = 1, 375 .errcode = 9527, 376 .auditType = AUDIT_EVENT_MSG_ERROR, 377 .localIp = "*1.123", 378 .localPort = "3435", 379 .localDevId = "*A1B2C3456789", 380 .localDevType = 2, 381 .localSessName = "mySessionName", 382 .localChannelId = 1025, 383 .peerIp = "*1.124", 384 .peerPort = "3436", 385 .peerDevId = "*B1C2D345679", 386 .peerDevType = 2, 387 .peerSessName = "youSessionName", 388 .peerChannelId = 15, 389 .channelType = 16, 390 .authId = 1314520, 391 .reqId = 321, 392 .linkType = 2, 393 .connId = 302234, 394 .socketFd = 223, 395 .dataType = 3, 396 .dataLen = 256, 397 .dataSeq = 41, 398 .costTime = 500, 399 .dataTraffic = 4096, 400 .reqCount = 3, 401 }; 402 constexpr int32_t VALID_EXTRA_SIZE = TRANS_AUDIT_ASSIGNER_SIZE; 403 404 HiSysEventMock mock; 405 EXPECT_CALL(mock, 406 HiSysEvent_Write(_, _, StrEq(SOFTBUS_EVENT_DOMAIN), StrEq(TRANS_AUDIT_NAME), Eq(SOFTBUS_EVENT_TYPE_SECURITY), 407 TransAuditValidParamArrayMatcher(validExtra, VALID_EXTRA_SIZE), ParamArraySizeMatcher(VALID_EXTRA_SIZE))) 408 .Times(1); 409 TRANS_AUDIT(AUDIT_SCENE_OPEN_SESSION, validExtra); 410 } 411 } // namespace OHOS 412