#!/bin/bash AUTO_TEST_ANDROID_PATH=`pwd`AUTO_TEST_SRC_PATH="../../../"AUTO_TEST_RES_PATH="${AUTO_TEST_ANDROID_PATH}/report"mkdir -p ${AUTO_TEST_RES_PATH}#Prepare android build enviromentecho please set the enviroment variable as:echo export ANDROID_HOME="path of android sdk"echo export ANDROID_NDK_HOME="path of android ndk"ANDROID_SDK_PATH=${ANDROID_HOME}ANDROID_NDK_PATH=${ANDROID_NDK_HOME}ANDROID_MAKE_PARAMS="OS=android NDKROOT=${ANDROID_NDK_PATH} TARGET=android-19" if [ "#${ANDROID_SDK_PATH}" = "#" ]thenecho Please set ANDROID_HOME with the path of Android SDKexit 1fiif [ "#${ANDROID_NDK_PATH}" = "#" ]thenecho Please set ANDROID_NDK_HOME with the path of Android NDKexit 1fi#make buildcd ${AUTO_TEST_SRC_PATH}find ./ -name *.o -exec rm -f {} \;find ./ -name *.d -exec rm -f {} \;make $ANDROID_MAKE_PARAMS if [ $? -ne 0 ]then echo Build error,check with the trace of make exit 1fi ENCDEC=$1#find apkif [ ${ENCDEC} = "enc" ]thenecho Start to find enc apkapk_name=`find ./ -name WelsEncTest-debug.apk`if [ "#${apk_name}" = "#" ]then echo Fail to find encoder APK. exit 1fielseecho Start to find dec apkapk_name=`find ./ -name WelsDecTest-debug.apk`if [ "#${apk_name}" = "#" ]thenecho Fail to find decoder APK.exit 1fifi #prepare devicesADB=${ANDROID_SDK_PATH}/platform-tools/adb #get devicesdevices=`$ADB devices | awk -F" " '/\tdevice/{print $1}'`if [ "#$devices" = "#" ];then echo "Have not any android devices." exit 1fi #run apkrun_apk() {local apk=$1;local rand=` date +%s` if [[ "${apk}" =~ "WelsDecTest-debug.apk" ]]then apk_id="com.wels.dec" apk_main="com.wels.dec/.WelsDecTest" test_path="/sdcard/welsdec" log_grep_params="welsdec" test_res=${AUTO_TEST_ANDROID_PATH}/../DecoderPerfTestRes report_file=${AUTO_TEST_RES_PATH}/decPerf fiif [[ "${apk}" =~ "WelsEncTest-debug.apk" ]]then apk_id="com.wels.enc" apk_main="com.wels.enc/.WelsEncTest" test_path="/sdcard/welsenc" log_grep_params="welsenc" test_res=${AUTO_TEST_ANDROID_PATH}/../EncoderPerfTestRes report_file=${AUTO_TEST_RES_PATH}/encPerffispace="limit"for dev in $devices; do dev_info_file=${AUTO_TEST_RES_PATH}/${dev}.log $ADB -s $dev uninstall ${apk_id} $ADB -s $dev install -r ${apk} #TODO: output more info about android device such as name,cpu,memory,and also power comsumption. #echo `$ADB -s $dev shell cat /system/build.prop |grep ro.product.model | awk -F"=" '{print $2}'`>${dev_info_file} #push resources #For limited devices space if [ ${space} = "limit" ] then test_res_bak=${test_res}_bak mv ${test_res} ${test_res_bak} mkdir -p ${test_res} test_case=`ls ${test_res_bak}` for case in ${test_case} do echo ${case} cp -r ${test_res_bak}/${case} ${test_res}/. $ADB -s $dev push ${test_res} ${test_path} #before start logcat,kill logcat pid=`$ADB -s $dev shell ps | grep logcat | awk '{print $2;}'` [ "#$pid" != "#" ] && $ADB -s $dev shell kill $pid >/dev/null $ADB -s $dev logcat -c $ADB -s $dev logcat |grep ${log_grep_params} >>${report_file}_${dev}_${rand}.log & $ADB -s $dev shell am start -n ${apk_main} # check whetehr the app is finished every 2 sec for (( ; ; )); do $ADB -s $dev shell ps | grep ${apk_id} if [ $? -ne 0 ]; then sleep 2 $ADB -s $dev shell ps | grep ${apk_id} [ $? -ne 0 ] && break fi sleep 2 done # kill logcat pid=`$ADB -s $dev shell ps | grep logcat | awk '{print $2;}'` [ "#$pid" != "#" ] && $ADB -s $dev shell kill $pid >/dev/null #delete the res $ADB -s $dev shell rm -rf ${test_path} rm -rf ${test_res}/${case} done rm -rf ${test_res} mv ${test_res_bak} ${test_res} else $ADB -s $dev push ${test_res} ${test_path} #before start logcat,kill logcat pid=`$ADB -s $dev shell ps | grep logcat | awk '{print $2;}'` [ "#$pid" != "#" ] && $ADB -s $dev shell kill $pid >/dev/null $ADB -s $dev logcat -c $ADB -s $dev logcat |grep ${log_grep_params} >${report_file}_${dev}_${rand}.log & $ADB -s $dev shell am start -n ${apk_main} # check whetehr the app is finished every 2 sec for (( ; ; )); do $ADB -s $dev shell ps | grep ${apk_id} if [ $? -ne 0 ]; then sleep 2 $ADB -s $dev shell ps | grep ${apk_idi} [ $? -ne 0 ] && break fi sleep 2 done # kill logcat pid=`$ADB -s $dev shell ps | grep logcat | awk '{print $2;}'` [ "#$pid" != "#" ] && $ADB -s $dev shell kill $pid >/dev/null #delete the res $ADB -s $dev shell rm -rf ${test_path} fi done}for apk in ${apk_name};do run_apk $apk; if [ $? -ne 0 ] then echo There is something wrong happened when run ${apk_name} exit 1 else echo Finished $ENCDEC performance test on android echo The test result is at ./android/report/xxx.log echo xxxxxxxxxxxxxxxAndroid $ENCDEC Endxxxxxxxxxxxxxxxx fidone
#!/bin/bash
AUTO_TEST_ANDROID_PATH=`pwd`
AUTO_TEST_SRC_PATH="../../../"
AUTO_TEST_RES_PATH="${AUTO_TEST_ANDROID_PATH}/report"
mkdir -p ${AUTO_TEST_RES_PATH}
#Prepare android build enviroment
echo please set the enviroment variable as:
echo export ANDROID_HOME="path of android sdk"
echo export ANDROID_NDK_HOME="path of android ndk"
ANDROID_SDK_PATH=${ANDROID_HOME}
ANDROID_NDK_PATH=${ANDROID_NDK_HOME}
ANDROID_MAKE_PARAMS="OS=android NDKROOT=${ANDROID_NDK_PATH} TARGET=android-19"
if [ "#${ANDROID_SDK_PATH}" = "#" ]
then
echo Please set ANDROID_HOME with the path of Android SDK
exit 1
fi
if [ "#${ANDROID_NDK_PATH}" = "#" ]
then
echo Please set ANDROID_NDK_HOME with the path of Android NDK
exit 1
fi
#make build
cd ${AUTO_TEST_SRC_PATH}
find ./ -name *.o -exec rm -f {} \;
find ./ -name *.d -exec rm -f {} \;
make $ANDROID_MAKE_PARAMS
if [ $? -ne 0 ]
then
echo Build error,check with the trace of make
exit 1
fi
ENCDEC=$1
#find apk
if [ ${ENCDEC} = "enc" ]
then
echo Start to find enc apk
apk_name=`find ./ -name WelsEncTest-debug.apk`
if [ "#${apk_name}" = "#" ]
then
echo Fail to find encoder APK.
exit 1
fi
else
echo Start to find dec apk
apk_name=`find ./ -name WelsDecTest-debug.apk`
if [ "#${apk_name}" = "#" ]
then
echo Fail to find decoder APK.
exit 1
fi
fi
#prepare devices
ADB=${ANDROID_SDK_PATH}/platform-tools/adb
#get devices
devices=`$ADB devices | awk -F" " '/\tdevice/{print $1}'`
if [ "#$devices" = "#" ];then
echo "Have not any android devices."
exit 1
fi
#run apk
run_apk() {
local apk=$1;
local rand=` date +%s`
if [[ "${apk}" =~ "WelsDecTest-debug.apk" ]]
then
apk_id="com.wels.dec"
apk_main="com.wels.dec/.WelsDecTest"
test_path="/sdcard/welsdec"
log_grep_params="welsdec"
test_res=${AUTO_TEST_ANDROID_PATH}/../DecoderPerfTestRes
report_file=${AUTO_TEST_RES_PATH}/decPerf
fi
if [[ "${apk}" =~ "WelsEncTest-debug.apk" ]]
then
apk_id="com.wels.enc"
apk_main="com.wels.enc/.WelsEncTest"
test_path="/sdcard/welsenc"
log_grep_params="welsenc"
test_res=${AUTO_TEST_ANDROID_PATH}/../EncoderPerfTestRes
report_file=${AUTO_TEST_RES_PATH}/encPerf
fi
space="limit"
for dev in $devices; do
dev_info_file=${AUTO_TEST_RES_PATH}/${dev}.log
$ADB -s $dev uninstall ${apk_id}
$ADB -s $dev install -r ${apk}
#TODO: output more info about android device such as name,cpu,memory,and also power comsumption.
#echo `$ADB -s $dev shell cat /system/build.prop |grep ro.product.model | awk -F"=" '{print $2}'`>${dev_info_file}
#push resources
#For limited devices space
if [ ${space} = "limit" ]
then
test_res_bak=${test_res}_bak
mv ${test_res} ${test_res_bak}
mkdir -p ${test_res}
test_case=`ls ${test_res_bak}`
for case in ${test_case}
do
echo ${case}
cp -r ${test_res_bak}/${case} ${test_res}/.
$ADB -s $dev push ${test_res} ${test_path}
#before start logcat,kill logcat
pid=`$ADB -s $dev shell ps | grep logcat | awk '{print $2;}'`
[ "#$pid" != "#" ] && $ADB -s $dev shell kill $pid >/dev/null
$ADB -s $dev logcat -c
$ADB -s $dev logcat |grep ${log_grep_params} >>${report_file}_${dev}_${rand}.log &
$ADB -s $dev shell am start -n ${apk_main}
# check whetehr the app is finished every 2 sec
for (( ; ; )); do
$ADB -s $dev shell ps | grep ${apk_id}
if [ $? -ne 0 ]; then
sleep 2
$ADB -s $dev shell ps | grep ${apk_id}
[ $? -ne 0 ] && break
fi
sleep 2
done
# kill logcat
pid=`$ADB -s $dev shell ps | grep logcat | awk '{print $2;}'`
[ "#$pid" != "#" ] && $ADB -s $dev shell kill $pid >/dev/null
#delete the res
$ADB -s $dev shell rm -rf ${test_path}
rm -rf ${test_res}/${case}
done
rm -rf ${test_res}
mv ${test_res_bak} ${test_res}
else
$ADB -s $dev push ${test_res} ${test_path}
#before start logcat,kill logcat
pid=`$ADB -s $dev shell ps | grep logcat | awk '{print $2;}'`
[ "#$pid" != "#" ] && $ADB -s $dev shell kill $pid >/dev/null
$ADB -s $dev logcat -c
$ADB -s $dev logcat |grep ${log_grep_params} >${report_file}_${dev}_${rand}.log &
$ADB -s $dev shell am start -n ${apk_main}
# check whetehr the app is finished every 2 sec
for (( ; ; )); do
$ADB -s $dev shell ps | grep ${apk_id}
if [ $? -ne 0 ]; then
sleep 2
$ADB -s $dev shell ps | grep ${apk_idi}
[ $? -ne 0 ] && break
fi
sleep 2
done
# kill logcat
pid=`$ADB -s $dev shell ps | grep logcat | awk '{print $2;}'`
[ "#$pid" != "#" ] && $ADB -s $dev shell kill $pid >/dev/null
#delete the res
$ADB -s $dev shell rm -rf ${test_path}
fi
done
}
for apk in ${apk_name};do
run_apk $apk;
if [ $? -ne 0 ]
then
echo There is something wrong happened when run ${apk_name}
exit 1
else
echo Finished $ENCDEC performance test on android
echo The test result is at ./android/report/xxx.log
echo xxxxxxxxxxxxxxxAndroid $ENCDEC Endxxxxxxxxxxxxxxxx
fi
done