diff --git a/scripts/runtest.sh b/scripts/runtest.sh index c02e58a10a21331be9ee29fbb4f6d4017afba3b8..8e3e47b1d72098c69ddc69234c91f65382ce8c6b 100755 --- a/scripts/runtest.sh +++ b/scripts/runtest.sh @@ -1,29 +1,50 @@ cd /data/tests/libc-test rm src/REPORT -touch src/REPORT +touch src/REPORT -for filelist in src/* -do - if [ -d $filelist ]; then - for file in `ls $filelist` - do - if [ "$file" = "runtest" ] \ - || [ "$file" = "libdlopen_dso.so" ] \ - || [ "$file" = "libtls_init_dso.so" ] \ - || [ "$file" = "libtls_align_dso.so" ] \ - || [ "$file" = "libtls_get_new-dtv_dso.so" ] - then - continue - else - if [ "$file" = "tls_get_new-dtv" ];then - cd src/regression - /data/tests/libc-test/src/common/runtest -w '' $file >> /data/tests/libc-test/src/REPORT - cd /data/tests/libc-test - else - src/common/runtest -w '' $filelist/$file >> src/REPORT - fi - fi - done +function FileSuffix() { + local filename="$1" + if [ -n "$filename" ]; then + echo "${filename##*.}" fi -done +} + +for dir in src/* +do + if [ -d $dir ]; then + if [ "$dir" = "src/functionalext" ] + then + # continue + for subdir in $dir/* + do + for file in `ls $subdir` + do + if [ "$(FileSuffix ${file})" = "so" ] \ + || [ "$file" = "trace_stresstest" ] \ + || [ -d ./$subdir/$file ] + then + continue + else + # echo file=$subdir/$file + src/common/runtest -w '' ./$subdir/$file >> src/REPORT + fi + done + done + else + # continue + for file in `ls $dir` + do + if [ "$file" = "runtest" ] \ + || [ "$(FileSuffix ${file})" = "so" ] \ + || [ -d $file ] + then + continue + else + # echo file=$dir/$file + src/common/runtest -w '' $dir/$file >> src/REPORT + fi + done + fi + fi +done \ No newline at end of file diff --git a/scripts/runtest_Windows.bat b/scripts/runtest_Windows.bat index 76ca2f3d49d95148078d438c9ff61a8e2c0abcc4..6fc3d7b9a31f6ffb039278fcec117a719660f387 100644 --- a/scripts/runtest_Windows.bat +++ b/scripts/runtest_Windows.bat @@ -1,20 +1,22 @@ @echo off -@REM 本地OpenHarmony源码目录,请根据实际环境修改!! -set LOCAL=\\wsl$\ubuntu-20.04\home\OHOS\ -@REM 本地编译out目录 -set OUTDIR=out\hi3516dv300 +@REM 本地OpenHarmony源码目录,需根据实际环境修改 +set LOCAL=\\wsl$\ubuntu-20.04\home\code\OHOS +@REM 本地编译环境的out目录 +set OUTDIR=out\rk3568 @REM 本地用例生成目录 set TESTDIR=%LOCAL%\%OUTDIR%\tests\unittest\libc-test\src +set TESTDIRFEXT=%LOCAL%\%OUTDIR%\tests\unittest\libc-test\src\functionalext @REM 动态链接库生成目录 set DYNLIB=%LOCAL%\%OUTDIR%\musl\libc-test-lib @REM 远程传输目标目录 set REMOTE=/data/tests/libc-test/src +set REMOTEFEXT=/data/tests/libc-test/src/functionalext +set REMOTESYSTEM=/system/lib @REM runtest脚本所在目录 set SHDIR=%LOCAL%\third_party\musl\scripts -@REM 非必要情况下不要修改以下代码 @REM 开始时间 set /a startS=%time:~6,2% set /a startM=%time:~3,2% @@ -26,19 +28,13 @@ for /F "usebackq delims==" %%c in (`hdc list targets`) DO ( echo %%c | findstr "[Empty]" && goto noDevice || echo %%c && goto hdcStart ) -@REM 在单板创建目录,原先并不存在相应目录,也无法在传输时创建,因此需要预先创建好才能传输到相应位置。 +@REM 在单板创建目录, 需要预先创建好才能传输到相应位置。 :hdcStart echo. echo now mkdir... hdc shell mkdir /data/tests hdc shell mkdir /data/tests/libc-test hdc shell mkdir %REMOTE% -hdc shell mkdir %REMOTE%/api -hdc shell mkdir %REMOTE%/common -hdc shell mkdir %REMOTE%/functional -hdc shell mkdir %REMOTE%/math -hdc shell mkdir %REMOTE%/musl -hdc shell mkdir %REMOTE%/regression @REM 创建临时文件夹,用于存放用例生成的临时文件 hdc shell mkdir /tmp @@ -48,17 +44,29 @@ goto hdcSend @REM 传输文件,单板上执行runtest.sh,将结果REPORT返回到.bat所在目录 :hdcSend -for /F %%i in ('dir %TESTDIR% /S /B') do ( - for %%b in ("%%i\..") do ( - echo Sending %%~nb/%%~nxi - if "%%~nb" == "src" ( - hdc shell chmod a+x %REMOTE%/%%~nxi - ) else ( - hdc file send -sync %%i %REMOTE%/%%~nb/%%~nxi - hdc shell chmod a+x %REMOTE%/%%~nb/%%~nxi - ) +for /D %%i in (%TESTDIR%\*) do ( + echo [MKdir] %REMOTE%/%%~ni + hdc shell mkdir %REMOTE%/%%~ni + @REM Check local subdirectory + for /D %%j in (%%i\*) do ( + echo [MKdir] %REMOTE%/%%~ni/%%~nj + hdc shell mkdir %REMOTE%/%%~ni/%%~nj + @REM Send test cases to remote subdirectory + for %%k in (%%~j\*) do ( + echo Sending %%k %REMOTE%/%%~ni/%%~nj + hdc file send %%k %REMOTE%/%%~ni/%%~nj + ) + hdc shell chmod +x %REMOTE%/%%~ni/%%~nj/* ) + @REM Send test cases to remote directory + for %%l in (%%~i\*) do ( + echo hdc file send %%l %REMOTE%/%%~ni + hdc file send %%l %REMOTE%/%%~ni + ) + hdc shell chmod +x %REMOTE%/%%~ni/* ) + + @REM 动态库传输 hdc shell mount -o rw,remount / hdc shell chmod 777 /etc @@ -69,6 +77,37 @@ hdc file send %DYNLIB%\libdlclose_reset_dso.so %REMOTE%/functional/libdlclose_re hdc file send %DYNLIB%\libtls_align_dso.so %REMOTE%/functional/libtls_align_dso.so hdc file send %DYNLIB%\libtls_init_dso.so %REMOTE%/functional/libtls_init_dso.so hdc file send %DYNLIB%\libtls_get_new-dtv_dso.so %REMOTE%/regression/libtls_get_new-dtv_dso.so +hdc file send %DYNLIB%\libdlopen_ns_dso.so %REMOTEFEXT%/dlns/libdlopen_ns_dso.so +hdc file send %DYNLIB%\libdlopen_ns_dso.so %REMOTESYSTEM%/libdlopen_ns_dso.so +hdc file send %DYNLIB%\libdso_easy_symver.so %REMOTESYSTEM%/libdso_easy_symver.so +hdc file send %DYNLIB%\libdso_hard_symver.so %REMOTESYSTEM%/libdso_hard_symver.so +hdc file send %DYNLIB%\libdso_no_symver.so %REMOTESYSTEM%/libdso_no_symver.so +hdc file send %DYNLIB%\libdso_symver.so %REMOTESYSTEM%/libdso_symver.so +hdc file send %DYNLIB%\libldso_randomization_dep.so %REMOTEFEXT%/ldso_randomization/libldso_randomization_dep.so +hdc file send %DYNLIB%\libldso_randomization_dep_a.so %REMOTEFEXT%/ldso_randomization/libldso_randomization_dep_a.so +hdc file send %DYNLIB%\libldso_randomization_dep_b.so %REMOTEFEXT%/ldso_randomization/libldso_randomization_dep_b.so +hdc file send %DYNLIB%\libldso_randomization_dep_c.so %REMOTEFEXT%/ldso_randomization/libldso_randomization_dep_c.so +hdc file send %DYNLIB%\libldso_randomization_dep_d.so %REMOTEFEXT%/ldso_randomization/libldso_randomization_dep_d.so +hdc file send %DYNLIB%\libldso_randomization_dep_e.so %REMOTEFEXT%/ldso_randomization/libldso_randomization_dep_e.so +hdc file send %DYNLIB%\libdlopen_ext_relro_dso.so %REMOTEFEXT%/relro/libdlopen_ext_relro_dso.so + +@REM 构造测试所需环境 +hdc shell mkdir %REMOTE%/functionalext/dlns/B +hdc shell mkdir %REMOTE%/functionalext/dlns/C +hdc shell mkdir %REMOTE%/functionalext/dlns/D +hdc shell cp %REMOTEFEXT%/dlns/libdlopen_ns_dso.so %REMOTEFEXT%/dlns/sharedlibtest.so +hdc shell cp %REMOTEFEXT%/dlns/libdlopen_ns_dso.so %REMOTEFEXT%/dlns/B/libB.so +hdc shell cp %REMOTEFEXT%/dlns/libdlopen_ns_dso.so %REMOTEFEXT%/dlns/C/libC.so +hdc shell cp %REMOTEFEXT%/dlns/libdlopen_ns_dso.so %REMOTEFEXT%/dlns/D/libD.so +hdc shell cp %REMOTEFEXT%/dlns/libdlopen_ns_dso.so %REMOTEFEXT%/dlns/separated_0900.so +hdc shell cp %REMOTEFEXT%/dlns/libdlopen_ns_dso.so %REMOTEFEXT%/dlns/set_lib_path_0200.so +hdc shell cp %REMOTEFEXT%/dlns/libdlopen_ns_dso.so %REMOTEFEXT%/dlns/inherit_0300.so +hdc shell cp %REMOTEFEXT%/dlns/libdlopen_ns_dso.so %REMOTEFEXT%/dlns/inherit_0700.so +hdc shell cp %REMOTEFEXT%/dlns/libdlopen_ns_dso.so %REMOTEFEXT%/dlns/inherit_0800.so +hdc shell cp %REMOTEFEXT%/dlns/libdlopen_ns_dso.so %REMOTEFEXT%/dlns/inherit_1100.so +hdc shell mv /etc/ld-musl-namespace-arm.ini /etc/ld-musl-namespace-arm-temp.ini +hdc shell mv /etc/ld-musl-namespace-arm-test.ini /etc/ld-musl-namespace-arm.ini + @REM 修改动态库权限 hdc shell chmod a+x %REMOTE%/functional/libdlopen_dso.so @@ -95,8 +134,22 @@ echo. echo ================================ echo The test cases have been executed. -@REM 删除临时文件夹 -hdc shell rm /tmp -rf +@REM 恢复现场 +echo Start restore the scene +echo hdc shell mv /etc/ld-musl-namespace-arm.ini /etc/ld-musl-namespace-arm-test.inherit_0300 +echo ... +hdc shell mv /etc/ld-musl-namespace-arm.ini /etc/ld-musl-namespace-arm-test.ini +hdc shell mv /etc/ld-musl-namespace-arm-temp.ini /etc/ld-musl-namespace-arm.ini +hdc shell rm %REMOTEFEXT%/dlns/sharedlibtest.so -rf +hdc shell rm %REMOTEFEXT%/dlns/B/libB.so -rf +hdc shell rm %REMOTEFEXT%/dlns/C/libC.so -rf +hdc shell rm %REMOTEFEXT%/dlns/D/libD.so -rf +hdc shell rm %REMOTEFEXT%/dlns/separated_0900.so -rf +hdc shell rm %REMOTEFEXT%/dlns/set_lib_path_0200.so -rf +hdc shell rm %REMOTEFEXT%/dlns/inherit_0300.so -rf +hdc shell rm %REMOTEFEXT%/dlns/inherit_0700.so -rf +hdc shell rm %REMOTEFEXT%/dlns/inherit_0800.so -rf +hdc shell rm %REMOTEFEXT%/dlns/inherit_1100.so -rf hdc shell rm /dev/shm -rf echo. echo hdc file recv %REMOTE%/REPORT %~dp0REPORT @@ -129,4 +182,4 @@ echo All items finished. echo Time cost:%diffM_%m%diffS_%s . echo. pause -exit +exit \ No newline at end of file