1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
#!/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 "$@"
|