@@ -26,27 +26,33 @@ source "$TOPDIR"/case-lib/lib.sh
2626random_min=3 # wait time should >= 3 for other device wakeup from sleep
2727random_max=20
2828
29- OPT_NAME[' l' ]=' loop' OPT_DESC[' l' ]=' loop count'
30- OPT_HAS_ARG[' l' ]=1 OPT_VAL[' l' ]=5
29+ OPT_NAME[' l' ]=' loop' OPT_DESC[' l' ]=' loop count'
30+ OPT_HAS_ARG[' l' ]=1 OPT_VAL[' l' ]=5
3131
32- OPT_NAME[' T' ]=' type' OPT_DESC[' T' ]=" suspend/resume type from /sys/power/mem_sleep"
33- OPT_HAS_ARG[' T' ]=1 OPT_VAL[' T' ]=" "
32+ OPT_NAME[' T' ]=' type' OPT_DESC[' T' ]=" suspend/resume type from /sys/power/mem_sleep"
33+ OPT_HAS_ARG[' T' ]=1 OPT_VAL[' T' ]=" "
3434
35- OPT_NAME[' S' ]=' sleep' OPT_DESC[' S' ]=' suspend/resume command:rtcwake sleep duration'
36- OPT_HAS_ARG[' S' ]=1 OPT_VAL[' S' ]=5
35+ OPT_NAME[' S' ]=' sleep' OPT_DESC[' S' ]=' suspend/resume command:rtcwake sleep duration'
36+ OPT_HAS_ARG[' S' ]=1 OPT_VAL[' S' ]=5
3737
38- OPT_NAME[' u' ]=' unload-audio' OPT_DESC[' u' ]=' unload audio modules for the test'
39- OPT_HAS_ARG[' u' ]=0 OPT_VAL[' u' ]=0
38+ OPT_NAME[' u' ]=' unload-audio' OPT_DESC[' u' ]=' unload audio modules for the test'
39+ OPT_HAS_ARG[' u' ]=0 OPT_VAL[' u' ]=0
4040
41- OPT_NAME[' w' ]=' wait' OPT_DESC[' w' ]=' idle time after suspend/resume wakeup'
42- OPT_HAS_ARG[' w' ]=1 OPT_VAL[' w' ]=5
41+ OPT_NAME[' w' ]=' wait' OPT_DESC[' w' ]=' idle time after suspend/resume wakeup'
42+ OPT_HAS_ARG[' w' ]=1 OPT_VAL[' w' ]=5
4343
44- OPT_NAME[' r' ]=' random' OPT_DESC[' r' ]=" Randomly setup wait/sleep time, range is [$random_min -$random_max ], this option will overwrite s & w option"
45- OPT_HAS_ARG[' r' ]=0 OPT_VAL[' r' ]=0
44+ OPT_NAME[' r' ]=' random' OPT_DESC[' r' ]=" Randomly setup wait/sleep time, range is [$random_min -$random_max ], this option will overwrite s & w option"
45+ OPT_HAS_ARG[' r' ]=0 OPT_VAL[' r' ]=0
4646
4747# processid is set by check-suspend-resume-with-audio.sh for audio test case
48- OPT_NAME[' p' ]=' processid' OPT_DESC[' p' ]=' Fail immediately if this process dies'
49- OPT_HAS_ARG[' p' ]=1 OPT_VAL[' p' ]=' '
48+ OPT_NAME[' p' ]=' processid' OPT_DESC[' p' ]=' Fail immediately if this process dies'
49+ OPT_HAS_ARG[' p' ]=1 OPT_VAL[' p' ]=' '
50+
51+ OPT_NAME[' tt' ]=' times-thresholds' OPT_DESC[' tt' ]=' sleepgraph thresholds'
52+ OPT_HAS_ARG[' tt' ]=1 OPT_VAL[' tt' ]=' '
53+
54+ OPT_NAME[' st' ]=' states-thresholds' OPT_DESC[' st' ]=' power states min % values'
55+ OPT_HAS_ARG[' st' ]=1 OPT_VAL[' st' ]=' '
5056
5157func_opt_parse_option " $@ "
5258func_lib_check_sudo
@@ -69,18 +75,18 @@ dlogi "Current suspend/resume type mode: $(cat /sys/power/mem_sleep)"
6975loop_count=${OPT_VAL['l']}
7076declare -a sleep_lst wait_lst
7177
72- if [ ${OPT_VAL['r']} -eq 1 ]; then
78+ if [ " ${OPT_VAL['r']} " -eq 1 ]; then
7379 # create random number list
74- for i in $( seq 1 $loop_count )
80+ for i in $( seq 1 " $loop_count " )
7581 do
76- sleep_lst[$ i ]=$( func_lib_get_random $random_max $random_min )
77- wait_lst[$ i ]=$( func_lib_get_random $random_max $random_min )
82+ sleep_lst[i]=$( func_lib_get_random $random_max $random_min )
83+ wait_lst[i]=$( func_lib_get_random $random_max $random_min )
7884 done
7985else
80- for i in $( seq 1 $loop_count )
86+ for i in $( seq 1 " $loop_count " )
8187 do
82- sleep_lst[$ i ]=${OPT_VAL['S']}
83- wait_lst[$ i ]=${OPT_VAL['w']}
88+ sleep_lst[i]=${OPT_VAL['S']}
89+ wait_lst[i]=${OPT_VAL['w']}
8490 done
8591fi
8692
@@ -143,7 +149,7 @@ main()
143149
144150 local keep_modules=true already_unloaded=false
145151
146- if [ ${OPT_VAL['u']} = 1 ]; then
152+ if [ " ${OPT_VAL['u']} " = 1 ]; then
147153 keep_modules=false
148154 fi
149155
@@ -159,7 +165,7 @@ main()
159165 expected_wakeup_count=$( cat /sys/power/wakeup_count)
160166 expected_stats_success=$( cat /sys/power/suspend_stats/success)
161167 save_initial_stats
162- for i in $( seq 1 $loop_count )
168+ for i in $( seq 1 " $loop_count " )
163169 do
164170 sleep_once " $i "
165171 done
@@ -170,6 +176,37 @@ main()
170176 die " Found kernel error after reloading audio drivers"
171177}
172178
179+ analyze_sleepgraph_results ()
180+ {
181+ dlogi " Analyzing sleepgraph results"
182+ results_file=$( echo suspend-* html* )
183+ thresholds=${OPT_VAL['tt']}
184+
185+ dlogi " Analyzing $results_file file..."
186+ if python3 " $SCRIPT_HOME " /tools/analyze-sleepgraph-results.py " $results_file " " $thresholds " ; then
187+ dlogi " All times measurements within the thresholds"
188+ return 0
189+ else
190+ dlogw " Time measurements not within the thresholds!"
191+ return 1
192+ fi
193+ }
194+
195+ run_rtcwake ()
196+ {
197+ if [[ " $RUN_SLEEPGRAPH " == true ]]; then
198+ dlogc " Run the command: $SLEEPGRAPH_PATH -rtcwake ${sleep_lst[$i]} -m freeze"
199+ sudo " $SLEEPGRAPH_PATH " -rtcwake " ${sleep_lst[$i]} " -m freeze ||
200+ dump_and_die " rtcwake returned $? "
201+ analyze_sleepgraph_results
202+
203+ else
204+ dlogc " Run the command: rtcwake -m mem -s ${sleep_lst[$i]} "
205+ sudo rtcwake -m mem -s " ${sleep_lst[$i]} " ||
206+ dump_and_die " rtcwake returned $? "
207+ fi
208+ }
209+
173210sleep_once ()
174211{
175212 local i=" $1 "
@@ -179,9 +216,7 @@ sleep_once()
179216 setup_kernel_check_point
180217 expected_wakeup_count=$(( expected_wakeup_count+ 1 ))
181218 expected_stats_success=$(( expected_stats_success+ 1 ))
182- dlogc " Run the command: rtcwake -m mem -s ${sleep_lst[$i]} "
183- sudo rtcwake -m mem -s " ${sleep_lst[$i]} " ||
184- dump_and_die " rtcwake returned $? "
219+ run_rtcwake
185220 dlogc " sleep for ${wait_lst[$i]} "
186221 sleep ${wait_lst[$i]}
187222 dlogi " Check for the kernel log status"
0 commit comments