Skip to content

Commit 8294545

Browse files
labathmedismailben
authored andcommitted
Revert "[lldb/test] Add events listener helper class to lldbtest"
It removes the "wait-until-event-thread-stops" logic, which makes TestDiagnosticReporting.py flaky. This reverts commits 09ff41a and acdd41b. (cherry picked from commit 8bf8934)
1 parent a53491f commit 8294545

File tree

3 files changed

+86
-88
lines changed

3 files changed

+86
-88
lines changed

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

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

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

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,51 @@
22
Test that we are able to broadcast and receive diagnostic events from lldb
33
"""
44
import lldb
5-
5+
from lldbsuite.test.lldbtest import *
6+
from lldbsuite.test.decorators import *
67
import lldbsuite.test.lldbutil as lldbutil
8+
import threading
79

8-
from lldbsuite.test.lldbtest import *
9-
from lldbsuite.test.eventlistener import EventListenerTestBase
1010

11-
class TestDiagnosticReporting(EventListenerTestBase):
11+
class TestDiagnosticReporting(TestBase):
1212

1313
mydir = TestBase.compute_mydir(__file__)
14-
event_mask = lldb.SBDebugger.eBroadcastBitWarning | lldb.SBDebugger.eBroadcastBitError
15-
event_data_extractor = lldb.SBDebugger.GetDiagnosticFromEvent
14+
15+
eBroadcastBitStopDiagnosticThread = (1 << 0)
16+
17+
def setUp(self):
18+
TestBase.setUp(self)
19+
self.diagnostic_events = []
20+
21+
def fetch_events(self):
22+
event = lldb.SBEvent()
23+
24+
done = False
25+
while not done:
26+
if self.listener.WaitForEvent(1, event):
27+
event_mask = event.GetType()
28+
if event.BroadcasterMatchesRef(self.test_broadcaster):
29+
if event_mask & self.eBroadcastBitStopDiagnosticThread:
30+
done = True
31+
elif event.BroadcasterMatchesRef(self.diagnostic_broadcaster):
32+
self.diagnostic_events.append(
33+
lldb.SBDebugger.GetDiagnosticFromEvent(event))
1634

1735
def test_dwarf_symbol_loading_diagnostic_report(self):
1836
"""Test that we are able to fetch diagnostic events"""
37+
self.listener = lldb.SBListener("lldb.diagnostic.listener")
38+
self.test_broadcaster = lldb.SBBroadcaster('lldb.broadcaster.test')
39+
self.listener.StartListeningForEvents(
40+
self.test_broadcaster, self.eBroadcastBitStopDiagnosticThread)
41+
42+
self.diagnostic_broadcaster = self.dbg.GetBroadcaster()
43+
self.diagnostic_broadcaster.AddListener(
44+
self.listener, lldb.SBDebugger.eBroadcastBitWarning)
45+
self.diagnostic_broadcaster.AddListener(
46+
self.listener, lldb.SBDebugger.eBroadcastBitError)
47+
48+
listener_thread = threading.Thread(target=self.fetch_events)
49+
listener_thread.start()
1950

2051
self.yaml2obj("minidump.yaml", self.getBuildArtifact("minidump.core"))
2152

@@ -24,9 +55,13 @@ def test_dwarf_symbol_loading_diagnostic_report(self):
2455
self.process = self.target.LoadCore(
2556
self.getBuildArtifact("minidump.core"))
2657

27-
self.assertEquals(len(self.events), 1)
58+
self.test_broadcaster.BroadcastEventByType(
59+
self.eBroadcastBitStopDiagnosticThread)
60+
listener_thread.join()
61+
62+
self.assertEquals(len(self.diagnostic_events), 1)
2863

29-
diagnostic_event = self.events[0]
64+
diagnostic_event = self.diagnostic_events[0]
3065
self.assertEquals(
3166
diagnostic_event.GetValueForKey("type").GetStringValue(100),
3267
"warning")

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

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,57 @@
22
Test that we are able to broadcast and receive progress events from lldb
33
"""
44
import lldb
5-
5+
from lldbsuite.test.lldbtest import *
6+
from lldbsuite.test.decorators import *
67
import lldbsuite.test.lldbutil as lldbutil
8+
import threading
79

8-
from lldbsuite.test.lldbtest import *
9-
from lldbsuite.test.eventlistener import EventListenerTestBase
10+
class TestProgressReporting(TestBase):
1011

12+
mydir = TestBase.compute_mydir(__file__)
1113

12-
class TestProgressReporting(EventListenerTestBase):
14+
eBroadcastBitStopProgressThread = (1 << 0)
1315

14-
mydir = TestBase.compute_mydir(__file__)
15-
event_mask = lldb.SBDebugger.eBroadcastBitProgress
16-
event_data_extractor = lldb.SBDebugger.GetProgressFromEvent
16+
def setUp(self):
17+
TestBase.setUp(self)
18+
self.progress_events = []
19+
20+
def fetch_events(self):
21+
event = lldb.SBEvent()
22+
23+
done = False
24+
while not done:
25+
if self.listener.WaitForEvent(1, event):
26+
event_mask = event.GetType();
27+
if event.BroadcasterMatchesRef(self.test_broadcaster):
28+
if event_mask & self.eBroadcastBitStopProgressThread:
29+
done = True;
30+
elif event.BroadcasterMatchesRef(self.progress_broadcaster):
31+
ret_args = lldb.SBDebugger().GetProgressFromEvent(event);
32+
self.assertGreater(len(ret_args), 1)
33+
34+
message = ret_args[0]
35+
if message:
36+
self.progress_events.append((message, event))
1737

1838
def test_dwarf_symbol_loading_progress_report(self):
1939
"""Test that we are able to fetch dwarf symbol loading progress events"""
2040
self.build()
2141

42+
self.listener = lldb.SBListener("lldb.progress.listener")
43+
self.test_broadcaster = lldb.SBBroadcaster('lldb.broadcaster.test')
44+
self.listener.StartListeningForEvents(self.test_broadcaster,
45+
self.eBroadcastBitStopProgressThread)
46+
47+
self.progress_broadcaster = self.dbg.GetBroadcaster()
48+
self.progress_broadcaster.AddListener(self.listener, lldb.SBDebugger.eBroadcastBitProgress)
49+
50+
listener_thread = threading.Thread(target=self.fetch_events)
51+
listener_thread.start()
52+
2253
lldbutil.run_to_source_breakpoint(self, 'break here', lldb.SBFileSpec('main.c'))
23-
self.assertGreater(len(self.events), 0)
54+
55+
self.test_broadcaster.BroadcastEventByType(self.eBroadcastBitStopProgressThread)
56+
listener_thread.join()
57+
58+
self.assertGreater(len(self.progress_events), 0)

0 commit comments

Comments
 (0)