[Lldb-commits] [PATCH] D131605: [lldb][tests] Test queue-specific breakpoints
Chelsea Cassanova via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Wed Aug 17 09:46:19 PDT 2022
This revision was automatically updated to reflect the committed changes.
Closed by commit rG9525015c1bed: [lldb][tests] Test queue-specific breakpoints (authored by cassanova).
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
@@ -16,6 +16,12 @@
self.build()
self.queues()
+ @skipUnlessDarwin
+ @add_test_categories(['pyapi'])
+ def test_queue_specific_breakpoints(self):
+ self.build()
+ self.queue_specific_breakpoints()
+
@skipUnlessDarwin
@add_test_categories(['pyapi'])
def test_with_python_api_queues_with_backtrace(self):
@@ -118,6 +124,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.assertEqual(queue_breakpoint.GetHitCount(), 1,
+ "The breakpoint for queue %s has not been hit" % (queue_breakpoint.GetQueueName()))
+ self.assertStopReason(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")
@@ -367,3 +388,21 @@
).GetName() == "doing_the_work_2", "queue 2's pending item #0 should be doing_the_work_2")
self.assertTrue(queue_performer_2.GetPendingItemAtIndex(
9999).IsValid() == False, "queue 2's pending item #9999 is invalid")
+
+ def queue_specific_breakpoints(self):
+ # 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())
+
+ # Create a submittor queue
+ queue_submittor_1 = lldb.SBQueue()
+ for idx in range(0, process.GetNumQueues()):
+ q = process.GetQueueAtIndex(idx)
+ if q.GetName() == "com.apple.work_submittor_1":
+ queue_submittor_1 = q
+
+ self.assertTrue(queue_submittor_1.IsValid(), "Unable to get expected queue com.apple.work_submittor_1, instead got queue %s" % (queue_submittor_1.GetName()))
+
+ self.check_queue_breakpoints(main_thread.GetQueue(), queue_submittor_1, queue_breakpoint)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D131605.453320.patch
Type: text/x-patch
Size: 3237 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20220817/bff19499/attachment.bin>
More information about the lldb-commits
mailing list