xref: /llvm-project/lldb/test/API/functionalities/progress_reporting/TestProgressReporting.py (revision a4c21d17fe187feb9e666ae8290b6d318014e9c8)
1e3b9bb5aSMed Ismail Bennani"""
2e3b9bb5aSMed Ismail BennaniTest that we are able to broadcast and receive progress events from lldb
3e3b9bb5aSMed Ismail Bennani"""
4e3b9bb5aSMed Ismail Bennaniimport lldb
59216baf8SMed Ismail Bennani
68bf89346SPavel Labathimport lldbsuite.test.lldbutil as lldbutil
79216baf8SMed Ismail Bennani
89216baf8SMed Ismail Bennanifrom lldbsuite.test.lldbtest import *
99216baf8SMed Ismail Bennani
1009ff41a0SMed Ismail Bennani
118bf89346SPavel Labathclass TestProgressReporting(TestBase):
128bf89346SPavel Labath    def setUp(self):
138bf89346SPavel Labath        TestBase.setUp(self)
149216baf8SMed Ismail Bennani        self.broadcaster = self.dbg.GetBroadcaster()
152238dcc3SJonas Devlieghere        self.listener = lldbutil.start_listening_from(
16*a4c21d17SChelsea Cassanova            self.broadcaster, lldb.SBDebugger.eBroadcastBitProgress
172238dcc3SJonas Devlieghere        )
18e3b9bb5aSMed Ismail Bennani
19e3b9bb5aSMed Ismail Bennani    def test_dwarf_symbol_loading_progress_report(self):
20e3b9bb5aSMed Ismail Bennani        """Test that we are able to fetch dwarf symbol loading progress events"""
21e3b9bb5aSMed Ismail Bennani        self.build()
22e3b9bb5aSMed Ismail Bennani
232238dcc3SJonas Devlieghere        lldbutil.run_to_source_breakpoint(self, "break here", lldb.SBFileSpec("main.c"))
248bf89346SPavel Labath
259216baf8SMed Ismail Bennani        event = lldbutil.fetch_next_event(self, self.listener, self.broadcaster)
269216baf8SMed Ismail Bennani        ret_args = lldb.SBDebugger.GetProgressFromEvent(event)
279216baf8SMed Ismail Bennani        self.assertGreater(len(ret_args), 0)
289216baf8SMed Ismail Bennani        message = ret_args[0]
299216baf8SMed Ismail Bennani        self.assertGreater(len(message), 0)
308bf89346SPavel Labath
310ac8dfd0SJonas Devlieghere    def test_dwarf_symbol_loading_progress_report_structured_data(self):
320ac8dfd0SJonas Devlieghere        """Test that we are able to fetch dwarf symbol loading progress events
330ac8dfd0SJonas Devlieghere        using the structured data API"""
340ac8dfd0SJonas Devlieghere        self.build()
350ac8dfd0SJonas Devlieghere
362238dcc3SJonas Devlieghere        lldbutil.run_to_source_breakpoint(self, "break here", lldb.SBFileSpec("main.c"))
370ac8dfd0SJonas Devlieghere
380ac8dfd0SJonas Devlieghere        event = lldbutil.fetch_next_event(self, self.listener, self.broadcaster)
390ac8dfd0SJonas Devlieghere        progress_data = lldb.SBDebugger.GetProgressDataFromEvent(event)
400ac8dfd0SJonas Devlieghere        message = progress_data.GetValueForKey("message").GetStringValue(100)
410ac8dfd0SJonas Devlieghere        self.assertGreater(len(message), 0)
42f1ef910bSChelsea Cassanova        details = progress_data.GetValueForKey("details").GetStringValue(100)
43f1ef910bSChelsea Cassanova        self.assertGreater(len(details), 0)
44