1/* 2 * Copyright (c) 2022 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#include "gtest/gtest.h" 16#include <securec.h> 17 18#include "network_mock.h" 19#include "softbus_errcode.h" 20#include "lnn_event_monitor_impl.h" 21#include "lnn_bt_monitor.c" 22#include "lnn_netlink_monitor.c" 23 24namespace OHOS { 25#define TEST_LEN 5 26#define TEST_LEN2 65 27#define TEST_LISTENER_ID 20 28#define TEST_LISTENER_ID2 (-1) 29#define TEST_STATE1 1 30#define TEST_STATE2 3 31#define TEST_STATE3 5 32#define TEST_STATE4 7 33#define TEST_ACL_STATE 0 34#define TEST_ACL_STATE2 1 35using namespace testing::ext; 36using namespace testing; 37class AdapterDsoftbusNetworkTest : public testing::Test { 38protected: 39 static void SetUpTestCase(void); 40 static void TearDownTestCase(void); 41 void SetUp(); 42 void TearDown(); 43}; 44void AdapterDsoftbusNetworkTest::SetUpTestCase(void) { } 45void AdapterDsoftbusNetworkTest::TearDownTestCase(void) { } 46void AdapterDsoftbusNetworkTest::SetUp() { } 47void AdapterDsoftbusNetworkTest::TearDown() { } 48 49/* 50 * @tc.name: CreateNetlinkSocket 51 * @tc.desc: softbus network test 52 * @tc.type: FUNC 53 * @tc.require: 54 */ 55HWTEST_F(AdapterDsoftbusNetworkTest, CreateNetlinkSocketTest001, TestSize.Level1) 56{ 57 NiceMock<NetworkInterfaceMock> networkMock; 58 ON_CALL(networkMock, SoftBusSocketCreate).WillByDefault(Return(SOFTBUS_OK)); 59 ON_CALL(networkMock, SoftBusSocketSetOpt).WillByDefault(Return(SOFTBUS_OK)); 60 ON_CALL(networkMock, SoftBusSocketClose).WillByDefault(Return(SOFTBUS_OK)); 61 ON_CALL(networkMock, SoftBusSocketBind).WillByDefault(Return(SOFTBUS_OK)); 62 int32_t ret = CreateNetlinkSocket(); 63 EXPECT_TRUE(ret == SOFTBUS_OK); 64 EXPECT_CALL(networkMock, SoftBusSocketCreate).WillOnce(Return(SOFTBUS_ERR)).WillRepeatedly(Return(SOFTBUS_OK)); 65 ret = CreateNetlinkSocket(); 66 EXPECT_TRUE(ret == SOFTBUS_ERR); 67 EXPECT_CALL(networkMock, SoftBusSocketSetOpt) 68 .WillOnce(Return(SOFTBUS_ERR)) 69 .WillOnce(Return(SOFTBUS_ERR)) 70 .WillRepeatedly(Return(SOFTBUS_OK)); 71 ret = CreateNetlinkSocket(); 72 EXPECT_TRUE(ret == SOFTBUS_ERR); 73 EXPECT_CALL(networkMock, SoftBusSocketBind).WillOnce(Return(SOFTBUS_ERR)).WillRepeatedly(Return(SOFTBUS_OK)); 74 ret = CreateNetlinkSocket(); 75 EXPECT_TRUE(ret == SOFTBUS_ERR); 76} 77 78/* 79 * @tc.name: ProcessAddrEvent 80 * @tc.desc: softbus network test 81 * @tc.type: FUNC 82 * @tc.require: 83 */ 84HWTEST_F(AdapterDsoftbusNetworkTest, ProcessAddrEventTest001, TestSize.Level1) 85{ 86 nlmsghdr nlh1 = { 87 .nlmsg_len = TEST_LEN, 88 }; 89 NiceMock<NetworkInterfaceMock> networkMock; 90 ON_CALL(networkMock, LnnGetNetIfTypeByName).WillByDefault(Return(SOFTBUS_OK)); 91 ON_CALL(networkMock, SoftBusSocketCreate).WillByDefault(Return(SOFTBUS_OK)); 92 ON_CALL(networkMock, SoftBusSocketSetOpt).WillByDefault(Return(SOFTBUS_OK)); 93 ON_CALL(networkMock, SoftBusSocketClose).WillByDefault(Return(SOFTBUS_OK)); 94 ON_CALL(networkMock, SoftBusSocketBind).WillByDefault(Return(SOFTBUS_OK)); 95 ON_CALL(networkMock, SoftBusSocketRecv).WillByDefault(Return(TEST_LISTENER_ID2)); 96 ProcessAddrEvent(&nlh1); 97 nlmsghdr nlh2 = { 98 .nlmsg_len = TEST_LEN2, 99 }; 100 ProcessAddrEvent(&nlh2); 101 EXPECT_TRUE(NetlinkOnConnectEvent(NETLINK, -1, nullptr) == SOFTBUS_OK); 102 EXPECT_TRUE(NetlinkOnDataEvent(NETLINK, SOFTBUS_SOCKET_OUT, -1) == SOFTBUS_INVALID_PARAM); 103 EXPECT_CALL(networkMock, SoftBusSocketRecv).WillOnce(Return(TEST_LEN)).WillRepeatedly(Return(TEST_LISTENER_ID2)); 104 EXPECT_TRUE(NetlinkOnDataEvent(NETLINK, SOFTBUS_SOCKET_IN, 0) == SOFTBUS_SOCKET_EXCEPTION); 105} 106 107/* 108 * @tc.name: LnnOnBtStateChanged 109 * @tc.desc: softbus network test 110 * @tc.type: FUNC 111 * @tc.require: 112 */ 113HWTEST_F(AdapterDsoftbusNetworkTest, LnnOnBtStateChangedTest001, TestSize.Level1) 114{ 115 NiceMock<NetworkInterfaceMock> networkMock; 116 ON_CALL(networkMock, LnnAsyncCallbackHelper).WillByDefault(Return(SOFTBUS_OK)); 117 ON_CALL(networkMock, SoftBusAddBtStateListener).WillByDefault(Return(TEST_LISTENER_ID)); 118 119 int32_t listenerId = TEST_LISTENER_ID; 120 int32_t state = TEST_STATE1; 121 SoftBusBtAddr addr; 122 int32_t aclState = TEST_ACL_STATE; 123 LnnOnBtStateChanged(listenerId, state); 124 state = TEST_STATE2; 125 LnnOnBtStateChanged(listenerId, state); 126 state = TEST_STATE3; 127 LnnOnBtStateChanged(listenerId, state); 128 state = TEST_STATE4; 129 LnnOnBtStateChanged(listenerId, state); 130 EXPECT_CALL(networkMock, LnnAsyncCallbackHelper).WillRepeatedly(Return(SOFTBUS_ERR)); 131 LnnOnBtStateChanged(listenerId, state); 132 LnnOnBtAclStateChanged(listenerId, &addr, aclState, 0); 133 aclState = TEST_ACL_STATE2; 134 LnnOnBtAclStateChanged(listenerId, &addr, aclState, 0); 135 aclState = TEST_STATE1; 136 LnnOnBtAclStateChanged(listenerId, &addr, aclState, 0); 137 int32_t ret = LnnInitBtStateMonitorImpl(); 138 EXPECT_TRUE(ret == SOFTBUS_OK); 139 EXPECT_CALL(networkMock, SoftBusAddBtStateListener).WillRepeatedly(Return(TEST_LISTENER_ID2)); 140 ret = LnnInitBtStateMonitorImpl(); 141 EXPECT_TRUE(ret == SOFTBUS_ERR); 142} 143} // namespace OHOS