• 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 
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