Skip to content

Commit 332fbd7

Browse files
authored
Merge pull request #4109 from medismailben/stable/20211026
2 parents 4cf7a2b + f4e4c38 commit 332fbd7

File tree

5 files changed

+63
-96
lines changed

5 files changed

+63
-96
lines changed

lldb/packages/Python/lldbsuite/test/eventlistener.py

Lines changed: 0 additions & 72 deletions
This file was deleted.

lldb/packages/Python/lldbsuite/test/lldbutil.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1225,6 +1225,29 @@ def get_next_event():
12251225
lldb.SBProcess.GetStateFromEvent(event),
12261226
expected_state)
12271227

1228+
def start_listening_from(broadcaster, event_mask):
1229+
"""Creates a listener for a specific event mask and add it to the source broadcaster."""
1230+
1231+
listener = lldb.SBListener("lldb.test.listener")
1232+
broadcaster.AddListener(listener, event_mask)
1233+
return listener
1234+
1235+
def fetch_next_event(test, listener, broadcaster, timeout=10):
1236+
"""Fetch one event from the listener and return it if it matches the provided broadcaster.
1237+
Fails otherwise."""
1238+
1239+
event = lldb.SBEvent()
1240+
1241+
if listener.WaitForEvent(timeout, event):
1242+
if event.BroadcasterMatchesRef(broadcaster):
1243+
return event
1244+
1245+
test.fail("received event '%s' from unexpected broadcaster '%s'." %
1246+
(event.GetDescription(), event.GetBroadcaster().GetName()))
1247+
1248+
test.fail("couldn't fetch an event before reaching the timeout.")
1249+
1250+
12281251
# ===================================
12291252
# Utility functions related to Frames
12301253
# ===================================

lldb/test/API/functionalities/diagnostic_reporting/TestDiagnosticReporting.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,18 @@
66
import lldbsuite.test.lldbutil as lldbutil
77

88
from lldbsuite.test.lldbtest import *
9-
from lldbsuite.test.eventlistener import EventListenerTestBase
109

11-
class TestDiagnosticReporting(EventListenerTestBase):
10+
class TestDiagnosticReporting(TestBase):
1211

1312
mydir = TestBase.compute_mydir(__file__)
14-
event_mask = lldb.SBDebugger.eBroadcastBitWarning | lldb.SBDebugger.eBroadcastBitError
15-
event_data_extractor = lldb.SBDebugger.GetDiagnosticFromEvent
13+
14+
def setUp(self):
15+
TestBase.setUp(self)
16+
17+
self.broadcaster = self.dbg.GetBroadcaster()
18+
self.listener = lldbutil.start_listening_from(self.broadcaster,
19+
lldb.SBDebugger.eBroadcastBitWarning |
20+
lldb.SBDebugger.eBroadcastBitError)
1621

1722
def test_dwarf_symbol_loading_diagnostic_report(self):
1823
"""Test that we are able to fetch diagnostic events"""
@@ -24,13 +29,12 @@ def test_dwarf_symbol_loading_diagnostic_report(self):
2429
self.process = self.target.LoadCore(
2530
self.getBuildArtifact("minidump.core"))
2631

27-
self.assertEquals(len(self.events), 1)
28-
29-
diagnostic_event = self.events[0]
32+
event = lldbutil.fetch_next_event(self, self.listener, self.broadcaster)
33+
diagnostic_data = lldb.SBDebugger.GetDiagnosticFromEvent(event)
3034
self.assertEquals(
31-
diagnostic_event.GetValueForKey("type").GetStringValue(100),
35+
diagnostic_data.GetValueForKey("type").GetStringValue(100),
3236
"warning")
3337
self.assertEquals(
34-
diagnostic_event.GetValueForKey("message").GetStringValue(100),
38+
diagnostic_data.GetValueForKey("message").GetStringValue(100),
3539
"unable to retrieve process ID from minidump file, setting process ID to 1"
3640
)

lldb/test/API/functionalities/progress_reporting/TestProgressReporting.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,27 @@
66
import lldbsuite.test.lldbutil as lldbutil
77

88
from lldbsuite.test.lldbtest import *
9-
from lldbsuite.test.eventlistener import EventListenerTestBase
109

1110

12-
class TestProgressReporting(EventListenerTestBase):
11+
class TestProgressReporting(TestBase):
1312

1413
mydir = TestBase.compute_mydir(__file__)
15-
event_mask = lldb.SBDebugger.eBroadcastBitProgress
16-
event_data_extractor = lldb.SBDebugger.GetProgressFromEvent
14+
15+
def setUp(self):
16+
TestBase.setUp(self)
17+
self.broadcaster = self.dbg.GetBroadcaster()
18+
self.listener = lldbutil.start_listening_from(self.broadcaster,
19+
lldb.SBDebugger.eBroadcastBitProgress)
1720

1821
def test_dwarf_symbol_loading_progress_report(self):
1922
"""Test that we are able to fetch dwarf symbol loading progress events"""
2023
self.build()
2124

2225
lldbutil.run_to_source_breakpoint(self, 'break here', lldb.SBFileSpec('main.c'))
23-
self.assertGreater(len(self.events), 0)
26+
27+
event = lldbutil.fetch_next_event(self, self.listener, self.broadcaster)
28+
ret_args = lldb.SBDebugger.GetProgressFromEvent(event)
29+
self.assertGreater(len(ret_args), 0)
30+
message = ret_args[0]
31+
self.assertGreater(len(message), 0)
32+

lldb/test/API/functionalities/progress_reporting/swift_progress_reporting/TestSwiftProgressReporting.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,16 @@
77

88
from lldbsuite.test.lldbtest import *
99
from lldbsuite.test.decorators import *
10-
from lldbsuite.test.eventlistener import EventListenerTestBase
1110

12-
class TestSwiftProgressReporting(EventListenerTestBase):
11+
class TestSwiftProgressReporting(TestBase):
1312

1413
mydir = TestBase.compute_mydir(__file__)
15-
event_mask = lldb.SBDebugger.eBroadcastBitProgress
16-
event_data_extractor = lldb.SBDebugger.GetProgressFromEvent
1714

15+
def setUp(self):
16+
TestBase.setUp(self)
17+
self.broadcaster = self.dbg.GetBroadcaster()
18+
self.listener = lldbutil.start_listening_from(self.broadcaster,
19+
lldb.SBDebugger.eBroadcastBitProgress)
1820
@swiftTest
1921
@skipIf(oslist=no_match(["macosx"]))
2022
def test_swift_progress_report(self):
@@ -31,14 +33,15 @@ def test_swift_progress_report(self):
3133
# Resolve variable to exercise the type-system
3234
self.runCmd("expr boo")
3335

34-
self.assertGreater(len(self.events), 0)
35-
3636
beacons = [ "Loading Swift module",
3737
"Caching Swift user imports from",
3838
"Setting up Swift reflection for",
3939
"Getting Swift compile unit imports for"]
4040

41-
for beacon in beacons:
42-
filtered_events = list(filter(lambda event: beacon in event[0],
43-
self.events))
44-
self.assertGreater(len(filtered_events), 0)
41+
while len(beacons):
42+
event = lldbutil.fetch_next_event(self, self.listener, self.broadcaster)
43+
ret_args = lldb.SBDebugger.GetProgressFromEvent(event)
44+
45+
for beacon in beacons:
46+
if beacon in ret_args[0]:
47+
beacons.remove(beacon)

0 commit comments

Comments
 (0)