1#
2# Copyright (c) 2024 Huawei Device Co., Ltd.
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#     http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14#
15
16import subprocess
17import unittest
18import os
19
20from js_test_base import JsTestBase
21
22
23class JsTestCase(JsTestBase):
24    repeat_time = 3
25
26    @classmethod
27    def setUpClass(cls):
28        os.environ["isSkipped"] = "False"
29        # pass
30        cls.get_hdctool(cls)
31        hap_name = os.environ.get("HapName", "")
32        dbg_name = "com.example"
33        # start hap
34        subprocess.run(
35            [
36                cls.hdctool,
37                "shell",
38                "aa",
39                "start",
40                "-a",
41                "EntryAbility",
42                "-b",
43                hap_name,
44            ],
45            stdout=subprocess.PIPE,
46        )
47        cls.run_arkdb_server(cls, dbg_name)
48        cls.connect_client_socket(cls, dbg_name)
49        cls.tcp_client_socket.send("enable".encode('utf-8'))
50        data, addr = cls.tcp_client_socket.recvfrom(cls.BUFSIZ)
51        data, addr = cls.tcp_client_socket.recvfrom(cls.BUFSIZ)
52        print("recv: ", data.decode('utf-8'))
53
54    @classmethod
55    def tearDownClass(cls):
56        cls.close_client_socket(cls)
57        # stop hap
58        hap_name = os.environ.get("HapName", "")
59        subprocess.run(
60            [
61                cls.hdctool,
62                "shell",
63                "aa",
64                "force-stop",
65                hap_name,
66            ],
67            stdout=subprocess.PIPE,
68        )
69
70    def test_set_and_delete_breakpoints(self):
71        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
72            return
73        breakpoint_lines = [
74            "page1.ets 22", "page2.ets 22", "page3.ets 25"
75            ]
76        self.send_command("rt-enable")
77        for line in breakpoint_lines:
78            self.send_command("b entry/src/main/ets/pages/%s" % line)
79        for i in breakpoint_lines:
80            self.send_command("delete 1")
81
82    def test_repeat_breakpoints(self):
83        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
84            return
85        breakpoint_lines = [
86            "page1.ets 22", "page2.ets 22", "page3.ets 25"
87            ]
88        self.send_command("rt-enable")
89        for line in breakpoint_lines:
90            for i in range(self.repeat_time):
91                self.send_command("b entry/src/main/ets/pages/%s" % line)
92        for i in breakpoint_lines:
93            self.send_command("delete 1")
94
95    def test_dispaly(self):
96        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
97            return
98        breakpoint_lines = [
99            "page1.ets 22", "page2.ets 22", "page3.ets 25"
100            ]
101        self.send_command("rt-enable")
102        for line in breakpoint_lines:
103            self.send_command("b entry/src/main/ets/pages/%s" % line)
104            self.send_command("display")
105        for i in range(len(breakpoint_lines)):
106            self.send_command("delete 1")
107            self.send_command("display")
108
109    def test_break_and_resume(self):
110        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
111            return
112        breakpoint_lines = [
113            "page1.ets 22", "page2.ets 22", "page3.ets 25"
114            ]
115        self.send_command("rt-enable")
116        for line in breakpoint_lines:
117            self.send_command("b entry/src/main/ets/pages/%s" % line)
118        for i in range(self.repeat_time):
119            self.send_command("resume")
120        for i in breakpoint_lines:
121            self.send_command("delete 1")
122
123    def test_step_into(self):
124        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
125            return
126        breakpoint_lines = ["page1.ets 22", "page2.ets 22", "page3.ets 25"]
127        self.send_command("rt-enable")
128        for line in breakpoint_lines:
129            self.send_command("b entry/src/main/ets/pages/%s" % line)
130        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
131        for i in range(self.repeat_time):
132            self.send_command("step-into")
133        for i in range(self.repeat_time):
134            self.send_command("resume")
135        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
136        for i in range(self.repeat_time):
137            self.send_command("resume")
138
139        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
140
141        for i in range(self.repeat_time):
142            self.send_command("step-into")
143        for i in range(self.repeat_time):
144            self.send_command("resume")
145
146        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
147        for i in range(self.repeat_time):
148            self.send_command("resume")
149
150        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
151
152        for i in range(self.repeat_time):
153            self.send_command("step-into")
154        for i in range(self.repeat_time):
155            self.send_command("resume")
156
157        for i in breakpoint_lines:
158            self.send_command("delete 1")
159
160        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
161        for i in range(self.repeat_time):
162            self.send_command("resume")
163
164    def test_step_out(self):
165        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
166            return
167        breakpoint_lines = [
168            "page1.ets 22", "page2.ets 22", "page3.ets 25"
169            ]
170        self.send_command("rt-enable")
171        for line in breakpoint_lines:
172            self.send_command("b entry/src/main/ets/pages/%s" % line)
173        subprocess.run(
174            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
175            stdout=subprocess.PIPE
176        )
177        self.send_command("step-out")
178        for i in range(self.repeat_time):
179            self.send_command("resume")
180
181        subprocess.run(
182            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
183            stdout=subprocess.PIPE
184        )
185        for i in range(self.repeat_time):
186            self.send_command("resume")
187
188        subprocess.run(
189            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
190            stdout=subprocess.PIPE
191        )
192        self.send_command("step-out")
193        for i in range(self.repeat_time):
194            self.send_command("resume")
195
196        subprocess.run(
197            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
198            stdout=subprocess.PIPE
199        )
200        for i in range(self.repeat_time):
201            self.send_command("resume")
202
203        subprocess.run(
204            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
205            stdout=subprocess.PIPE
206        )
207        self.send_command("step-out")
208        for i in range(self.repeat_time):
209            self.send_command("resume")
210
211        for i in breakpoint_lines:
212            self.send_command("delete 1")
213
214        subprocess.run(
215            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
216            stdout=subprocess.PIPE
217        )
218        for i in range(self.repeat_time):
219            self.send_command("resume")
220
221    def test_step_over(self):
222        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
223            return
224        breakpoint_lines = ["page1.ets 22", "page2.ets 22", "page3.ets 25"]
225        self.send_command("rt-enable")
226        for line in breakpoint_lines:
227            self.send_command("b entry/src/main/ets/pages/%s" % line)
228        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
229        for i in range(self.repeat_time):
230            self.send_command("step-over")
231        for i in range(self.repeat_time):
232            self.send_command("resume")
233
234        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
235        for i in range(self.repeat_time):
236            self.send_command("resume")
237
238        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
239        for i in range(self.repeat_time):
240            self.send_command("step-over")
241        for i in range(self.repeat_time):
242            self.send_command("resume")
243
244        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
245        for i in range(self.repeat_time):
246            self.send_command("resume")
247
248        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
249        for i in range(self.repeat_time):
250            self.send_command("step-over")
251        for i in range(self.repeat_time):
252            self.send_command("resume")
253
254        for i in breakpoint_lines:
255            self.send_command("delete 1")
256
257        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
258        for i in range(self.repeat_time):
259            self.send_command("resume")
260
261    def test_step_into_and_step_out(self):
262        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
263            return
264        breakpoint_lines = ["page1.ets 22", "page2.ets 22", "page3.ets 25"]
265        self.send_command("rt-enable")
266        for line in breakpoint_lines:
267            self.send_command("b entry/src/main/ets/pages/%s" % line)
268        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
269        for i in range(self.repeat_time):
270            self.send_command("step-into")
271            self.send_command("step-over")
272        for i in range(self.repeat_time):
273            self.send_command("resume")
274
275        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
276        for i in range(self.repeat_time):
277            self.send_command("resume")
278
279        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
280        for i in range(self.repeat_time):
281            self.send_command("step-into")
282            self.send_command("step-over")
283        for i in range(self.repeat_time):
284            self.send_command("resume")
285
286        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
287        for i in range(self.repeat_time):
288            self.send_command("resume")
289
290        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
291        for i in range(self.repeat_time):
292            self.send_command("step-into")
293            self.send_command("step-over")
294        for i in range(self.repeat_time):
295            self.send_command("resume")
296
297        for i in breakpoint_lines:
298            self.send_command("delete 1")
299
300        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
301        for i in range(self.repeat_time):
302            self.send_command("resume")
303
304    def test_watch(self):
305        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
306            return
307        breakpoint_lines = [
308            "page1.ets 22", "page2.ets 22", "page3.ets 25"
309            ]
310        self.send_command("rt-enable")
311        for line in breakpoint_lines:
312            self.send_command("b entry/src/main/ets/pages/%s" % line)
313        subprocess.run(
314            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
315            stdout=subprocess.PIPE
316        )
317        self.send_command("watch a")
318        for i in range(self.repeat_time):
319            self.send_command("resume")
320
321        for i in breakpoint_lines:
322            self.send_command("delete 1")
323
324        subprocess.run(
325            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
326            stdout=subprocess.PIPE
327        )
328        for i in range(self.repeat_time):
329            self.send_command("resume")
330
331    def test_repeat_watch(self):
332        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
333            return
334        breakpoint_lines = ["page1.ets 22", "page2.ets 22", "page3.ets 25"]
335        self.send_command("rt-enable")
336        for line in breakpoint_lines:
337            self.send_command("b entry/src/main/ets/pages/%s" % line)
338        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
339        for i in range(self.repeat_time):
340            self.send_command("step-over")
341            self.send_command("watch a")
342        for i in range(self.repeat_time):
343            self.send_command("resume")
344
345        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
346        for i in range(self.repeat_time):
347            self.send_command("resume")
348
349        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
350        for i in range(self.repeat_time):
351            self.send_command("step-over")
352            self.send_command("watch a")
353        for i in range(self.repeat_time):
354            self.send_command("resume")
355
356        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
357        for i in range(self.repeat_time):
358            self.send_command("resume")
359
360        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
361        for i in range(self.repeat_time):
362            self.send_command("step-over")
363            self.send_command("watch a")
364        for i in range(self.repeat_time):
365            self.send_command("resume")
366
367        for i in breakpoint_lines:
368            self.send_command("delete 1")
369
370        subprocess.run("%s shell wukong special -t 600,600 -c 1" % self.hdctool, stdout=subprocess.PIPE)
371        for i in range(self.repeat_time):
372            self.send_command("resume")
373
374    def test_print(self):
375        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
376            return
377        breakpoint_lines = [
378            "page1.ets 22", "page2.ets 22", "page3.ets 25"
379            ]
380        self.send_command("rt-enable")
381        for line in breakpoint_lines:
382            self.send_command("b entry/src/main/ets/pages/%s" % line)
383        subprocess.run(
384            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
385            stdout=subprocess.PIPE
386        )
387        self.send_command("print")
388        self.send_command("print 2")
389        for i in range(self.repeat_time):
390            self.send_command("resume")
391
392        for i in breakpoint_lines:
393            self.send_command("delete 1")
394
395        subprocess.run(
396            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
397            stdout=subprocess.PIPE
398        )
399        for i in range(self.repeat_time):
400            self.send_command("resume")
401
402    def test_repeat_print(self):
403        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
404            return
405        breakpoint_lines = [
406            "page1.ets 22", "page2.ets 22", "page3.ets 25"
407            ]
408        self.send_command("rt-enable")
409        for line in breakpoint_lines:
410            self.send_command("b entry/src/main/ets/pages/%s" % line)
411        subprocess.run(
412            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
413            stdout=subprocess.PIPE
414        )
415        for i in range(self.repeat_time):
416            self.send_command("print")
417        for i in range(self.repeat_time):
418            self.send_command("resume")
419
420        for i in breakpoint_lines:
421            self.send_command("delete 1")
422
423        subprocess.run(
424            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
425            stdout=subprocess.PIPE
426        )
427        for i in range(self.repeat_time):
428            self.send_command("resume")
429
430    def test_cpuprofile(self):
431        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
432            return
433        breakpoint_lines = [
434            "page1.ets 22", "page2.ets 22", "page3.ets 25"
435            ]
436        self.send_command("rt-enable")
437        for line in breakpoint_lines:
438            self.send_command("b entry/src/main/ets/pages/%s" % line)
439        subprocess.run(
440            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
441            stdout=subprocess.PIPE
442        )
443        for i in range(self.repeat_time):
444            self.send_command("cpuprofile-enable")
445            self.send_command("cpuprofile")
446            self.send_command("step-over")
447            self.send_command("cpuprofile-stop")
448            self.send_command("cpuprofile-disable")
449        for i in range(self.repeat_time):
450            self.send_command("resume")
451
452        for i in breakpoint_lines:
453            self.send_command("delete 1")
454
455        subprocess.run(
456            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
457            stdout=subprocess.PIPE
458        )
459        for i in range(self.repeat_time):
460            self.send_command("resume")
461
462    def test_heapdump(self):
463        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
464            return
465        breakpoint_lines = [
466            "page1.ets 22", "page2.ets 22", "page3.ets 25"
467            ]
468        self.send_command("rt-enable")
469        for line in breakpoint_lines:
470            self.send_command("b entry/src/main/ets/pages/%s" % line)
471        subprocess.run(
472            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
473            stdout=subprocess.PIPE
474        )
475        self.send_command("heapprofiler-enable")
476        self.send_command("heapdump")
477        self.send_command("resume")
478        subprocess.run(
479            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
480            stdout=subprocess.PIPE
481        )
482        for i in range(self.repeat_time):
483            self.send_command("resume")
484        self.send_command("heapprofiler-disable")
485        for i in range(self.repeat_time):
486            self.send_command("resume")
487
488        for i in breakpoint_lines:
489            self.send_command("delete 1")
490
491        subprocess.run(
492            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
493            stdout=subprocess.PIPE
494        )
495        for i in range(self.repeat_time):
496            self.send_command("resume")
497
498    def test_allocationtrack(self):
499        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
500            return
501        breakpoint_lines = [
502            "page1.ets 22", "page2.ets 22", "page3.ets 25"
503            ]
504        self.send_command("rt-enable")
505        for line in breakpoint_lines:
506            self.send_command("b entry/src/main/ets/pages/%s" % line)
507        subprocess.run(
508            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
509            stdout=subprocess.PIPE
510        )
511        self.send_command("heapprofiler-enable")
512        self.send_command("allocationtrack")
513        self.send_command("resume")
514        subprocess.run(
515            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
516            stdout=subprocess.PIPE
517        )
518        for i in range(self.repeat_time):
519            self.send_command("resume")
520        self.send_command("allocationtrack-stop")
521        self.send_command("heapprofiler-disable")
522        for i in range(self.repeat_time):
523            self.send_command("resume")
524        for i in breakpoint_lines:
525            self.send_command("delete 1")
526
527        subprocess.run(
528            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
529            stdout=subprocess.PIPE
530        )
531        for i in range(self.repeat_time):
532            self.send_command("resume")
533
534    def test_sampling(self):
535        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
536            return
537        breakpoint_lines = [
538            "page1.ets 22", "page2.ets 22", "page3.ets 25"
539            ]
540        self.send_command("rt-enable")
541        for line in breakpoint_lines:
542            self.send_command("b entry/src/main/ets/pages/%s" % line)
543        subprocess.run(
544            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
545            stdout=subprocess.PIPE
546        )
547        for i in range(self.repeat_time):
548            self.send_command("heapprofiler-enable")
549            self.send_command("sampling")
550            self.send_command("step-over")
551            self.send_command("sampling-stop")
552            self.send_command("heapprofiler-disable")
553        for i in range(self.repeat_time):
554            self.send_command("resume")
555        for i in breakpoint_lines:
556            self.send_command("delete 1")
557
558        subprocess.run(
559            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
560            stdout=subprocess.PIPE
561        )
562        for i in range(self.repeat_time):
563            self.send_command("resume")
564
565    def test_heapusage(self):
566        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
567            return
568        breakpoint_lines = [
569            "page1.ets 22", "page2.ets 22", "page3.ets 25"
570            ]
571        self.send_command("rt-enable")
572        for line in breakpoint_lines:
573            self.send_command("b entry/src/main/ets/pages/%s" % line)
574        subprocess.run(
575            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
576            stdout=subprocess.PIPE
577        )
578        for i in range(self.repeat_time):
579            self.send_command("heapusage")
580        for i in range(self.repeat_time):
581            self.send_command("resume")
582        for i in breakpoint_lines:
583            self.send_command("delete 1")
584
585        subprocess.run(
586            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
587            stdout=subprocess.PIPE
588        )
589        for i in range(self.repeat_time):
590            self.send_command("resume")
591
592    def test_showstack(self):
593        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
594            return
595        breakpoint_lines = [
596            "page1.ets 22", "page2.ets 22", "page3.ets 25"
597            ]
598        self.send_command("rt-enable")
599        for line in breakpoint_lines:
600            self.send_command("b entry/src/main/ets/pages/%s" % line)
601        subprocess.run(
602            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
603            stdout=subprocess.PIPE
604        )
605        self.send_command("showstack")
606        self.send_command("resume")
607        subprocess.run(
608            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
609            stdout=subprocess.PIPE
610        )
611        for i in range(self.repeat_time):
612            self.send_command("resume")
613        for i in breakpoint_lines:
614            self.send_command("delete 1")
615
616        subprocess.run(
617            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
618            stdout=subprocess.PIPE
619        )
620        for i in range(self.repeat_time):
621            self.send_command("resume")
622
623    def test_combined_cmds(self):
624        if (os.environ.get("isRelease", "") == "True" or os.environ.get("isSkipped", "") == "True"):
625            return
626        breakpoint_lines = [
627            "page1.ets 22", "page2.ets 22", "page3.ets 25"
628            ]
629        self.send_command("rt-enable")
630        for line in breakpoint_lines:
631            self.send_command("b entry/src/main/ets/pages/%s" % line)
632        subprocess.run(
633            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
634            stdout=subprocess.PIPE
635        )
636
637        self.send_command("step-into")
638        self.send_command("watch")
639        self.send_command("step-out")
640        self.send_command("print")
641        self.send_command("heapprofiler-enable")
642        self.send_command("sampling")
643        subprocess.run(
644            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
645            stdout=subprocess.PIPE
646        )
647        for i in range(self.repeat_time):
648            self.send_command("resume")
649        self.send_command("sampling-stop")
650        self.send_command("heapprofiler-disable")
651        self.send_command("step-over")
652        self.send_command("cpuprofile-enable")
653        self.send_command("cpuprofile")
654        self.send_command("cpuprofile-stop")
655        self.send_command("cpuprofile-disable")
656        self.send_command("heapusage")
657        self.send_command("showstack")
658        subprocess.run(
659            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
660            stdout=subprocess.PIPE
661        )
662        for i in range(self.repeat_time):
663            self.send_command("resume")
664        for i in breakpoint_lines:
665            self.send_command("delete 1")
666
667        subprocess.run(
668            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
669            stdout=subprocess.PIPE
670        )
671        for i in range(self.repeat_time):
672            self.send_command("resume")
673
674    def test_only_cpuprofile(self):
675        if (os.environ.get("isSkipped", "") == "True"):
676            return
677        self.send_command("rt-enable")
678        subprocess.run(
679            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
680            stdout=subprocess.PIPE
681        )
682        for i in range(self.repeat_time):
683            self.send_command("cpuprofile-enable")
684            self.send_command("cpuprofile")
685            self.send_command("cpuprofile-stop")
686            self.send_command("cpuprofile-disable")
687        for i in range(self.repeat_time):
688            self.send_command("resume")
689
690        subprocess.run(
691            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
692            stdout=subprocess.PIPE
693        )
694        for i in range(self.repeat_time):
695            self.send_command("resume")
696
697    def test_only_heapdump(self):
698        if (os.environ.get("isSkipped", "") == "True"):
699            return
700        self.send_command("rt-enable")
701        subprocess.run(
702            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
703            stdout=subprocess.PIPE
704        )
705        self.send_command("heapprofiler-enable")
706        self.send_command("heapdump")
707        subprocess.run(
708            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
709            stdout=subprocess.PIPE
710        )
711        for i in range(self.repeat_time):
712            self.send_command("resume")
713        self.send_command("heapprofiler-disable")
714        for i in range(self.repeat_time):
715            self.send_command("resume")
716
717        subprocess.run(
718            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
719            stdout=subprocess.PIPE
720        )
721        for i in range(self.repeat_time):
722            self.send_command("resume")
723
724    def test_only_allocationtrack(self):
725        if (os.environ.get("isSkipped", "") == "True"):
726            return
727        self.send_command("rt-enable")
728        subprocess.run(
729            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
730            stdout=subprocess.PIPE
731        )
732        self.send_command("heapprofiler-enable")
733        self.send_command("allocationtrack")
734        subprocess.run(
735            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
736            stdout=subprocess.PIPE
737        )
738        for i in range(self.repeat_time):
739            self.send_command("resume")
740        self.send_command("allocationtrack-stop")
741        self.send_command("heapprofiler-disable")
742        for i in range(self.repeat_time):
743            self.send_command("resume")
744
745        subprocess.run(
746            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
747            stdout=subprocess.PIPE
748        )
749        for i in range(self.repeat_time):
750            self.send_command("resume")
751
752    def test_only_sampling(self):
753        if (os.environ.get("isSkipped", "") == "True"):
754            return
755        self.send_command("rt-enable")
756        subprocess.run(
757            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
758            stdout=subprocess.PIPE
759        )
760        for i in range(self.repeat_time):
761            self.send_command("heapprofiler-enable")
762            self.send_command("sampling")
763            self.send_command("sampling-stop")
764            self.send_command("heapprofiler-disable")
765        for i in range(self.repeat_time):
766            self.send_command("resume")
767
768        subprocess.run(
769            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
770            stdout=subprocess.PIPE
771        )
772        for i in range(self.repeat_time):
773            self.send_command("resume")
774
775    def test_only_heapusage(self):
776        if (os.environ.get("isSkipped", "") == "True"):
777            return
778        self.send_command("rt-enable")
779        subprocess.run(
780            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
781            stdout=subprocess.PIPE
782        )
783        for i in range(self.repeat_time):
784            self.send_command("heapusage")
785        for i in range(self.repeat_time):
786            self.send_command("resume")
787
788        subprocess.run(
789            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
790            stdout=subprocess.PIPE
791        )
792        for i in range(self.repeat_time):
793            self.send_command("resume")
794
795    def test_only_showstack(self):
796        if (os.environ.get("isSkipped", "") == "True"):
797            return
798        self.send_command("rt-enable")
799        subprocess.run(
800            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
801            stdout=subprocess.PIPE
802        )
803        self.send_command("showstack")
804        self.send_command("resume")
805        subprocess.run(
806            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
807            stdout=subprocess.PIPE
808        )
809        for i in range(self.repeat_time):
810            self.send_command("resume")
811
812        subprocess.run(
813            "%s shell wukong special -t 600,600 -c 1" % self.hdctool,
814            stdout=subprocess.PIPE
815        )
816        for i in range(self.repeat_time):
817            self.send_command("resume")