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
16 #include <gtest/gtest.h>
17
18 #include "net_manager_constants.h"
19 #include "netsys_controller.h"
20
21 namespace OHOS {
22 namespace NetManagerStandard {
23 namespace {
24 using namespace testing::ext;
25 static constexpr const char *WLAN = "wlan0";
26 static constexpr const char *ETH0 = "eth0";
27 static constexpr const char *DESTINATION = "192.168.1.3/24";
28 static constexpr const char *NEXT_HOP = "192.168.1.1";
29 static constexpr const char *PARCEL_IPV4_ADDR = "192.168.55.121";
30 static constexpr const char *IP_ADDR = "172.17.5.245";
31 static constexpr const char *INTERFACE_NAME = "";
32 static constexpr const char *IF_NAME = "iface0";
33 const int NET_ID = 2;
34 const int PERMISSION = 5;
35 const int PREFIX_LENGTH = 23;
36 const int TEST_MTU = 111;
37 uint16_t BASE_TIMEOUT_MSEC = 200;
38 uint8_t RETRY_COUNT = 3;
39 const int64_t TEST_UID = 1010;
40 const int32_t SOCKET_FD = 5;
41 int g_ifaceFd = 5;
42 const int64_t BYTES = 2097152;
43 const uint32_t FIREWALL_RULE = 1;
44 } // namespace
45
46 class NetsysControllerTest : public testing::Test {
47 public:
48 static void SetUpTestCase();
49
50 static void TearDownTestCase();
51
52 void SetUp();
53
54 void TearDown();
55 };
56
SetUpTestCase()57 void NetsysControllerTest::SetUpTestCase() {}
58
TearDownTestCase()59 void NetsysControllerTest::TearDownTestCase() {}
60
SetUp()61 void NetsysControllerTest::SetUp() {}
62
TearDown()63 void NetsysControllerTest::TearDown() {}
64
65 HWTEST_F(NetsysControllerTest, NetsysControllerTest001, TestSize.Level1)
66 {
67 int32_t ret = NetsysController::GetInstance().NetworkCreatePhysical(NET_ID, PERMISSION);
68 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
69
70 ret = NetsysController::GetInstance().NetworkDestroy(NET_ID);
71 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
72 }
73
74 HWTEST_F(NetsysControllerTest, NetsysControllerTest002, TestSize.Level1)
75 {
76 int32_t ret = NetsysController::GetInstance().NetworkAddInterface(NET_ID, WLAN);
77 EXPECT_EQ(ret, -1);
78
79 ret = NetsysController::GetInstance().NetworkRemoveInterface(NET_ID, WLAN);
80 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
81 }
82
83 HWTEST_F(NetsysControllerTest, NetsysControllerTest003, TestSize.Level1)
84 {
85 int32_t ret = NetsysController::GetInstance().NetworkAddRoute(NET_ID, ETH0, DESTINATION, NEXT_HOP);
86 EXPECT_LE(ret, 0);
87
88 ret = NetsysController::GetInstance().NetworkRemoveRoute(NET_ID, ETH0, DESTINATION, NEXT_HOP);
89 EXPECT_LE(ret, 0);
90 }
91
92 HWTEST_F(NetsysControllerTest, NetsysControllerTest004, TestSize.Level1)
93 {
94 OHOS::nmd::InterfaceConfigurationParcel parcel;
95 parcel.ifName = ETH0;
96 parcel.ipv4Addr = PARCEL_IPV4_ADDR;
97 int32_t ret = NetsysController::GetInstance().InterfaceGetConfig(parcel);
98 EXPECT_EQ(ret, 0);
99 }
100
101 HWTEST_F(NetsysControllerTest, NetsysControllerTest005, TestSize.Level1)
102 {
103 int32_t ret = NetsysController::GetInstance().SetInterfaceDown(ETH0);
104 EXPECT_EQ(ret, 0);
105
106 ret = NetsysController::GetInstance().SetInterfaceUp(ETH0);
107 EXPECT_EQ(ret, 0);
108
109 NetsysController::GetInstance().InterfaceClearAddrs(ETH0);
110 }
111
112 HWTEST_F(NetsysControllerTest, NetsysControllerTest006, TestSize.Level1)
113 {
114 int32_t ret = NetsysController::GetInstance().InterfaceSetMtu(ETH0, TEST_MTU);
115 EXPECT_EQ(ret, -1);
116
117 ret = NetsysController::GetInstance().InterfaceGetMtu(ETH0);
118 EXPECT_EQ(ret, -1);
119 }
120
121 HWTEST_F(NetsysControllerTest, NetsysControllerTest007, TestSize.Level1)
122 {
123 auto ifaceList = NetsysController::GetInstance().InterfaceGetList();
124 bool eth0NotExist = std::find(ifaceList.begin(), ifaceList.end(), std::string(ETH0)) == ifaceList.end();
125 if (eth0NotExist) {
126 return;
127 }
128
129 int32_t ret = NetsysController::GetInstance().InterfaceAddAddress(ETH0, IP_ADDR, PREFIX_LENGTH);
130 EXPECT_EQ(ret, 0);
131
132 ret = NetsysController::GetInstance().InterfaceDelAddress(ETH0, IP_ADDR, PREFIX_LENGTH);
133 EXPECT_EQ(ret, 0);
134 }
135
136 HWTEST_F(NetsysControllerTest, NetsysControllerTest008, TestSize.Level1)
137 {
138 int32_t ret = NetsysController::GetInstance().SetResolverConfig(
139 NET_ID, BASE_TIMEOUT_MSEC, RETRY_COUNT, {}, {});
140 EXPECT_EQ(ret, 0);
141
142 std::vector<std::string> servers;
143 std::vector<std::string> domains;
144 ret = NetsysController::GetInstance().GetResolverConfig(
145 NET_ID, servers, domains, BASE_TIMEOUT_MSEC, RETRY_COUNT);
146 EXPECT_EQ(ret, 0);
147 }
148
149 HWTEST_F(NetsysControllerTest, NetsysControllerTest009, TestSize.Level1)
150 {
151 int32_t ret = NetsysController::GetInstance().CreateNetworkCache(NET_ID);
152 EXPECT_EQ(ret, 0);
153
154 ret = NetsysController::GetInstance().DestroyNetworkCache(NET_ID);
155 EXPECT_EQ(ret, 0);
156 }
157
158 HWTEST_F(NetsysControllerTest, NetsysControllerTest010, TestSize.Level1)
159 {
160 nmd::NetworkSharingTraffic traffic;
161 int32_t ret = NetsysController::GetInstance().GetNetworkSharingTraffic(ETH0, ETH0, traffic);
162 EXPECT_EQ(ret, -1);
163 }
164
165 HWTEST_F(NetsysControllerTest, NetsysControllerTest011, TestSize.Level1)
166 {
167 int32_t ret = NetsysController::GetInstance().GetCellularRxBytes();
168 EXPECT_EQ(ret, 0);
169
170 ret = NetsysController::GetInstance().GetCellularTxBytes();
171 EXPECT_EQ(ret, 0);
172
173 ret = NetsysController::GetInstance().GetAllRxBytes();
174 EXPECT_GE(ret, 0);
175
176 ret = NetsysController::GetInstance().GetUidRxBytes(TEST_UID);
177 EXPECT_EQ(ret, -1);
178
179 ret = NetsysController::GetInstance().GetUidTxBytes(TEST_UID);
180 EXPECT_EQ(ret, -1);
181
182 ret = NetsysController::GetInstance().GetUidOnIfaceRxBytes(TEST_UID, INTERFACE_NAME);
183 EXPECT_GE(ret, 0);
184
185 ret = NetsysController::GetInstance().GetUidOnIfaceTxBytes(TEST_UID, INTERFACE_NAME);
186 EXPECT_GE(ret, 0);
187
188 ret = NetsysController::GetInstance().GetIfaceRxBytes(INTERFACE_NAME);
189 EXPECT_EQ(ret, 0);
190
191 ret = NetsysController::GetInstance().GetIfaceTxBytes(INTERFACE_NAME);
192 EXPECT_EQ(ret, 0);
193 }
194
195 HWTEST_F(NetsysControllerTest, NetsysControllerTest012, TestSize.Level1)
196 {
197 std::vector<std::string> getList = NetsysController::GetInstance().InterfaceGetList();
198 EXPECT_GE(getList.size(), 0);
199
200 getList.clear();
201 getList = NetsysController::GetInstance().UidGetList();
202 EXPECT_EQ(getList.size(), 0);
203
204 int64_t ret = NetsysController::GetInstance().GetIfaceRxPackets(INTERFACE_NAME);
205 EXPECT_EQ(ret, 0);
206
207 ret = NetsysController::GetInstance().GetIfaceTxPackets(INTERFACE_NAME);
208 EXPECT_EQ(ret, 0);
209
210 ret = NetsysController::GetInstance().SetDefaultNetWork(NET_ID);
211 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
212 ret = NetsysController::GetInstance().ClearDefaultNetWorkNetId();
213 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
214 }
215
216 HWTEST_F(NetsysControllerTest, NetsysControllerTest013, TestSize.Level1)
217 {
218 int32_t ret = NetsysController::GetInstance().BindSocket(SOCKET_FD, NET_ID);
219 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
220
221 ret = NetsysController::GetInstance().IpEnableForwarding(INTERFACE_NAME);
222 EXPECT_EQ(ret, 0);
223
224 ret = NetsysController::GetInstance().IpDisableForwarding(INTERFACE_NAME);
225 EXPECT_EQ(ret, 0);
226
227 ret = NetsysController::GetInstance().EnableNat(ETH0, ETH0);
228 EXPECT_NE(ret, 0);
229
230 ret = NetsysController::GetInstance().DisableNat(ETH0, ETH0);
231 EXPECT_NE(ret, 0);
232
233 ret = NetsysController::GetInstance().IpfwdAddInterfaceForward(ETH0, ETH0);
234 EXPECT_NE(ret, 0);
235
236 ret = NetsysController::GetInstance().IpfwdRemoveInterfaceForward(ETH0, ETH0);
237 EXPECT_NE(ret, 0);
238 }
239
240 HWTEST_F(NetsysControllerTest, NetsysControllerTest014, TestSize.Level1)
241 {
242 int32_t ret = NetsysController::GetInstance().ShareDnsSet(NET_ID);
243 EXPECT_EQ(ret, 0);
244
245 ret = NetsysController::GetInstance().StartDnsProxyListen();
246 EXPECT_EQ(ret, 0);
247
248 ret = NetsysController::GetInstance().StopDnsProxyListen();
249 EXPECT_EQ(ret, 0);
250
251 ret = NetsysController::GetInstance().BindNetworkServiceVpn(SOCKET_FD);
252 EXPECT_EQ(ret, 0);
253
254 ifreq ifRequest;
255 ret = NetsysController::GetInstance().EnableVirtualNetIfaceCard(SOCKET_FD, ifRequest, g_ifaceFd);
256 EXPECT_EQ(ret, 0);
257
258 ret = NetsysController::GetInstance().SetIpAddress(SOCKET_FD, IP_ADDR, PREFIX_LENGTH, ifRequest);
259 EXPECT_EQ(ret, 0);
260
261 ret = NetsysController::GetInstance().SetBlocking(g_ifaceFd, true);
262 EXPECT_EQ(ret, 0);
263
264 ret = NetsysController::GetInstance().SetBlocking(g_ifaceFd, false);
265 EXPECT_EQ(ret, 0);
266
267 ret = NetsysController::GetInstance().StartDhcpClient(INTERFACE_NAME, true);
268 EXPECT_EQ(ret, 0);
269
270 ret = NetsysController::GetInstance().StartDhcpClient(INTERFACE_NAME, false);
271 EXPECT_EQ(ret, 0);
272
273 ret = NetsysController::GetInstance().StopDhcpClient(INTERFACE_NAME, true);
274 EXPECT_EQ(ret, 0);
275
276 ret = NetsysController::GetInstance().StopDhcpClient(INTERFACE_NAME, false);
277 EXPECT_EQ(ret, 0);
278
279 ret = NetsysController::GetInstance().StartDhcpService(INTERFACE_NAME, IP_ADDR);
280 EXPECT_EQ(ret, 0);
281
282 ret = NetsysController::GetInstance().StopDhcpService(INTERFACE_NAME);
283 EXPECT_EQ(ret, 0);
284 }
285
286 HWTEST_F(NetsysControllerTest, NetsysControllerTest015, TestSize.Level1)
287 {
288 int32_t ret = NetsysController::GetInstance().BandwidthEnableDataSaver(true);
289 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
290
291 ret = NetsysController::GetInstance().BandwidthSetIfaceQuota(IF_NAME, BYTES);
292 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
293
294 ret = NetsysController::GetInstance().BandwidthSetIfaceQuota(WLAN, BYTES);
295 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
296
297 ret = NetsysController::GetInstance().BandwidthRemoveIfaceQuota(IF_NAME);
298 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
299
300 ret = NetsysController::GetInstance().BandwidthRemoveIfaceQuota(WLAN);
301 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
302
303 ret = NetsysController::GetInstance().BandwidthAddDeniedList(TEST_UID);
304 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
305
306 ret = NetsysController::GetInstance().BandwidthAddAllowedList(TEST_UID);
307 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
308
309 ret = NetsysController::GetInstance().BandwidthRemoveDeniedList(TEST_UID);
310 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
311
312 ret = NetsysController::GetInstance().BandwidthRemoveAllowedList(TEST_UID);
313 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
314
315 std::vector<uint32_t> uids;
316 uids.push_back(TEST_UID);
317 ret = NetsysController::GetInstance().FirewallSetUidsAllowedListChain(TEST_UID, uids);
318 EXPECT_NE(ret, 0);
319 ret = NetsysController::GetInstance().FirewallSetUidsDeniedListChain(TEST_UID, uids);
320 EXPECT_NE(ret, 0);
321
322 ret = NetsysController::GetInstance().FirewallEnableChain(TEST_UID, true);
323 EXPECT_NE(ret, 0);
324
325 ret = NetsysController::GetInstance().FirewallSetUidRule(TEST_UID, TEST_UID, FIREWALL_RULE);
326 EXPECT_NE(ret, 0);
327 }
328 } // namespace NetManagerStandard
329 } // namespace OHOS
330