1@echo off 2 3@REM 本地OpenHarmony源码目录,需根据实际环境修改 4set LOCAL=\\wsl$\ubuntu-20.04\home\code\OHOS 5@REM 本地编译环境的out目录 6set OUTDIR=out\rk3568 7 8@REM 本地用例生成目录 9set TESTDIR=%LOCAL%\%OUTDIR%\musl\libc-test 10@REM 动态链接库生成目录 11set DYNLIB=%LOCAL%\%OUTDIR%\musl\libc-test-lib 12@REM 远程传输目标目录 13set REMOTE=/data/tests/libc-test 14set REMOTESYSTEM=/system/lib 15@REM runtest脚本所在目录 16set SHDIR=%LOCAL%\third_party\musl\scripts 17set ARCH=arm 18 19@REM 检查设备是否连接 20echo checking HDC device 21for /F "usebackq delims==" %%c in (`hdc list targets`) DO ( 22 echo Device list: 23 echo %%c | findstr "[Empty]" && goto noDevice || echo %%c && goto CheckDirectory 24) 25 26:CheckDirectory 27echo checking TESTDIR 28if exist %TESTDIR% ( 29 echo TESTDIR: %TESTDIR% 30) else ( 31 echo Error: path "%TESTDIR%" was not found. 32 goto end 33) 34 35@REM Xts test require all so should exist in DYNLIB 36setlocal enabledelayedexpansion 37for %%j in (%TESTDIR%\*) do ( 38 set tmp_file=%%j 39 set tmp_file_suffix=!tmp_file:~-3! 40 if "!tmp_file_suffix!" == ".so" ( 41 set /a TOTAL_SO_IN_TESTDIR+=1 42 call set SO_NAMES=%%SO_NAMES%%;%%j 43 ) 44) 45 46if !TOTAL_SO_IN_TESTDIR! gtr 0 ( 47 echo Error: so shoul not exist in %TESTDIR%, you should modify your part_name in gn to set so in %DYNLIB%. 48 echo Total so:%TOTAL_SO_IN_TESTDIR% 49 echo So list:&echo\ %SO_NAMES:~1,10000% 50 goto end 51) 52 53@REM 在单板创建目录, 需要预先创建好才能传输到相应位置。 54:hdcStart 55for /F "usebackq delims==" %%r in (`hdc shell param get const.product.cpu.abilist`) DO ( 56 echo %%r | findstr "arm64-v8a" && set ARCH=aarch64 57) 58echo detect arch = %ARCH% 59 60echo. 61echo now mkdir... 62hdc shell rm -rf /data/tests/libc-test 63hdc shell mkdir /data/tests 64hdc shell mkdir %REMOTE% 65 66@REM 创建临时文件夹,用于存放用例生成的临时文件 67hdc shell mkdir /tmp 68hdc shell mkdir /dev/shm 69echo Mkdir done. 70goto hdcSend 71 72@REM 传输文件,单板上执行runtest.sh,将结果REPORT返回到.bat所在目录 73:hdcSend 74hdc file send %TESTDIR% %REMOTE%/src 75for %%j in (%DYNLIB%\*) do ( 76 echo %%j 77 hdc file send %%j %REMOTE%/src 78) 79hdc shell chmod +x %REMOTE%/src/* 80 81hdc shell mount -o rw,remount / 82hdc shell chmod 777 /etc 83hdc shell cp /etc/ld-musl-namespace-%ARCH%.ini /etc/ld-musl-namespace-%ARCH%.ini.bak 84hdc file send %LOCAL%\third_party\musl\config\ld-musl-namespace-%ARCH%-test.ini ^ 85 /etc/ld-musl-namespace-%ARCH%.ini 86hdc shell mkdir %REMOTE%/src/A 87hdc shell mkdir %REMOTE%/src/B 88hdc shell mkdir %REMOTE%/src/C 89hdc shell mkdir %REMOTE%/src/D 90hdc shell mkdir -p %REMOTE%/src/rpath_lib/rpath_support_A 91hdc shell mkdir -p %REMOTE%/src/rpath_lib/rpath_support_B 92hdc shell mkdir -p %REMOTE%/src/rpath_support_C 93hdc shell mv %REMOTE%/src/libdlns_dlsym_dep_a.so %REMOTE%/src/A 94hdc shell mv %REMOTE%/src/libdlns_dlsym_dep_b.so %REMOTE%/src/B 95hdc shell mv %REMOTE%/src/libdlns_dlsym_dep_c.so %REMOTE%/src/C 96hdc shell mv %REMOTE%/src/libprimary_absolute.so %REMOTE%/src/rpath_lib 97hdc shell mv %REMOTE%/src/libprimary_origin.so %REMOTE%/src/rpath_lib 98hdc shell mv %REMOTE%/src/libprimary_multiple.so %REMOTE%/src/rpath_lib 99hdc shell mv %REMOTE%/src/libsupport_002.so %REMOTE%/src/rpath_support_C 100hdc shell mv %REMOTE%/src/libsupport_001.so %REMOTE%/src/rpath_lib/rpath_support_A 101hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/B/libB.so 102hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/C/libC.so 103hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/D/libD.so 104hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/sharedlibtest.so 105hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/set_lib_path_0200.so 106hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/inherit_0300.so 107hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/inherit_0700.so 108hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/inherit_0800.so 109hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/inherit_1100.so 110hdc shell cp %REMOTE%/src/libdlopen_ns_dso.so /system/lib 111hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/lib_for_no_delete.so 112hdc shell cp %REMOTE%/src/libdlopen_dso.so %REMOTE%/src/lib_for_dlopen.so 113hdc shell cp %REMOTE%/src/libdlopen_ns_dso.so /system/lib64/libdlopen_ns_dso_sys.so 114hdc shell cp %REMOTE%/src/libdlopen_ns_dso.so /system/lib/libdlopen_ns_dso_sys.so 115hdc shell cp %REMOTE%/src/libdlopen_ns_dso.so /system/lib64/ndk/libdlopen_ns_dso_ndk.so 116hdc shell cp %REMOTE%/src/libdlopen_ns_dso.so /system/lib/ndk/libdlopen_ns_dso_ndk.so 117hdc shell cp %REMOTE%/src/libdlclose_recursive.so /system/lib64/libdlclose_recursive.so 118hdc shell cp %REMOTE%/src/libdlclose_recursive_dlopen_so.so /system/lib64/libdlclose_recursive_dlopen_so.so 119hdc shell cp %REMOTE%/src/libdl_gnu_hash_so.so %REMOTE%/src/libdl_gnu_hash_so.so 120hdc shell cp %REMOTE%/src/libdl_sysv_hash_so.so %REMOTE%/src/libdl_sysv_hash_so.so 121 122hdc shell mv %REMOTE%/src/zh_CN /tmp/zh_CN 123 124hdc file send %SHDIR%\runtest.sh %REMOTE%/runtest.sh 125hdc shell chmod +x %REMOTE%/runtest.sh 126hdc shell %REMOTE%/runtest.sh 127 128 129:Summary 130echo hdc file recv %REMOTE%/REPORT %~dp0REPORT 131hdc file recv %REMOTE%/REPORT %~dp0REPORT 132 133if exist FileList.txt ( 134 del FileList.txt 135) 136if exist Summary.txt ( 137 del Summary.txt 138) 139hdc file recv %REMOTE%/FileList.txt %~dp0FileList.txt 140hdc file recv %REMOTE%/SkipList.txt %~dp0SkipList.txt 141 142for /f "delims=:" %%a in ('dir /b /a:-d "%TESTDIR%" ^| findstr /n .*') do set all=%%a 143for /f %%b in (' find /c /v "" ^<"FileList.txt" ') do set /a run=%%b 144for /f %%c in (' find /c "FAIL" ^<"REPORT" ') do set fail=%%c 145 146 147echo =================================== 148set /a pass=%run%-%fail% 149set /a skip=%all%-%run% 150 151echo SUMMARY-%ARCH% 152echo All: %all% ^| Run: %run% ^| Skip: %skip% 153echo Pass: [%pass%/%run%] 154echo Fail: [%fail%/%run%] 155 156( 157echo SUMMARY-%ARCH% 158echo All: %all% ^| Run: %run% ^| Skip: %skip% 159echo Pass: [%pass%/%run%] 160echo Fail: [%fail%/%run%] 161echo Check REPORT for more details. 162echo. 163)>> Summary.txt 164 165echo [Failed List]: >> Summary.txt 166setlocal EnableDelayedExpansion 167for /f "delims=" %%i in ('findstr /c:"FAIL" REPORT') do ( 168 set "F=%%i" 169 set "F=!F:*FAIL =FAIL !" 170 echo !F! >> Summary.txt 171) 172echo. >> Summary.txt 173 174echo [Skip List]: >> Summary.txt 175copy /b Summary.txt+SkipList.txt 176del SkipList.txt 177goto end 178 179:noDevice 180echo Device not found, please check your device. 181 182:end 183echo. 184pause 185exit 186