22Test that we are able to broadcast and receive progress events from lldb
33"""
44import lldb
5+ import threading
56
67import lldbsuite .test .lldbutil as lldbutil
78
@@ -16,6 +17,36 @@ def setUp(self):
1617 self .broadcaster , lldb .SBDebugger .eBroadcastBitProgress
1718 )
1819
20+ def test_wait_attach_progress_reporting (self ):
21+ """Test that progress reports for wait attaching work as intended."""
22+ self .build ()
23+ target = self .dbg .CreateTarget (None )
24+
25+ # Wait attach to a process, then check to see that a progress report was created
26+ # and that its message is correct for waiting to attach to a process.
27+ class AttachThread (threading .Thread ):
28+ def __init__ (self , target ):
29+ threading .Thread .__init__ (self )
30+ self .target = target
31+
32+ def run (self ):
33+ self .target .AttachToProcessWithName (
34+ lldb .SBListener (), "a.out" , True , lldb .SBError ()
35+ )
36+
37+ thread = AttachThread (target )
38+ thread .start ()
39+
40+ event = lldbutil .fetch_next_event (self , self .listener , self .broadcaster )
41+ progress_data = lldb .SBDebugger .GetProgressDataFromEvent (event )
42+ message = progress_data .GetValueForKey ("message" ).GetStringValue (100 )
43+ self .assertEqual (message , "Waiting to attach to process" )
44+
45+ # Interrupt the process attach to keep the test from stalling.
46+ target .process .SendAsyncInterrupt ()
47+
48+ thread .join ()
49+
1950 def test_dwarf_symbol_loading_progress_report (self ):
2051 """Test that we are able to fetch dwarf symbol loading progress events"""
2152 self .build ()
0 commit comments