• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash
2
3# Copyright (c) 2023 Huawei Device Co., Ltd.
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#     http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16LOCAL="unknown_dir"
17OUTDIR=out/rk3568
18CMD=hdc_std
19ARCH=arm
20
21function usage {
22    echo "usage: $0 -r {source root} -p {product name in out(eg rk3568)}"
23    exit 1
24}
25
26while getopts ":r:p:" opt
27do
28    case $opt in
29        r)
30            LOCAL=$OPTARG
31            ;;
32        p)
33            OUTDIR=out/$OPTARG
34            ;;
35        ?)
36            echo "unknown options $opt"
37            usage
38            exit 1
39            ;;
40    esac
41done
42
43TESTDIR=${LOCAL}/${OUTDIR}/musl/libc-test
44DYNLIB=${LOCAL}/${OUTDIR}/musl/libc-test-lib
45SHDIR=${LOCAL}/third_party/musl/scripts
46REMOTE=/data/tests/libc-test
47REMOTESYSTEM=/system/lib
48
49echo checking HDC device....
50for device in $($CMD list targets); do
51    device=$(echo $device | tr -d '\n\r')
52    if [ $device == "[Empty]" ]; then
53        echo Device not found, please check your device.
54        exit 1
55    fi
56done
57
58ABILIST=$(${CMD} shell param get const.product.cpu.abilist)
59echo $ABILIST
60
61if [ $ABILIST == "arm64-v8a" ]; then
62    ARCH=aarch64
63fi
64echo detect arch = ${ARCH}
65
66
67echo checking TESTDIR
68if [ ! -d ${TESTDIR} ]; then
69    echo Error: path "${TESTDIR}" was not found.
70    exit 1
71fi
72
73# Xts test require all so should exist in ${DYNLIB}
74TOTAL_SO_IN_TESTDIR=$(ls ${TESTDIR} | grep -E "*.so$" | wc -l)
75SO_NAMES=$(ls ${TESTDIR} | grep -E "*.so$")
76if [ $TOTAL_SO_IN_TESTDIR -gt 0  ]; then
77    echo Error: so shoul not exist in ${TESTDIR}, you should modify your part_name in gn to set so in ${DYNLIB}.
78    echo "Total so:${TOTAL_SO_IN_TESTDIR}"
79    echo -e "So list:\n${SO_NAMES}"
80    exit 1
81fi
82
83echo now mkdir
84${CMD} shell rm -rf ${REMOTE}
85${CMD} shell mkdir /data/tests
86${CMD} shell mkdir ${REMOTE}
87
88#mk temp directory
89${CMD} shell mkdir /tmp
90${CMD} shell mkdir /dev/shm
91echo Mkdir done.
92
93
94${CMD} file send ${TESTDIR} ${REMOTE}/src
95for lib in ${DYNLIB}/*; do
96    echo $lib
97    ${CMD} file send $lib ${REMOTE}/src
98done
99
100${CMD} shell chmod +x ${REMOTE}/src/*
101${CMD} shell mount -o rw,remount /
102${CMD} shell chmod 777 /etc
103${CMD} shell cp /etc/ld-musl-namespace-${ARCH}.ini /etc/ld-musl-namespace-${ARCH}.ini.bak
104${CMD} file send ${LOCAL}/third_party/musl/porting/linux/user/config/ld-musl-namespace-${ARCH}-test.ini /etc/ld-musl-namespace-${ARCH}.ini
105${CMD} shell mkdir ${REMOTE}/src/A
106${CMD} shell mkdir ${REMOTE}/src/B
107${CMD} shell mkdir ${REMOTE}/src/C
108${CMD} shell mkdir ${REMOTE}/src/D
109${CMD} shell mkdir -p ${REMOTE}/src/rpath_lib/rpath_support_A
110${CMD} shell mkdir -p ${REMOTE}/src/rpath_lib/rpath_support_B
111${CMD} shell mkdir -p ${REMOTE}/src/rpath_support_C
112${CMD} shell mv ${REMOTE}/src/libdlns_dlsym_dep_a.so ${REMOTE}/src/A
113${CMD} shell mv ${REMOTE}/src/libdlns_dlsym_dep_b.so ${REMOTE}/src/B
114${CMD} shell mv ${REMOTE}/src/libdlns_dlsym_dep_c.so ${REMOTE}/src/C
115${CMD} shell mv ${REMOTE}/src/libprimary_absolute.so ${REMOTE}/src/rpath_lib
116${CMD} shell mv ${REMOTE}/src/libprimary_origin.so ${REMOTE}/src/rpath_lib
117${CMD} shell mv ${REMOTE}/src/libprimary_multiple.so ${REMOTE}/src/rpath_lib
118${CMD} shell mv ${REMOTE}/src/libsupport_002.so ${REMOTE}/src/rpath_support_C
119${CMD} shell mv ${REMOTE}/src/libsupport_001.so ${REMOTE}/src/rpath_lib/rpath_support_A
120${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/B/libB.so
121${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/C/libC.so
122${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/D/libD.so
123${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/sharedlibtest.so
124${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/set_lib_path_0200.so
125${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/inherit_0300.so
126${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/inherit_0700.so
127${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/inherit_0800.so
128${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/inherit_1100.so
129${CMD} shell cp ${REMOTE}/src/libdlopen_ns_dso.so /system/lib
130${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/lib_for_no_delete.so
131${CMD} shell cp ${REMOTE}/src/libdlopen_dso.so ${REMOTE}/src/lib_for_dlopen.so
132${CMD} shell cp ${REMOTE}/src/libdlopen_ns_dso.so /system/lib64/libdlopen_ns_dso_sys.so
133${CMD} shell cp ${REMOTE}/src/libdlopen_ns_dso.so /system/lib64/ndk/libdlopen_ns_dso_ndk.so
134${CMD} shell cp ${REMOTE}/src/libdlopen_ns_dso.so /system/lib/libdlopen_ns_dso_sys.so
135${CMD} shell cp ${REMOTE}/src/libdlopen_ns_dso.so /system/lib/ndk/libdlopen_ns_dso_ndk.so
136${CMD} shell cp ${REMOTE}/src/libdlclose_recursive.so /system/lib64/libdlclose_recursive.so
137${CMD} shell cp ${REMOTE}/src/libdlclose_recursive_dlopen_so.so /system/lib64/libdlclose_recursive_dlopen_so.so
138${CMD} shell cp ${REMOTE}/src/libdl_gnu_hash_so.so ${REMOTE}/src/libdl_gnu_hash_so.so
139${CMD} shell cp ${REMOTE}/src/libdl_sysv_hash_so.so ${REMOTE}/src/libdl_sysv_hash_so.so
140
141${CMD} shell mv ${REMOTE}/src/zh_CN /tmp/zh_CN
142
143${CMD} file send ${SHDIR}/runtest.sh ${REMOTE}/runtest.sh
144${CMD} shell chmod +x ${REMOTE}/runtest.sh
145${CMD} shell ${REMOTE}/runtest.sh
146
147
148echo hdc file recv ${REMOTE}/REPORT ${SHDIR}/REPORT
149${CMD} file recv ${REMOTE}/REPORT ${SHDIR}/REPORT
150
151if [ -f FileList.txt ]; then
152	rm FileList.txt
153fi
154if [ -f Summary.txt ]; then
155	rm Summary.txt
156fi
157${CMD} file recv ${REMOTE}/FileList.txt ${SHDIR}/FileList.txt
158${CMD} file recv ${REMOTE}/SkipList.txt ${SHDIR}/SkipList.txt
159#
160#for /f "delims=:" %%a in ('dir /b "${TESTDIR}" ^| findstr /n .*') do set all=%%a
161all=$(ls -l ${TESTDIR} | grep "^-" | wc -l)
162#for /f %%b in (' find /c /v "" ^<"FileList.txt" ') do set /a run=%%b
163run=$(cat -t ${SHDIR}/FileList.txt | grep -v ^\s*$ | wc -l)
164#for /f %%c in (' find /c "FAIL" ^<"REPORT" ') do set fail=%%c
165fail=$(cat -t ${SHDIR}/REPORT | grep 'FAIL ' | wc -l)
166#
167#
168echo ===================================
169pass=$[$run - $fail]
170skip=$[$all - $run]
171#
172echo "SUMMARY
173echo All: ${all} | Run: ${run} | Skip: ${skip}
174echo Pass: [${pass}/${run}]
175echo Fail: [${fail}/${run}]
176" | tee Summary.txt
177
178#
179echo "[Failed List]:
180$(cat -t ${SHDIR}/REPORT | grep 'FAIL ')
181" | tee -a Summary.txt
182echo "[Skip List]:  " | tee -a Summary.txt
183
184cat ${SHDIR}/SkipList.txt | tee -a Summary.txt
185