mib created this revision. mib added a reviewer: labath. mib added a project: LLDB. Herald added a subscriber: JDevlieghere. mib requested review of this revision. Herald added a subscriber: lldb-commits.
This patch is a follow-up of D120100 <https://reviews.llvm.org/D120100> to address some feedbacks from @labath. This should mainly fix the race issue with the even listener by moving the listener setup to the main thread. This also updates the test to check it the inout arguments are returned in a tuple and re-enables the test on linux. Signed-off-by: Med Ismail Bennani <medismail.benn...@gmail.com> Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D120284 Files: lldb/test/API/functionalities/progress_reporting/TestProgressReporting.py Index: lldb/test/API/functionalities/progress_reporting/TestProgressReporting.py =================================================================== --- lldb/test/API/functionalities/progress_reporting/TestProgressReporting.py +++ lldb/test/API/functionalities/progress_reporting/TestProgressReporting.py @@ -17,41 +17,43 @@ TestBase.setUp(self) self.progress_events = [] - def fetch_events(self, test_broadcaster): - listener = lldb.SBListener("lldb.progress.listener") - listener.StartListeningForEvents(test_broadcaster, - self.eBroadcastBitStopProgressThread) - - progress_broadcaster = self.dbg.GetBroadcaster() - progress_broadcaster.AddListener(listener, lldb.SBDebugger.eBroadcastBitProgress) - + def fetch_events(self): event = lldb.SBEvent() done = False while not done: - if listener.WaitForEvent(1, event): + if self.listener.WaitForEvent(1, event): event_mask = event.GetType(); - if event.BroadcasterMatchesRef(test_broadcaster): + if event.BroadcasterMatchesRef(self.test_broadcaster): if event_mask & self.eBroadcastBitStopProgressThread: done = True; - elif event.BroadcasterMatchesRef(progress_broadcaster): - message = lldb.SBDebugger().GetProgressFromEvent(event, 0, 0, 0, False); + elif event.BroadcasterMatchesRef(self.progress_broadcaster): + ret_args = lldb.SBDebugger().GetProgressFromEvent(event, 0, 0, 0, False); + self.assertGreater(len(ret_args), 1) + + message = ret_args[0] if message: self.progress_events.append((message, event)) - @skipUnlessDarwin + @skipIf(oslist=no_match(['darwin','macos','linux'])) def test_dwarf_symbol_loading_progress_report(self): """Test that we are able to fetch dwarf symbol loading progress events""" self.build() - test_broadcaster = lldb.SBBroadcaster('lldb.broadcaster.test') - listener_thread = threading.Thread(target=self.fetch_events, - args=[test_broadcaster]) + self.listener = lldb.SBListener("lldb.progress.listener") + self.test_broadcaster = lldb.SBBroadcaster('lldb.broadcaster.test') + self.listener.StartListeningForEvents(self.test_broadcaster, + self.eBroadcastBitStopProgressThread) + + self.progress_broadcaster = self.dbg.GetBroadcaster() + self.progress_broadcaster.AddListener(self.listener, lldb.SBDebugger.eBroadcastBitProgress) + + listener_thread = threading.Thread(target=self.fetch_events) listener_thread.start() lldbutil.run_to_source_breakpoint(self, 'break here', lldb.SBFileSpec('main.c')) - test_broadcaster.BroadcastEventByType(self.eBroadcastBitStopProgressThread) + self.test_broadcaster.BroadcastEventByType(self.eBroadcastBitStopProgressThread) listener_thread.join() self.assertTrue(len(self.progress_events) > 0)
Index: lldb/test/API/functionalities/progress_reporting/TestProgressReporting.py =================================================================== --- lldb/test/API/functionalities/progress_reporting/TestProgressReporting.py +++ lldb/test/API/functionalities/progress_reporting/TestProgressReporting.py @@ -17,41 +17,43 @@ TestBase.setUp(self) self.progress_events = [] - def fetch_events(self, test_broadcaster): - listener = lldb.SBListener("lldb.progress.listener") - listener.StartListeningForEvents(test_broadcaster, - self.eBroadcastBitStopProgressThread) - - progress_broadcaster = self.dbg.GetBroadcaster() - progress_broadcaster.AddListener(listener, lldb.SBDebugger.eBroadcastBitProgress) - + def fetch_events(self): event = lldb.SBEvent() done = False while not done: - if listener.WaitForEvent(1, event): + if self.listener.WaitForEvent(1, event): event_mask = event.GetType(); - if event.BroadcasterMatchesRef(test_broadcaster): + if event.BroadcasterMatchesRef(self.test_broadcaster): if event_mask & self.eBroadcastBitStopProgressThread: done = True; - elif event.BroadcasterMatchesRef(progress_broadcaster): - message = lldb.SBDebugger().GetProgressFromEvent(event, 0, 0, 0, False); + elif event.BroadcasterMatchesRef(self.progress_broadcaster): + ret_args = lldb.SBDebugger().GetProgressFromEvent(event, 0, 0, 0, False); + self.assertGreater(len(ret_args), 1) + + message = ret_args[0] if message: self.progress_events.append((message, event)) - @skipUnlessDarwin + @skipIf(oslist=no_match(['darwin','macos','linux'])) def test_dwarf_symbol_loading_progress_report(self): """Test that we are able to fetch dwarf symbol loading progress events""" self.build() - test_broadcaster = lldb.SBBroadcaster('lldb.broadcaster.test') - listener_thread = threading.Thread(target=self.fetch_events, - args=[test_broadcaster]) + self.listener = lldb.SBListener("lldb.progress.listener") + self.test_broadcaster = lldb.SBBroadcaster('lldb.broadcaster.test') + self.listener.StartListeningForEvents(self.test_broadcaster, + self.eBroadcastBitStopProgressThread) + + self.progress_broadcaster = self.dbg.GetBroadcaster() + self.progress_broadcaster.AddListener(self.listener, lldb.SBDebugger.eBroadcastBitProgress) + + listener_thread = threading.Thread(target=self.fetch_events) listener_thread.start() lldbutil.run_to_source_breakpoint(self, 'break here', lldb.SBFileSpec('main.c')) - test_broadcaster.BroadcastEventByType(self.eBroadcastBitStopProgressThread) + self.test_broadcaster.BroadcastEventByType(self.eBroadcastBitStopProgressThread) listener_thread.join() self.assertTrue(len(self.progress_events) > 0)
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits