1 /*
2 * Copyright (c) 2021 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 <iostream>
16 #include <memory>
17
18 #include "iservice_registry.h"
19 #include "netsys_native_service_proxy.h"
20 #include "system_ability_definition.h"
21 #include "netnative_log_wrapper.h"
22 #include "test.h"
23
24 using namespace OHOS;
25 using namespace OHOS::NetsysNative;
26 using namespace OHOS::nmd;
27 enum class InterfaceMenu {
28 SET_RESOLVER_CONFIG = 0,
29 CREATE_NETWORK_CACHE = 1,
30 FLUSH_NETWORK_CACHE = 2,
31 DESTROY_NETWORK_CACHE = 3,
32 GET_ADDR_INFO = 4,
33 INTERFACE_SET_MTU = 5,
34 INTERFACE_GET_MTU = 6,
35 REGISTER_NOTIFY_CALLBACK = 7,
36 NETWORK_ADD_ROUTE = 8,
37 NETWORK_REMOVE_ROUTE = 9,
38 NETWORK_ADD_ROUTE_PARCEL = 10,
39 NETWORK_REMOVE_ROUTE_PARCEL = 11,
40 NETWORK_SET_DEFAULT = 12,
41 NETWORK_GET_DEFAULT = 13,
42 NETWORK_CREATE_PHYSICAL = 14,
43 INTERFACE_ADD_ADDRESS = 15,
44 INTERFACE_DEL_ADDRESS = 16,
45 NETWORK_ADD_INTERFACE = 17,
46 NETWORK_REMOVE_INTERFACE = 18,
47 GET_FWMARK_FOR_NETWORK = 19,
48 INTERFACE_SET_CFG = 20,
49 NETWORK_ClEAR_DEFAULT = 21,
50 GET_PROC_SYS_NET = 22,
51 INTERFACE_GET_CFG = 23,
52 GET_RESOLVER_CONFIG = 24,
53 NETWORK_CLEAR_DEFAULT = 25,
54 NETWORK_GET_DEFAULT_UNION = 26,
55 NETWORK_ADD_INTERFACE_WIFI = 27,
56 NETWORK_REMOVE_INTERFACE_WIFI = 28,
57 NETWORK_SET_DEFAULT_WIFI = 29,
58 INPUT_QUIT = 100,
59 };
60
61 namespace {
62 std::map<InterfaceMenu, NetsysTestFunc> g_memberFuncMap;
Init()63 void Init()
64 {
65 g_memberFuncMap[InterfaceMenu::SET_RESOLVER_CONFIG] = TestSetResolverConfig;
66 g_memberFuncMap[InterfaceMenu::CREATE_NETWORK_CACHE] = TestCreateNetworkCache;
67 g_memberFuncMap[InterfaceMenu::FLUSH_NETWORK_CACHE] = TestFlushNetworkCache;
68 g_memberFuncMap[InterfaceMenu::DESTROY_NETWORK_CACHE] = TestDestroyNetworkCache;
69 g_memberFuncMap[InterfaceMenu::GET_ADDR_INFO] = TestGetaddrinfo;
70 g_memberFuncMap[InterfaceMenu::INTERFACE_SET_MTU] = TestInterfaceSetMtu;
71 g_memberFuncMap[InterfaceMenu::INTERFACE_GET_MTU] = TestInterfaceGetMtu;
72 g_memberFuncMap[InterfaceMenu::REGISTER_NOTIFY_CALLBACK] = TestRegisterNotifyCallback;
73 g_memberFuncMap[InterfaceMenu::NETWORK_ADD_ROUTE] = TestNetworkAddRoute;
74 g_memberFuncMap[InterfaceMenu::NETWORK_REMOVE_ROUTE] = TestNetworkRemoveRoute;
75 g_memberFuncMap[InterfaceMenu::NETWORK_ADD_ROUTE_PARCEL] = TestNetworkAddRouteParcel;
76 g_memberFuncMap[InterfaceMenu::NETWORK_REMOVE_ROUTE_PARCEL] = TestNetWorkRemoveRouteParcel;
77 g_memberFuncMap[InterfaceMenu::NETWORK_SET_DEFAULT] = TestNetworkSetDefault;
78 g_memberFuncMap[InterfaceMenu::NETWORK_GET_DEFAULT] = TestNetworkGetDefault;
79 g_memberFuncMap[InterfaceMenu::NETWORK_CLEAR_DEFAULT] = TestNetworkClearDefault;
80 g_memberFuncMap[InterfaceMenu::NETWORK_CREATE_PHYSICAL] = TestNetworkCreatePhysical;
81 g_memberFuncMap[InterfaceMenu::INTERFACE_ADD_ADDRESS] = TestInterfaceAddAddress;
82 g_memberFuncMap[InterfaceMenu::INTERFACE_DEL_ADDRESS] = TestInterfaceDelAddress;
83 g_memberFuncMap[InterfaceMenu::NETWORK_ADD_INTERFACE] = TestNetworkAddInterface;
84 g_memberFuncMap[InterfaceMenu::NETWORK_REMOVE_INTERFACE] = TestNetworkRemoveInterface;
85 g_memberFuncMap[InterfaceMenu::GET_FWMARK_FOR_NETWORK] = TestGetFwmarkForNetwork;
86 g_memberFuncMap[InterfaceMenu::INTERFACE_SET_CFG] = TestInterfaceSetCfg;
87 g_memberFuncMap[InterfaceMenu::NETWORK_ClEAR_DEFAULT] = TestNetworkClearDefault;
88 g_memberFuncMap[InterfaceMenu::GET_PROC_SYS_NET] = TestNetGetProcSysNet;
89 g_memberFuncMap[InterfaceMenu::INTERFACE_GET_CFG] = TestInterfaceGetCfg;
90 g_memberFuncMap[InterfaceMenu::GET_RESOLVER_CONFIG] = TestGetResolverConfig;
91 g_memberFuncMap[InterfaceMenu::NETWORK_GET_DEFAULT_UNION] = TestNetworkGetDefaultUnion;
92
93 g_memberFuncMap[InterfaceMenu::NETWORK_ADD_INTERFACE_WIFI] = TestNetworkAddInterfaceWIFI;
94 g_memberFuncMap[InterfaceMenu::NETWORK_REMOVE_INTERFACE_WIFI] = TestNetworkRemoveInterfaceWIFI;
95 g_memberFuncMap[InterfaceMenu::NETWORK_SET_DEFAULT_WIFI] = TestNetworkSetDefaultWIFI;
96 }
97
Prompt()98 void Prompt()
99 {
100 printf(
101 "\n-----------start test netsys api--------------\n"
102 "0 TestSetResolverConfig\n"
103 "1 TestCreateNetworkCache\n"
104 "2 TestFlushNetworkCache\n"
105 "3 TestDestroyNetworkCache\n"
106 "4 TestGetaddrinfo\n"
107 "5 TestInterfaceSetMtu\n"
108 "6 TestInterfaceGetMtu\n"
109 "7 TestRegisterNotifyCallback\n"
110 "8 TestNetworkAddRoute\n"
111 "9 TestNetworkRemoveRoute\n"
112 "10 TestNetworkAddRouteParcel\n"
113 "11 TestNetWorkRemoveRouteParcel\n"
114 "12 TestNetworkSetDefault\n"
115 "13 TestNetworkGetDefault\n"
116 "14 TestNetworkCreatePhysical\n"
117 "15 TestInterfaceAddAddress\n"
118 "16 TestInterfaceDelAddress\n"
119 "17 TestNetworkAddInterface\n"
120 "18 TestNetworkRemoveInterface\n"
121 "19 TestGetFwmarkForNetwork\n"
122 "20 TestInterfaceSetCfg\n"
123 "21 TestNetworkClearDefault\n"
124 "22 TestNetGetProcSysNet\n"
125 "23 TestInterfaceGetCfg\n"
126 "24 TestGetResolverConfig\n"
127 "25 TestNetworkClearDefault\n"
128 "26 TestNetworkGetDefaultUnion\n"
129 "27 TestNetworkAddInterfaceWIFI\n"
130 "28 TestNetworkRemoveInterfaceWIFI\n"
131 "29 TestNetworkSetDefaultWIFI\n"
132 "100:exit \n");
133 }
134
GetInputData()135 int32_t GetInputData()
136 {
137 int32_t input;
138 std::cin >> input;
139 while (std::cin.fail()) {
140 std::cin.clear();
141 std::cin.ignore();
142 printf("Input error, please input number again\n");
143 std::cin >> input;
144 }
145 return input;
146 }
147
ProcessInput(bool & loopFlag)148 void ProcessInput(bool &loopFlag)
149 {
150 int32_t inputCMD = GetInputData();
151 printf("Your choice is %d \n", inputCMD);
152 auto itFunc = g_memberFuncMap.find((InterfaceMenu)inputCMD);
153 if (itFunc != g_memberFuncMap.end()) {
154 auto memberFunc = itFunc->second;
155 if (memberFunc != nullptr) {
156 (*memberFunc)();
157 return;
158 }
159 }
160 printf("inputCMD is:[%d]\n", inputCMD);
161 switch (static_cast<InterfaceMenu>(inputCMD)) {
162 case InterfaceMenu::INPUT_QUIT: {
163 loopFlag = false;
164 printf("exit...\n");
165 break;
166 }
167 default:
168 printf("please input correct number...\n");
169 break;
170 }
171 }
172 }
main(int argc,char const * argv[])173 int main(int argc, char const *argv[])
174 {
175 Init();
176 bool loopFlag = true;
177 while (loopFlag) {
178 Prompt();
179 ProcessInput(loopFlag);
180 }
181
182 NETNATIVE_LOGI("...exit test...");
183 return 0;
184 }
185