Skip to content
Merged
Changes from all commits
Commits
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
29 changes: 6 additions & 23 deletions Lib/test/test_free_threading/test_monitoring.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ def work(self, n, funcs):
return n
return self.work(n - 1, funcs) + self.work(n - 2, funcs)

def start_work(self, n, funcs):
def start_work(self, n, funcs, barrier):
# With the GIL builds we need to make sure that the hooks have
# a chance to run as it's possible to run w/o releasing the GIL.
time.sleep(0.1)
barrier.wait()
self.work(n, funcs)

def after_test(self):
Expand All @@ -53,14 +53,16 @@ def test_instrumentation(self):
exec("def f(): pass", x)
funcs.append(x["f"])

barrier = Barrier(self.thread_count + 1)
threads = []
for i in range(self.thread_count):
# Each thread gets a copy of the func list to avoid contention
t = Thread(target=self.start_work, args=(self.fib, list(funcs)))
t = Thread(target=self.start_work, args=(self.fib, list(funcs), barrier))
t.start()
threads.append(t)

self.after_threads()
barrier.wait()

while True:
any_alive = False
Expand Down Expand Up @@ -120,7 +122,6 @@ class MonitoringMultiThreaded(
def setUp(self):
super().setUp()
self.set = False
self.called = False
monitoring.register_callback(
self.tool_id, monitoring.events.LINE, self.callback
)
Expand All @@ -130,10 +131,7 @@ def tearDown(self):
super().tearDown()

def callback(self, *args):
self.called = True

def after_test(self):
self.assertTrue(self.called)
pass

def during_threads(self):
if self.set:
Expand All @@ -151,16 +149,11 @@ class SetTraceMultiThreaded(InstrumentationMultiThreadedMixin, TestCase):

def setUp(self):
self.set = False
self.called = False

def after_test(self):
self.assertTrue(self.called)

def tearDown(self):
sys.settrace(None)

def trace_func(self, frame, event, arg):
self.called = True
return self.trace_func

def during_threads(self):
Expand All @@ -177,16 +170,11 @@ class SetProfileMultiThreaded(InstrumentationMultiThreadedMixin, TestCase):

def setUp(self):
self.set = False
self.called = False

def after_test(self):
self.assertTrue(self.called)

def tearDown(self):
sys.setprofile(None)

def trace_func(self, frame, event, arg):
self.called = True
return self.trace_func

def during_threads(self):
Expand All @@ -203,16 +191,11 @@ class SetProfileAllThreadsMultiThreaded(InstrumentationMultiThreadedMixin, TestC

def setUp(self):
self.set = False
self.called = False

def after_test(self):
self.assertTrue(self.called)

def tearDown(self):
threading.setprofile_all_threads(None)

def trace_func(self, frame, event, arg):
self.called = True
return self.trace_func

def during_threads(self):
Expand Down
Loading