fa42f790278d04f4a781ddeb453117abf8c59f4e
[platform/core/dotnet/launcher.git] / tools / performance_test.sh
1 #!/bin/bash
2
3 STREAM_LOG_FILE=stream.log
4 DATE=$(date +%Y%m%d_%H%M)
5 RESULT_LOG_FILE='result/result_'$DATE'.log'
6
7 WAIT_FOR_LAUNCH=10
8 WAIT_FOR_LONG_LAUNCH=30
9 WAIT_FOR_KILL=5
10
11 PKG_IDS=()
12 APP_IDS=()
13
14 LONG_LAUNCHING_APP=(
15     "org.tizen.example.SNSUI.Tizen",
16 )
17
18 initialize ()
19 {
20     echo ""
21     echo "[>] Initialize for Performance Test"
22     if [ $(sdb get-state 2>/dev/null | grep -c "device") -eq 0 ];
23     then
24         echo ""
25         echo "[!] device is not connected - cannot execute"
26         echo ""
27         exit 0
28     fi
29
30     if [ $(dpkg-query -W -f='${Status}' inotify-tools 2>/dev/null | grep -c "ok installed") -eq 0 ];
31     then
32         echo ""
33         echo "[!] inotify-tools package should install"
34         echo "[!] starting install inotify-tools .. "
35         sudo apt-get install inotify-tools
36         if [ $(dpkg-query -W -f='${Status}' inotify-tools 2>/dev/null | grep -c "ok installed") -eq 0 ];
37         then
38             echo ""
39             echo "[!] install inotify-tools fail - cannot execute"
40             echo ""
41             exit 0
42         fi
43         echo 32768 | sudo tee /proc/sys/fs/inotify/max_user_watches
44         echo fs.inotify.max_user_watches=32768 | sudo tee -a /etc/sysctl.conf
45         sudo sysctl -p
46     fi
47     sdb root on
48     sdb shell "devicectl display stop">/dev/null 2>&1
49     mkdir result>/dev/null 2>&1
50     rm $STREAM_LOG_FILE>/dev/null 2>&1
51     touch $STREAM_LOG_FILE
52 }
53
54 install_tpk ()
55 {
56 #install tpk packages
57     echo "[>] Installing package in tpk directory"
58     TPKS=($(ls tpk | grep .tpk))
59
60
61     for item in ${TPKS[*]}
62     do
63 #        INSTALL_MSG=$(sdb install tpk/$item | grep start)
64 #        INSTALL_MSG=$(echo $INSTALL_MSG | sed "s/\[/ /g")
65 #        INSTALL_MSG=$(echo $INSTALL_MSG | sed "s/\]/ /g")
66 #        PKG_IDS+=($(echo $INSTALL_MSG | awk '{print $7}'))
67         INSTALL_PKG=$(sdb install tpk/$item | grep start  | sed "s/\[/ /g" | sed "s/\]/ /g" | awk '{print $7}' | tr -d '\r')
68         PKG_IDS+=$INSTALL_PKG
69         #($(echo $INSTALL_PKG)
70         echo " [>]  $INSTALL_PKG installs complete"
71     done
72 }
73
74 get_current_tpk_apps ()
75 {
76     echo "[>] Get application list in device"
77     PKG_IDS+=$(
78         sdb shell "su - owner -c 'pkgcmd -l | grep tpk'" |  while read line
79         do
80             APP_LIST_ENTITY=$line
81             APP_LIST_ENTITY=$(echo $APP_LIST_ENTITY | sed "s/\[/ /g")
82             APP_LIST_ENTITY=$(echo $APP_LIST_ENTITY | sed "s/\]/ /g")
83             APP_OWNER=($(echo $APP_LIST_ENTITY | awk '{print $1}'))
84             if [[ $APP_OWNER == 'user' ]]
85             then
86                 echo $APP_LIST_ENTITY | awk '{print $6}'
87             fi
88         done | sort | tr -d '\r'
89     )
90 #In 3.0 mobile / wearable, appfw install all of application to global application
91     PKG_IDS+=$(
92         sdb shell "su - owner -c 'ls -al /opt/usr/globalapps/ | grep tizenglobalapp'" |  while read line
93         do
94             APP_LIST_ENTITY=$line
95             APP_GLOBAL=($(echo $APP_LIST_ENTITY | awk '{print $3}'))
96             if [[ $APP_GLOBAL == 'tizenglobalapp' ]]
97             then
98                 echo $APP_LIST_ENTITY | awk '{print $9}'
99             fi
100         done | sort | tr -d '\r'
101     )
102 }
103
104 make_appid_list ()
105 {
106 #get app ids
107     echo "[>] Get application id that installed"
108     for item in ${PKG_IDS[*]}
109     do
110         APP_LIST_MSG=$(sdb shell "su - owner -c 'pkginfo --pkg $item' | grep mainappid" | tail -1)
111         APP_IDS+=($(echo $APP_LIST_MSG | awk '{print $3}' | tr -d '\r'))
112     done
113 }
114
115 initialize_first_launch ()
116 {
117     if [[ -z ${APP_IDS[0]} ]]; then
118         echo ""
119         echo "[!] No tpk Packages for test"
120         echo "[!] Copy tpk files in [./tpk] directory"
121         echo ""
122         exit 0
123     fi
124     echo "[>] Initial launch an application"
125     APP_LIST_MSG=$(sdb shell "su - owner -c 'app_launcher -s ${APP_IDS[0]}'")
126     sleep 10
127     APP_LIST_MSG=$(sdb shell "su - owner -c 'app_launcher -t ${APP_IDS[0]}'")
128     sleep 5
129 }
130
131 execute_time_stamp_auto ()
132 {
133     echo ""
134     echo "[>] Start performance test that applciation launching "
135     echo ""
136 #execute dlogstreamer
137     sdb shell "dlogutil -c"
138     sdb shell "dlogutil -v time AUL APP_CORE|grep -E 'app_request_to_launchpad_for_uid.*[SECURE_LOG].*launch.*request|__show_cb.*[EVENT_TEST][EVENT]'" >> $STREAM_LOG_FILE &
139     DLOG_STREAMER_PID=$!
140 #execute timestamp
141     /bin/bash ./timestamp.sh $STREAM_LOG_FILE $RESULT_LOG_FILE &
142     TIMESTAMP_PID=$!
143 }
144
145 execute_time_stamp_manual ()
146 {
147 #execute dlogstreamer
148     echo ""
149     echo "[>] Start performance test that applciation launching "
150     echo ""
151     rm $STREAM_LOG_FILE
152     touch $STREAM_LOG_FILE
153     sdb shell "dlogutil -c"
154     sdb shell "dlogutil -v time AUL APP_CORE|grep -E 'app_request_to_launchpad_for_uid.*[SECURE_LOG].*launch.*request|__show_cb.*[EVENT_TEST][EVENT]'" >> $STREAM_LOG_FILE &
155     DLOG_STREAMER_PID=$!
156 #execute timestamp
157     /bin/bash ./timestamp.sh $STREAM_LOG_FILE $RESULT_LOG_FILE
158     TIMESTAMP_PID=$!
159     wait $TIMESTAMP_PID
160 }
161
162 execute_time_stamp_manual_trace ()
163 {
164 #execute dlogstreamer
165     echo ""
166     echo "[>] Start performance test that applciation launching "
167     echo ""
168     rm $STREAM_LOG_FILE
169     touch $STREAM_LOG_FILE
170     sdb shell "dlogutil -c"
171     sdb shell "dlogutil -v time AUL APP_CORE|grep -E 'app_request_to_launchpad_for_uid.*[SECURE_LOG].*launch.*request|__show_cb.*[EVENT_TEST][EVENT]'" >> $STREAM_LOG_FILE &
172     DLOG_STREAMER_PID=$!
173 #execute timestamp
174     /bin/bash ./timestamp.sh $STREAM_LOG_FILE $RESULT_LOG_FILE &
175     TIMESTAMP_PID=$!
176 #execute ttrace
177     ~/tizen-sdk/tools/ttrace/ttrace.py -b 20480 -t 10 -o result/trace.html idle app view am &
178     TTRACE_PID=$!
179     wait $TTRACE_PID
180     rm result/*.ftrace
181     rm result/*.raw
182 }
183
184 execute_all_app ()
185 {
186 #execute each apps
187     for item in ${APP_IDS[*]}
188     do
189         APP_LIST_MSG=$(sdb shell "su - owner -c 'app_launcher -s $item'")
190         if [[ "${LONG_LAUNCHING_APP[@]}" =~ "${item}" ]]; then
191             sleep $WAIT_FOR_LONG_LAUNCH
192         else
193             sleep $WAIT_FOR_LAUNCH
194         fi
195         APP_LIST_MSG=$(sdb shell "su - owner -c 'app_launcher -t $item'")
196         sleep $WAIT_FOR_KILL
197     done
198 }
199
200 execute_all_app_trace ()
201 {
202 #execute each apps
203     for item in ${APP_IDS[*]}
204     do
205         ~/tizen-sdk/tools/ttrace/ttrace.py -b 20480 -t 13 -o result/${item}.html idle app view am & > /dev/null 2>&1
206         TTRACE_PID=$!
207         sleep 1
208         APP_LIST_MSG=$(sdb shell "su - owner -c 'app_launcher -s $item'")
209         sleep $WAIT_FOR_LAUNCH
210         APP_LIST_MSG=$(sdb shell "su - owner -c 'app_launcher -t $item'")
211         sleep $WAIT_FOR_KILL
212         sleep 4
213     done
214     rm result/*.ftrace
215     rm result/*.raw
216 }
217
218 finalize ()
219 {
220     echo ""
221     echo "[>] Result"
222     echo ""
223     cat $RESULT_LOG_FILE
224     echo ""
225     echo "[>] Result file : [ $RESULT_LOG_FILE ]"
226 }
227
228 destory ()
229 {
230     echo ""
231     kill -9 $DLOG_STREAMER_PID>/dev/null 2>&1
232     kill -9 $TIMESTAMP_PID>/dev/null 2>&1
233     kill -9 $TTRACE_PID>/dev/null 2>&1
234     rm $STREAM_LOG_FILE>/dev/null 2>&1
235     sdb shell "devicectl display start">/dev/null 2>&1
236     echo "[>] Finalize for Performance Test"
237     echo ""
238 }
239
240 help ()
241 {
242     echo ""
243     echo "[!] usage   : <script> [option]"
244     echo "    options : -a --auto    full automatic test"
245     echo "            : (suboption for auto) -s --skip-install  skip install tpk (execute tpk app in device)"
246     echo "            : -m --manual  execute application manually "
247     echo "            : -ta --ttrace-auto     full automatic test with ttrace"
248     echo "            : -tm --ttrace-manual   execute only one application manually with ttrace"
249     echo "example : ./performance_test.sh --auto"
250     echo ""
251 }
252
253
254 trap "destory" 0
255
256 if [[ $1 == '-a' ]] || [[ $1 == "--auto" ]]
257 then
258     echo ""
259     echo "[>] Start with AUTO mode"
260     initialize
261     if [[ $2 == "-s" ]] || [[ $2 == "--skip-install" ]]
262     then
263         get_current_tpk_apps
264     else
265         install_tpk
266     fi
267     make_appid_list
268     initialize_first_launch
269     execute_time_stamp_auto
270     execute_all_app
271     finalize
272 elif [[ $1 == '-m' ]] || [[ $1 == "--manual" ]]
273 then
274     echo ""
275     echo "[>] Start with MANUAL mode"
276     echo "[>] execute installed application in your device"
277     initialize
278     execute_time_stamp_manual
279     finalize
280 elif [[ $1 == '-ta' ]] || [[ $1 == "--ttrace-auto" ]]
281 then
282     echo ""
283     echo "[>] Start with T-trace Auto mode"
284     initialize
285     if [[ $2 == "-s" ]] || [[ $2 == "--skip-install" ]]
286     then
287         get_current_tpk_apps
288     else
289         install_tpk
290     fi
291     make_appid_list
292     initialize_first_launch
293     execute_time_stamp_auto
294     execute_all_app_trace
295     finalize
296 elif [[ $1 == '-tm' ]] || [[ $1 == "--ttrace-manual" ]]
297 then
298     echo ""
299     echo "[>] Start with T-trace Manual mode"
300     echo "[>] execute installed application in your device"
301     initialize
302     execute_time_stamp_manual_trace
303     finalize
304 else
305     help
306 fi