|
@@ 234-247 (lines=14) @@
|
| 231 |
|
wait_for_strings(client.read, 1, ">>>") |
| 232 |
|
client.reset() |
| 233 |
|
sock.send(b"import sys\n" |
| 234 |
|
b"sys.stderr.write('OK')\n") |
| 235 |
|
wait_for_strings(client.read, 1, "OK") |
| 236 |
|
|
| 237 |
|
|
| 238 |
|
def test_redirect_stderr_default_dump_stacktraces(): |
| 239 |
|
with TestProcess(sys.executable, HELPER, 'test_redirect_stderr_default') as proc: |
| 240 |
|
with dump_on_error(proc.read): |
| 241 |
|
wait_for_strings(proc.read, TIMEOUT, 'Waiting for new connection') |
| 242 |
|
check_dump_stacktraces(SOCKET_PATH) |
| 243 |
|
|
| 244 |
|
|
| 245 |
|
def test_redirect_stderr_default_print_tracebacks(): |
| 246 |
|
with TestProcess(sys.executable, HELPER, 'test_redirect_stderr_default') as proc: |
| 247 |
|
with dump_on_error(proc.read): |
| 248 |
|
wait_for_strings(proc.read, TIMEOUT, 'Waiting for new connection') |
| 249 |
|
check_print_tracebacks(SOCKET_PATH) |
| 250 |
|
|
|
@@ 206-217 (lines=12) @@
|
| 203 |
|
wait_for_strings(proc.read, TIMEOUT, 'Waiting for new connection') |
| 204 |
|
proc.reset() |
| 205 |
|
assert_manhole_running(proc, SOCKET_PATH) |
| 206 |
|
|
| 207 |
|
|
| 208 |
|
def test_socket_path_with_fork(): |
| 209 |
|
with TestProcess(sys.executable, '-u', HELPER, 'test_socket_path_with_fork') as proc: |
| 210 |
|
with dump_on_error(proc.read): |
| 211 |
|
wait_for_strings(proc.read, TIMEOUT, 'Not patching os.fork and os.forkpty. Using user socket path') |
| 212 |
|
wait_for_strings(proc.read, TIMEOUT, 'Waiting for new connection') |
| 213 |
|
sock = connect_to_manhole(SOCKET_PATH) |
| 214 |
|
with TestSocket(sock) as client: |
| 215 |
|
with dump_on_error(client.read): |
| 216 |
|
wait_for_strings(client.read, TIMEOUT, "ProcessID", "ThreadID", ">>>") |
| 217 |
|
sock.send(b"print('BEFORE FORK')\n") |
| 218 |
|
wait_for_strings(client.read, TIMEOUT, "BEFORE FORK") |
| 219 |
|
time.sleep(2) |
| 220 |
|
sock.send(b"print('AFTER FORK')\n") |
|
@@ 484-499 (lines=16) @@
|
| 481 |
|
wait_for_strings(proc.read, TIMEOUT, '/tmp/manhole-') |
| 482 |
|
uds_path = re.findall(r"(/tmp/manhole-\d+)", proc.read())[0] |
| 483 |
|
only_on_old_python = ['Waiting for new connection'] if sys.version_info < (3, 5) else [] |
| 484 |
|
wait_for_strings(proc.read, TIMEOUT, 'Waiting for new connection', 'Sending signal to manhole thread', |
| 485 |
|
*only_on_old_python) |
| 486 |
|
assert_manhole_running(proc, uds_path) |
| 487 |
|
|
| 488 |
|
|
| 489 |
|
def test_environ_variable_activation(): |
| 490 |
|
with TestProcess(sys.executable, '-u', HELPER, 'test_environ_variable_activation', |
| 491 |
|
env=dict(os.environ, PYTHONMANHOLE="oneshot_on='USR2'")) as proc: |
| 492 |
|
with dump_on_error(proc.read): |
| 493 |
|
wait_for_strings(proc.read, TIMEOUT, |
| 494 |
|
'Not patching os.fork and os.forkpty. Oneshot activation is done by signal') |
| 495 |
|
proc.signal(signal.SIGUSR2) |
| 496 |
|
wait_for_strings(proc.read, TIMEOUT, '/tmp/manhole-') |
| 497 |
|
uds_path = re.findall(r"(/tmp/manhole-\d+)", proc.read())[0] |
| 498 |
|
wait_for_strings(proc.read, TIMEOUT, 'Waiting for new connection') |
| 499 |
|
assert_manhole_running(proc, uds_path, oneshot=True) |
| 500 |
|
|
| 501 |
|
|
| 502 |
|
@mark.skipif(not is_module_available('signalfd'), reason="signalfd not available") |