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}