(case_setup_multiprocessing_dap)
| 4434 | |
| 4435 | @pytest.mark.skipif(not TEST_GEVENT, reason="Gevent not installed.") |
| 4436 | def test_gevent_subprocess_python(case_setup_multiprocessing_dap): |
| 4437 | import threading |
| 4438 | from tests_python.debugger_unittest import AbstractWriterThread |
| 4439 | |
| 4440 | def get_environ(writer): |
| 4441 | env = os.environ.copy() |
| 4442 | env["GEVENT_SUPPORT"] = "True" |
| 4443 | env["CALL_PYTHON_SUB"] = "1" |
| 4444 | return env |
| 4445 | |
| 4446 | with case_setup_multiprocessing_dap.test_file( |
| 4447 | "_debugger_case_gevent_subprocess.py", |
| 4448 | get_environ=get_environ, |
| 4449 | ) as writer: |
| 4450 | json_facade = JsonFacade(writer) |
| 4451 | json_facade.write_launch() |
| 4452 | |
| 4453 | break1_line = writer.get_line_index_with_content("print('foo called')") |
| 4454 | json_facade.write_set_breakpoints([break1_line]) |
| 4455 | |
| 4456 | server_socket = writer.server_socket |
| 4457 | secondary_finished_ok = [False] |
| 4458 | |
| 4459 | class SecondaryProcessWriterThread(AbstractWriterThread): |
| 4460 | TEST_FILE = writer.get_main_filename() |
| 4461 | _sequence = -1 |
| 4462 | |
| 4463 | class SecondaryProcessThreadCommunication(threading.Thread): |
| 4464 | |
| 4465 | def run(self): |
| 4466 | from tests_python.debugger_unittest import ReaderThread |
| 4467 | |
| 4468 | server_socket.listen(1) |
| 4469 | self.server_socket = server_socket |
| 4470 | new_sock, addr = server_socket.accept() |
| 4471 | |
| 4472 | reader_thread = ReaderThread(new_sock) |
| 4473 | reader_thread.name = " *** Multiprocess Reader Thread" |
| 4474 | reader_thread.start() |
| 4475 | |
| 4476 | writer2 = SecondaryProcessWriterThread() |
| 4477 | writer2.reader_thread = reader_thread |
| 4478 | writer2.sock = new_sock |
| 4479 | json_facade2 = JsonFacade(writer2) |
| 4480 | |
| 4481 | json_facade2.write_set_breakpoints( |
| 4482 | [ |
| 4483 | break1_line, |
| 4484 | ] |
| 4485 | ) |
| 4486 | json_facade2.write_make_initial_run() |
| 4487 | |
| 4488 | json_facade2.wait_for_thread_stopped() |
| 4489 | json_facade2.write_continue() |
| 4490 | secondary_finished_ok[0] = True |
| 4491 | |
| 4492 | secondary_process_thread_communication = SecondaryProcessThreadCommunication() |
| 4493 | secondary_process_thread_communication.start() |
nothing calls this directly
no test coverage detected