1570af302Sopenharmony_ci/**
2570af302Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3570af302Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4570af302Sopenharmony_ci * you may not use this file except in compliance with the License.
5570af302Sopenharmony_ci * You may obtain a copy of the License at
6570af302Sopenharmony_ci *
7570af302Sopenharmony_ci *   http://www.apache.org/licenses/LICENSE-2.0
8570af302Sopenharmony_ci *
9570af302Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10570af302Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11570af302Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12570af302Sopenharmony_ci * See the License for the specific language governing permissions and
13570af302Sopenharmony_ci * limitations under the License.
14570af302Sopenharmony_ci */
15570af302Sopenharmony_ci
16570af302Sopenharmony_ci#include <dlfcn.h>
17570af302Sopenharmony_ci#include <errno.h>
18570af302Sopenharmony_ci#include <stdio.h>
19570af302Sopenharmony_ci#include <string.h>
20570af302Sopenharmony_ci
21570af302Sopenharmony_ci#include "dlns_test.h"
22570af302Sopenharmony_ci#include "functionalext.h"
23570af302Sopenharmony_ci
24570af302Sopenharmony_ci/**
25570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_lib_path_0100
26570af302Sopenharmony_ci * @tc.desc      : When name is no namespace created, call dlns_set_namespace_lib_path
27570af302Sopenharmony_ci * @tc.level     : Level 2
28570af302Sopenharmony_ci */
29570af302Sopenharmony_civoid dlns_set_namespace_lib_path_0100(void)
30570af302Sopenharmony_ci{
31570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_lib_path_0100",
32570af302Sopenharmony_ci        dlns_set_namespace_lib_path("dlns_set_namespace_lib_path_0100", path), ENOKEY);
33570af302Sopenharmony_ci}
34570af302Sopenharmony_ci
35570af302Sopenharmony_ci/**
36570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_lib_path_0200
37570af302Sopenharmony_ci * @tc.desc      : When name is a created namespace, call dlns_set_namespace_lib_path
38570af302Sopenharmony_ci * @tc.level     : Level 2
39570af302Sopenharmony_ci */
40570af302Sopenharmony_civoid dlns_set_namespace_lib_path_0200(void)
41570af302Sopenharmony_ci{
42570af302Sopenharmony_ci    Dl_namespace dlns;
43570af302Sopenharmony_ci    dlns_init(&dlns, "dlns_set_namespace_lib_path_0200");
44570af302Sopenharmony_ci
45570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_lib_path_0200", dlns_create(&dlns, NULL), EOK);
46570af302Sopenharmony_ci
47570af302Sopenharmony_ci    void* handle = dlopen_ns(&dlns, dllName_set_002, RTLD_LAZY);
48570af302Sopenharmony_ci    EXPECT_FALSE("dlns_set_namespace_lib_path_0200", handle);
49570af302Sopenharmony_ci
50570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_lib_path_0200",
51570af302Sopenharmony_ci        dlns_set_namespace_lib_path("dlns_set_namespace_lib_path_0200", path), EOK);
52570af302Sopenharmony_ci
53570af302Sopenharmony_ci    handle = dlopen_ns(&dlns, dllName_set_002, RTLD_LAZY);
54570af302Sopenharmony_ci    EXPECT_TRUE("dlns_set_namespace_lib_path_0200", handle);
55570af302Sopenharmony_ci    dlclose(handle);
56570af302Sopenharmony_ci}
57570af302Sopenharmony_ci
58570af302Sopenharmony_ci/**
59570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_lib_path_0300
60570af302Sopenharmony_ci * @tc.desc      : When name=NULL, call dlns_set_namespace_lib_path
61570af302Sopenharmony_ci * @tc.level     : Level 2
62570af302Sopenharmony_ci */
63570af302Sopenharmony_civoid dlns_set_namespace_lib_path_0300(void)
64570af302Sopenharmony_ci{
65570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_lib_path_0300", dlns_set_namespace_lib_path(NULL, path), EINVAL);
66570af302Sopenharmony_ci}
67570af302Sopenharmony_ci
68570af302Sopenharmony_ci/**
69570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_lib_path_0400
70570af302Sopenharmony_ci * @tc.desc      : When lib_path=NULL, call dlns_set_namespace_lib_path
71570af302Sopenharmony_ci * @tc.level     : Level 2
72570af302Sopenharmony_ci */
73570af302Sopenharmony_civoid dlns_set_namespace_lib_path_0400(void)
74570af302Sopenharmony_ci{
75570af302Sopenharmony_ci    Dl_namespace dlns;
76570af302Sopenharmony_ci    dlns_init(&dlns, "dlns_set_namespace_lib_path_0400");
77570af302Sopenharmony_ci
78570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_lib_path_0400", dlns_create(&dlns, NULL), EOK);
79570af302Sopenharmony_ci
80570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_lib_path_0400",
81570af302Sopenharmony_ci        dlns_set_namespace_lib_path("dlns_set_namespace_lib_path_0400", NULL), EINVAL);
82570af302Sopenharmony_ci}
83570af302Sopenharmony_ci
84570af302Sopenharmony_ci/**
85570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_lib_path_0500
86570af302Sopenharmony_ci * @tc.desc      : When the lib_path parameter is multiple paths, call dlns_set_namespace_lib_path
87570af302Sopenharmony_ci * @tc.level     : Level 1
88570af302Sopenharmony_ci */
89570af302Sopenharmony_civoid dlns_set_namespace_lib_path_0500(void)
90570af302Sopenharmony_ci{
91570af302Sopenharmony_ci    Dl_namespace dlns;
92570af302Sopenharmony_ci    dlns_init(&dlns, "dlns_set_namespace_lib_path_0500");
93570af302Sopenharmony_ci
94570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_lib_path_0500", dlns_create(&dlns, NULL), EOK);
95570af302Sopenharmony_ci
96570af302Sopenharmony_ci    char* newlibpath = "/data/tests/libc-test/src:/data/tests/libc-test/src/B";
97570af302Sopenharmony_ci
98570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_lib_path_0500",
99570af302Sopenharmony_ci        dlns_set_namespace_lib_path("dlns_set_namespace_lib_path_0500", newlibpath), EOK);
100570af302Sopenharmony_ci
101570af302Sopenharmony_ci    void *handle = dlopen_ns(&dlns, dllName, RTLD_LAZY);
102570af302Sopenharmony_ci    EXPECT_TRUE("dlns_set_namespace_lib_path_0500", handle);
103570af302Sopenharmony_ci    dlclose(handle);
104570af302Sopenharmony_ci
105570af302Sopenharmony_ci    void *handle1 = dlopen_ns(&dlns, libB, RTLD_LAZY);
106570af302Sopenharmony_ci    EXPECT_TRUE("dlns_set_namespace_lib_path_0500", handle1);
107570af302Sopenharmony_ci    dlclose(handle1);
108570af302Sopenharmony_ci}
109570af302Sopenharmony_ci
110570af302Sopenharmony_ci/**
111570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_separated_0100
112570af302Sopenharmony_ci * @tc.desc      : When name is no namespace created, call dlns_set_namespace_separated
113570af302Sopenharmony_ci * @tc.level     : Level 2
114570af302Sopenharmony_ci */
115570af302Sopenharmony_civoid dlns_set_namespace_separated_0100(void)
116570af302Sopenharmony_ci{
117570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_separated_0100",
118570af302Sopenharmony_ci        dlns_set_namespace_separated("dlns_set_namespace_permitted_paths_0100", true), ENOKEY);
119570af302Sopenharmony_ci}
120570af302Sopenharmony_ci
121570af302Sopenharmony_ci/**
122570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_separated_0200
123570af302Sopenharmony_ci * @tc.desc      : When the name is a created namespace, call dlns_set_namespace_separated
124570af302Sopenharmony_ci * @tc.level     : Level 1
125570af302Sopenharmony_ci */
126570af302Sopenharmony_civoid dlns_set_namespace_separated_0200(void)
127570af302Sopenharmony_ci{
128570af302Sopenharmony_ci    Dl_namespace dlns;
129570af302Sopenharmony_ci    dlns_init(&dlns, "dlns_set_namespace_separated_0200");
130570af302Sopenharmony_ci
131570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_separated_0200", dlns_create(&dlns, NULL), EOK);
132570af302Sopenharmony_ci
133570af302Sopenharmony_ci    void* handle = dlopen_ns(&dlns, dllNamePath, RTLD_LAZY);
134570af302Sopenharmony_ci    EXPECT_TRUE("dlns_set_namespace_separated_0200", handle);
135570af302Sopenharmony_ci    dlclose(handle);
136570af302Sopenharmony_ci
137570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_separated_0200",
138570af302Sopenharmony_ci        dlns_set_namespace_separated("dlns_set_namespace_separated_0200", true), EOK);
139570af302Sopenharmony_ci
140570af302Sopenharmony_ci    void* handle1 = dlopen_ns(&dlns, dllNamePath, RTLD_LAZY);
141570af302Sopenharmony_ci    EXPECT_FALSE("dlns_set_namespace_separated_0200", handle1);
142570af302Sopenharmony_ci}
143570af302Sopenharmony_ci
144570af302Sopenharmony_ci/**
145570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_separated_0300
146570af302Sopenharmony_ci * @tc.desc      : When name=NULL, call dlns_set_namespace_separated
147570af302Sopenharmony_ci * @tc.level     : Level 2
148570af302Sopenharmony_ci */
149570af302Sopenharmony_civoid dlns_set_namespace_separated_0300(void)
150570af302Sopenharmony_ci{
151570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_separated_0300", dlns_set_namespace_separated(NULL, true), EINVAL);
152570af302Sopenharmony_ci}
153570af302Sopenharmony_ci
154570af302Sopenharmony_ci/**
155570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_permitted_paths_0100
156570af302Sopenharmony_ci * @tc.desc      : When name is no namespace created, call dlns_set_namespace_permitted_paths
157570af302Sopenharmony_ci * @tc.level     : Level 2
158570af302Sopenharmony_ci */
159570af302Sopenharmony_civoid dlns_set_namespace_permitted_paths_0100(void)
160570af302Sopenharmony_ci{
161570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_permitted_paths_0100",
162570af302Sopenharmony_ci        dlns_set_namespace_permitted_paths("dlns_set_namespace_permitted_paths_0100", dllNamePath), ENOKEY);
163570af302Sopenharmony_ci}
164570af302Sopenharmony_ci
165570af302Sopenharmony_ci/**
166570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_permitted_paths_0200
167570af302Sopenharmony_ci * @tc.desc      : name为已创建命名空间时,调用dlns_set_namespace_permitted_paths
168570af302Sopenharmony_ci * @tc.level     : Level 2
169570af302Sopenharmony_ci */
170570af302Sopenharmony_civoid dlns_set_namespace_permitted_paths_0200(void)
171570af302Sopenharmony_ci{
172570af302Sopenharmony_ci    Dl_namespace dlns;
173570af302Sopenharmony_ci    dlns_init(&dlns, "dlns_set_namespace_permitted_paths_0200");
174570af302Sopenharmony_ci
175570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_permitted_paths_0200", dlns_create(&dlns, NULL), EOK);
176570af302Sopenharmony_ci
177570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_permitted_paths_0200",
178570af302Sopenharmony_ci        dlns_set_namespace_separated("dlns_set_namespace_permitted_paths_0200", true), EOK);
179570af302Sopenharmony_ci
180570af302Sopenharmony_ci    void* handle = dlopen_ns(&dlns, dllNamePath, RTLD_LAZY);
181570af302Sopenharmony_ci    EXPECT_FALSE("dlns_set_namespace_permitted_paths_0200", handle);
182570af302Sopenharmony_ci
183570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_permitted_paths_0200",
184570af302Sopenharmony_ci        dlns_set_namespace_permitted_paths("dlns_set_namespace_permitted_paths_0200", path), EOK);
185570af302Sopenharmony_ci
186570af302Sopenharmony_ci    void* handle1 = dlopen_ns(&dlns, dllNamePath, RTLD_LAZY);
187570af302Sopenharmony_ci    EXPECT_TRUE("dlns_set_namespace_permitted_paths_0200", handle1);
188570af302Sopenharmony_ci    dlclose(handle1);
189570af302Sopenharmony_ci}
190570af302Sopenharmony_ci
191570af302Sopenharmony_ci/**
192570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_permitted_paths_0300
193570af302Sopenharmony_ci * @tc.desc      : When the name is a created namespace, call dlns_set_namespace_permitted_paths
194570af302Sopenharmony_ci * @tc.level     : Level 1
195570af302Sopenharmony_ci */
196570af302Sopenharmony_civoid dlns_set_namespace_permitted_paths_0300(void)
197570af302Sopenharmony_ci{
198570af302Sopenharmony_ci    Dl_namespace dlns;
199570af302Sopenharmony_ci    dlns_init(&dlns, "dlns_set_namespace_permitted_paths_0300");
200570af302Sopenharmony_ci
201570af302Sopenharmony_ci    char *newLibPath = "/data/tests/libc-test/src/B/libB.so";
202570af302Sopenharmony_ci
203570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_permitted_paths_0300", dlns_create(&dlns, NULL), EOK);
204570af302Sopenharmony_ci
205570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_permitted_paths_0300",
206570af302Sopenharmony_ci        dlns_set_namespace_separated("dlns_set_namespace_permitted_paths_0300", true), EOK);
207570af302Sopenharmony_ci
208570af302Sopenharmony_ci    void* handle = dlopen_ns(&dlns, dllNamePath, RTLD_LAZY);
209570af302Sopenharmony_ci    EXPECT_FALSE("dlns_set_namespace_permitted_paths_0300", handle);
210570af302Sopenharmony_ci
211570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_permitted_paths_0300",
212570af302Sopenharmony_ci        dlns_set_namespace_permitted_paths("dlns_set_namespace_permitted_paths_0300", path), EOK);
213570af302Sopenharmony_ci
214570af302Sopenharmony_ci    void* handle1 = dlopen_ns(&dlns, newLibPath, RTLD_LAZY);
215570af302Sopenharmony_ci    EXPECT_TRUE("dlns_set_namespace_permitted_paths_0300", handle1);
216570af302Sopenharmony_ci    dlclose(handle1);
217570af302Sopenharmony_ci}
218570af302Sopenharmony_ci
219570af302Sopenharmony_ci/**
220570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_permitted_paths_0400
221570af302Sopenharmony_ci * @tc.desc      : When name=NULL, call dlns_set_namespace_permitted_paths
222570af302Sopenharmony_ci * @tc.level     : Level 2
223570af302Sopenharmony_ci */
224570af302Sopenharmony_civoid dlns_set_namespace_permitted_paths_0400(void)
225570af302Sopenharmony_ci{
226570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_permitted_paths_0400",
227570af302Sopenharmony_ci        dlns_set_namespace_permitted_paths(NULL, dllNamePath), EINVAL);
228570af302Sopenharmony_ci}
229570af302Sopenharmony_ci
230570af302Sopenharmony_ci/**
231570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_permitted_paths_0500
232570af302Sopenharmony_ci * @tc.desc      : When the permitted_paths parameter is multiple paths, call dlns_set_namespace_permitted_paths
233570af302Sopenharmony_ci * @tc.level     : Level 1
234570af302Sopenharmony_ci */
235570af302Sopenharmony_civoid dlns_set_namespace_permitted_paths_0500(void)
236570af302Sopenharmony_ci{
237570af302Sopenharmony_ci    Dl_namespace dlns;
238570af302Sopenharmony_ci    dlns_init(&dlns, "dlns_set_namespace_permitted_paths_0500");
239570af302Sopenharmony_ci
240570af302Sopenharmony_ci    char* newPermittPath = "/data/tests/libc-test/src";
241570af302Sopenharmony_ci    char* libBpath = "/data/tests/libc-test/src/B/libB.so";
242570af302Sopenharmony_ci
243570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_permitted_paths_0500", dlns_create(&dlns, NULL), EOK);
244570af302Sopenharmony_ci
245570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_permitted_paths_0500",
246570af302Sopenharmony_ci        dlns_set_namespace_separated("dlns_set_namespace_permitted_paths_0500", true), EOK);
247570af302Sopenharmony_ci
248570af302Sopenharmony_ci    void* handle = dlopen_ns(&dlns, dllNamePath, RTLD_LAZY);
249570af302Sopenharmony_ci    EXPECT_FALSE("dlns_set_namespace_permitted_paths_0500", handle);
250570af302Sopenharmony_ci
251570af302Sopenharmony_ci    void* handle1 = dlopen_ns(&dlns, libBpath, RTLD_LAZY);
252570af302Sopenharmony_ci    EXPECT_FALSE("dlns_set_namespace_permitted_paths_0500", handle1);
253570af302Sopenharmony_ci
254570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_permitted_paths_0500",
255570af302Sopenharmony_ci        dlns_set_namespace_permitted_paths("dlns_set_namespace_permitted_paths_0500", newPermittPath), EOK);
256570af302Sopenharmony_ci
257570af302Sopenharmony_ci    void* handle2 = dlopen_ns(&dlns, dllNamePath, RTLD_LAZY);
258570af302Sopenharmony_ci    EXPECT_TRUE("dlns_set_namespace_permitted_paths_0500", handle2);
259570af302Sopenharmony_ci    dlclose(handle2);
260570af302Sopenharmony_ci
261570af302Sopenharmony_ci    void* handle3 = dlopen_ns(&dlns, libBpath, RTLD_LAZY);
262570af302Sopenharmony_ci    EXPECT_TRUE("dlns_set_namespace_permitted_paths_0500", handle3);
263570af302Sopenharmony_ci    dlclose(handle3);
264570af302Sopenharmony_ci}
265570af302Sopenharmony_ci
266570af302Sopenharmony_ci/**
267570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_allowed_libs_0100
268570af302Sopenharmony_ci * @tc.desc      : When name is no namespace created, call dlns_set_namespace_allowed_libs
269570af302Sopenharmony_ci * @tc.level     : Level 2
270570af302Sopenharmony_ci */
271570af302Sopenharmony_civoid dlns_set_namespace_allowed_libs_0100(void)
272570af302Sopenharmony_ci{
273570af302Sopenharmony_ci    // 未创建的命名空间
274570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_allowed_libs_0100",
275570af302Sopenharmony_ci        dlns_set_namespace_allowed_libs("dlns_set_namespace_allowed_libs_0100", path), ENOKEY);
276570af302Sopenharmony_ci}
277570af302Sopenharmony_ci
278570af302Sopenharmony_ci/**
279570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_allowed_libs_0200
280570af302Sopenharmony_ci * @tc.desc      : When the name is a created namespace, call dlns_set_namespace_allowed_libs
281570af302Sopenharmony_ci * @tc.level     : Level 1
282570af302Sopenharmony_ci */
283570af302Sopenharmony_civoid dlns_set_namespace_allowed_libs_0200(void)
284570af302Sopenharmony_ci{
285570af302Sopenharmony_ci    Dl_namespace dlns;
286570af302Sopenharmony_ci    dlns_init(&dlns, "ns_no_allowed_libs");
287570af302Sopenharmony_ci
288570af302Sopenharmony_ci    void* handle = dlopen_ns(&dlns, dllNamePath, RTLD_LAZY);
289570af302Sopenharmony_ci    EXPECT_TRUE("dlns_set_namespace_allowed_libs_0200", handle);
290570af302Sopenharmony_ci    dlclose(handle);
291570af302Sopenharmony_ci
292570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_allowed_libs_0200",
293570af302Sopenharmony_ci        dlns_set_namespace_allowed_libs("ns_no_allowed_libs", dllName2), EOK);
294570af302Sopenharmony_ci
295570af302Sopenharmony_ci    void* handle1 = dlopen_ns(&dlns, dllNamePath, RTLD_LAZY);
296570af302Sopenharmony_ci    EXPECT_FALSE("dlns_set_namespace_allowed_libs_0200", handle1);
297570af302Sopenharmony_ci
298570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_allowed_libs_0200",
299570af302Sopenharmony_ci        dlns_set_namespace_allowed_libs("ns_no_allowed_libs", dllName), EOK);
300570af302Sopenharmony_ci}
301570af302Sopenharmony_ci
302570af302Sopenharmony_ci/**
303570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_allowed_libs_0300
304570af302Sopenharmony_ci * @tc.desc      : When name=NULL, call dlns_set_namespace_allowed_libs
305570af302Sopenharmony_ci * @tc.level     : Level 2
306570af302Sopenharmony_ci */
307570af302Sopenharmony_civoid dlns_set_namespace_allowed_libs_0300(void)
308570af302Sopenharmony_ci{
309570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_allowed_libs_0300", dlns_set_namespace_allowed_libs(NULL, path), EINVAL);
310570af302Sopenharmony_ci}
311570af302Sopenharmony_ci
312570af302Sopenharmony_ci/**
313570af302Sopenharmony_ci * @tc.name      : dlns_set_namespace_allowed_libs_0400
314570af302Sopenharmony_ci * @tc.desc      : When the allowed_libs parameter is multiple file names, call dlns_set_namespace_allowed_libs
315570af302Sopenharmony_ci * @tc.level     : Level 1
316570af302Sopenharmony_ci */
317570af302Sopenharmony_civoid dlns_set_namespace_allowed_libs_0400(void)
318570af302Sopenharmony_ci{
319570af302Sopenharmony_ci    Dl_namespace dlns;
320570af302Sopenharmony_ci    dlns_init(&dlns, "ns_no_allowed_libs");
321570af302Sopenharmony_ci
322570af302Sopenharmony_ci    void* handle = dlopen_ns(&dlns, dllNamePath, RTLD_LAZY);
323570af302Sopenharmony_ci    EXPECT_TRUE("dlns_set_namespace_allowed_libs_0400", handle);
324570af302Sopenharmony_ci    dlclose(handle);
325570af302Sopenharmony_ci
326570af302Sopenharmony_ci    char* dll4 = "libdlopen_ns_dso.so:libdlopen_dso.so:sharedlibtest.so";
327570af302Sopenharmony_ci
328570af302Sopenharmony_ci    EXPECT_EQ("dlns_set_namespace_allowed_libs_0400",
329570af302Sopenharmony_ci        dlns_set_namespace_allowed_libs("ns_no_allowed_libs", dll4), EOK);
330570af302Sopenharmony_ci
331570af302Sopenharmony_ci    void* handle1 = dlopen_ns(&dlns, dllNamePath, RTLD_LAZY);
332570af302Sopenharmony_ci    EXPECT_TRUE("dlns_set_namespace_allowed_libs_0400", handle1);
333570af302Sopenharmony_ci    dlclose(handle1);
334570af302Sopenharmony_ci}
335570af302Sopenharmony_ci
336570af302Sopenharmony_ciTEST_FUN G_Fun_Array[] = {
337570af302Sopenharmony_ci    dlns_set_namespace_lib_path_0100,
338570af302Sopenharmony_ci    dlns_set_namespace_lib_path_0200,
339570af302Sopenharmony_ci    dlns_set_namespace_lib_path_0300,
340570af302Sopenharmony_ci    dlns_set_namespace_lib_path_0400,
341570af302Sopenharmony_ci    dlns_set_namespace_lib_path_0500,
342570af302Sopenharmony_ci    dlns_set_namespace_separated_0100,
343570af302Sopenharmony_ci    dlns_set_namespace_separated_0200,
344570af302Sopenharmony_ci    dlns_set_namespace_separated_0300,
345570af302Sopenharmony_ci    dlns_set_namespace_permitted_paths_0100,
346570af302Sopenharmony_ci    dlns_set_namespace_permitted_paths_0200,
347570af302Sopenharmony_ci    dlns_set_namespace_permitted_paths_0300,
348570af302Sopenharmony_ci    dlns_set_namespace_permitted_paths_0400,
349570af302Sopenharmony_ci    dlns_set_namespace_permitted_paths_0500,
350570af302Sopenharmony_ci    dlns_set_namespace_allowed_libs_0100,
351570af302Sopenharmony_ci    dlns_set_namespace_allowed_libs_0200,
352570af302Sopenharmony_ci    dlns_set_namespace_allowed_libs_0300,
353570af302Sopenharmony_ci    dlns_set_namespace_allowed_libs_0400,
354570af302Sopenharmony_ci};
355570af302Sopenharmony_ci
356570af302Sopenharmony_ciint main(void)
357570af302Sopenharmony_ci{
358570af302Sopenharmony_ci    int num = sizeof(G_Fun_Array)/sizeof(TEST_FUN);
359570af302Sopenharmony_ci    for (int pos = 0; pos < num; ++pos) {
360570af302Sopenharmony_ci        G_Fun_Array[pos]();
361570af302Sopenharmony_ci    }
362570af302Sopenharmony_ci
363570af302Sopenharmony_ci    return t_status;
364570af302Sopenharmony_ci}