@@ 78-101 (lines=24) @@ | ||
75 | process_tests.wait_for_strings(target.read, TIMEOUT, 'Broken pipe. Stopping tracer.') |
|
76 | ||
77 | ||
78 | @pytest.mark.skipif('platform.system() == "Windows"') |
|
79 | @pytest.mark.skipif('platform.python_implementation() == "PyPy"') |
|
80 | def test_gdb_clean_exit(): |
|
81 | with process_tests.TestProcess(sys.executable, '-mtarget', 'manhole') as target, \ |
|
82 | process_tests.dump_on_error(target.read): |
|
83 | ||
84 | with process_tests.TestProcess('hunter-trace', '-p', str(target.proc.pid), |
|
85 | 'stdlib=False', '--gdb') as tracer,\ |
|
86 | process_tests.dump_on_error(tracer.read): |
|
87 | ||
88 | process_tests.wait_for_strings( |
|
89 | tracer.read, TIMEOUT, |
|
90 | 'WARNING: Using GDB may deadlock the process or create unpredictable results!', |
|
91 | 'Output stream active. Starting tracer', |
|
92 | 'call => stuff()', |
|
93 | 'line time.sleep(1)', |
|
94 | 'return <= stuff: None', |
|
95 | ) |
|
96 | target.reset() |
|
97 | tracer.proc.send_signal(signal.SIGINT) |
|
98 | process_tests.wait_for_strings(target.read, TIMEOUT, |
|
99 | 'Doing stuff', |
|
100 | 'Doing stuff', |
|
101 | 'Doing stuff') |
|
102 | ||
@@ 32-55 (lines=24) @@ | ||
29 | process_tests.wait_for_strings(target.read, TIMEOUT, 'Broken pipe. Stopping tracer.') |
|
30 | ||
31 | ||
32 | @pytest.mark.skipif('platform.system() == "Windows"') |
|
33 | def test_manhole_clean_exit(): |
|
34 | with process_tests.TestProcess(sys.executable, '-mtarget', 'manhole') as target, \ |
|
35 | process_tests.dump_on_error(target.read): |
|
36 | ||
37 | process_tests.wait_for_strings(target.read, TIMEOUT, 'Oneshot activation is done by signal') |
|
38 | ||
39 | with process_tests.TestProcess('hunter-trace', '-p', str(target.proc.pid), 'stdlib=False') as tracer,\ |
|
40 | process_tests.dump_on_error(tracer.read): |
|
41 | ||
42 | process_tests.wait_for_strings( |
|
43 | tracer.read, TIMEOUT, |
|
44 | 'Output stream active. Starting tracer', |
|
45 | 'call => stuff()', |
|
46 | 'line time.sleep(1)', |
|
47 | 'return <= stuff: None', |
|
48 | ) |
|
49 | target.reset() |
|
50 | tracer.proc.send_signal(signal.SIGINT) |
|
51 | process_tests.wait_for_strings(target.read, TIMEOUT, |
|
52 | 'remote.deactivate()', |
|
53 | 'Doing stuff', |
|
54 | 'Doing stuff', |
|
55 | 'Doing stuff') |
|
56 | ||
57 | ||
58 | @pytest.mark.skipif('platform.system() == "Windows"') |