1""" 2Test that we are able to broadcast and receive progress events from lldb 3""" 4import lldb 5 6import lldbsuite.test.lldbutil as lldbutil 7 8from lldbsuite.test.lldbtest import * 9 10 11class TestProgressReporting(TestBase): 12 def setUp(self): 13 TestBase.setUp(self) 14 self.broadcaster = self.dbg.GetBroadcaster() 15 self.listener = lldbutil.start_listening_from( 16 self.broadcaster, lldb.SBDebugger.eBroadcastBitProgress 17 ) 18 19 def test_dwarf_symbol_loading_progress_report(self): 20 """Test that we are able to fetch dwarf symbol loading progress events""" 21 self.build() 22 23 lldbutil.run_to_source_breakpoint(self, "break here", lldb.SBFileSpec("main.c")) 24 25 event = lldbutil.fetch_next_event(self, self.listener, self.broadcaster) 26 ret_args = lldb.SBDebugger.GetProgressFromEvent(event) 27 self.assertGreater(len(ret_args), 0) 28 message = ret_args[0] 29 self.assertGreater(len(message), 0) 30 31 def test_dwarf_symbol_loading_progress_report_structured_data(self): 32 """Test that we are able to fetch dwarf symbol loading progress events 33 using the structured data API""" 34 self.build() 35 36 lldbutil.run_to_source_breakpoint(self, "break here", lldb.SBFileSpec("main.c")) 37 38 event = lldbutil.fetch_next_event(self, self.listener, self.broadcaster) 39 progress_data = lldb.SBDebugger.GetProgressDataFromEvent(event) 40 message = progress_data.GetValueForKey("message").GetStringValue(100) 41 self.assertGreater(len(message), 0) 42 details = progress_data.GetValueForKey("details").GetStringValue(100) 43 self.assertGreater(len(details), 0) 44