当前位置: 首页 > 工具软件 > Blogbench > 使用案例 >

test-definitions/blob/master/auto-test/blogbench/blogbench.sh

云令
2023-12-01
#!/bin/sh -e #这里e表示若指令的返回值不等于零则立即退出shell,也可以用set -e代替

#用决定路径执行,并给字符串赋值
. ../../utils/sh-test-lib
#得到当前目录下的output这个目录
OUTPUT="$(pwd)/output"
RESULT_FILE="${OUTPUT}/result.txt"
LOG_FILE="${OUTPUT}/blogbench.txt"
ITERATION="30"
PARTITION=""
#定义函数,说明这个脚本的用途
usage() {
    echo "Usage: $0 [-i <iterations>] [-p </dev/sda1>]" 1>&2
    exit 1
}
#这个脚本可以指定3个可选参数
while getopts "i:p:h" o; do
    case "$o" in
        i) ITERATION="${OPTARG}" ;;
        p) PARTITION="${OPTARG}" ;;
        h|*) usage ;;
    esac
done
#调用函数检查是否是root 用户,如果不是root 用户,则输出错误日志
! check_root && error_msg "You need to be root to run this script."
create_out_dir "${OUTPUT}"

# Set the directory for blogbench test.
#如果PARTITION 为null
if [ -n "${PARTITION}" ]; then
	# 如果已经有mount节点的哈
    if mount | grep -q "${PARTITION}"; then
		#则将partition mount到/mnt 目录,并cd 到/mnt 中
        mount "${PARTITION}" /mnt
        cd /mnt/
    else
		#如果已经存在mount 节点的话,则找到这个节点,然后cd到这个节点目录中
        mount_point=$(mount | grep "${PARTITION}" | awk '{print $3}')
        cd "${mount_point}"
    fi
fi
#新建一个目录
mkdir ./bench

# Run blogbench test.
#检查当前平台是arm还是x86
detect_abi
# shellcheck disable=SC2154
#执行blogbench 命令
./bin/"${abi}"/blogbench -i "${ITERATION}" -d ./bench 2>&1 | tee "${LOG_FILE}"

# Parse test result.
#在输出的log中找writes 和 reads的信息
for i in writes reads; do
    grep "Final score for $i" "${LOG_FILE}" \
        | awk -v i="$i" '{printf("blogbench-%s pass %s blogs\n", i, $NF)}' \
        | tee -a "${RESULT_FILE}"
done
#删除bench 这个文件
rm -rf ./bench

 类似资料: