cassanova updated this revision to Diff 452275.
cassanova added a comment.
All variables needed from `run_to_name_breakpoint` are obtained in one line
rather than getting them by index.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D131605/new/
https://reviews.llvm.org/D131605
Files:
lldb/test/API/macosx/queues/TestQueues.py
Index: lldb/test/API/macosx/queues/TestQueues.py
===================================================================
--- lldb/test/API/macosx/queues/TestQueues.py
+++ lldb/test/API/macosx/queues/TestQueues.py
@@ -122,6 +122,21 @@
t.GetQueue().GetQueueID(),
queue.GetQueueID()))
+ def check_queue_breakpoints(self, queue1, queue2, queue_breakpoint):
+ queue1_thread = queue1.GetThreadAtIndex(0)
+ queue2_thread = queue2.GetThreadAtIndex(0)
+
+ self.assertEqual(queue_breakpoint.GetQueueName(), queue1.GetName(),
+ "The breakpoint was set for queue %s, but the
breakpoint's queue name is %s" % (queue_breakpoint.GetQueueName(),
queue1.GetName()))
+ self.assertTrue(queue_breakpoint.GetHitCount() == 1,
+ "The breakpoint for queue %s has not been hit" %
(queue_breakpoint.GetQueueName()))
+ self.assertEqual(queue1_thread.GetStopReason(),
lldb.eStopReasonBreakpoint,
+ "Queue %s is not stopped at breakpoint %d" %
+ (queue1.GetName(), queue_breakpoint.GetID()))
+ self.assertNotEqual(queue2_thread.GetStopReason(),
lldb.eStopReasonBreakpoint,
+ "Queue %s is stopped at breakpoint %d, but this
breakpoint should only be hit for queue %s" %
+ (queue2.GetName(), queue_breakpoint.GetID(),
queue_breakpoint.GetQueueName()))
+
def queues(self):
"""Test queues inspection SB APIs without libBacktraceRecording."""
exe = self.getBuildArtifact("a.out")
@@ -183,6 +198,13 @@
self.check_queues_threads_match_queue(queue_performer_2)
self.check_queues_threads_match_queue(queue_performer_3)
+ # Run the executable until the stopper function and get the breakpoint
+ # that's created from that. Then set the queue name of the breakpoint
+ # to be the name of the main thread
+ target, process, main_thread, queue_breakpoint =
lldbutil.run_to_name_breakpoint(self, "stopper", only_one_thread=False)
+ queue_breakpoint.SetQueueName(main_thread.GetQueue().GetName())
+ self.check_queue_breakpoints(main_thread.GetQueue(),
queue_submittor_1, queue_breakpoint)
+
# We have threads running with all the different dispatch QoS service
# levels - find those threads and check that we can get the correct
# QoS name for each of them.
@@ -291,6 +313,7 @@
if len(threads) != 1:
self.fail("Failed to stop at breakpoint 1.")
+ main_thread = threads[0]
self.inferior_process = process
libbtr_module_filespec = lldb.SBFileSpec("libBacktraceRecording.dylib")
@@ -358,6 +381,13 @@
self.check_queues_threads_match_queue(queue_performer_2)
self.check_queues_threads_match_queue(queue_performer_3)
+ # Run the executable until the stopper function and get the breakpoint
+ # that's created from that. Then set the queue name of the breakpoint
+ # to be the name of the main thread
+ target, process, main_thread, queue_breakpoint =
lldbutil.run_to_name_breakpoint(self, "stopper", only_one_thread=False)
+ queue_breakpoint.SetQueueName(main_thread.GetQueue().GetName())
+ self.check_queue_breakpoints(main_thread.GetQueue(),
queue_submittor_1, queue_breakpoint)
+
self.assertTrue(queue_performer_2.GetPendingItemAtIndex(
0).IsValid(), "queue 2's pending item #0 is valid")
self.assertTrue(queue_performer_2.GetPendingItemAtIndex(0).GetAddress().GetSymbol(
Index: lldb/test/API/macosx/queues/TestQueues.py
===================================================================
--- lldb/test/API/macosx/queues/TestQueues.py
+++ lldb/test/API/macosx/queues/TestQueues.py
@@ -122,6 +122,21 @@
t.GetQueue().GetQueueID(),
queue.GetQueueID()))
+ def check_queue_breakpoints(self, queue1, queue2, queue_breakpoint):
+ queue1_thread = queue1.GetThreadAtIndex(0)
+ queue2_thread = queue2.GetThreadAtIndex(0)
+
+ self.assertEqual(queue_breakpoint.GetQueueName(), queue1.GetName(),
+ "The breakpoint was set for queue %s, but the breakpoint's queue name is %s" % (queue_breakpoint.GetQueueName(), queue1.GetName()))
+ self.assertTrue(queue_breakpoint.GetHitCount() == 1,
+ "The breakpoint for queue %s has not been hit" % (queue_breakpoint.GetQueueName()))
+ self.assertEqual(queue1_thread.GetStopReason(), lldb.eStopReasonBreakpoint,
+ "Queue %s is not stopped at breakpoint %d" %
+ (queue1.GetName(), queue_breakpoint.GetID()))
+ self.assertNotEqual(queue2_thread.GetStopReason(), lldb.eStopReasonBreakpoint,
+ "Queue %s is stopped at breakpoint %d, but this breakpoint should only be hit for queue %s" %
+ (queue2.GetName(), queue_breakpoint.GetID(), queue_breakpoint.GetQueueName()))
+
def queues(self):
"""Test queues inspection SB APIs without libBacktraceRecording."""
exe = self.getBuildArtifact("a.out")
@@ -183,6 +198,13 @@
self.check_queues_threads_match_queue(queue_performer_2)
self.check_queues_threads_match_queue(queue_performer_3)
+ # Run the executable until the stopper function and get the breakpoint
+ # that's created from that. Then set the queue name of the breakpoint
+ # to be the name of the main thread
+ target, process, main_thread, queue_breakpoint = lldbutil.run_to_name_breakpoint(self, "stopper", only_one_thread=False)
+ queue_breakpoint.SetQueueName(main_thread.GetQueue().GetName())
+ self.check_queue_breakpoints(main_thread.GetQueue(), queue_submittor_1, queue_breakpoint)
+
# We have threads running with all the different dispatch QoS service
# levels - find those threads and check that we can get the correct
# QoS name for each of them.
@@ -291,6 +313,7 @@
if len(threads) != 1:
self.fail("Failed to stop at breakpoint 1.")
+ main_thread = threads[0]
self.inferior_process = process
libbtr_module_filespec = lldb.SBFileSpec("libBacktraceRecording.dylib")
@@ -358,6 +381,13 @@
self.check_queues_threads_match_queue(queue_performer_2)
self.check_queues_threads_match_queue(queue_performer_3)
+ # Run the executable until the stopper function and get the breakpoint
+ # that's created from that. Then set the queue name of the breakpoint
+ # to be the name of the main thread
+ target, process, main_thread, queue_breakpoint = lldbutil.run_to_name_breakpoint(self, "stopper", only_one_thread=False)
+ queue_breakpoint.SetQueueName(main_thread.GetQueue().GetName())
+ self.check_queue_breakpoints(main_thread.GetQueue(), queue_submittor_1, queue_breakpoint)
+
self.assertTrue(queue_performer_2.GetPendingItemAtIndex(
0).IsValid(), "queue 2's pending item #0 is valid")
self.assertTrue(queue_performer_2.GetPendingItemAtIndex(0).GetAddress().GetSymbol(
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits