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