diff --git a/libc-test/README-HowtoRun.md b/libc-test/README-HowtoRun.md index b2dd34d53b329bac604503a2c9372de2b90f90ae..2f3448c96164bcbe084623f46d8722e49f7d4b92 100644 --- a/libc-test/README-HowtoRun.md +++ b/libc-test/README-HowtoRun.md @@ -1,56 +1,83 @@ -## libc-test脚本使用说明 - -### 一、生成用例 - -编译命令,单独编译出libc-test测试用例 - -```shell -./build.sh --product-name Hi3516DV300 --build-target third_party/musl:libctest -``` - -文件生成的目录位于 `out/hi3516dv300/tests/unittest/libc-test` - -注: - -旧版ohos中,文件生成的目录位于 `out/ohos-arm-release/tests/unittest/libc-test`,请根据实际修改脚本中相关路径!! - -请务必根据实际修改脚本中相关路径! - -### 二、执行用例 - -1. 将HDC(Windows版)工具加入到windows环境变量,并将工具改名为hdc.exe。连接上开发板,保证HDC工具可以连接。 - -2. 进入musl/scripts,并根据实际环境,修改runtest.bat中测试用例生成目录完整路径(必要) - - ```bat - @REM 本地OpenHarmony源码目录,请根据实际环境修改!! - set LOCAL=\\wsl$\ubuntu-20.04\home\OHOS\ - @REM 本地编译out目录 - set OUTDIR=out\hi3516dv300 - ``` - -3. 将bat脚本复制到windows环境下使用!!windows端双击运行runtest.bat,执行完毕会将结果REPORT返回到当前bat所在目录。 - - 此bat将从WSL映射目录传输文件到单板目录下,由于WSL无法直接访问windows端口,所以在WSL中直接使用可能无法传输用例。 - -4. 若要单独执行测试用例,需要先将common目录下的`runtest`与用例传输到单板,再通过命令执行,结果将打印出来 - - ```shell - ./runtest -w '' {filename} - ``` -5. runtest.bat执行结束前会将输出的REPORT与在libc-test/report_base下的REPORT相比较,如果比较出不同将会在scripts下 - 生成一个result.html文件,否则不生成。 - - -### 三、增加用例 - -若要在functional、math、regression或增加用例,需要在相应目录的test_src_{dir}.gni中添加文件名。 - -例如: - -1、需要在functional目录中新增一个用例:由`new_test.c`生成可执行文件`new_test` - -2、首先把c文件放入functional目录中,打开`test_src_functional.gni`,在`functional_list`中最后一行增加`"new_test",` - -3、执行步骤一(生成用例)中的编译命令,即可生成对应可执行文件。 - +## libc-test脚本使用说明 + +### 一、编译 + +编译命令,仅编译libc-test测试用例 +``` +./build.sh --product-name rk3568 --build-target libctest +``` +用例可执行文件生成的目录位于 `out/rk3568/musl/libc-test` +以及相关的动态库位于 `out/rk3568/musl/libc-test-lib` + +### 二、执行测试 + +1. 将HDC(Windows版)工具hdc.exe加入到windows环境变量。连接上开发板,保证HDC工具可以连接。 + +2. 进入musl/scripts,并根据实际环境,修改runtest_Windows.bat中测试用例生成目录完整路径(必要) + ```bat + @REM 本地OpenHarmony源码目录,需根据实际环境修改 + set LOCAL=\\wsl$\ubuntu-20.04\home\code\OpenHarmony + @REM 本地编译out目录 + set OUTDIR=out\rk3568 + ``` + +3. 将bat脚本复制到windows环境下使用!windows端双击运行runtest_Windows.bat,执行完毕会将详细错误结果信息REPORT返回到当前bat所在目录,并对结果进行统计生成FileList.txt(本次测试执行用例列表)与Summary.txt(统计报告),内容如下: + $\color{red}{提交PR需在提交里附上对应统计报告!}$ + ``` + SUMMARY + All: 1177 | Run: 1147 | Skip: 30 + Pass: [1083/1147] + Fail: [64/1147] + Check REPORT for more details. + + [Failed List]: + FAIL __fwritable [signal Segmentation fault] + FAIL __fwriting [signal Segmentation fault] + FAIL a_stack_chk_fail [status 255] + FAIL asctime [status 1] + ... + + [Skip List]: + trace_stresstest + fatal_message + tgkill_ext + exittest01 + ... + ``` + + 注:此bat文件是从WSL映射目录传输文件到单板目录下,由于WSL无法直接访问windows端口,所以在WSL目录中使用可能无法传输用例。 + +4. 若要单独执行测试用例,将编译结果目录下的`runtest`与需要执行的用例传输到单板 + + 单板执行 `./runtest -w '' {filename}`,例如: + + 测试成功,无报错信息 + ``` + # ./runtest -w '' memmem + ``` + + 测试失败,提示FAIL+用例名+错误码 + ``` + # ./runtest -w '' pthread_atfork-errno-clobber + ../../third_party/musl/libc-test/src/regression/pthread_atfork-errno-clobber.c:23: (pid = fork()) == -1 failed: fork succeeded despite rlimit + FAIL pthread_atfork-errno-clobber [status 1] + ``` + +### 三、增加用例 + +举例:在functional目录中新增用例new_test + +1. 在libc-test/src/functional目录下新建`new_test.c` + +2. 编辑libc-test/src/functional目录下的`test_src_functional.gni`,并在`functional_list`末尾添加`"new_test",` + +3. (可选)利用模板添加编译选项,修改`libc-test/test_template.gni`中编译选项内容或针对指定的用例添加,例如: + ``` + if (target_name == "tls_init") { + cflags += [ "-Wno-literal-range" ] + ldflags += [ "-Wl,-rpath=./" ] + libs += [ "//${root_out_dir}/${test_lib_dir}/libtls_init_dso.so" ] + } + ``` + +3. 执行步骤一(编译)中的编译命令,即可生成对应可执行文件。 diff --git a/libc-test/src/functionalext/common/asctime_data.h b/libc-test/src/functionalext/common/asctime_data.h index f7e2c3a7871ed912e9b2be94c413cb3991bf23e7..4aa6569c6a697a90e15e49c4b4ed195074067bd4 100644 --- a/libc-test/src/functionalext/common/asctime_data.h +++ b/libc-test/src/functionalext/common/asctime_data.h @@ -54,7 +54,7 @@ static const struct time_test_string_struct test_asctime_data[] = { {"Pacific/Efate", "Sat Jul 30 21:40:14 2022"}, {"Pacific/Midway", "Fri Jul 29 23:40:14 2022"}, {"Pacific/Niue", "Fri Jul 29 23:40:14 2022"}, - {"Pacific/Enderbury", "Sat Jul 30 23:40:14 2022"}, + {"Pacific/Kanton", "Sat Jul 30 23:40:14 2022"}, {"Pacific/Funafuti", "Sat Jul 30 22:40:14 2022"}, {"Pacific/Gambier", "Sat Jul 30 01:40:14 2022"}, {"EET", "Sat Jul 30 13:40:14 2022"}, diff --git a/libc-test/src/functionalext/common/difftime_data.h b/libc-test/src/functionalext/common/difftime_data.h index e58b0c3b46c00a007ddaaceab82d2d297d2f9209..56da0a980d8bbe55a5158f49a9bdb2de2379a2c5 100644 --- a/libc-test/src/functionalext/common/difftime_data.h +++ b/libc-test/src/functionalext/common/difftime_data.h @@ -54,7 +54,7 @@ static const struct time_test_double_struct test_difftime_data[] = { {"Pacific/Efate", 10.000000}, {"Pacific/Midway", 10.000000}, {"Pacific/Niue", 10.000000}, - {"Pacific/Enderbury", 10.000000}, + {"Pacific/Kanton", 10.000000}, {"Pacific/Funafuti", 10.000000}, {"Pacific/Gambier", 10.000000}, {"EET", 10.000000}, diff --git a/libc-test/src/functionalext/common/gmtime_data.h b/libc-test/src/functionalext/common/gmtime_data.h index 175fc5a02f5f3cec68b9ca7ae49b71833c3af16b..56bed9172cef542377f47f0c4246d9076261f82c 100644 --- a/libc-test/src/functionalext/common/gmtime_data.h +++ b/libc-test/src/functionalext/common/gmtime_data.h @@ -54,7 +54,7 @@ static const struct time_test_string_struct test_gmtime_data[] = { {"Pacific/Efate", "2022-6-30 10:40:14 wday=6,yday=210,isdst=0,gmtoff=0,zone=GMT"}, {"Pacific/Midway", "2022-6-30 10:40:14 wday=6,yday=210,isdst=0,gmtoff=0,zone=GMT"}, {"Pacific/Niue", "2022-6-30 10:40:14 wday=6,yday=210,isdst=0,gmtoff=0,zone=GMT"}, - {"Pacific/Enderbury", "2022-6-30 10:40:14 wday=6,yday=210,isdst=0,gmtoff=0,zone=GMT"}, + {"Pacific/Kanton", "2022-6-30 10:40:14 wday=6,yday=210,isdst=0,gmtoff=0,zone=GMT"}, {"Pacific/Funafuti", "2022-6-30 10:40:14 wday=6,yday=210,isdst=0,gmtoff=0,zone=GMT"}, {"Pacific/Gambier", "2022-6-30 10:40:14 wday=6,yday=210,isdst=0,gmtoff=0,zone=GMT"}, {"EET", "2022-6-30 10:40:14 wday=6,yday=210,isdst=0,gmtoff=0,zone=GMT"}, diff --git a/libc-test/src/functionalext/common/localtime_data.h b/libc-test/src/functionalext/common/localtime_data.h index c5e7f0531c7756fa0499fe5285a5370c5e88cb00..4bd79b7e72b378da37e1747b98d47024ce4431e0 100644 --- a/libc-test/src/functionalext/common/localtime_data.h +++ b/libc-test/src/functionalext/common/localtime_data.h @@ -54,7 +54,7 @@ static const struct time_test_string_struct test_localtime_data[] = { {"Pacific/Efate", "2022-6-30 21:40:14 wday=6,yday=210,isdst=0,gmtoff=39600,zone=+11"}, {"Pacific/Midway", "2022-6-29 23:40:14 wday=5,yday=209,isdst=0,gmtoff=-39600,zone=SST"}, {"Pacific/Niue", "2022-6-29 23:40:14 wday=5,yday=209,isdst=0,gmtoff=-39600,zone=-11"}, - {"Pacific/Enderbury", "2022-6-30 23:40:14 wday=6,yday=210,isdst=0,gmtoff=46800,zone=+13"}, + {"Pacific/Kanton", "2022-6-30 23:40:14 wday=6,yday=210,isdst=0,gmtoff=46800,zone=+13"}, {"Pacific/Funafuti", "2022-6-30 22:40:14 wday=6,yday=210,isdst=0,gmtoff=43200,zone=+12"}, {"Pacific/Gambier", "2022-6-30 1:40:14 wday=6,yday=210,isdst=0,gmtoff=-32400,zone=-09"}, {"EET", "2022-6-30 13:40:14 wday=6,yday=210,isdst=1,gmtoff=10800,zone=EEST"}, diff --git a/libc-test/src/functionalext/common/mktime_data.h b/libc-test/src/functionalext/common/mktime_data.h index 9a1db484266fd1c01ec33e850a76b56f1a1fcdde..2ce54389a48fc6487beadad2569b7ad8a1a36955 100644 --- a/libc-test/src/functionalext/common/mktime_data.h +++ b/libc-test/src/functionalext/common/mktime_data.h @@ -54,7 +54,7 @@ static const struct time_test_time_struct test_mktime_data[] = { {"Pacific/Efate", 1659177614}, {"Pacific/Midway", 1659177614}, {"Pacific/Niue", 1659177614}, - {"Pacific/Enderbury", 1659177614}, + {"Pacific/Kanton", 1659177614}, {"Pacific/Funafuti", 1659177614}, {"Pacific/Gambier", 1659177614}, {"EET", 1659177614}, diff --git a/libc-test/src/functionalext/common/strftime_data.h b/libc-test/src/functionalext/common/strftime_data.h index 6f7d66abed1bd38b397ad4120206aca78dd9002a..e2081f7bc3efbdd0084fc2a4ecc9cb784628da0c 100644 --- a/libc-test/src/functionalext/common/strftime_data.h +++ b/libc-test/src/functionalext/common/strftime_data.h @@ -439,7 +439,7 @@ static const struct time_test_string_struct test_strftime_data[] = { {"Pacific/Saipan", "Sat Jul 30 20:40:14 2022 ChST+1000"}, {"Pacific/Guadalcanal", "Sat Jul 30 21:40:14 2022 +11+1100"}, {"Pacific/Nauru", "Sat Jul 30 22:40:14 2022 +12+1200"}, - {"Pacific/Enderbury", "Sat Jul 30 23:40:14 2022 +13+1300"}, + {"Pacific/Kanton", "Sat Jul 30 23:40:14 2022 +13+1300"}, {"Pacific/Bougainville", "Sat Jul 30 21:40:14 2022 +11+1100"}, {"Pacific/Tarawa", "Sat Jul 30 22:40:14 2022 +12+1200"}, {"Pacific/Kiritimati", "Sun Jul 31 00:40:14 2022 +14+1400"}, diff --git a/libc-test/src/functionalext/common/strptime_data.h b/libc-test/src/functionalext/common/strptime_data.h index d0fd6b3ac91717e31669dd8edd73bfeac55359bd..e7b7a350399d62faae36f414af91942199130db6 100644 --- a/libc-test/src/functionalext/common/strptime_data.h +++ b/libc-test/src/functionalext/common/strptime_data.h @@ -439,7 +439,7 @@ static const struct time_test_string_struct test_strptime_data[] = { {"Pacific/Saipan", "2022-6-30 20:40:14 wday=6,yday=0,isdst=0,gmtoff=36000,zone=ChST"}, {"Pacific/Guadalcanal", "2022-6-30 21:40:14 wday=6,yday=0,isdst=0,gmtoff=39600,zone=+11"}, {"Pacific/Nauru", "2022-6-30 22:40:14 wday=6,yday=0,isdst=0,gmtoff=43200,zone=+12"}, - {"Pacific/Enderbury", "2022-6-30 23:40:14 wday=6,yday=0,isdst=0,gmtoff=46800,zone=+13"}, + {"Pacific/Kanton", "2022-6-30 23:40:14 wday=6,yday=0,isdst=0,gmtoff=46800,zone=+13"}, {"Pacific/Bougainville", "2022-6-30 21:40:14 wday=6,yday=0,isdst=0,gmtoff=39600,zone=+11"}, {"Pacific/Tarawa", "2022-6-30 22:40:14 wday=6,yday=0,isdst=0,gmtoff=43200,zone=+12"}, {"Pacific/Kiritimati", "2022-6-31 0:40:14 wday=0,yday=0,isdst=0,gmtoff=50400,zone=+14"}, diff --git a/libc-test/src/functionalext/common/timegm_data.h b/libc-test/src/functionalext/common/timegm_data.h index 20ab36e68664cecf0b468aff8dcc5dab21376081..dbf4b93b82ac7d59d078c0dea3536f53cc20b680 100644 --- a/libc-test/src/functionalext/common/timegm_data.h +++ b/libc-test/src/functionalext/common/timegm_data.h @@ -54,7 +54,7 @@ static const struct time_test_time_struct test_timegm_data[] = { {"Pacific/Efate", 1659217214}, {"Pacific/Midway", 1659138014}, {"Pacific/Niue", 1659138014}, - {"Pacific/Enderbury", 1659224414}, + {"Pacific/Kanton", 1659224414}, {"Pacific/Funafuti", 1659220814}, {"Pacific/Gambier", 1659145214}, {"EET", 1659188414}, diff --git a/libc-test/src/functionalext/dlns/dlns_separated.c b/libc-test/src/functionalext/dlns/dlns_separated.c index ed8936ae8a5e78e2f567341ae3e531cd35948916..e9237857b2476e2e177394b4442493226ba45352 100644 --- a/libc-test/src/functionalext/dlns/dlns_separated.c +++ b/libc-test/src/functionalext/dlns/dlns_separated.c @@ -231,13 +231,13 @@ void separated_1200(void) Dl_namespace dlns; dlns_init(&dlns, "ns_asan_permit_path"); - char *libcc = "/data/tests/libc-test/src/functionalext/dlns/C/libC.so"; + char *libcc = "/data/tests/libc-test/src/C/libC.so"; void* handle = dlopen_ns(&dlns, libcc, RTLD_LAZY); EXPECT_TRUE("separated_1200", handle); dlclose(handle); - char *libbb = "/data/tests/libc-test/src/functionalext/dlns/B/libB.so"; + char *libbb = "/data/tests/libc-test/src/B/libB.so"; void* handle1 = dlopen_ns(&dlns, libbb, RTLD_LAZY); EXPECT_FALSE("separated_1200", handle1); diff --git a/libc-test/src/functionalext/dlns/dlns_set_fun.c b/libc-test/src/functionalext/dlns/dlns_set_fun.c index 08524fc10a6ef038d46917592511948b4030f0a2..78c7ce1a9ecf970c1a0714f185f9bbf6c4c7f9b6 100644 --- a/libc-test/src/functionalext/dlns/dlns_set_fun.c +++ b/libc-test/src/functionalext/dlns/dlns_set_fun.c @@ -93,7 +93,7 @@ void dlns_set_namespace_lib_path_0500(void) EXPECT_EQ("dlns_set_namespace_lib_path_0500", dlns_create(&dlns, NULL), EOK); - char* newlibpath = "/data/tests/libc-test/src/functionalext/dlns:/data/tests/libc-test/src/functionalext/dlns/B"; + char* newlibpath = "/data/tests/libc-test/src:/data/tests/libc-test/src/B"; EXPECT_EQ("dlns_set_namespace_lib_path_0500", dlns_set_namespace_lib_path("dlns_set_namespace_lib_path_0500", newlibpath), EOK); @@ -198,7 +198,7 @@ void dlns_set_namespace_permitted_paths_0300(void) Dl_namespace dlns; dlns_init(&dlns, "dlns_set_namespace_permitted_paths_0300"); - char *newLibPath = "/data/tests/libc-test/src/functionalext/dlns/B/libB.so"; + char *newLibPath = "/data/tests/libc-test/src/B/libB.so"; EXPECT_EQ("dlns_set_namespace_permitted_paths_0300", dlns_create(&dlns, NULL), EOK); @@ -237,8 +237,8 @@ void dlns_set_namespace_permitted_paths_0500(void) Dl_namespace dlns; dlns_init(&dlns, "dlns_set_namespace_permitted_paths_0500"); - char* newPermittPath = "/data/tests/libc-test/src/functionalext"; - char* libBpath = "/data/tests/libc-test/src/functionalext/dlns/B/libB.so"; + char* newPermittPath = "/data/tests/libc-test/src"; + char* libBpath = "/data/tests/libc-test/src/B/libB.so"; EXPECT_EQ("dlns_set_namespace_permitted_paths_0500", dlns_create(&dlns, NULL), EOK); diff --git a/libc-test/src/functionalext/dlns/dlns_test.h b/libc-test/src/functionalext/dlns/dlns_test.h index a05fa5ffe9e4ec535e035afd505991e28d3a243f..5f5cc2013bff0596304e6930ee157a0984df61ff 100644 --- a/libc-test/src/functionalext/dlns/dlns_test.h +++ b/libc-test/src/functionalext/dlns/dlns_test.h @@ -16,19 +16,19 @@ #ifndef LIBC_TEST_SRC_FUNCTIONALEXT_DLNS_DLNS_TEST_H #define LIBC_TEST_SRC_FUNCTIONALEXT_DLNS_DLNS_TEST_H -static const char* path = "/data/tests/libc-test/src/functionalext/dlns"; +static const char* path = "/data/tests/libc-test/src"; static const char* dllName = "libdlopen_ns_dso.so"; -static const char* dllNamePath = "/data/tests/libc-test/src/functionalext/dlns/libdlopen_ns_dso.so"; +static const char* dllNamePath = "/data/tests/libc-test/src/libdlopen_ns_dso.so"; static const char* errdllNamePath = "/etc/test/libdlopen_ns_dso.so"; static const char* dllName2 = "libdlopen_dso.so"; -static const char* dllNamePath2 = "/data/tests/libc-test/src/functionalext/dlns/libdlopen_dso.so"; +static const char* dllNamePath2 = "/data/tests/libc-test/src/libdlopen_dso.so"; static const char* errPath_ns = "src/test"; static const char* sharedLib = "sharedlibtest.so"; -static const char* pathA = "/data/tests/libc-test/src/functionalext/dlns/A"; -static const char* pathB = "/data/tests/libc-test/src/functionalext/dlns/B"; -static const char* pathC = "/data/tests/libc-test/src/functionalext/dlns/C"; -static const char* pathD = "/data/tests/libc-test/src/functionalext/dlns/D"; +static const char* pathA = "/data/tests/libc-test/src/A"; +static const char* pathB = "/data/tests/libc-test/src/B"; +static const char* pathC = "/data/tests/libc-test/src/C"; +static const char* pathD = "/data/tests/libc-test/src/D"; static const char* libB = "libB.so"; static const char* libC = "libC.so"; diff --git a/libc-test/test_template.gni b/libc-test/test_template.gni index 23b374de96c66edb9a2be5ce4ce75d07ef766997..4766a1eaf99222ab2d61ac5b4de7e4bc72ecd16a 100644 --- a/libc-test/test_template.gni +++ b/libc-test/test_template.gni @@ -158,9 +158,9 @@ template("test_unittest") { } if (target_dir == "functionalext/symver") { + ldflags += [ "-Wl,-rpath=./" ] if (target_name == "dlsym" || target_name == "dlvsym" || target_name == "dynlink" || target_name == "dynlink_default") { - ldflags += [ "-Wl,-rpath=src/functional" ] libs += [ "//${root_out_dir}/${test_lib_dir}/libdso_easy_symver.so", "//${root_out_dir}/${test_lib_dir}/libdso_hard_symver.so", diff --git a/porting/linux/user/config/ld-musl-namespace-aarch64-test.ini b/porting/linux/user/config/ld-musl-namespace-aarch64-test.ini index 3f8c1934259abb9915ff58004d48410fc59cfa70..989401229a41410f3188fbc9745399a40fc4d790 100644 --- a/porting/linux/user/config/ld-musl-namespace-aarch64-test.ini +++ b/porting/linux/user/config/ld-musl-namespace-aarch64-test.ini @@ -1,6 +1,6 @@ [section.dir.map] acquiescence = / - test = /data/tests/libc-test/src/functionalext:/data/tests/libc-test/src/functionalext/dlns + test = /data/tests/libc-test/src [acquiescence] namespace.default.lib.paths = /system/lib64:/vendor/lib64:/vendor/lib64/chipsetsdk:/system/lib64/ndk:/system/lib64/chipset-pub-sdk:/system/lib64/chipset-sdk:/system/lib64/platformsdk:/system/lib64/priv-platformsdk:/system/lib64/priv-module:/system/lib64/module:/system/lib64/module/data:/system/lib64/module/multimedia:/system/lib64/module/security:/system/lib:/vendor/lib:/system/lib/ndk:/system/lib/chipset-pub-sdk:/system/lib/chipset-sdk:/system/lib/platformsdk:/system/lib/priv-platformsdk:/system/lib/priv-module:/system/lib/module:/system/lib/module/data:/system/lib/module/multimedia:/lib64:/lib:/usr/local/lib:/usr/lib @@ -11,11 +11,11 @@ #ns_no_allowed_libs ,allowed libs not configed namespace.ns_no_allowed_libs.separated = true - namespace.ns_no_allowed_libs.lib.paths = /data/tests/libc-test/src/functionalext/dlns + namespace.ns_no_allowed_libs.lib.paths = /data/tests/libc-test/src #ns_normal ,normal namespace namespace.ns_normal.separated = true - namespace.ns_normal.lib.paths = /data/tests/libc-test/src/functionalext/dlns + namespace.ns_normal.lib.paths = /data/tests/libc-test/src namespace.ns_normal.allowed.libs = libdlopen_ns_dso.so #ns_wrong_lib_path ,path in allowed_libs,but not in env or lib or permitted Path @@ -36,21 +36,21 @@ #inherited_class namespace.inherited_class.separated = true - namespace.inherited_class.lib.paths = /data/tests/libc-test/src/functionalext/dlns + namespace.inherited_class.lib.paths = /data/tests/libc-test/src namespace.inherited_class.allowed.libs= libdlopen_ns_dso.so:sharedlibtest.so #ns_separated_flase namespace.ns_separated_flase.separated = false - namespace.ns_separated_flase.lib.paths = /data/tests/libc-test/src/functionalext/dlns + namespace.ns_separated_flase.lib.paths = /data/tests/libc-test/src namespace.ns_separated_flase.allowed.libs = libdlopen_ns_dso.so #ns_asan_lib_path ,testing asan.lib.paths namespace.ns_asan_lib_path.separated = true - namespace.ns_asan_lib_path.lib.paths = /data/tests/libc-test/src/functionalext/dlns - namespace.ns_asan_lib_path.asan.lib.paths = /data/tests/libc-test/src/functionalext/dlns/B + namespace.ns_asan_lib_path.lib.paths = /data/tests/libc-test/src + namespace.ns_asan_lib_path.asan.lib.paths = /data/tests/libc-test/src/B #ns_asan_permit_path ,testing asan.permitted.paths - namespace.ns_asan_permit_path.separated =true - namespace.ns_asan_permit_path.permitted.paths = /data/tests/libc-test/src/functionalext/dlns/C - namespace.ns_asan_permit_path.asan.permitted.paths = /data/tests/libc-test/src/functionalext/dlns/B + namespace.ns_asan_permit_path.separated = true + namespace.ns_asan_permit_path.permitted.paths = /data/tests/libc-test/src/C + namespace.ns_asan_permit_path.asan.permitted.paths = /data/tests/libc-test/src/B diff --git a/porting/linux/user/config/ld-musl-namespace-arm-test.ini b/porting/linux/user/config/ld-musl-namespace-arm-test.ini index 7ff8363062dd6e29c6ed0ad87b9c8632c2467e5a..38070325e3fb63dd3a6c85cf677f5efc741310bd 100644 --- a/porting/linux/user/config/ld-musl-namespace-arm-test.ini +++ b/porting/linux/user/config/ld-musl-namespace-arm-test.ini @@ -1,6 +1,6 @@ [section.dir.map] acquiescence = / - test = /data/tests/libc-test/src/functionalext:/data/tests/libc-test/src/functionalext/dlns + test = /data/tests/libc-test/src [acquiescence] namespace.default.lib.paths = /system/lib:/vendor/lib:/vendor/lib/chipsetsdk:/system/lib/ndk:/system/lib/chipset-pub-sdk:/system/lib/chipset-sdk:/system/lib/platformsdk:/system/lib/priv-platformsdk:/system/lib/priv-module:/system/lib/module:/system/lib/module/data:/system/lib/module/multimedia:/system/lib/module/security:/lib:/usr/local/lib:/usr/lib @@ -11,11 +11,11 @@ #ns_no_allowed_libs ,allowed libs not configed namespace.ns_no_allowed_libs.separated = true - namespace.ns_no_allowed_libs.lib.paths = /data/tests/libc-test/src/functionalext/dlns + namespace.ns_no_allowed_libs.lib.paths = /data/tests/libc-test/src #ns_normal ,normal namespace namespace.ns_normal.separated = true - namespace.ns_normal.lib.paths = /data/tests/libc-test/src/functionalext/dlns + namespace.ns_normal.lib.paths = /data/tests/libc-test/src namespace.ns_normal.allowed.libs = libdlopen_ns_dso.so #ns_wrong_lib_path ,path in allowed_libs,but not in env or lib or permitted Path @@ -36,21 +36,21 @@ #inherited_class namespace.inherited_class.separated = true - namespace.inherited_class.lib.paths = /data/tests/libc-test/src/functionalext/dlns + namespace.inherited_class.lib.paths = /data/tests/libc-test/src namespace.inherited_class.allowed.libs= libdlopen_ns_dso.so:sharedlibtest.so #ns_separated_flase namespace.ns_separated_flase.separated = false - namespace.ns_separated_flase.lib.paths = /data/tests/libc-test/src/functionalext/dlns + namespace.ns_separated_flase.lib.paths = /data/tests/libc-test/src namespace.ns_separated_flase.allowed.libs = libdlopen_ns_dso.so #ns_asan_lib_path ,testing asan.lib.paths namespace.ns_asan_lib_path.separated = true - namespace.ns_asan_lib_path.lib.paths = /data/tests/libc-test/src/functionalext/dlns - namespace.ns_asan_lib_path.asan.lib.paths = /data/tests/libc-test/src/functionalext/dlns/B + namespace.ns_asan_lib_path.lib.paths = /data/tests/libc-test/src + namespace.ns_asan_lib_path.asan.lib.paths = /data/tests/libc-test/src/B #ns_asan_permit_path ,testing asan.permitted.paths - namespace.ns_asan_permit_path.separated =true - namespace.ns_asan_permit_path.permitted.paths = /data/tests/libc-test/src/functionalext/dlns/C - namespace.ns_asan_permit_path.asan.permitted.paths = /data/tests/libc-test/src/functionalext/dlns/B + namespace.ns_asan_permit_path.separated = true + namespace.ns_asan_permit_path.permitted.paths = /data/tests/libc-test/src/C + namespace.ns_asan_permit_path.asan.permitted.paths = /data/tests/libc-test/src/B diff --git a/porting/linux/user/config/ld-musl-namespace-x86_64-test.ini b/porting/linux/user/config/ld-musl-namespace-x86_64-test.ini index 986cb0b63abdcc3da984f72c0f6021d016b7b253..a9c24028f39635ce1947b927237bc5eeb1359228 100644 --- a/porting/linux/user/config/ld-musl-namespace-x86_64-test.ini +++ b/porting/linux/user/config/ld-musl-namespace-x86_64-test.ini @@ -1,6 +1,6 @@ [section.dir.map] acquiescence = / - test = /data/tests/libc-test/src/functionalext:/data/tests/libc-test/src/functionalext/dlns + test = /data/tests/libc-test/src [acquiescence] namespace.default.lib.paths = /system/lib64:/vendor/lib64:/vendor/lib64/chipsetsdk:/system/lib64/ndk:/system/lib64/chipset-pub-sdk:/system/lib64/chipset-sdk:/system/lib64/platformsdk:/system/lib64/priv-platformsdk:/system/lib64/priv-module:/system/lib64/module:/system/lib64/module/data:/system/lib64/module/multimedia:/system/lib64/module/security:/lib64 @@ -11,11 +11,11 @@ #ns_no_allowed_libs ,allowed libs not configed namespace.ns_no_allowed_libs.separated = true - namespace.ns_no_allowed_libs.lib.paths = /data/tests/libc-test/src/functionalext/dlns + namespace.ns_no_allowed_libs.lib.paths = /data/tests/libc-test/src #ns_normal ,normal namespace namespace.ns_normal.separated = true - namespace.ns_normal.lib.paths = /data/tests/libc-test/src/functionalext/dlns + namespace.ns_normal.lib.paths = /data/tests/libc-test/src namespace.ns_normal.allowed.libs = libdlopen_ns_dso.so #ns_wrong_lib_path ,path in allowed_libs,but not in env or lib or permitted Path @@ -36,21 +36,21 @@ #inherited_class namespace.inherited_class.separated = true - namespace.inherited_class.lib.paths = /data/tests/libc-test/src/functionalext/dlns + namespace.inherited_class.lib.paths = /data/tests/libc-test/src namespace.inherited_class.allowed.libs= libdlopen_ns_dso.so:sharedlibtest.so #ns_separated_flase namespace.ns_separated_flase.separated = false - namespace.ns_separated_flase.lib.paths = /data/tests/libc-test/src/functionalext/dlns + namespace.ns_separated_flase.lib.paths = /data/tests/libc-test/src namespace.ns_separated_flase.allowed.libs = libdlopen_ns_dso.so #ns_asan_lib_path ,testing asan.lib.paths namespace.ns_asan_lib_path.separated = true - namespace.ns_asan_lib_path.lib.paths = /data/tests/libc-test/src/functionalext/dlns - namespace.ns_asan_lib_path.asan.lib.paths = /data/tests/libc-test/src/functionalext/dlns/B + namespace.ns_asan_lib_path.lib.paths = /data/tests/libc-test/src + namespace.ns_asan_lib_path.asan.lib.paths = /data/tests/libc-test/src/B #ns_asan_permit_path ,testing asan.permitted.paths - namespace.ns_asan_permit_path.separated =true - namespace.ns_asan_permit_path.permitted.paths = /data/tests/libc-test/src/functionalext/dlns/C - namespace.ns_asan_permit_path.asan.permitted.paths = /data/tests/libc-test/src/functionalext/dlns/B + namespace.ns_asan_permit_path.separated = true + namespace.ns_asan_permit_path.permitted.paths = /data/tests/libc-test/src/C + namespace.ns_asan_permit_path.asan.permitted.paths = /data/tests/libc-test/src/B diff --git a/scripts/runtest.sh b/scripts/runtest.sh index ba2533fd40a7a42a0387a91780b9ac46fca75ce8..a18d6a9c7e491223c07589a7425cd0f5aab7c202 100755 --- a/scripts/runtest.sh +++ b/scripts/runtest.sh @@ -1,7 +1,11 @@ cd /data/tests/libc-test/src rm /data/tests/libc-test/REPORT +rm /data/tests/libc-test/FileList.txt +rm /data/tests/libc-test/SkipList.txt touch /data/tests/libc-test/REPORT +touch /data/tests/libc-test/FileList.txt +touch /data/tests/libc-test/SkipList.txt function FileSuffix() { local filename="$1" @@ -11,9 +15,22 @@ function FileSuffix() { } #Test cases that need to be shielded -ShieldedList=("trace_stresstest" "fatal_message" "tgkill" "exittest01" "exittest02" -"syslog" "vsyslog" "ldso_randomization_manual" "ldso_randomization_test" "dlopen_ext_relro_test" -"runtest") +ShieldedList=("trace_stresstest" "syslog" "vsyslog" "runtest" +#Failed when running by shell, need to be run manually +"fatal_message" "tgkill_ext" "exittest01" "exittest02" "stat" "isatty" +"ldso_randomization_manual" "ldso_randomization_test" "dlopen_ext_relro_test" +"tcgetattr" "tcgetpgrp" "tcgetsid" "tcsendbreak" "tcsetattr" "tcsetpgrp" +#These need run with special condiction +"ipc_msg" "ipc_sem" "ipc_shm" "sem_close-unmap" "sem_open" "pthread_atfork-errno-clobber" +"flockfile-list" "dlns_set_fun_test" "dlns_inherit_test" "dlns_separated_test" +#Some math test cases need to skip. +"acoshl" "asinhl" "erfcl" "fenv" "fma" "fmaf" "fmal" "lgammal" "nearbyint" "nearbyintf" +"nearbyintl" "rint" "rintf" "rintl" "sqrt" "sqrtf" "sqrtl" "tgammal" +) + +for skiped in ${ShieldedList[*]};do + echo $skiped >> /data/tests/libc-test/SkipList.txt +done function ShieldedCases() { for filename in ${ShieldedList[*]} @@ -32,11 +49,14 @@ do || [ -d $file ] then continue - elif [ "$file" = "tgkill" ] + elif [ -x $file ] && [ -s $file ] then - ./runtest -w '' $file 12345 34567 >> /data/tests/libc-test/REPORT - else - echo $subdir/$file >> FileList - ./runtest -w '' $file >> /data/tests/libc-test/REPORT + echo $file >> /data/tests/libc-test/FileList.txt + if [ "$file" = "tgkill" ] + then + ./runtest -w '' $file 12345 34567 >> /data/tests/libc-test/REPORT + else + ./runtest -w '' -t 30 $file >> /data/tests/libc-test/REPORT + fi fi done \ No newline at end of file diff --git a/scripts/runtest_Windows.bat b/scripts/runtest_Windows.bat index cae3297dbc425f909c3aed269dede9b18942789a..9a552afc4738fed97d7cd370eeb4a271a09fd5bd 100644 --- a/scripts/runtest_Windows.bat +++ b/scripts/runtest_Windows.bat @@ -11,15 +11,10 @@ set TESTDIR=%LOCAL%\%OUTDIR%\musl\libc-test set DYNLIB=%LOCAL%\%OUTDIR%\musl\libc-test-lib @REM 远程传输目标目录 set REMOTE=/data/tests/libc-test -set REMOTEFEXT=/data/tests/libc-test/src/functionalext set REMOTESYSTEM=/system/lib @REM runtest脚本所在目录 set SHDIR=%LOCAL%\third_party\musl\scripts -@REM 开始时间 -set /a startS=%time:~6,2% -set /a startM=%time:~3,2% - @REM 检查设备是否连接 echo checking HDC device for /F "usebackq delims==" %%c in (`hdc list targets`) DO ( @@ -36,14 +31,13 @@ if exist %TESTDIR% ( goto end ) - @REM 在单板创建目录, 需要预先创建好才能传输到相应位置。 :hdcStart echo. echo now mkdir... +hdc shell rm -rf /data/tests/libc-test hdc shell mkdir /data/tests hdc shell mkdir %REMOTE% -hdc shell mkdir %REMOTE%/src @REM 创建临时文件夹,用于存放用例生成的临时文件 hdc shell mkdir /tmp @@ -53,10 +47,7 @@ goto hdcSend @REM 传输文件,单板上执行runtest.sh,将结果REPORT返回到.bat所在目录 :hdcSend -for %%i in (%TESTDIR%\*) do ( - echo %%i - hdc file send %%i %REMOTE%/src -) +hdc file send %TESTDIR% %REMOTE%/src for %%j in (%DYNLIB%\*) do ( echo %%j hdc file send %%j %REMOTE%/src @@ -65,20 +56,86 @@ hdc shell chmod +x %REMOTE%/src/* hdc shell mount -o rw,remount / hdc shell chmod 777 /etc +hdc shell cp /etc/ld-musl-namespace-arm.ini /etc/ld-musl-namespace-arm.ini.bak +hdc file send %LOCAL%\third_party\musl\porting\linux\user\config\ld-musl-namespace-arm-test.ini ^ + /etc/ld-musl-namespace-arm.ini +hdc shell mkdir %REMOTE%/src/A +hdc shell mkdir %REMOTE%/src/B +hdc shell mkdir %REMOTE%/src/C +hdc shell mkdir %REMOTE%/src/D +hdc shell mv %REMOTE%/src/libdlns_dlsym_dep_a.so %REMOTE%/src/A +hdc shell mv %REMOTE%/src/libdlns_dlsym_dep_b.so %REMOTE%/src/B +hdc shell mv %REMOTE%/src/libdlns_dlsym_dep_c.so %REMOTE%/src/C +hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/B/libB.so +hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/C/libC.so +hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/D/libD.so +hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/sharedlibtest.so +hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/set_lib_path_0200.so +hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/inherit_0300.so +hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/inherit_0700.so +hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/inherit_0800.so +hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/inherit_1100.so +hdc shell cp %REMOTE%/src/libdlopen_ns_dso.so /system/lib hdc file send %SHDIR%\runtest.sh %REMOTE%/runtest.sh hdc shell chmod +x %REMOTE%/runtest.sh hdc shell %REMOTE%/runtest.sh + +:Summary echo hdc file recv %REMOTE%/REPORT %~dp0REPORT hdc file recv %REMOTE%/REPORT %~dp0REPORT -:end +if exist FileList.txt ( + del FileList.txt +) +if exist Summary.txt ( + del Summary.txt +) +hdc file recv %REMOTE%/FileList.txt %~dp0FileList.txt +hdc file recv %REMOTE%/SkipList.txt %~dp0SkipList.txt + +for /f "delims=:" %%a in ('dir /b "%TESTDIR%" ^| findstr /n .*') do set all=%%a +for /f %%b in (' find /c /v "" ^<"FileList.txt" ') do set /a run=%%b +for /f %%c in (' find /c "FAIL" ^<"REPORT" ') do set fail=%%c + + +echo =================================== +set /a pass=%run%-%fail% +set /a skip=%all%-%run% + +echo SUMMARY +echo All: %all% ^| Run: %run% ^| Skip: %skip% +echo Pass: [%pass%/%run%] +echo Fail: [%fail%/%run%] + +( +echo SUMMARY +echo All: %all% ^| Run: %run% ^| Skip: %skip% +echo Pass: [%pass%/%run%] +echo Fail: [%fail%/%run%] +echo Check REPORT for more details. echo. -set /a endS=%time:~6,2% -set /a endM=%time:~3,2% -set /a diffS_=%endS%-%startS% -set /a diffM_=%endM%-%startM% +)>> Summary.txt + +echo [Failed List]: >> Summary.txt +setlocal EnableDelayedExpansion +for /f "delims=" %%i in ('findstr /c:"FAIL" REPORT') do ( + set "F=%%i" + set "F=!F:*FAIL =FAIL !" + echo !F! >> Summary.txt +) +echo. >> Summary.txt +echo [Skip List]: >> Summary.txt +copy /b Summary.txt+SkipList.txt +del SkipList.txt +goto end + +:noDevice +echo Device not found, please check your device. + +:end +echo. pause exit \ No newline at end of file