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