• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3"""
4Copyright (c) 2024 Huawei Device Co., Ltd.
5Licensed under the Apache License, Version 2.0 (the "License");
6you may not use this file except in compliance with the License.
7You may obtain a copy of the License at
8
9    http://www.apache.org/licenses/LICENSE-2.0
10
11Unless required by applicable law or agreed to in writing, software
12distributed under the License is distributed on an "AS IS" BASIS,
13WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14See the License for the specific language governing permissions and
15limitations under the License.
16
17Description: Scenario test case.
18"""
19
20import logging
21import os
22import time
23
24import pytest
25
26from aw import Application
27from aw import Utils
28from aw import debugger
29from aw.api import debugger_api, runtime_api
30
31
32@pytest.mark.debug
33@pytest.mark.timeout(80)
34class TestMainDropFrame:
35    """
36    测试用例:主线程 debug 调试之 drop frame
37    测试步骤:
38        1.  连接 connect server 和主线程 debugger server
39        2.  主线程使能 Runtime 和 Debugger
40        3.  创建子线程用于执行 task,连接子线程 debugger server
41        4.  子线程使能 Runtime 和 Debugger
42        5.  主线程 Index.ets 文件设置断点(Debugger.getPossibleAndSetBreakpointByUrl)
43        6.  主线程 resume,停在断点处(Debugger.resume)
44        7.  主线程 evaluateOnCallFrame,观察指定变量的值(Debugger.evaluateOnCallFrame)
45        8.  主线程时光调试,回到方法调用前(Debugger.dropFrame)
46        9.  主线程 evaluateOnCallFrame,观察指定变量的值是否变化(Debugger.evaluateO*nCallFrame)
47        10. 主线程重复步骤 6-10,测试 dropFrame 在不同方法内的执行情况
48        11. 执行到 taskpool 任务时切换到子线程进行 dropFrame 操作(Debugger.dropFrame)
49        12. 所有线程去使能 debugger(Debugger.disable)
50        13. 关闭所有线程 debugger server 和 connect server 连接
51    """
52
53    def setup_method(self):
54        logging.info('Start running TestMainDropFrame: setup')
55
56        self.log_path = rf'{os.path.dirname(__file__)}\..\log'
57        self.hilog_file_name = 'test_main_drop_frame.hilog.txt'
58        self.id_generator = Utils.message_id_generator()
59
60        # receive the hilog before the test start
61        Utils.clear_fault_log()
62        self.hilog_process, self.write_thread = Utils.save_hilog(log_path=self.log_path,
63                                                                 file_name=self.hilog_file_name,
64                                                                 debug_on=True)
65
66    def teardown_method(self):
67        Application.uninstall(self.config['bundle_name'])
68
69        # terminate the hilog receive process after the test done
70        time.sleep(3)
71        self.hilog_process.stdout.close()
72        self.hilog_process.terminate()
73        self.hilog_process.wait()
74        self.write_thread.join()
75
76        Utils.save_fault_log(log_path=self.log_path)
77        logging.info('TestMainDropFrame done')
78
79    def test(self, test_suite_main_instance_01_debug):
80        logging.info('Start running TestMainDropFrame: test')
81        self.config = test_suite_main_instance_01_debug
82        websocket = self.config['websocket']
83        taskpool = self.config['taskpool']
84        pid = self.config['pid']
85        self.debugger_impl = debugger_api.DebuggerImpl(self.id_generator, websocket)
86        self.runtime_impl = runtime_api.RuntimeImpl(self.id_generator, websocket)
87
88        taskpool.submit(websocket.main_task(taskpool, self.procedure, pid))
89        taskpool.await_taskpool()
90        taskpool.task_join()
91        if taskpool.task_exception:
92            raise taskpool.task_exception
93
94    async def procedure(self, websocket):
95        ################################################################################################################
96        # main thread: connect the debugger server
97        ################################################################################################################
98        main_thread = await self.debugger_impl.connect_to_debugger_server(self.config['pid'], True)
99        logging.info(f'Connect to the debugger server of instance: {main_thread.instance_id}')
100        ################################################################################################################
101        # main thread: Runtime.enable
102        ################################################################################################################
103        await self.runtime_impl.send("Runtime.enable", main_thread)
104        ################################################################################################################
105        # main thread: Debugger.enable
106        ################################################################################################################
107        await self.debugger_impl.send("Debugger.enable", main_thread)
108        ################################################################################################################
109        # main thread: Runtime.runIfWaitingForDebugger
110        ################################################################################################################
111        await self.runtime_impl.send("Runtime.runIfWaitingForDebugger", main_thread)
112        ################################################################################################################
113        # main thread: Debugger.scriptParsed
114        ################################################################################################################
115        response = await self.debugger_impl.recv("Debugger.scriptParsed", main_thread)
116        assert response['params']['url'] == self.config['file_path']['entry_ability']
117        assert response['params']['endLine'] == 0
118        ################################################################################################################
119        # main thread: Debugger.paused
120        ################################################################################################################
121        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
122        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['entry_ability']
123        assert response['params']['reason'] == 'Break on start'
124        ################################################################################################################
125        # main thread: Debugger.resume
126        ################################################################################################################
127        await self.debugger_impl.send("Debugger.resume", main_thread)
128        ################################################################################################################
129        # main thread: Debugger.scriptParsed
130        ################################################################################################################
131        response = await self.debugger_impl.recv("Debugger.scriptParsed", main_thread)
132        assert response['params']['url'] == self.config['file_path']['index']
133        assert response['params']['endLine'] == 0
134        ################################################################################################################
135        # main thread: Debugger.paused
136        ################################################################################################################
137        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
138        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
139        assert response['params']['reason'] == 'Break on start'
140        ################################################################################################################
141        # worker thread: connect the debugger server
142        ################################################################################################################
143        worker_thread = await self.debugger_impl.connect_to_debugger_server(self.config['pid'], False)
144        logging.info(f'Connect to the debugger server of instance: {worker_thread.instance_id}')
145        ################################################################################################################
146        # worker thread: Runtime.enable
147        ################################################################################################################
148        await self.runtime_impl.send("Runtime.enable", worker_thread)
149        ################################################################################################################
150        # worker thread: Debugger.enable
151        ################################################################################################################
152        await self.debugger_impl.send("Debugger.enable", worker_thread)
153        ################################################################################################################
154        # worker thread: Runtime.runIfWaitingForDebugger
155        ################################################################################################################
156        await self.runtime_impl.send("Runtime.runIfWaitingForDebugger", worker_thread)
157        ################################################################################################################
158        # main thread: Debugger.removeBreakpointsByUrl
159        ################################################################################################################
160        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
161        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
162        ################################################################################################################
163        # main thread: Debugger.getPossibleAndSetBreakpointByUrl
164        ################################################################################################################
165        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=79)]
166        params = debugger.SetBreakpointsLocations(locations)
167        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
168                                                 main_thread, params)
169        assert response['result']['locations'][0]['id'] == 'id:79:0:' + self.config['file_path']['index']
170        ################################################################################################################
171        # main thread: Debugger.resume
172        ################################################################################################################
173        await self.debugger_impl.send("Debugger.resume", main_thread)
174        # main thread: Debugger.paused
175        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
176        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
177        assert response['params']['reason'] == 'other'
178        assert response['params']['hitBreakpoints'] == ['id:79:9:' + self.config['file_path']['index']]
179        ################################################################################################################
180        # main thread: Debugger.evaluateOnCallFrame
181        ################################################################################################################
182        params = debugger.EvaluateOnCallFrameParams('b')
183        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
184        assert response['result']['result'] == {"type": "number", "unserializableValue": "3", "description": "3"}
185        params = debugger.EvaluateOnCallFrameParams('c')
186        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
187        assert response['result']['result'] == {"type": "number", "unserializableValue": "4", "description": "4"}
188        params = debugger.EvaluateOnCallFrameParams('e')
189        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
190        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
191        ################################################################################################################
192        # main thread: Debugger.dropFrame
193        ################################################################################################################
194        params = debugger.DropFrameParams()
195        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
196        # main thread: Debugger.paused
197        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
198        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
199        assert response['params']['reason'] == 'other'
200        assert response['params']['hitBreakpoints'] == []
201        ################################################################################################################
202        # main thread: Debugger.evaluateOnCallFrame
203        ################################################################################################################
204        params = debugger.EvaluateOnCallFrameParams('b')
205        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
206        assert response['result']['result'] == {"type": "number", "unserializableValue": "3", "description": "3"}
207        params = debugger.EvaluateOnCallFrameParams('c')
208        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
209        assert response['result']['result'] == {"type": "number", "unserializableValue": "0", "description": "0"}
210        params = debugger.EvaluateOnCallFrameParams('e')
211        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
212        assert response['result']['result'] == {"type": "number", "unserializableValue": "0", "description": "0"}
213        ################################################################################################################
214        # main thread: Debugger.dropFrame
215        ################################################################################################################
216        params = debugger.DropFrameParams()
217        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
218        # main thread: Debugger.paused
219        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
220        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
221        assert response['params']['reason'] == 'other'
222        assert response['params']['hitBreakpoints'] == []
223        ################################################################################################################
224        # main thread: Debugger.evaluateOnCallFrame
225        ################################################################################################################
226        params = debugger.EvaluateOnCallFrameParams('b')
227        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
228        assert response['result']['result'] == {"type": "number", "unserializableValue": "0", "description": "0"}
229        params = debugger.EvaluateOnCallFrameParams('c')
230        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
231        assert response['result']['result'] == {"type": "number", "unserializableValue": "0", "description": "0"}
232        params = debugger.EvaluateOnCallFrameParams('e')
233        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
234        assert response['result']['result']['type'] == "undefined"
235        ################################################################################################################
236        # main thread: Debugger.removeBreakpointsByUrl
237        ################################################################################################################
238        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
239        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
240        ################################################################################################################
241        # main thread: Debugger.getPossibleAndSetBreakpointByUrl
242        ################################################################################################################
243        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=91)]
244        params = debugger.SetBreakpointsLocations(locations)
245        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
246                                                 main_thread, params)
247        assert response['result']['locations'][0]['id'] == 'id:91:0:' + self.config['file_path']['index']
248        ################################################################################################################
249        # main thread: Debugger.resume
250        ################################################################################################################
251        await self.debugger_impl.send("Debugger.resume", main_thread)
252        # main thread: Debugger.paused
253        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
254        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
255        assert response['params']['reason'] == 'other'
256        assert response['params']['hitBreakpoints'] == ['id:91:5:' + self.config['file_path']['index']]
257        ################################################################################################################
258        # main thread: Debugger.evaluateOnCallFrame
259        ################################################################################################################
260        params = debugger.EvaluateOnCallFrameParams('a')
261        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
262        assert response['result']['result'] == {"type": "number", "unserializableValue": "2", "description": "2"}
263        params = debugger.EvaluateOnCallFrameParams('d')
264        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
265        assert response['result']['result'] == {"type": "number", "unserializableValue": "4", "description": "4"}
266        ################################################################################################################
267        # main thread: Debugger.dropFrame
268        ################################################################################################################
269        params = debugger.DropFrameParams()
270        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
271        # main thread: Debugger.paused
272        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
273        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
274        assert response['params']['reason'] == 'other'
275        assert response['params']['hitBreakpoints'] == []
276        ################################################################################################################
277        # main thread: Debugger.evaluateOnCallFrame
278        ################################################################################################################
279        params = debugger.EvaluateOnCallFrameParams('a')
280        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
281        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
282        params = debugger.EvaluateOnCallFrameParams('d')
283        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
284        assert response['result']['result'] == {"type": "number", "unserializableValue": "2", "description": "2"}
285        ################################################################################################################
286        # main thread: Debugger.dropFrame
287        ################################################################################################################
288        params = debugger.DropFrameParams()
289        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
290        # main thread: Debugger.paused
291        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
292        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
293        assert response['params']['reason'] == 'other'
294        assert response['params']['hitBreakpoints'] == []
295        ################################################################################################################
296        # main thread: Debugger.evaluateOnCallFrame
297        ################################################################################################################
298        params = debugger.EvaluateOnCallFrameParams('a')
299        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
300        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
301        params = debugger.EvaluateOnCallFrameParams('d')
302        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
303        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
304        ################################################################################################################
305        # main thread: Debugger.removeBreakpointsByUrl
306        ################################################################################################################
307        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
308        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
309        ################################################################################################################
310        # main thread: Debugger.getPossibleAndSetBreakpointByUrl
311        ################################################################################################################
312        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=105)]
313        params = debugger.SetBreakpointsLocations(locations)
314        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
315                                                 main_thread, params)
316        assert response['result']['locations'][0]['id'] == 'id:105:0:' + self.config['file_path']['index']
317        ################################################################################################################
318        # main thread: Debugger.resume
319        ################################################################################################################
320        await self.debugger_impl.send("Debugger.resume", main_thread)
321        # main thread: Debugger.paused
322        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
323        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
324        assert response['params']['reason'] == 'other'
325        assert response['params']['hitBreakpoints'] == ['id:105:5:' + self.config['file_path']['index']]
326        ################################################################################################################
327        # main thread: Debugger.resume
328        ################################################################################################################
329        await self.debugger_impl.send("Debugger.resume", main_thread)
330        # main thread: Debugger.paused
331        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
332        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
333        assert response['params']['reason'] == 'other'
334        assert response['params']['hitBreakpoints'] == ['id:105:5:' + self.config['file_path']['index']]
335        ################################################################################################################
336        # main thread: Debugger.evaluateOnCallFrame
337        ################################################################################################################
338        params = debugger.EvaluateOnCallFrameParams('a')
339        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
340        assert response['result']['result'] == {"type": "number", "unserializableValue": "4", "description": "4"}
341        params = debugger.EvaluateOnCallFrameParams('d')
342        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
343        assert response['result']['result'] == {"type": "number", "unserializableValue": "24", "description": "24"}
344        ################################################################################################################
345        # main thread: Debugger.dropFrame
346        ################################################################################################################
347        params = debugger.DropFrameParams()
348        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
349        # main thread: Debugger.paused
350        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
351        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
352        assert response['params']['reason'] == 'other'
353        assert response['params']['hitBreakpoints'] == []
354        ################################################################################################################
355        # main thread: Debugger.evaluateOnCallFrame
356        ################################################################################################################
357        params = debugger.EvaluateOnCallFrameParams('a')
358        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
359        assert response['result']['result'] == {"type": "number", "unserializableValue": "2", "description": "2"}
360        params = debugger.EvaluateOnCallFrameParams('d')
361        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
362        assert response['result']['result'] == {"type": "number", "unserializableValue": "4", "description": "4"}
363        ################################################################################################################
364        # main thread: Debugger.removeBreakpointsByUrl
365        ################################################################################################################
366        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
367        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
368        ################################################################################################################
369        # main thread: Debugger.getPossibleAndSetBreakpointByUrl
370        ################################################################################################################
371        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=119)]
372        params = debugger.SetBreakpointsLocations(locations)
373        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
374                                                 main_thread, params)
375        assert response['result']['locations'][0]['id'] == 'id:119:0:' + self.config['file_path']['index']
376        ################################################################################################################
377        # main thread: Debugger.resume
378        ################################################################################################################
379        await self.debugger_impl.send("Debugger.resume", main_thread)
380        # main thread: Debugger.paused
381        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
382        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
383        assert response['params']['reason'] == 'other'
384        assert response['params']['hitBreakpoints'] == ['id:119:13:' + self.config['file_path']['index']]
385        ################################################################################################################
386        # main thread: Debugger.resume
387        ################################################################################################################
388        await self.debugger_impl.send("Debugger.resume", main_thread)
389        # main thread: Debugger.paused
390        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
391        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
392        assert response['params']['reason'] == 'other'
393        assert response['params']['hitBreakpoints'] == ['id:119:13:' + self.config['file_path']['index']]
394        ################################################################################################################
395        # main thread: Debugger.evaluateOnCallFrame
396        ################################################################################################################
397        params = debugger.EvaluateOnCallFrameParams('a')
398        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
399        assert response['result']['result'] == {"type": "number", "unserializableValue": "3", "description": "3"}
400        params = debugger.EvaluateOnCallFrameParams('d')
401        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
402        assert response['result']['result'] == {"type": "number", "unserializableValue": "26", "description": "26"}
403        ################################################################################################################
404        # main thread: Debugger.dropFrame
405        ################################################################################################################
406        params = debugger.DropFrameParams()
407        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
408        # main thread: Debugger.paused
409        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
410        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
411        assert response['params']['reason'] == 'other'
412        assert response['params']['hitBreakpoints'] == []
413        ################################################################################################################
414        # main thread: Debugger.evaluateOnCallFrame
415        ################################################################################################################
416        params = debugger.EvaluateOnCallFrameParams('a')
417        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
418        assert response['result']['result'] == {"type": "number", "unserializableValue": "2", "description": "2"}
419        params = debugger.EvaluateOnCallFrameParams('d')
420        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
421        assert response['result']['result'] == {"type": "number", "unserializableValue": "12", "description": "12"}
422        ################################################################################################################
423        # main thread: Debugger.removeBreakpointsByUrl
424        ################################################################################################################
425        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
426        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
427        ################################################################################################################
428        # main thread: Debugger.getPossibleAndSetBreakpointByUrl
429        ################################################################################################################
430        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=134)]
431        params = debugger.SetBreakpointsLocations(locations)
432        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
433                                                 main_thread, params)
434        assert response['result']['locations'][0]['id'] == 'id:134:0:' + self.config['file_path']['index']
435        ################################################################################################################
436        # main thread: Debugger.resume
437        ################################################################################################################
438        await self.debugger_impl.send("Debugger.resume", main_thread)
439        # main thread: Debugger.paused
440        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
441        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
442        assert response['params']['reason'] == 'other'
443        assert response['params']['hitBreakpoints'] == ['id:134:13:' + self.config['file_path']['index']]
444        ################################################################################################################
445        # main thread: Debugger.evaluateOnCallFrame
446        ################################################################################################################
447        params = debugger.EvaluateOnCallFrameParams('s')
448        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
449        assert response['result']['result'] == {"type": "number", "unserializableValue": "3", "description": "3"}
450        params = debugger.EvaluateOnCallFrameParams('func')
451        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
452        function_info = response['result']['result']
453        assert function_info['type'] == 'function'
454        ################################################################################################################
455        # main thread: Debugger.dropFrame
456        ################################################################################################################
457        params = debugger.DropFrameParams()
458        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
459        # main thread: Debugger.paused
460        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
461        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
462        assert response['params']['reason'] == 'other'
463        assert response['params']['hitBreakpoints'] == []
464        ################################################################################################################
465        # main thread: Debugger.evaluateOnCallFrame
466        ################################################################################################################
467        params = debugger.EvaluateOnCallFrameParams('s')
468        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
469        assert response['result']['result'] == {"type": "number", "unserializableValue": "2", "description": "2"}
470        params = debugger.EvaluateOnCallFrameParams('func')
471        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
472        assert response['result']['result']['description'] == function_info['description']
473        ################################################################################################################
474        # main thread: Debugger.dropFrame
475        ################################################################################################################
476        params = debugger.DropFrameParams()
477        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
478        # main thread: Debugger.paused
479        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
480        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
481        assert response['params']['reason'] == 'other'
482        assert response['params']['hitBreakpoints'] == []
483        ################################################################################################################
484        # main thread: Debugger.evaluateOnCallFrame
485        ################################################################################################################
486        params = debugger.EvaluateOnCallFrameParams('s')
487        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
488        assert response['result']['result']['type'] == "undefined"
489        params = debugger.EvaluateOnCallFrameParams('func')
490        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
491        assert response['result']['result']['description'] != function_info['description']
492        assert response['result']['result']['type'] == 'function'
493        ################################################################################################################
494        # main thread: Debugger.removeBreakpointsByUrl
495        ################################################################################################################
496        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
497        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
498        ################################################################################################################
499        # main thread: Debugger.getPossibleAndSetBreakpointByUrl
500        ################################################################################################################
501        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=151)]
502        params = debugger.SetBreakpointsLocations(locations)
503        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
504                                                 main_thread, params)
505        assert response['result']['locations'][0]['id'] == 'id:151:0:' + self.config['file_path']['index']
506        ################################################################################################################
507        # main thread: Debugger.resume
508        ################################################################################################################
509        await self.debugger_impl.send("Debugger.resume", main_thread)
510        # main thread: Debugger.paused
511        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
512        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
513        assert response['params']['reason'] == 'other'
514        assert response['params']['hitBreakpoints'] == ['id:151:1:' + self.config['file_path']['index']]
515        ################################################################################################################
516        # main thread: Debugger.evaluateOnCallFrame
517        ################################################################################################################
518        params = debugger.EvaluateOnCallFrameParams('a')
519        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
520        assert response['result']['result'] == {"type": "number", "unserializableValue": "11", "description": "11"}
521        params = debugger.EvaluateOnCallFrameParams('x')
522        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
523        assert response['result']['result'] == {"type": "number", "unserializableValue": "8", "description": "8"}
524        ################################################################################################################
525        # main thread: Debugger.dropFrame
526        ################################################################################################################
527        params = debugger.DropFrameParams()
528        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
529        # main thread: Debugger.paused
530        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
531        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
532        assert response['params']['reason'] == 'other'
533        assert response['params']['hitBreakpoints'] == []
534        ################################################################################################################
535        # main thread: Debugger.evaluateOnCallFrame
536        ################################################################################################################
537        params = debugger.EvaluateOnCallFrameParams('a')
538        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
539        assert response['result']['result'] == {"type": "number", "unserializableValue": "9", "description": "9"}
540        params = debugger.EvaluateOnCallFrameParams('x')
541        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
542        assert response['result']['result'] == {"type": "number", "unserializableValue": "7", "description": "7"}
543        ################################################################################################################
544        # main thread: Debugger.dropFrame
545        ################################################################################################################
546        params = debugger.DropFrameParams()
547        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
548        # main thread: Debugger.paused
549        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
550        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
551        assert response['params']['reason'] == 'other'
552        assert response['params']['hitBreakpoints'] == []
553        ################################################################################################################
554        # main thread: Debugger.evaluateOnCallFrame
555        ################################################################################################################
556        params = debugger.EvaluateOnCallFrameParams('a')
557        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
558        assert response['result']['result'] == {"type": "number", "unserializableValue": "8", "description": "8"}
559        params = debugger.EvaluateOnCallFrameParams('x')
560        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
561        assert response['result']['result'] == {"type": "number", "unserializableValue": "7", "description": "7"}
562        ################################################################################################################
563        # main thread: Debugger.removeBreakpointsByUrl
564        ################################################################################################################
565        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
566        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
567        ################################################################################################################
568        # main thread: Debugger.getPossibleAndSetBreakpointByUrl
569        ################################################################################################################
570        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=161)]
571        params = debugger.SetBreakpointsLocations(locations)
572        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
573                                                 main_thread, params)
574        assert response['result']['locations'][0]['id'] == 'id:161:0:' + self.config['file_path']['index']
575        ################################################################################################################
576        # main thread: Debugger.resume
577        ################################################################################################################
578        await self.debugger_impl.send("Debugger.resume", main_thread)
579        # main thread: Debugger.paused
580        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
581        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
582        assert response['params']['reason'] == 'other'
583        assert response['params']['hitBreakpoints'] == ['id:161:5:' + self.config['file_path']['index']]
584        ################################################################################################################
585        # main thread: Debugger.evaluateOnCallFrame
586        ################################################################################################################
587        params = debugger.EvaluateOnCallFrameParams('a')
588        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
589        assert response['result']['result'] == {"type": "number", "unserializableValue": "10", "description": "10"}
590        params = debugger.EvaluateOnCallFrameParams('d')
591        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
592        assert response['result']['result'] == {"type": "number", "unserializableValue": "12", "description": "12"}
593        ################################################################################################################
594        # main thread: Debugger.dropFrame
595        ################################################################################################################
596        params = debugger.DropFrameParams()
597        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
598        # main thread: Debugger.paused
599        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
600        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
601        assert response['params']['reason'] == 'other'
602        assert response['params']['hitBreakpoints'] == []
603        ################################################################################################################
604        # main thread: Debugger.evaluateOnCallFrame
605        ################################################################################################################
606        params = debugger.EvaluateOnCallFrameParams('a')
607        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
608        assert response['result']['result'] == {"type": "number", "unserializableValue": "0", "description": "0"}
609        params = debugger.EvaluateOnCallFrameParams('d')
610        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
611        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
612        ################################################################################################################
613        # main thread: Debugger.removeBreakpointsByUrl
614        ################################################################################################################
615        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
616        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
617        ################################################################################################################
618        # main thread: Debugger.getPossibleAndSetBreakpointByUrl
619        ################################################################################################################
620        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=175)]
621        params = debugger.SetBreakpointsLocations(locations)
622        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
623                                                 main_thread, params)
624        assert response['result']['locations'][0]['id'] == 'id:175:0:' + self.config['file_path']['index']
625        ################################################################################################################
626        # main thread: Debugger.resume
627        ################################################################################################################
628        await self.debugger_impl.send("Debugger.resume", main_thread)
629        # main thread: Debugger.paused
630        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
631        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
632        assert response['params']['reason'] == 'other'
633        assert response['params']['hitBreakpoints'] == ['id:175:13:' + self.config['file_path']['index']]
634        ################################################################################################################
635        # main thread: Debugger.evaluateOnCallFrame
636        ################################################################################################################
637        params = debugger.EvaluateOnCallFrameParams('a')
638        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
639        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
640        params = debugger.EvaluateOnCallFrameParams('d')
641        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
642        assert response['result']['result'] == {"type": "number", "unserializableValue": "5", "description": "5"}
643        params = debugger.EvaluateOnCallFrameParams('e')
644        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
645        assert response['result']['result'] == {"type": "number", "unserializableValue": "12", "description": "12"}
646        ################################################################################################################
647        # main thread: Debugger.dropFrame
648        ################################################################################################################
649        params = debugger.DropFrameParams()
650        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
651        # main thread: Debugger.paused
652        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
653        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
654        assert response['params']['reason'] == 'other'
655        assert response['params']['hitBreakpoints'] == []
656        ################################################################################################################
657        # main thread: Debugger.evaluateOnCallFrame
658        ################################################################################################################
659        params = debugger.EvaluateOnCallFrameParams('a')
660        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
661        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
662        params = debugger.EvaluateOnCallFrameParams('d')
663        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
664        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
665        params = debugger.EvaluateOnCallFrameParams('e')
666        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
667        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
668        ################################################################################################################
669        # main thread: Debugger.dropFrame
670        ################################################################################################################
671        params = debugger.DropFrameParams()
672        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
673        # main thread: Debugger.paused
674        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
675        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
676        assert response['params']['reason'] == 'other'
677        assert response['params']['hitBreakpoints'] == []
678        ################################################################################################################
679        # main thread: Debugger.evaluateOnCallFrame
680        ################################################################################################################
681        params = debugger.EvaluateOnCallFrameParams('a')
682        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
683        assert response['result']['result'] == {"type": "number", "unserializableValue": "0", "description": "0"}
684        params = debugger.EvaluateOnCallFrameParams('d')
685        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
686        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
687        params = debugger.EvaluateOnCallFrameParams('e')
688        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
689        assert response['result']['result']['type'] == "undefined"
690        ################################################################################################################
691        # main thread: Debugger.removeBreakpointsByUrl
692        ################################################################################################################
693        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
694        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
695        ################################################################################################################
696        # main thread: Debugger.getPossibleAndSetBreakpointByUrl
697        ################################################################################################################
698        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=186)]
699        params = debugger.SetBreakpointsLocations(locations)
700        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
701                                                 main_thread, params)
702        assert response['result']['locations'][0]['id'] == 'id:186:0:' + self.config['file_path']['index']
703        ################################################################################################################
704        # main thread: Debugger.resume
705        ################################################################################################################
706        await self.debugger_impl.send("Debugger.resume", main_thread)
707        # main thread: Debugger.paused
708        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
709        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
710        assert response['params']['reason'] == 'other'
711        assert response['params']['hitBreakpoints'] == ['id:186:13:' + self.config['file_path']['index']]
712        ################################################################################################################
713        # main thread: Debugger.evaluateOnCallFrame
714        ################################################################################################################
715        params = debugger.EvaluateOnCallFrameParams('a')
716        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
717        assert response['result']['result'] == {"type": "number", "unserializableValue": "2", "description": "2"}
718        params = debugger.EvaluateOnCallFrameParams('d')
719        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
720        assert response['result']['result'] == {"type": "number", "unserializableValue": "9", "description": "9"}
721        params = debugger.EvaluateOnCallFrameParams('e')
722        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
723        assert response['result']['result'] == {"type": "number", "unserializableValue": "22", "description": "22"}
724        ################################################################################################################
725        # main thread: Debugger.dropFrame
726        ################################################################################################################
727        params = debugger.DropFrameParams()
728        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
729        # main thread: Debugger.paused
730        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
731        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
732        assert response['params']['reason'] == 'other'
733        assert response['params']['hitBreakpoints'] == []
734        ################################################################################################################
735        # main thread: Debugger.evaluateOnCallFrame
736        ################################################################################################################
737        params = debugger.EvaluateOnCallFrameParams('a')
738        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
739        assert response['result']['result'] == {"type": "number", "unserializableValue": "2", "description": "2"}
740        params = debugger.EvaluateOnCallFrameParams('d')
741        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
742        assert response['result']['result'] == {"type": "number", "unserializableValue": "5", "description": "5"}
743        params = debugger.EvaluateOnCallFrameParams('e')
744        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
745        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
746        ################################################################################################################
747        # main thread: Debugger.dropFrame
748        ################################################################################################################
749        params = debugger.DropFrameParams()
750        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
751        # main thread: Debugger.paused
752        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
753        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
754        assert response['params']['reason'] == 'other'
755        assert response['params']['hitBreakpoints'] == []
756        ################################################################################################################
757        # main thread: Debugger.evaluateOnCallFrame
758        ################################################################################################################
759        params = debugger.EvaluateOnCallFrameParams('a')
760        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
761        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
762        params = debugger.EvaluateOnCallFrameParams('d')
763        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
764        assert response['result']['result'] == {"type": "number", "unserializableValue": "5", "description": "5"}
765        params = debugger.EvaluateOnCallFrameParams('e')
766        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
767        assert response['result']['result']['type'] == "undefined"
768        ################################################################################################################
769        # main thread: Debugger.removeBreakpointsByUrl
770        ################################################################################################################
771        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
772        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
773        ################################################################################################################
774        # main thread: Debugger.getPossibleAndSetBreakpointByUrl
775        ################################################################################################################
776        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=204)]
777        params = debugger.SetBreakpointsLocations(locations)
778        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
779                                                 main_thread, params)
780        assert response['result']['locations'][0]['id'] == 'id:204:0:' + self.config['file_path']['index']
781        ################################################################################################################
782        # main thread: Debugger.resume
783        ################################################################################################################
784        await self.debugger_impl.send("Debugger.resume", main_thread)
785        # main thread: Debugger.paused
786        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
787        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
788        assert response['params']['reason'] == 'other'
789        assert response['params']['hitBreakpoints'] == ['id:204:13:' + self.config['file_path']['index']]
790        ################################################################################################################
791        # main thread: Debugger.evaluateOnCallFrame
792        ################################################################################################################
793        params = debugger.EvaluateOnCallFrameParams('a')
794        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
795        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
796        params = debugger.EvaluateOnCallFrameParams('d')
797        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
798        assert response['result']['result'] == {"type": "number", "unserializableValue": "14", "description": "14"}
799        params = debugger.EvaluateOnCallFrameParams('e')
800        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
801        assert response['result']['result'] == {"type": "number", "unserializableValue": "21", "description": "21"}
802        ################################################################################################################
803        # main thread: Debugger.dropFrame
804        ################################################################################################################
805        params = debugger.DropFrameParams()
806        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
807        # main thread: Debugger.paused
808        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
809        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
810        assert response['params']['reason'] == 'other'
811        assert response['params']['hitBreakpoints'] == []
812        ################################################################################################################
813        # main thread: Debugger.evaluateOnCallFrame
814        ################################################################################################################
815        params = debugger.EvaluateOnCallFrameParams('a')
816        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
817        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
818        params = debugger.EvaluateOnCallFrameParams('d')
819        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
820        assert response['result']['result'] == {"type": "number", "unserializableValue": "10", "description": "10"}
821        params = debugger.EvaluateOnCallFrameParams('e')
822        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
823        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
824        ################################################################################################################
825        # main thread: Debugger.dropFrame
826        ################################################################################################################
827        params = debugger.DropFrameParams()
828        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
829        # main thread: Debugger.paused
830        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
831        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
832        assert response['params']['reason'] == 'other'
833        assert response['params']['hitBreakpoints'] == []
834        ################################################################################################################
835        # main thread: Debugger.evaluateOnCallFrame
836        ################################################################################################################
837        params = debugger.EvaluateOnCallFrameParams('a')
838        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
839        assert response['result']['result'] == {"type": "number", "unserializableValue": "0", "description": "0"}
840        params = debugger.EvaluateOnCallFrameParams('d')
841        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
842        assert response['result']['result'] == {"type": "number", "unserializableValue": "10", "description": "10"}
843        params = debugger.EvaluateOnCallFrameParams('e')
844        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
845        assert response['result']['result']['type'] == "undefined"
846        ################################################################################################################
847        # main thread: Debugger.removeBreakpointsByUrl
848        ################################################################################################################
849        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
850        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
851        ################################################################################################################
852        # main thread: Debugger.getPossibleAndSetBreakpointByUrl
853        ################################################################################################################
854        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=220)]
855        params = debugger.SetBreakpointsLocations(locations)
856        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
857                                                 main_thread, params)
858        assert response['result']['locations'][0]['id'] == 'id:220:0:' + self.config['file_path']['index']
859        ################################################################################################################
860        # main thread: Debugger.resume
861        ################################################################################################################
862        await self.debugger_impl.send("Debugger.resume", main_thread)
863        # main thread: Debugger.paused
864        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
865        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
866        assert response['params']['reason'] == 'other'
867        assert response['params']['hitBreakpoints'] == ['id:220:9:' + self.config['file_path']['index']]
868        ################################################################################################################
869        # main thread: Debugger.evaluateOnCallFrame
870        ################################################################################################################
871        params = debugger.EvaluateOnCallFrameParams('a')
872        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
873        assert response['result']['result'] == {"type": "number", "unserializableValue": "3", "description": "3"}
874        params = debugger.EvaluateOnCallFrameParams('d')
875        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
876        assert response['result']['result'] == {"type": "number", "unserializableValue": "17", "description": "17"}
877        ################################################################################################################
878        # main thread: Debugger.dropFrame
879        ################################################################################################################
880        params = debugger.DropFrameParams()
881        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
882        # main thread: Debugger.paused
883        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
884        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
885        assert response['params']['reason'] == 'other'
886        assert response['params']['hitBreakpoints'] == []
887        ################################################################################################################
888        # main thread: Debugger.evaluateOnCallFrame
889        ################################################################################################################
890        params = debugger.EvaluateOnCallFrameParams('a')
891        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
892        assert response['result']['result'] == {"type": "number", "unserializableValue": "2", "description": "2"}
893        params = debugger.EvaluateOnCallFrameParams('d')
894        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
895        assert response['result']['result'] == {"type": "number", "unserializableValue": "14", "description": "14"}
896        ################################################################################################################
897        # main thread: Debugger.removeBreakpointsByUrl
898        ################################################################################################################
899        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
900        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
901        ################################################################################################################
902        # main thread: Debugger.getPossibleAndSetBreakpointByUrl
903        ################################################################################################################
904        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=236)]
905        params = debugger.SetBreakpointsLocations(locations)
906        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
907                                                 main_thread, params)
908        assert response['result']['locations'][0]['id'] == 'id:236:0:' + self.config['file_path']['index']
909        ################################################################################################################
910        # main thread: Debugger.resume
911        ################################################################################################################
912        await self.debugger_impl.send("Debugger.resume", main_thread)
913        # main thread: Debugger.paused
914        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
915        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
916        assert response['params']['reason'] == 'other'
917        assert response['params']['hitBreakpoints'] == ['id:236:5:' + self.config['file_path']['index']]
918        ################################################################################################################
919        # main thread: Debugger.evaluateOnCallFrame
920        ################################################################################################################
921        P1_INTRODUCE = (
922            'UEFOREEAAAAAAAAADAACAGQBAAAAAAAAAAAAAAIAAAA8AAAAAQAAAGABAAAAAAAARAAAAAEAAABEAAAAoQAAANQAAACAAAAAZAEAAAIAAA'
923            'BsAAAAAwAAAHQAAAD/////////////////////oQAAANQAAACAAAAAkgAAAJ0AAAAhZGVidWdnZXJHZXRWYWx1ZQATaW50cm9kdWNlAAVw'
924            'MQAzTF9FU1Nsb3ROdW1iZXJBbm5vdGF0aW9uOwAAAAAAgUAAAAIAABdmdW5jX21haW5fMAATTF9HTE9CQUw7AAAAAAABAAECAAABAP//xw'
925            'AAAIgCAR4BAAACAAVWAQAABhEBAAAAFVNsb3ROdW1iZXIAAAABAAUBAAAIAAAANwoDLwBEoESxRMJtYQZgBkIAAABhBz4CAGEIAmEJYAcr'
926            'AggJYQVgBUIEAQBhBGAELQYFZAtrAQ8A/////w8AAgAoAFEBAAA=')
927        ARR_JOIN = (
928            'UEFOREEAAAAAAAAADAACAGABAAAAAAAAAAAAAAIAAAA8AAAAAQAAAFwBAAAAAAAARAAAAAEAAABEAAAAnQAAANAAAACAAAAAYAEAAAIAAA'
929            'BsAAAAAwAAAHQAAAD/////////////////////nQAAANAAAACAAAAAhQAAAJcAAAAHYXJyACFkZWJ1Z2dlckdldFZhbHVlAAlqb2luADNM'
930            'X0VTU2xvdE51bWJlckFubm90YXRpb247AAAAAACBQAAAAgAAF2Z1bmNfbWFpbl8wABNMX0dMT0JBTDsAAAAAAAEAAQIAAAEA///DAAAAiA'
931            'IBGgEAAAIABVIBAAAGDQEAAAAVU2xvdE51bWJlcgAAAAEAAQEAAAgAAAA3CgMvAESgRLFEwm1hBmAGQgABAGEHPgAAYQgCYQlgBysCCAlh'
932            'BWAFQgQCAGEEYAQtBgVkC2sBDwD/////DwACACgATQEAAA==')
933        params = debugger.EvaluateOnCallFrameParams(P1_INTRODUCE)
934        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
935        assert response['result']['result']['description'] == "name = Kate; age = 10"
936        params = debugger.EvaluateOnCallFrameParams('map')
937        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
938        assert response['result']['result']['description'].startswith("Map(2) {0 => 'str0', 1 => 'str1'}")
939        params = debugger.EvaluateOnCallFrameParams(ARR_JOIN)
940        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
941        assert response['result']['result']['description'] == "10,11,2,3"
942        ################################################################################################################
943        # main thread: Debugger.dropFrame
944        ################################################################################################################
945        params = debugger.DropFrameParams()
946        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
947        # main thread: Debugger.paused
948        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
949        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
950        assert response['params']['reason'] == 'other'
951        assert response['params']['hitBreakpoints'] == []
952        ################################################################################################################
953        # main thread: Debugger.evaluateOnCallFrame
954        ################################################################################################################
955        params = debugger.EvaluateOnCallFrameParams(P1_INTRODUCE)
956        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
957        assert response['result']['result']['description'] == "name = Kate; age = 10"
958        params = debugger.EvaluateOnCallFrameParams('map')
959        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
960        assert response['result']['result']['description'].startswith("Map(2) {0 => 'str0', 1 => 'str1'}")
961        params = debugger.EvaluateOnCallFrameParams(ARR_JOIN)
962        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
963        assert response['result']['result']['description'] == "10,11,2,3"
964        ################################################################################################################
965        # main thread: Debugger.removeBreakpointsByUrl
966        ################################################################################################################
967        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
968        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
969        ################################################################################################################
970        # main thread: Debugger.getPossibleAndSetBreakpointByUrl
971        ################################################################################################################
972        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=244)]
973        params = debugger.SetBreakpointsLocations(locations)
974        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
975                                                 main_thread, params)
976        assert response['result']['locations'][0]['id'] == 'id:244:0:' + self.config['file_path']['index']
977        ################################################################################################################
978        # main thread: Debugger.resume
979        ################################################################################################################
980        await self.debugger_impl.send("Debugger.resume", main_thread)
981        # main thread: Debugger.paused
982        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
983        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
984        assert response['params']['reason'] == 'other'
985        assert response['params']['hitBreakpoints'] == ['id:244:5:' + self.config['file_path']['index']]
986        ################################################################################################################
987        # main thread: Debugger.evaluateOnCallFrame
988        ################################################################################################################
989        params = debugger.EvaluateOnCallFrameParams(P1_INTRODUCE)
990        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
991        assert response['result']['result']['description'] == "name = Tony; age = 30"
992        params = debugger.EvaluateOnCallFrameParams('map')
993        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
994        assert response['result']['result']['description'].startswith("Map(1) {2 => 'str2'}")
995        params = debugger.EvaluateOnCallFrameParams(ARR_JOIN)
996        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
997        assert response['result']['result']['description'] == "4,3,2,1,0"
998        ################################################################################################################
999        # main thread: Debugger.dropFrame
1000        ################################################################################################################
1001        params = debugger.DropFrameParams()
1002        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
1003        # main thread: Debugger.paused
1004        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
1005        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
1006        assert response['params']['reason'] == 'other'
1007        assert response['params']['hitBreakpoints'] == []
1008        ################################################################################################################
1009        # main thread: Debugger.evaluateOnCallFrame
1010        ################################################################################################################
1011        params = debugger.EvaluateOnCallFrameParams(P1_INTRODUCE)
1012        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
1013        assert response['result']['result']['description'] == "name = Kate; age = 10"
1014        params = debugger.EvaluateOnCallFrameParams('map')
1015        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
1016        assert response['result']['result']['description'].startswith("Map(2) {0 => 'str0', 1 => 'str1'}")
1017        params = debugger.EvaluateOnCallFrameParams(ARR_JOIN)
1018        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
1019        assert response['result']['result']['description'] == "10,11,2,3"
1020        ################################################################################################################
1021        # main thread: Debugger.removeBreakpointsByUrl
1022        ################################################################################################################
1023        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
1024        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
1025        ################################################################################################################
1026        # main thread: Debugger.getPossibleAndSetBreakpointByUrl
1027        ################################################################################################################
1028        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=251)]
1029        params = debugger.SetBreakpointsLocations(locations)
1030        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
1031                                                 main_thread, params)
1032        assert response['result']['locations'][0]['id'] == 'id:251:0:' + self.config['file_path']['index']
1033        ################################################################################################################
1034        # main thread: Debugger.resume
1035        ################################################################################################################
1036        await self.debugger_impl.send("Debugger.resume", main_thread)
1037        # main thread: Debugger.paused
1038        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
1039        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
1040        assert response['params']['reason'] == 'other'
1041        assert response['params']['hitBreakpoints'] == ['id:251:19:' + self.config['file_path']['index']]
1042        ################################################################################################################
1043        # main thread: Debugger.evaluateOnCallFrame
1044        ################################################################################################################
1045        params = debugger.EvaluateOnCallFrameParams('c')
1046        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
1047        assert response['result']['result'] == {"type": "number", "unserializableValue": "3", "description": "3"}
1048        ################################################################################################################
1049        # main thread: Debugger.dropFrame
1050        ################################################################################################################
1051        params = debugger.DropFrameParams()
1052        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
1053        # main thread: Debugger.paused
1054        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
1055        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
1056        assert response['params']['reason'] == 'other'
1057        assert response['params']['hitBreakpoints'] == []
1058        ################################################################################################################
1059        # main thread: Debugger.evaluateOnCallFrame
1060        ################################################################################################################
1061        params = debugger.EvaluateOnCallFrameParams('c')
1062        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
1063        assert response['result']['result'] == {"type": "number", "unserializableValue": "2", "description": "2"}
1064        ################################################################################################################
1065        # main thread: Debugger.dropFrame
1066        ################################################################################################################
1067        params = debugger.DropFrameParams()
1068        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
1069        # main thread: Debugger.paused
1070        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
1071        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
1072        assert response['params']['reason'] == 'other'
1073        assert response['params']['hitBreakpoints'] == []
1074        ################################################################################################################
1075        # main thread: Debugger.evaluateOnCallFrame
1076        ################################################################################################################
1077        params = debugger.EvaluateOnCallFrameParams('c')
1078        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
1079        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
1080        ################################################################################################################
1081        # main thread: Debugger.removeBreakpointsByUrl
1082        ################################################################################################################
1083        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
1084        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
1085        ################################################################################################################
1086        # main thread: Debugger.getPossibleAndSetBreakpointByUrl
1087        ################################################################################################################
1088        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=266)]
1089        params = debugger.SetBreakpointsLocations(locations)
1090        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
1091                                                 main_thread, params)
1092        assert response['result']['locations'][0]['id'] == 'id:266:0:' + self.config['file_path']['index']
1093        ################################################################################################################
1094        # main thread: Debugger.resume
1095        ################################################################################################################
1096        await self.debugger_impl.send("Debugger.resume", main_thread)
1097        # main thread: Debugger.paused
1098        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
1099        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
1100        assert response['params']['reason'] == 'other'
1101        assert response['params']['hitBreakpoints'] == ['id:266:22:' + self.config['file_path']['index']]
1102        ################################################################################################################
1103        # main thread: Debugger.evaluateOnCallFrame
1104        ################################################################################################################
1105        params = debugger.EvaluateOnCallFrameParams('b')
1106        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
1107        assert response['result']['result'] == {"type": "number", "unserializableValue": "2", "description": "2"}
1108        ################################################################################################################
1109        # main thread: Debugger.dropFrame
1110        ################################################################################################################
1111        params = debugger.DropFrameParams()
1112        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
1113        # main thread: Debugger.paused
1114        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
1115        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
1116        assert response['params']['reason'] == 'other'
1117        assert response['params']['hitBreakpoints'] == []
1118        ################################################################################################################
1119        # main thread: Debugger.evaluateOnCallFrame
1120        ################################################################################################################
1121        params = debugger.EvaluateOnCallFrameParams('b')
1122        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
1123        assert response['result']['result'] == {"type": "number", "unserializableValue": "1", "description": "1"}
1124        ################################################################################################################
1125        # main thread: Debugger.removeBreakpointsByUrl
1126        ################################################################################################################
1127        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
1128        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
1129        ################################################################################################################
1130        # main thread: Debugger.getPossibleAndSetBreakpointByUrl
1131        ################################################################################################################
1132        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=272)]
1133        params = debugger.SetBreakpointsLocations(locations)
1134        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
1135                                                 main_thread, params)
1136        assert response['result']['locations'][0]['id'] == 'id:272:0:' + self.config['file_path']['index']
1137        ################################################################################################################
1138        # main thread: Debugger.resume
1139        ################################################################################################################
1140        await self.debugger_impl.send("Debugger.resume", main_thread)
1141        # main thread: Debugger.paused
1142        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
1143        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
1144        assert response['params']['reason'] == 'other'
1145        assert response['params']['hitBreakpoints'] == ['id:272:8:' + self.config['file_path']['index']]
1146        ################################################################################################################
1147        # main thread: Debugger.evaluateOnCallFrame
1148        ################################################################################################################
1149        params = debugger.EvaluateOnCallFrameParams('b')
1150        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
1151        assert response['result']['result'] == {"type": "number", "unserializableValue": "3", "description": "3"}
1152        ################################################################################################################
1153        # main thread: Debugger.dropFrame
1154        ################################################################################################################
1155        params = debugger.DropFrameParams()
1156        await self.debugger_impl.send("Debugger.dropFrame", main_thread, params)
1157        # main thread: Debugger.paused
1158        response = await self.debugger_impl.recv("Debugger.paused", main_thread)
1159        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
1160        assert response['params']['reason'] == 'other'
1161        assert response['params']['hitBreakpoints'] == []
1162        ################################################################################################################
1163        # main thread: Debugger.evaluateOnCallFrame
1164        ################################################################################################################
1165        params = debugger.EvaluateOnCallFrameParams('b')
1166        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", main_thread, params)
1167        assert response['result']['result'] == {"type": "number", "unserializableValue": "0", "description": "0"}
1168        ################################################################################################################
1169        # main thread: Debugger.removeBreakpointsByUrl
1170        ################################################################################################################
1171        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
1172        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", main_thread, params)
1173        ################################################################################################################
1174        # main thread: Debugger.resume
1175        ################################################################################################################
1176        await self.debugger_impl.send("Debugger.resume", main_thread)
1177        ################################################################################################################
1178        # worker thread: Debugger.scriptParsed
1179        ################################################################################################################
1180        response = await self.debugger_impl.recv("Debugger.scriptParsed", worker_thread)
1181        assert response['params']['url'] == self.config['file_path']['index']
1182        assert response['params']['endLine'] == 0
1183        # worker thread: Debugger.paused
1184        response = await self.debugger_impl.recv("Debugger.paused", worker_thread)
1185        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
1186        assert response['params']['reason'] == 'Break on start'
1187        ################################################################################################################
1188        # worker thread: Debugger.removeBreakpointsByUrl
1189        ################################################################################################################
1190        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
1191        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", worker_thread, params)
1192        ################################################################################################################
1193        # worker thread: Debugger.getPossibleAndSetBreakpointByUrl
1194        ################################################################################################################
1195        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=29)]
1196        params = debugger.SetBreakpointsLocations(locations)
1197        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
1198                                                 worker_thread, params)
1199        assert response['result']['locations'][0]['id'] == 'id:29:0:' + self.config['file_path']['index']
1200        ################################################################################################################
1201        # worker thread: Debugger.resume
1202        ################################################################################################################
1203        await self.debugger_impl.send("Debugger.resume", worker_thread)
1204        # worker thread: Debugger.paused
1205        response = await self.debugger_impl.recv("Debugger.paused", worker_thread)
1206        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
1207        assert response['params']['reason'] == 'other'
1208        assert response['params']['hitBreakpoints'] == ['id:29:9:' + self.config['file_path']['index']]
1209        ################################################################################################################
1210        # worker thread: Debugger.evaluateOnCallFrame
1211        ################################################################################################################
1212        params = debugger.EvaluateOnCallFrameParams('ac')
1213        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", worker_thread, params)
1214        assert response['result']['result'] == {"type": "number", "unserializableValue": "20", "description": "20"}
1215        ################################################################################################################
1216        # worker thread: Debugger.dropFrame
1217        ################################################################################################################
1218        params = debugger.DropFrameParams()
1219        await self.debugger_impl.send("Debugger.dropFrame", worker_thread, params)
1220        # worker thread: Debugger.paused
1221        response = await self.debugger_impl.recv("Debugger.paused", worker_thread)
1222        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
1223        assert response['params']['reason'] == 'other'
1224        assert response['params']['hitBreakpoints'] == []
1225        ################################################################################################################
1226        # worker thread: Debugger.evaluateOnCallFrame
1227        ################################################################################################################
1228        params = debugger.EvaluateOnCallFrameParams('ac')
1229        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", worker_thread, params)
1230        assert response['result']['result'] == {"type": "number", "unserializableValue": "10", "description": "10"}
1231        ################################################################################################################
1232        # worker thread: Debugger.dropFrame
1233        ################################################################################################################
1234        params = debugger.DropFrameParams()
1235        response = await self.debugger_impl.send("Debugger.dropFrame", worker_thread, params)
1236        assert response['result']['message'] == 'Not yet support sendable method'
1237        ################################################################################################################
1238        # worker thread: Debugger.removeBreakpointsByUrl
1239        ################################################################################################################
1240        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
1241        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", worker_thread, params)
1242        ################################################################################################################
1243        # worker thread: Debugger.getPossibleAndSetBreakpointByUrl
1244        ################################################################################################################
1245        locations = [debugger.BreakLocationUrl(url=self.config['file_path']['index'], line_number=283)]
1246        params = debugger.SetBreakpointsLocations(locations)
1247        response = await self.debugger_impl.send("Debugger.getPossibleAndSetBreakpointsByUrl",
1248                                                 worker_thread, params)
1249        assert response['result']['locations'][0]['id'] == 'id:283:0:' + self.config['file_path']['index']
1250        ################################################################################################################
1251        # worker thread: Debugger.resume
1252        ################################################################################################################
1253        await self.debugger_impl.send("Debugger.resume", worker_thread)
1254        # worker thread: Debugger.paused
1255        response = await self.debugger_impl.recv("Debugger.paused", worker_thread)
1256        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
1257        assert response['params']['reason'] == 'other'
1258        assert response['params']['hitBreakpoints'] == ['id:283:9:' + self.config['file_path']['index']]
1259        ################################################################################################################
1260        # worker thread: Debugger.evaluateOnCallFrame
1261        ################################################################################################################
1262        params = debugger.EvaluateOnCallFrameParams('ia')
1263        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", worker_thread, params)
1264        assert response['result']['result'] == {"type": "number", "unserializableValue": "200", "description": "200"}
1265        ################################################################################################################
1266        # worker thread: Debugger.dropFrame
1267        ################################################################################################################
1268        params = debugger.DropFrameParams()
1269        await self.debugger_impl.send("Debugger.dropFrame", worker_thread, params)
1270        # worker thread: Debugger.paused
1271        response = await self.debugger_impl.recv("Debugger.paused", worker_thread)
1272        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
1273        assert response['params']['reason'] == 'other'
1274        assert response['params']['hitBreakpoints'] == []
1275        ################################################################################################################
1276        # worker thread: Debugger.evaluateOnCallFrame
1277        ################################################################################################################
1278        params = debugger.EvaluateOnCallFrameParams('ia')
1279        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", worker_thread, params)
1280        assert response['result']['result'] == {"type": "number", "unserializableValue": "120", "description": "120"}
1281        ################################################################################################################
1282        # worker thread: Debugger.dropFrame
1283        ################################################################################################################
1284        params = debugger.DropFrameParams()
1285        await self.debugger_impl.send("Debugger.dropFrame", worker_thread, params)
1286        # worker thread: Debugger.paused
1287        response = await self.debugger_impl.recv("Debugger.paused", worker_thread)
1288        assert response['params']['callFrames'][0]['url'] == self.config['file_path']['index']
1289        assert response['params']['reason'] == 'other'
1290        assert response['params']['hitBreakpoints'] == []
1291        ################################################################################################################
1292        # worker thread: Debugger.evaluateOnCallFrame
1293        ################################################################################################################
1294        params = debugger.EvaluateOnCallFrameParams('ia')
1295        response = await self.debugger_impl.send("Debugger.evaluateOnCallFrame", worker_thread, params)
1296        assert response['result']['result'] == {"type": "number", "unserializableValue": "100", "description": "100"}
1297        ################################################################################################################
1298        # worker thread: Debugger.removeBreakpointsByUrl
1299        ################################################################################################################
1300        params = debugger.RemoveBreakpointsUrl(self.config['file_path']['index'])
1301        await self.debugger_impl.send("Debugger.removeBreakpointsByUrl", worker_thread, params)
1302        ################################################################################################################
1303        # worker thread: Debugger.resume
1304        ################################################################################################################
1305        await self.debugger_impl.send("Debugger.resume", worker_thread)
1306        ################################################################################################################
1307        # worker thread: Debugger.disable
1308        ################################################################################################################
1309        await self.debugger_impl.send("Debugger.disable", worker_thread)
1310        ################################################################################################################
1311        # main thread: Debugger.disable
1312        ################################################################################################################
1313        await self.debugger_impl.send("Debugger.disable", main_thread)
1314        ################################################################################################################
1315        # close the websocket connections
1316        ################################################################################################################
1317        await websocket.send_msg_to_debugger_server(worker_thread.instance_id, worker_thread.send_msg_queue, 'close')
1318        await websocket.send_msg_to_debugger_server(main_thread.instance_id, main_thread.send_msg_queue, 'close')
1319        await websocket.send_msg_to_connect_server('close')
1320        ################################################################################################################