近日,在搭建android6.0的测试框架,相对比较简单,下面总结一下如题两项的测试脚本,内存和cpu测试相关在之前的文章有过涉及。
monkey_test.sh
#!/system/bin/sh
ANR_LOG=/data/anr
DROPBOX_LOG=/data/system/dropbox
clean_logs() {
rm -rf $ANR_LOG/*
rm -rf $DROPBOX_LOG/*
}
helper()
{
echo "#######################################"
echo "###### $(basename ${0}) pkglist count ######"
echo "#######################################"
exit 1
}
if [ $# -eq 1 ]; then
count=500
elif [ $# -eq 2 ]; then
count=$2
else
helper
fi
if [ ! -f $1 ]; then
echo "packagelist file not exist"
exit 1
fi
i=0
while read line
do
#echo $line
package[i]=$line
# echo ${package[$i]}
i=$(($i + 1))
done < $1
array_size=${#package[@]}
#echo $array_size
if [ $array_size -eq 0 ]; then
echo "package list null."
exit 1
else
echo "monkey test start..."
fi
#for (( j = 0; j < array_size; j++ ))
for j in `seq $array_size`
do
i=$(($j - 1))
# monkey -p ${package[$j]} --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions \
# --ignore-native-crashes --monitor-native-crashes -v -v -v 100 > /sdcard/mtklog/monkey.txt
# monkey -p ${package[$i]} --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions \
# --ignore-native-crashes --monitor-native-crashes --pct-syskeys 0 -v -v -v $count
# echo ${package[$j]}
done
# send system logs to nas
loghandler send
echo "monkey test done..."
例如:我将pkg文件推送到/data/local目录,每个package发送50个随机事件,则使用如下命令即可:
monkey_test /data/local/pkg 50
pkg文件为要测试的pkg包名列表,该脚本会去解析pkg,然后去按包名跑monkey。
上传日志脚本:
#!/system/bin/sh
# send logs to NAS
LOG_LOCAL=/data/local
ANR_LOG=/data/anr
DROPBOX_LOG=/data/system/dropbox
help_list() {
echo "============================="
echo "====$(basename ${0}) send/clean===="
echo "============================="
exit 0
}
if [ $# -ne "1" ]; then
help_list
fi
if [ $1 == "clean" ]; then
rm -rf $ANR_LOG/*
rm -rf $DROPBOX_LOG/*
exit 0
fi
VM_ID=`cat /sys/class/android_usb/android0/iSerial`
TIME=`date +%Y%m%d%H%M%S`
ANR_TAR=$VM_ID-anr-$TIME.tar
DROPBOX_TAR=$VM_ID-dropbox-$TIME.tar
ANR_COUNT=`ls $ANR_LOG | wc -w`
DROPBOX_COUNT=`ls $DROPBOX_LOG | wc -w`
zip_log_send()
{
if [ $ANR_COUNT -gt "0" ]; then
busybox tar zcvf $LOG_LOCAL/$ANR_TAR $ANR_LOG/*
busybox tftp -p -l $LOG_LOCAL/$ANR_TAR -r $ANR_TAR 192.168.1.1 &
fi
if [ $DROPBOX_COUNT -gt "0" ]; then
busybox tar zcvf $LOG_LOCAL/$DROPBOX_TAR $DROPBOX_LOG/*
busybox tftp -p -l $LOG_LOCAL/$DROPBOX_TAR -r $DROPBOX_TAR 192.168.1.1 &
fi
exit 0
}
if [ $1 == "send" ]; then
zip_log_send
fi
monkey跑完会调用上述脚本,将系统的日志目录通过tftp推送至服务器备案。
文件系统测试的脚本:
#!/system/bin/sh
# by kongbo
# fs test
CLEAN_TMP_FILE()
{
if [ -e "/data/tes.dd" ]; then
echo "rm tes file"
rm -rf "/data/tes.dd"
fi
}
CLEAN_TMP_FILE
SPACE_SRC=`df | grep "/storage/emulated"`
FREE_SRC=`echo $SPACE_SRC | busybox awk -F ' ' '{print $4}'`
FREE_SPACE=`echo $FREE_SRC | busybox awk -F '.' '{print $1}'`
G_TAG=`echo $FREE_SRC | grep "G"`
M_TAG=`echo $FREE_SRC | grep "M"`
K_TAG=`echo $FREE_SRC | grep "K"`
if [ -n "$K_TAG" ]; then
echo "free space too low exit."
exit 1
fi
echo "G_TAG:$G_TAG M_TAG:$M_TAG"
((MAX_FILE_SIZE=$FREE_SPACE*4/5))
((MIN_FILE_SIZE=$FREE_SPACE/5))
if [ -n "$G_TAG" ]; then
((max_count_num=$MAX_FILE_SIZE*1000))
((min_count_num=$MIN_FILE_SIZE*1000))
elif [ -n "$M_TAG" ]; then
((max_count_num=$MAX_FILE_SIZE))
((min_count_num=$MIN_FILE_SIZE))
else
echo "space err and will exit"
exit 1
fi
cd /data
echo "====== max_count_num: $max_count_num min_count_num: $min_count_num ======"
# write $MAX_FILE_SIZE G
sync;/system/bin/time -p sh -c "(dd if=/dev/zero of=tes.dd bs=1024k count=$max_count_num)"
# read $MAX_FILE_SIZE G
echo 3 > /proc/sys/vm/drop_caches; /system/bin/time -p dd if=tes.dd of=/dev/null bs=1024k
CLEAN_TMP_FILE
# write $MIN_FILE_SIZE G
sync;/system/bin/time -p sh -c "(dd if=/dev/zero of=tes.dd bs=1024k count=$min_count_num)"
# read $MIN_FILE_SIZE G
echo 3 > /proc/sys/vm/drop_caches; /system/bin/time -p dd if=tes.dd of=/dev/null bs=1024k
CLEAN_TMP_FILE
# test success and exit
exit 0
fsgo用法:
将其推送至VM的/system/bin目录,命令行执行:fsgo
测试项目:对剩余的user分区空间进行大文件读写填充,MAX为写入剩余空间80%大小的文件,后面跟着读取该文件;
MIN为写入剩余空间20%大小的文件,然后读取该文件。