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 SET_TCP_BUFFER_SIZES = 30,
59 INPUT_QUIT = 100,
60 };
61
62 namespace {
63 std::map<InterfaceMenu, NetsysTestFunc> g_memberFuncMap;
Init()64 void Init()
65 {
66 g_memberFuncMap[InterfaceMenu::SET_RESOLVER_CONFIG] = TestSetResolverConfig;
67 g_memberFuncMap[InterfaceMenu::CREATE_NETWORK_CACHE] = TestCreateNetworkCache;
68 g_memberFuncMap[InterfaceMenu::FLUSH_NETWORK_CACHE] = TestFlushNetworkCache;
69 g_memberFuncMap[InterfaceMenu::DESTROY_NETWORK_CACHE] = TestDestroyNetworkCache;
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 g_memberFuncMap[InterfaceMenu::SET_TCP_BUFFER_SIZES] = TestSetTcpBufferSizes;
97 }
98
Prompt()99 void Prompt()
100 {
101 printf(
102 "\n-----------start test netsys api--------------\n"
103 "0 TestSetResolverConfig\n"
104 "1 TestCreateNetworkCache\n"
105 "2 TestFlushNetworkCache\n"
106 "3 TestDestroyNetworkCache\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 "30 SetTcpBufferSizes\n"
133 "100:exit \n");
134 }
135
GetInputData()136 int32_t GetInputData()
137 {
138 int32_t input;
139 std::cin >> input;
140 while (std::cin.fail()) {
141 std::cin.clear();
142 std::cin.ignore();
143 printf("Input error, please input number again\n");
144 std::cin >> input;
145 }
146 return input;
147 }
148
ProcessInput(bool & loopFlag)149 void ProcessInput(bool &loopFlag)
150 {
151 int32_t inputCMD = GetInputData();
152 printf("Your choice is %d \n", inputCMD);
153 auto itFunc = g_memberFuncMap.find((InterfaceMenu)inputCMD);
154 if (itFunc != g_memberFuncMap.end()) {
155 auto memberFunc = itFunc->second;
156 if (memberFunc != nullptr) {
157 (*memberFunc)();
158 return;
159 }
160 }
161 printf("inputCMD is:[%d]\n", inputCMD);
162 switch (static_cast<InterfaceMenu>(inputCMD)) {
163 case InterfaceMenu::INPUT_QUIT: {
164 loopFlag = false;
165 printf("exit...\n");
166 break;
167 }
168 default:
169 printf("please input correct number...\n");
170 break;
171 }
172 }
173 }
main(int argc,char const * argv[])174 int main(int argc, char const *argv[])
175 {
176 Init();
177 bool loopFlag = true;
178 while (loopFlag) {
179 Prompt();
180 ProcessInput(loopFlag);
181 }
182
183 NETNATIVE_LOGI("...exit test...");
184 return 0;
185 }
186