| #!/system/bin/sh |
| # |
| # script to start and stop bootchart test. |
| # |
| # Copyright (C) 2014, Linaro Limited. |
| # |
| # This program is free software; you can redistribute it and/or |
| # modify it under the terms of the GNU General Public License |
| # as published by the Free Software Foundation; either version 2 |
| # of the License, or (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program; if not, write to the Free Software |
| # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, |
| # USA. |
| # |
| # owner: yongqin.liu@linaro.org |
| # |
| ############################################################################### |
| |
| local_file_path="$0" |
| local_file_parent=$(dirname "${local_file_path}") |
| local_file_parent=$(cd "${local_file_parent}"||exit; pwd) |
| # shellcheck source=android/scripts/common.sh |
| . "${local_file_parent}/common.sh" |
| |
| LOGROOT="/data/bootchart" |
| start_f="${LOGROOT}/start" |
| enabled_f="${LOGROOT}/enabled" |
| stop_f="${LOGROOT}/stop" |
| DATA_TMP="/data/local/tmp" |
| TARBALL="${DATA_TMP}/bootchart.tgz" |
| |
| start_bootchart(){ |
| echo "${BOOTCHART_TIME}" > ${start_f} |
| if [ $? -ne 0 ]; then |
| output_test_result "start_bootchart" "fail" |
| else |
| output_test_result "start_bootchart" "pass" |
| fi |
| } |
| |
| enabled_bootchart(){ |
| touch ${enabled_f} |
| if [ $? -ne 0 ]; then |
| output_test_result "enabled_bootchart" "fail" |
| else |
| output_test_result "enabled_bootchart" "pass" |
| fi |
| } |
| |
| stop_bootchart(){ |
| echo 1 > ${stop_f} |
| if [ $? -ne 0 ]; then |
| output_test_result "stop_bootchart" "fail" |
| else |
| output_test_result "stop_bootchart" "pass" |
| fi |
| rm -fr ${start_f} ${enabled_f} |
| if [ $? -ne 0 ]; then |
| output_test_result "rm_start_file" "fail" |
| else |
| output_test_result "rm_start_file" "pass" |
| fi |
| } |
| |
| collect_data(){ |
| FILES="header proc_stat.log proc_ps.log proc_diskstats.log kernel_pacct" |
| if [ ! -d "${LOGROOT}" ]; then |
| echo "There is no ${LOGROOT} directory!" |
| return |
| fi |
| cd ${LOGROOT} || exit 1 |
| exist_files="" |
| for f in ${FILES}; do |
| if [ -f "${f}" ]; then |
| exist_files="${exist_files} ${f}" |
| fi |
| done |
| if [ -z "${exist_files}" ]; then |
| output_test_result "bootchart_collect_data" "fail" |
| exit 1 |
| fi |
| # shellcheck disable=SC2086 |
| tar -czvf ${TARBALL} ${exist_files} |
| if [ $? -ne 0 ]; then |
| output_test_result "bootchart_collect_data" "fail" |
| exit 1 |
| else |
| output_test_result "bootchart_collect_data" "pass" |
| fi |
| |
| bootchart_parse_cmd="/system/bin/bootchart_parse" |
| bootchart_paser_res="${DATA_TMP}/bootchart_parse.result" |
| if [ -x "${bootchart_parse_cmd}" ]; then |
| ${bootchart_parse_cmd} > "${bootchart_paser_res}" |
| if [ $? -ne 0 ]; then |
| output_test_result "bootchart_parse" "fail" |
| cd ${DATA_TMP} || exit 1 |
| [ -f "bootchart_parse.result" ] && lava-test-run-attach bootchart_parse.result text/plain |
| exit 1 |
| else |
| output_test_result "bootchart_parse" "pass" |
| while read -r line; do |
| test_case_cmd=$(echo "${line}" |cut -d, -f1) |
| start_time=$(echo "${line}" |cut -d, -f2) |
| end_time=$(echo "${line}" |cut -d, -f3) |
| output_test_result "${test_case_cmd}_starttime" "pass" "${start_time}" "ms" |
| output_test_result "${test_case_cmd}_endtime" "pass" "${end_time}" "ms" |
| done < "${bootchart_paser_res}" |
| fi |
| rm -fr "${bootchart_paser_res}" |
| fi |
| |
| # shellcheck disable=SC2086 |
| rm -fr ${FILES} |
| |
| cd ${DATA_TMP} || exit 1 |
| if [ -n "$(which lava-test-run-attach)" ]; then |
| [ -f "bootchart.tgz" ] && lava-test-run-attach bootchart.tgz application/x-gzip |
| [ -f "lava_test_shell_raw_data.csv" ] && lava-test-run-attach lava_test_shell_raw_data.csv text/plain |
| fi |
| } |
| |
| main(){ |
| OPERATION="${1}" |
| if [ "X${OPERATION}" = "X" ]; then |
| echo "Please specify the operation of start or stop" |
| exit 1 |
| fi |
| BOOTCHART_TIME="${2}" |
| if [ "X${BOOTCHART_TIME}" = "X" ]; then |
| BOOTCHART_TIME=120 |
| fi |
| export BOOTCHART_TIME |
| |
| case "X${OPERATION}" in |
| "Xstart") |
| start_bootchart |
| enabled_bootchart |
| ;; |
| "Xstop") |
| stop_bootchart |
| #wait the file to be synced to disk completely |
| sleep 5 |
| collect_data |
| ;; |
| *) |
| output_test_result "bootchart" "fail" |
| exit 1 |
| ;; |
| esac |
| } |
| |
| main "$@" |