1060ff233Sopenharmony_ci/* 2060ff233Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3060ff233Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4060ff233Sopenharmony_ci * you may not use this file except in compliance with the License. 5060ff233Sopenharmony_ci * You may obtain a copy of the License at 6060ff233Sopenharmony_ci * 7060ff233Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8060ff233Sopenharmony_ci * 9060ff233Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10060ff233Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11060ff233Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12060ff233Sopenharmony_ci * See the License for the specific language governing permissions and 13060ff233Sopenharmony_ci * limitations under the License. 14060ff233Sopenharmony_ci */ 15060ff233Sopenharmony_ci#include "gtest/gtest.h" 16060ff233Sopenharmony_ci#include <securec.h> 17060ff233Sopenharmony_ci 18060ff233Sopenharmony_ci#include "network_mock.h" 19060ff233Sopenharmony_ci#include "softbus_errcode.h" 20060ff233Sopenharmony_ci#include "lnn_event_monitor_impl.h" 21060ff233Sopenharmony_ci#include "lnn_bt_monitor.c" 22060ff233Sopenharmony_ci#include "lnn_netlink_monitor.c" 23060ff233Sopenharmony_ci 24060ff233Sopenharmony_cinamespace OHOS { 25060ff233Sopenharmony_ci#define TEST_LEN 5 26060ff233Sopenharmony_ci#define TEST_LEN2 65 27060ff233Sopenharmony_ci#define TEST_LISTENER_ID 20 28060ff233Sopenharmony_ci#define TEST_LISTENER_ID2 (-1) 29060ff233Sopenharmony_ci#define TEST_STATE1 1 30060ff233Sopenharmony_ci#define TEST_STATE2 3 31060ff233Sopenharmony_ci#define TEST_STATE3 5 32060ff233Sopenharmony_ci#define TEST_STATE4 7 33060ff233Sopenharmony_ci#define TEST_ACL_STATE 0 34060ff233Sopenharmony_ci#define TEST_ACL_STATE2 1 35060ff233Sopenharmony_ciusing namespace testing::ext; 36060ff233Sopenharmony_ciusing namespace testing; 37060ff233Sopenharmony_ciclass AdapterDsoftbusNetworkTest : public testing::Test { 38060ff233Sopenharmony_ciprotected: 39060ff233Sopenharmony_ci static void SetUpTestCase(void); 40060ff233Sopenharmony_ci static void TearDownTestCase(void); 41060ff233Sopenharmony_ci void SetUp(); 42060ff233Sopenharmony_ci void TearDown(); 43060ff233Sopenharmony_ci}; 44060ff233Sopenharmony_civoid AdapterDsoftbusNetworkTest::SetUpTestCase(void) { } 45060ff233Sopenharmony_civoid AdapterDsoftbusNetworkTest::TearDownTestCase(void) { } 46060ff233Sopenharmony_civoid AdapterDsoftbusNetworkTest::SetUp() { } 47060ff233Sopenharmony_civoid AdapterDsoftbusNetworkTest::TearDown() { } 48060ff233Sopenharmony_ci 49060ff233Sopenharmony_ci/* 50060ff233Sopenharmony_ci * @tc.name: CreateNetlinkSocket 51060ff233Sopenharmony_ci * @tc.desc: softbus network test 52060ff233Sopenharmony_ci * @tc.type: FUNC 53060ff233Sopenharmony_ci * @tc.require: 54060ff233Sopenharmony_ci */ 55060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusNetworkTest, CreateNetlinkSocketTest001, TestSize.Level1) 56060ff233Sopenharmony_ci{ 57060ff233Sopenharmony_ci NiceMock<NetworkInterfaceMock> networkMock; 58060ff233Sopenharmony_ci ON_CALL(networkMock, SoftBusSocketCreate).WillByDefault(Return(SOFTBUS_OK)); 59060ff233Sopenharmony_ci ON_CALL(networkMock, SoftBusSocketSetOpt).WillByDefault(Return(SOFTBUS_OK)); 60060ff233Sopenharmony_ci ON_CALL(networkMock, SoftBusSocketClose).WillByDefault(Return(SOFTBUS_OK)); 61060ff233Sopenharmony_ci ON_CALL(networkMock, SoftBusSocketBind).WillByDefault(Return(SOFTBUS_OK)); 62060ff233Sopenharmony_ci int32_t ret = CreateNetlinkSocket(); 63060ff233Sopenharmony_ci EXPECT_TRUE(ret == SOFTBUS_OK); 64060ff233Sopenharmony_ci EXPECT_CALL(networkMock, SoftBusSocketCreate).WillOnce(Return(SOFTBUS_ERR)).WillRepeatedly(Return(SOFTBUS_OK)); 65060ff233Sopenharmony_ci ret = CreateNetlinkSocket(); 66060ff233Sopenharmony_ci EXPECT_TRUE(ret == SOFTBUS_ERR); 67060ff233Sopenharmony_ci EXPECT_CALL(networkMock, SoftBusSocketSetOpt) 68060ff233Sopenharmony_ci .WillOnce(Return(SOFTBUS_ERR)) 69060ff233Sopenharmony_ci .WillOnce(Return(SOFTBUS_ERR)) 70060ff233Sopenharmony_ci .WillRepeatedly(Return(SOFTBUS_OK)); 71060ff233Sopenharmony_ci ret = CreateNetlinkSocket(); 72060ff233Sopenharmony_ci EXPECT_TRUE(ret == SOFTBUS_ERR); 73060ff233Sopenharmony_ci EXPECT_CALL(networkMock, SoftBusSocketBind).WillOnce(Return(SOFTBUS_ERR)).WillRepeatedly(Return(SOFTBUS_OK)); 74060ff233Sopenharmony_ci ret = CreateNetlinkSocket(); 75060ff233Sopenharmony_ci EXPECT_TRUE(ret == SOFTBUS_ERR); 76060ff233Sopenharmony_ci} 77060ff233Sopenharmony_ci 78060ff233Sopenharmony_ci/* 79060ff233Sopenharmony_ci * @tc.name: ProcessAddrEvent 80060ff233Sopenharmony_ci * @tc.desc: softbus network test 81060ff233Sopenharmony_ci * @tc.type: FUNC 82060ff233Sopenharmony_ci * @tc.require: 83060ff233Sopenharmony_ci */ 84060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusNetworkTest, ProcessAddrEventTest001, TestSize.Level1) 85060ff233Sopenharmony_ci{ 86060ff233Sopenharmony_ci nlmsghdr nlh1 = { 87060ff233Sopenharmony_ci .nlmsg_len = TEST_LEN, 88060ff233Sopenharmony_ci }; 89060ff233Sopenharmony_ci NiceMock<NetworkInterfaceMock> networkMock; 90060ff233Sopenharmony_ci ON_CALL(networkMock, LnnGetNetIfTypeByName).WillByDefault(Return(SOFTBUS_OK)); 91060ff233Sopenharmony_ci ON_CALL(networkMock, SoftBusSocketCreate).WillByDefault(Return(SOFTBUS_OK)); 92060ff233Sopenharmony_ci ON_CALL(networkMock, SoftBusSocketSetOpt).WillByDefault(Return(SOFTBUS_OK)); 93060ff233Sopenharmony_ci ON_CALL(networkMock, SoftBusSocketClose).WillByDefault(Return(SOFTBUS_OK)); 94060ff233Sopenharmony_ci ON_CALL(networkMock, SoftBusSocketBind).WillByDefault(Return(SOFTBUS_OK)); 95060ff233Sopenharmony_ci ON_CALL(networkMock, SoftBusSocketRecv).WillByDefault(Return(TEST_LISTENER_ID2)); 96060ff233Sopenharmony_ci ProcessAddrEvent(&nlh1); 97060ff233Sopenharmony_ci nlmsghdr nlh2 = { 98060ff233Sopenharmony_ci .nlmsg_len = TEST_LEN2, 99060ff233Sopenharmony_ci }; 100060ff233Sopenharmony_ci ProcessAddrEvent(&nlh2); 101060ff233Sopenharmony_ci EXPECT_TRUE(NetlinkOnConnectEvent(NETLINK, -1, nullptr) == SOFTBUS_OK); 102060ff233Sopenharmony_ci EXPECT_TRUE(NetlinkOnDataEvent(NETLINK, SOFTBUS_SOCKET_OUT, -1) == SOFTBUS_INVALID_PARAM); 103060ff233Sopenharmony_ci EXPECT_CALL(networkMock, SoftBusSocketRecv).WillOnce(Return(TEST_LEN)).WillRepeatedly(Return(TEST_LISTENER_ID2)); 104060ff233Sopenharmony_ci EXPECT_TRUE(NetlinkOnDataEvent(NETLINK, SOFTBUS_SOCKET_IN, 0) == SOFTBUS_SOCKET_EXCEPTION); 105060ff233Sopenharmony_ci} 106060ff233Sopenharmony_ci 107060ff233Sopenharmony_ci/* 108060ff233Sopenharmony_ci * @tc.name: LnnOnBtStateChanged 109060ff233Sopenharmony_ci * @tc.desc: softbus network test 110060ff233Sopenharmony_ci * @tc.type: FUNC 111060ff233Sopenharmony_ci * @tc.require: 112060ff233Sopenharmony_ci */ 113060ff233Sopenharmony_ciHWTEST_F(AdapterDsoftbusNetworkTest, LnnOnBtStateChangedTest001, TestSize.Level1) 114060ff233Sopenharmony_ci{ 115060ff233Sopenharmony_ci NiceMock<NetworkInterfaceMock> networkMock; 116060ff233Sopenharmony_ci ON_CALL(networkMock, LnnAsyncCallbackHelper).WillByDefault(Return(SOFTBUS_OK)); 117060ff233Sopenharmony_ci ON_CALL(networkMock, SoftBusAddBtStateListener).WillByDefault(Return(TEST_LISTENER_ID)); 118060ff233Sopenharmony_ci 119060ff233Sopenharmony_ci int32_t listenerId = TEST_LISTENER_ID; 120060ff233Sopenharmony_ci int32_t state = TEST_STATE1; 121060ff233Sopenharmony_ci SoftBusBtAddr addr; 122060ff233Sopenharmony_ci int32_t aclState = TEST_ACL_STATE; 123060ff233Sopenharmony_ci LnnOnBtStateChanged(listenerId, state); 124060ff233Sopenharmony_ci state = TEST_STATE2; 125060ff233Sopenharmony_ci LnnOnBtStateChanged(listenerId, state); 126060ff233Sopenharmony_ci state = TEST_STATE3; 127060ff233Sopenharmony_ci LnnOnBtStateChanged(listenerId, state); 128060ff233Sopenharmony_ci state = TEST_STATE4; 129060ff233Sopenharmony_ci LnnOnBtStateChanged(listenerId, state); 130060ff233Sopenharmony_ci EXPECT_CALL(networkMock, LnnAsyncCallbackHelper).WillRepeatedly(Return(SOFTBUS_ERR)); 131060ff233Sopenharmony_ci LnnOnBtStateChanged(listenerId, state); 132060ff233Sopenharmony_ci LnnOnBtAclStateChanged(listenerId, &addr, aclState, 0); 133060ff233Sopenharmony_ci aclState = TEST_ACL_STATE2; 134060ff233Sopenharmony_ci LnnOnBtAclStateChanged(listenerId, &addr, aclState, 0); 135060ff233Sopenharmony_ci aclState = TEST_STATE1; 136060ff233Sopenharmony_ci LnnOnBtAclStateChanged(listenerId, &addr, aclState, 0); 137060ff233Sopenharmony_ci int32_t ret = LnnInitBtStateMonitorImpl(); 138060ff233Sopenharmony_ci EXPECT_TRUE(ret == SOFTBUS_OK); 139060ff233Sopenharmony_ci EXPECT_CALL(networkMock, SoftBusAddBtStateListener).WillRepeatedly(Return(TEST_LISTENER_ID2)); 140060ff233Sopenharmony_ci ret = LnnInitBtStateMonitorImpl(); 141060ff233Sopenharmony_ci EXPECT_TRUE(ret == SOFTBUS_ERR); 142060ff233Sopenharmony_ci} 143060ff233Sopenharmony_ci} // namespace OHOS