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::INTERFACE_SET_MTU] = TestInterfaceSetMtu;
70 g_memberFuncMap[InterfaceMenu::INTERFACE_GET_MTU] = TestInterfaceGetMtu;
71 g_memberFuncMap[InterfaceMenu::REGISTER_NOTIFY_CALLBACK] = TestRegisterNotifyCallback;
72 g_memberFuncMap[InterfaceMenu::NETWORK_ADD_ROUTE] = TestNetworkAddRoute;
73 g_memberFuncMap[InterfaceMenu::NETWORK_REMOVE_ROUTE] = TestNetworkRemoveRoute;
74 g_memberFuncMap[InterfaceMenu::NETWORK_ADD_ROUTE_PARCEL] = TestNetworkAddRouteParcel;
75 g_memberFuncMap[InterfaceMenu::NETWORK_REMOVE_ROUTE_PARCEL] = TestNetWorkRemoveRouteParcel;
76 g_memberFuncMap[InterfaceMenu::NETWORK_SET_DEFAULT] = TestNetworkSetDefault;
77 g_memberFuncMap[InterfaceMenu::NETWORK_GET_DEFAULT] = TestNetworkGetDefault;
78 g_memberFuncMap[InterfaceMenu::NETWORK_CLEAR_DEFAULT] = TestNetworkClearDefault;
79 g_memberFuncMap[InterfaceMenu::NETWORK_CREATE_PHYSICAL] = TestNetworkCreatePhysical;
80 g_memberFuncMap[InterfaceMenu::INTERFACE_ADD_ADDRESS] = TestInterfaceAddAddress;
81 g_memberFuncMap[InterfaceMenu::INTERFACE_DEL_ADDRESS] = TestInterfaceDelAddress;
82 g_memberFuncMap[InterfaceMenu::NETWORK_ADD_INTERFACE] = TestNetworkAddInterface;
83 g_memberFuncMap[InterfaceMenu::NETWORK_REMOVE_INTERFACE] = TestNetworkRemoveInterface;
84 g_memberFuncMap[InterfaceMenu::GET_FWMARK_FOR_NETWORK] = TestGetFwmarkForNetwork;
85 g_memberFuncMap[InterfaceMenu::INTERFACE_SET_CFG] = TestInterfaceSetCfg;
86 g_memberFuncMap[InterfaceMenu::NETWORK_ClEAR_DEFAULT] = TestNetworkClearDefault;
87 g_memberFuncMap[InterfaceMenu::GET_PROC_SYS_NET] = TestNetGetProcSysNet;
88 g_memberFuncMap[InterfaceMenu::INTERFACE_GET_CFG] = TestInterfaceGetCfg;
89 g_memberFuncMap[InterfaceMenu::GET_RESOLVER_CONFIG] = TestGetResolverConfig;
90 g_memberFuncMap[InterfaceMenu::NETWORK_GET_DEFAULT_UNION] = TestNetworkGetDefaultUnion;
91
92 g_memberFuncMap[InterfaceMenu::NETWORK_ADD_INTERFACE_WIFI] = TestNetworkAddInterfaceWIFI;
93 g_memberFuncMap[InterfaceMenu::NETWORK_REMOVE_INTERFACE_WIFI] = TestNetworkRemoveInterfaceWIFI;
94 g_memberFuncMap[InterfaceMenu::NETWORK_SET_DEFAULT_WIFI] = TestNetworkSetDefaultWIFI;
95 }
96
Prompt()97 void Prompt()
98 {
99 printf(
100 "\n-----------start test netsys api--------------\n"
101 "0 TestSetResolverConfig\n"
102 "1 TestCreateNetworkCache\n"
103 "2 TestFlushNetworkCache\n"
104 "3 TestDestroyNetworkCache\n"
105 "5 TestInterfaceSetMtu\n"
106 "6 TestInterfaceGetMtu\n"
107 "7 TestRegisterNotifyCallback\n"
108 "8 TestNetworkAddRoute\n"
109 "9 TestNetworkRemoveRoute\n"
110 "10 TestNetworkAddRouteParcel\n"
111 "11 TestNetWorkRemoveRouteParcel\n"
112 "12 TestNetworkSetDefault\n"
113 "13 TestNetworkGetDefault\n"
114 "14 TestNetworkCreatePhysical\n"
115 "15 TestInterfaceAddAddress\n"
116 "16 TestInterfaceDelAddress\n"
117 "17 TestNetworkAddInterface\n"
118 "18 TestNetworkRemoveInterface\n"
119 "19 TestGetFwmarkForNetwork\n"
120 "20 TestInterfaceSetCfg\n"
121 "21 TestNetworkClearDefault\n"
122 "22 TestNetGetProcSysNet\n"
123 "23 TestInterfaceGetCfg\n"
124 "24 TestGetResolverConfig\n"
125 "25 TestNetworkClearDefault\n"
126 "26 TestNetworkGetDefaultUnion\n"
127 "27 TestNetworkAddInterfaceWIFI\n"
128 "28 TestNetworkRemoveInterfaceWIFI\n"
129 "29 TestNetworkSetDefaultWIFI\n"
130 "100:exit \n");
131 }
132
GetInputData()133 int32_t GetInputData()
134 {
135 int32_t input;
136 std::cin >> input;
137 while (std::cin.fail()) {
138 std::cin.clear();
139 std::cin.ignore();
140 printf("Input error, please input number again\n");
141 std::cin >> input;
142 }
143 return input;
144 }
145
ProcessInput(bool & loopFlag)146 void ProcessInput(bool &loopFlag)
147 {
148 int32_t inputCMD = GetInputData();
149 printf("Your choice is %d \n", inputCMD);
150 auto itFunc = g_memberFuncMap.find((InterfaceMenu)inputCMD);
151 if (itFunc != g_memberFuncMap.end()) {
152 auto memberFunc = itFunc->second;
153 if (memberFunc != nullptr) {
154 (*memberFunc)();
155 return;
156 }
157 }
158 printf("inputCMD is:[%d]\n", inputCMD);
159 switch (static_cast<InterfaceMenu>(inputCMD)) {
160 case InterfaceMenu::INPUT_QUIT: {
161 loopFlag = false;
162 printf("exit...\n");
163 break;
164 }
165 default:
166 printf("please input correct number...\n");
167 break;
168 }
169 }
170 }
main(int argc,char const * argv[])171 int main(int argc, char const *argv[])
172 {
173 Init();
174 bool loopFlag = true;
175 while (loopFlag) {
176 Prompt();
177 ProcessInput(loopFlag);
178 }
179
180 NETNATIVE_LOGI("...exit test...");
181 return 0;
182 }
183