1 /*
2 * Copyright (c) 2024 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 #ifdef GTEST_API_
19 #define private public
20 #define protected public
21 #endif
22
23 #include "net_manager_constants.h"
24 #include "netnative_log_wrapper.h"
25 #include "distributed_manager.h"
26
27 namespace OHOS {
28 namespace NetManagerStandard {
29 namespace {
30 using namespace testing::ext;
31 constexpr const char *DISTRIBUTED_TUN_CARD_NAME = "virnic";
32 } // namespace
33
34 class DistributedManagerTest : public testing::Test {
35 public:
36 static void SetUpTestCase();
37 static void TearDownTestCase();
38 void SetUp();
39 void TearDown();
40 };
41
SetUpTestCase()42 void DistributedManagerTest::SetUpTestCase() {}
43
TearDownTestCase()44 void DistributedManagerTest::TearDownTestCase() {}
45
SetUp()46 void DistributedManagerTest::SetUp() {}
47
TearDown()48 void DistributedManagerTest::TearDown() {}
49
50 HWTEST_F(DistributedManagerTest, CreateDistributedInterface001, TestSize.Level1)
51 {
52 auto result = DistributedManager::GetInstance().CreateDistributedInterface(DISTRIBUTED_TUN_CARD_NAME);
53 EXPECT_EQ(result, NETMANAGER_SUCCESS);
54
55 DistributedManager::GetInstance().DestroyDistributedNic(DISTRIBUTED_TUN_CARD_NAME);
56 }
57
58 HWTEST_F(DistributedManagerTest, SetDistributedNicMtu001, TestSize.Level1)
59 {
60 std::string ifName = "";
61 int32_t testNumber = 0;
62 auto result = DistributedManager::GetInstance().SetDistributedNicMtu(ifName, testNumber);
63 EXPECT_EQ(result, NETMANAGER_ERROR);
64
65 ifName = DISTRIBUTED_TUN_CARD_NAME;
66 testNumber = 1;
67 result = DistributedManager::GetInstance().SetDistributedNicMtu(ifName, testNumber);
68 EXPECT_EQ(result, NETMANAGER_ERROR);
69 }
70
71 HWTEST_F(DistributedManagerTest, SetDistributedNicMtu002, TestSize.Level1)
72 {
73 DistributedManager::GetInstance().CreateDistributedInterface(DISTRIBUTED_TUN_CARD_NAME);
74 std::string ifName = DISTRIBUTED_TUN_CARD_NAME;
75 int32_t testNumber = 1; // func ioctl will be failed, if mtu is too small
76 auto result = DistributedManager::GetInstance().SetDistributedNicMtu(ifName, testNumber);
77 EXPECT_EQ(result, NETMANAGER_ERROR);
78
79 ifName = DISTRIBUTED_TUN_CARD_NAME;
80 testNumber = 1400;
81 result = DistributedManager::GetInstance().SetDistributedNicMtu(ifName, testNumber);
82 DistributedManager::GetInstance().DestroyDistributedNic(DISTRIBUTED_TUN_CARD_NAME);
83 EXPECT_EQ(result, NETMANAGER_SUCCESS);
84 }
85
86 HWTEST_F(DistributedManagerTest, SetDistributedNicAddress001, TestSize.Level1)
87 {
88 std::string ifName = "";
89 std::string tunAddr = "";
90 auto result = DistributedManager::GetInstance().SetDistributedNicAddress(ifName, tunAddr);
91 EXPECT_EQ(result, NETMANAGER_ERROR);
92
93 tunAddr = "1.23.45.6";
94 DistributedManager::GetInstance().CreateDistributedInterface(DISTRIBUTED_TUN_CARD_NAME);
95 result = DistributedManager::GetInstance().SetDistributedNicAddress(DISTRIBUTED_TUN_CARD_NAME, tunAddr);
96 DistributedManager::GetInstance().DestroyDistributedNic(DISTRIBUTED_TUN_CARD_NAME);
97 EXPECT_EQ(result, NETMANAGER_SUCCESS);
98 }
99
100 HWTEST_F(DistributedManagerTest, SetDistributedNicUp001, TestSize.Level1)
101 {
102 auto result = DistributedManager::GetInstance().SetDistributedNicUp(DISTRIBUTED_TUN_CARD_NAME);
103 EXPECT_EQ(result, NETMANAGER_SUCCESS);
104
105 result = DistributedManager::GetInstance().SetDistributedNicDown(DISTRIBUTED_TUN_CARD_NAME);
106 EXPECT_EQ(result, NETMANAGER_SUCCESS);
107 }
108
109 HWTEST_F(DistributedManagerTest, InitIfreq001, TestSize.Level1)
110 {
111 ifreq ifr;
112 std::string cardName = "";
113 auto result = DistributedManager::GetInstance().InitIfreq(ifr, cardName);
114 EXPECT_EQ(result, NETMANAGER_SUCCESS);
115 }
116
117 HWTEST_F(DistributedManagerTest, SetDistributedNicResult001, TestSize.Level1)
118 {
119 std::atomic_int fd = -1;
120 unsigned long cmd = 0;
121 ifreq ifr;
122 auto result = DistributedManager::GetInstance().SetDistributedNicResult(fd, cmd, ifr);
123 EXPECT_EQ(result, NETMANAGER_ERROR);
124 }
125
126 HWTEST_F(DistributedManagerTest, InitIfreq002, TestSize.Level1)
127 {
128 ifreq ifr;
129 std::string cardName = "12345678901234567890";
130 auto result = DistributedManager::GetInstance().InitIfreq(ifr, cardName);
131 EXPECT_EQ(result, NETMANAGER_ERROR);
132 }
133
134 HWTEST_F(DistributedManagerTest, SetDistributedNicMtu003, TestSize.Level1)
135 {
136 std::string ifName = "12345678901234567890";
137 int32_t mtu = 1;
138 auto result = DistributedManager::GetInstance().SetDistributedNicMtu(ifName, mtu);
139 EXPECT_EQ(result, NETMANAGER_ERROR);
140 }
141
142 HWTEST_F(DistributedManagerTest, SetDistributedNicAddress002, TestSize.Level1)
143 {
144 std::string ifName = "12345678901234567890";
145 std::string tunAddr = "123";
146 auto result = DistributedManager::GetInstance().SetDistributedNicAddress(ifName, tunAddr);
147 EXPECT_EQ(result, NETMANAGER_ERROR);
148 ifName = "";
149 result = DistributedManager::GetInstance().SetDistributedNicAddress(ifName, tunAddr);
150 EXPECT_EQ(result, NETMANAGER_ERROR);
151 }
152
153 HWTEST_F(DistributedManagerTest, SetDistributedNicUp002, TestSize.Level1)
154 {
155 std::string ifName = "12345678901234567890";
156 auto result = DistributedManager::GetInstance().SetDistributedNicUp(ifName);
157 EXPECT_EQ(result, NETMANAGER_ERROR);
158 }
159
160 HWTEST_F(DistributedManagerTest, SetDistributedNicDown001, TestSize.Level1)
161 {
162 std::string ifName = "12345678901234567890";
163 auto result = DistributedManager::GetInstance().SetDistributedNicDown(ifName);
164 EXPECT_EQ(result, NETMANAGER_ERROR);
165 }
166
167 HWTEST_F(DistributedManagerTest, CreateDistributedNic001, TestSize.Level1)
168 {
169 std::string virNicAddr = "";
170 std::string ifName = "12345678901234567890";
171 auto result = DistributedManager::GetInstance().CreateDistributedNic(virNicAddr, DISTRIBUTED_TUN_CARD_NAME);
172 EXPECT_EQ(result, NETMANAGER_ERROR);
173 virNicAddr = "1.23.45.6";
174 result = DistributedManager::GetInstance().CreateDistributedNic(virNicAddr, DISTRIBUTED_TUN_CARD_NAME);
175 EXPECT_EQ(result, NETMANAGER_SUCCESS);
176 result = DistributedManager::GetInstance().CreateDistributedNic(virNicAddr, ifName);
177 EXPECT_EQ(result, NETMANAGER_ERROR);
178 }
179
180 HWTEST_F(DistributedManagerTest, CloseDistributedTunFd001, TestSize.Level1)
181 {
182 DistributedManager::GetInstance().CloseDistributedTunFd();
183 auto result = DistributedManager::GetInstance().CreateDistributedInterface(DISTRIBUTED_TUN_CARD_NAME);
184 EXPECT_EQ(result, NETMANAGER_SUCCESS);
185 DistributedManager::GetInstance().CloseDistributedTunFd();
186 }
187
188 HWTEST_F(DistributedManagerTest, ConfigVirnicAndVeth001, TestSize.Level1)
189 {
190 std::string virNicAddr = "";
191 std::string virnicName = "";
192 std::string virnicVethName = "1";
193 auto result = DistributedManager::GetInstance().ConfigVirnicAndVeth(virNicAddr, virnicName, virnicVethName);
194 EXPECT_EQ(result, NETMANAGER_ERROR);
195 virnicName = "1";
196 virnicVethName = "";
197 result = DistributedManager::GetInstance().ConfigVirnicAndVeth(virNicAddr, virnicName, virnicVethName);
198 EXPECT_EQ(result, NETMANAGER_ERROR);
199 virnicName = "";
200 result = DistributedManager::GetInstance().ConfigVirnicAndVeth(virNicAddr, virnicName, virnicVethName);
201 EXPECT_EQ(result, NETMANAGER_ERROR);
202 virnicName = "1";
203 virnicVethName = "1";
204 result = DistributedManager::GetInstance().ConfigVirnicAndVeth(virNicAddr, virnicName, virnicVethName);
205 EXPECT_EQ(result, NETMANAGER_ERROR);
206 virNicAddr = "192.168.1.1";
207 virnicName = "virnic0";
208 virnicVethName = "virnic1";
209 result = DistributedManager::GetInstance().ConfigVirnicAndVeth(virNicAddr, virnicName, virnicVethName);
210 EXPECT_EQ(result, NETMANAGER_SUCCESS);
211 }
212 } // namespace NetManagerStandard
213 } // namespace OHOS
214