• 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::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