]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - packages/Python/lldbsuite/test/api/listeners/TestListener.py
Vendor import of lldb trunk r351319 (just before the release_80 branch
[FreeBSD/FreeBSD.git] / packages / Python / lldbsuite / test / api / listeners / TestListener.py
1 """
2 Test that we can listen to modules loaded events.
3 """
4
5 from __future__ import print_function
6
7 import copy
8 import os
9 import time
10
11 import lldb
12 from lldbsuite.test.decorators import *
13 from lldbsuite.test.lldbtest import *
14 from lldbsuite.test import lldbutil
15
16 import six
17
18
19 class ListenToModuleLoadedEvents (TestBase):
20
21     mydir = TestBase.compute_mydir(__file__)
22
23     def setUp(self):
24         # Call super's setUp().
25         TestBase.setUp(self)
26
27     def test_receiving_breakpoint_added(self):
28         """Test that we get breakpoint added events, waiting on event classes on the debugger"""
29         self.build()
30
31         my_listener = lldb.SBListener("test_listener")
32
33         my_listener.StartListeningForEventClass(
34             self.dbg,
35             lldb.SBTarget.GetBroadcasterClassName(),
36             lldb.SBTarget.eBroadcastBitBreakpointChanged)
37
38         exe = self.getBuildArtifact("a.out")
39
40         target = self.dbg.CreateTarget(exe)
41
42         bkpt = target.BreakpointCreateByName("main")
43
44         event = lldb.SBEvent()
45         my_listener.WaitForEvent(1, event)
46
47         self.assertTrue(event.IsValid(), "Got a valid event.")
48         self.assertTrue(
49             lldb.SBBreakpoint.EventIsBreakpointEvent(event),
50             "It is a breakpoint event.")
51         self.assertTrue(lldb.SBBreakpoint.GetBreakpointEventTypeFromEvent(
52             event) == lldb.eBreakpointEventTypeAdded, "It is a breakpoint added event.")
53         self.assertTrue(
54             bkpt == lldb.SBBreakpoint.GetBreakpointFromEvent(event),
55             "It is our breakpoint.")
56
57         # Now make sure if we stop listening for events we don't get them:
58
59         my_listener.StopListeningForEventClass(
60             self.dbg,
61             lldb.SBTarget.GetBroadcasterClassName(),
62             lldb.SBTarget.eBroadcastBitBreakpointChanged)
63         my_listener.StopListeningForEvents(
64             target.GetBroadcaster(),
65             lldb.SBTarget.eBroadcastBitBreakpointChanged)
66
67         bkpt2 = target.BreakpointCreateByName("main")
68         my_listener.WaitForEvent(1, event)
69         self.assertTrue(
70             not event.IsValid(),
71             "We don't get events we aren't listening to.")