Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
make test more reliable
  • Loading branch information
pablogsal committed Dec 1, 2025
commit a9a9efe8aac9003b4a800c88b6e7c809355cbc32
17 changes: 11 additions & 6 deletions Lib/test/test_external_inspection.py
Original file line number Diff line number Diff line change
Expand Up @@ -2047,6 +2047,7 @@ class TestFrameCaching(unittest.TestCase):
"""

maxDiff = None
MAX_TRIES = 10

@contextlib.contextmanager
def _target_process(self, script_body):
Expand Down Expand Up @@ -2112,10 +2113,15 @@ def _get_frames(self, unwinder, required_funcs):
return thread.frame_info
return None

def _sample_frames(self, client_socket, unwinder, wait_signal, send_ack, required_funcs):
def _sample_frames(self, client_socket, unwinder, wait_signal, send_ack, required_funcs, expected_frames=1):
"""Wait for signal, sample frames, send ack. Returns frame_info list."""
self._wait_for_signal(client_socket, wait_signal)
frames = self._get_frames(unwinder, required_funcs)
# Give at least MAX_TRIES tries for the process to arrive to a steady state
for _ in range(self.MAX_TRIES):
frames = self._get_frames(unwinder, required_funcs)
if frames and len(frames) >= expected_frames:
break
time.sleep(0.1)
client_socket.sendall(send_ack)
return frames

Expand Down Expand Up @@ -2358,8 +2364,7 @@ def test_cache_vs_no_cache_equivalence(self):
"""Test that cache_frames=True and cache_frames=False produce equivalent results."""
script_body = """\
def level3():
sock.sendall(b"ready")
sock.recv(16)
sock.sendall(b"ready"); sock.recv(16)

def level2():
level3()
Expand Down Expand Up @@ -2650,11 +2655,11 @@ def recurse(n):
unwinder_no_cache = make_unwinder(cache_frames=False)

frames_cached = self._sample_frames(
client_socket, unwinder_cache, b"ready", b"ack", {"recurse"}
client_socket, unwinder_cache, b"ready", b"ack", {"recurse"}, 1024
)
# Sample again with no cache for comparison
frames_no_cache = self._sample_frames(
client_socket, unwinder_no_cache, b"ready2", b"done", {"recurse"}
client_socket, unwinder_no_cache, b"ready2", b"done", {"recurse"}, 1024
)

self.assertIsNotNone(frames_cached)
Expand Down