• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
24 namespace 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
35 using namespace testing::ext;
36 using namespace testing;
37 class AdapterDsoftbusNetworkTest : public testing::Test {
38 protected:
39     static void SetUpTestCase(void);
40     static void TearDownTestCase(void);
41     void SetUp();
42     void TearDown();
43 };
SetUpTestCase(void)44 void AdapterDsoftbusNetworkTest::SetUpTestCase(void) { }
TearDownTestCase(void)45 void AdapterDsoftbusNetworkTest::TearDownTestCase(void) { }
SetUp()46 void AdapterDsoftbusNetworkTest::SetUp() { }
TearDown()47 void AdapterDsoftbusNetworkTest::TearDown() { }
48 
49 /*
50  * @tc.name: CreateNetlinkSocket
51  * @tc.desc: softbus network test
52  * @tc.type: FUNC
53  * @tc.require:
54  */
55 HWTEST_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  */
84 HWTEST_F(AdapterDsoftbusNetworkTest, ProcessAddrEventTest001, TestSize.Level1)
85 {
86     void *para = nullptr;
87     nlmsghdr nlh1 = {
88         .nlmsg_len = TEST_LEN,
89     };
90     NiceMock<NetworkInterfaceMock> networkMock;
91     ON_CALL(networkMock, LnnGetNetIfTypeByName).WillByDefault(Return(SOFTBUS_OK));
92     ON_CALL(networkMock, SoftBusSocketCreate).WillByDefault(Return(SOFTBUS_OK));
93     ON_CALL(networkMock, SoftBusSocketSetOpt).WillByDefault(Return(SOFTBUS_OK));
94     ON_CALL(networkMock, SoftBusSocketClose).WillByDefault(Return(SOFTBUS_OK));
95     ON_CALL(networkMock, SoftBusSocketBind).WillByDefault(Return(SOFTBUS_OK));
96     ON_CALL(networkMock, SoftBusSocketRecv).WillByDefault(Return(TEST_LISTENER_ID2));
97     ProcessAddrEvent(&nlh1);
98     nlmsghdr nlh2 = {
99         .nlmsg_len = TEST_LEN2,
100     };
101     ProcessAddrEvent(&nlh2);
102     EXPECT_CALL(networkMock, SoftBusSocketRecv).WillOnce(Return(TEST_LEN)).WillRepeatedly(Return(TEST_LISTENER_ID2));
103     NetlinkMonitorThread(para);
104 }
105 
106 /*
107  * @tc.name: LnnOnBtStateChanged
108  * @tc.desc: softbus network test
109  * @tc.type: FUNC
110  * @tc.require:
111  */
112 HWTEST_F(AdapterDsoftbusNetworkTest, LnnOnBtStateChangedTest001, TestSize.Level1)
113 {
114     NiceMock<NetworkInterfaceMock> networkMock;
115     ON_CALL(networkMock, LnnAsyncCallbackHelper).WillByDefault(Return(SOFTBUS_OK));
116     ON_CALL(networkMock, SoftBusAddBtStateListener).WillByDefault(Return(TEST_LISTENER_ID));
117 
118     int32_t listenerId = TEST_LISTENER_ID;
119     int32_t state = TEST_STATE1;
120     SoftBusBtAddr addr;
121     int32_t aclState = TEST_ACL_STATE;
122     LnnOnBtStateChanged(listenerId, state);
123     state = TEST_STATE2;
124     LnnOnBtStateChanged(listenerId, state);
125     state = TEST_STATE3;
126     LnnOnBtStateChanged(listenerId, state);
127     state = TEST_STATE4;
128     LnnOnBtStateChanged(listenerId, state);
129     EXPECT_CALL(networkMock, LnnAsyncCallbackHelper).WillRepeatedly(Return(SOFTBUS_ERR));
130     LnnOnBtStateChanged(listenerId, state);
131     LnnOnBtAclStateChanged(listenerId, &addr, aclState, 0);
132     aclState = TEST_ACL_STATE2;
133     LnnOnBtAclStateChanged(listenerId, &addr, aclState, 0);
134     aclState = TEST_STATE1;
135     LnnOnBtAclStateChanged(listenerId, &addr, aclState, 0);
136     int32_t ret = LnnInitBtStateMonitorImpl();
137     EXPECT_TRUE(ret == SOFTBUS_OK);
138     EXPECT_CALL(networkMock, SoftBusAddBtStateListener).WillRepeatedly(Return(TEST_LISTENER_ID2));
139     ret = LnnInitBtStateMonitorImpl();
140     EXPECT_TRUE(ret == SOFTBUS_ERR);
141 }
142 } // namespace OHOS