• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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