diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 | 
| commit | 14f1b3e8826ce43b978db93a62d1166055db5394 (patch) | |
| tree | 0a00ad8d3498783fe0193f3b656bca17c4c8697d /packages/Python/lldbsuite/test/python_api/event/TestEvents.py | |
| parent | 4ee8c119c71a06dcad1e0fecc8c675e480e59337 (diff) | |
Notes
Diffstat (limited to 'packages/Python/lldbsuite/test/python_api/event/TestEvents.py')
| -rw-r--r-- | packages/Python/lldbsuite/test/python_api/event/TestEvents.py | 111 | 
1 files changed, 65 insertions, 46 deletions
diff --git a/packages/Python/lldbsuite/test/python_api/event/TestEvents.py b/packages/Python/lldbsuite/test/python_api/event/TestEvents.py index 1c23f50e9d4d..e9ea0bd00879 100644 --- a/packages/Python/lldbsuite/test/python_api/event/TestEvents.py +++ b/packages/Python/lldbsuite/test/python_api/event/TestEvents.py @@ -5,14 +5,15 @@ Test lldb Python event APIs.  from __future__ import print_function - -import os, time +import os +import time  import re  import lldb  from lldbsuite.test.decorators import *  from lldbsuite.test.lldbtest import *  from lldbsuite.test import lldbutil +  @skipIfLinux   # llvm.org/pr25924, sometimes generating SIGSEGV  class EventAPITestCase(TestBase): @@ -22,10 +23,13 @@ class EventAPITestCase(TestBase):          # Call super's setUp().          TestBase.setUp(self)          # Find the line number to of function 'c'. -        self.line = line_number('main.c', '// Find the line number of function "c" here.') +        self.line = line_number( +            'main.c', '// Find the line number of function "c" here.')      @add_test_categories(['pyapi']) -    @expectedFailureAll(oslist=["linux"], bugnumber="llvm.org/pr23730 Flaky, fails ~1/10 cases") +    @expectedFailureAll( +        oslist=["linux"], +        bugnumber="llvm.org/pr23730 Flaky, fails ~1/10 cases")      def test_listen_for_and_print_event(self):          """Exercise SBEvent API."""          self.build() @@ -44,18 +48,20 @@ class EventAPITestCase(TestBase):          # Now launch the process, and do not stop at the entry point.          error = lldb.SBError() -        process = target.Launch (listener,  -                                 None,      # argv -                                 None,      # envp -                                 None,      # stdin_path -                                 None,      # stdout_path -                                 None,      # stderr_path -                                 None,      # working directory -                                 0,         # launch flags -                                 False,     # Stop at entry -                                 error)     # error - -        self.assertTrue(process.GetState() == lldb.eStateStopped, PROCESS_STOPPED) +        process = target.Launch(listener, +                                None,      # argv +                                None,      # envp +                                None,      # stdin_path +                                None,      # stdout_path +                                None,      # stderr_path +                                None,      # working directory +                                0,         # launch flags +                                False,     # Stop at entry +                                error)     # error + +        self.assertTrue( +            process.GetState() == lldb.eStateStopped, +            PROCESS_STOPPED)          # Create an empty event object.          event = lldb.SBEvent() @@ -66,7 +72,9 @@ class EventAPITestCase(TestBase):          # Create MyListeningThread class to wait for any kind of event.          import threading +          class MyListeningThread(threading.Thread): +              def run(self):                  count = 0                  # Let's only try at most 4 times to retrieve any kind of event. @@ -79,7 +87,10 @@ class EventAPITestCase(TestBase):                              desc = lldbutil.get_description(event)                              print("Event description:", desc)                              print("Event data flavor:", event.GetDataFlavor()) -                            print("Process state:", lldbutil.state_type_to_str(process.GetState())) +                            print( +                                "Process state:", +                                lldbutil.state_type_to_str( +                                    process.GetState()))                              print()                      else:                          if traceOn: @@ -106,7 +117,7 @@ class EventAPITestCase(TestBase):          # Shouldn't we be testing against some kind of expectation here?      @add_test_categories(['pyapi']) -    @expectedFlakeyLinux("llvm.org/pr23730") # Flaky, fails ~1/100 cases +    @expectedFlakeyLinux("llvm.org/pr23730")  # Flaky, fails ~1/100 cases      @expectedFlakeyOS(oslist=["windows"])      def test_wait_for_event(self):          """Exercise SBListener.WaitForEvent() API.""" @@ -131,16 +142,16 @@ class EventAPITestCase(TestBase):          # Now launch the process, and do not stop at entry point.          error = lldb.SBError() -        process = target.Launch (listener,  -                                 None,      # argv -                                 None,      # envp -                                 None,      # stdin_path -                                 None,      # stdout_path -                                 None,      # stderr_path -                                 None,      # working directory -                                 0,         # launch flags -                                 False,     # Stop at entry -                                 error)     # error +        process = target.Launch(listener, +                                None,      # argv +                                None,      # envp +                                None,      # stdin_path +                                None,      # stdout_path +                                None,      # stderr_path +                                None,      # working directory +                                0,         # launch flags +                                False,     # Stop at entry +                                error)     # error          self.assertTrue(error.Success() and process, PROCESS_IS_VALID)          # Create an empty event object. @@ -149,7 +160,9 @@ class EventAPITestCase(TestBase):          # Create MyListeningThread to wait for any kind of event.          import threading +          class MyListeningThread(threading.Thread): +              def run(self):                  count = 0                  # Let's only try at most 3 times to retrieve any kind of event. @@ -179,9 +192,11 @@ class EventAPITestCase(TestBase):          self.assertTrue(event,                          "My listening thread successfully received an event") -    @skipIfFreeBSD # llvm.org/pr21325 +    @skipIfFreeBSD  # llvm.org/pr21325      @add_test_categories(['pyapi']) -    @expectedFailureAll(oslist=["linux"], bugnumber="llvm.org/pr23617 Flaky, fails ~1/10 cases") +    @expectedFailureAll( +        oslist=["linux"], +        bugnumber="llvm.org/pr23617 Flaky, fails ~1/10 cases")      @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24778")      def test_add_listener_to_broadcaster(self):          """Exercise some SBBroadcaster APIs.""" @@ -205,22 +220,21 @@ class EventAPITestCase(TestBase):          # Now launch the process, and do not stop at the entry point.          error = lldb.SBError() -        process = target.Launch (listener,  -                                 None,      # argv -                                 None,      # envp -                                 None,      # stdin_path -                                 None,      # stdout_path -                                 None,      # stderr_path -                                 None,      # working directory -                                 0,         # launch flags -                                 False,     # Stop at entry -                                 error)     # error +        process = target.Launch(listener, +                                None,      # argv +                                None,      # envp +                                None,      # stdin_path +                                None,      # stdout_path +                                None,      # stderr_path +                                None,      # working directory +                                0,         # launch flags +                                False,     # Stop at entry +                                error)     # error          # Create an empty event object.          event = lldb.SBEvent()          self.assertFalse(event, "Event should not be valid initially") -          # The finite state machine for our custom listening thread, with an          # initial state of None, which means no event has been received.          # It changes to 'connected' after 'connected' event is received (for remote platforms) @@ -231,9 +245,12 @@ class EventAPITestCase(TestBase):          self.state = None          # Create MyListeningThread to wait for state changed events. -        # By design, a "running" event is expected following by a "stopped" event. +        # By design, a "running" event is expected following by a "stopped" +        # event.          import threading +          class MyListeningThread(threading.Thread): +              def run(self):                  #print("Running MyListeningThread:", self) @@ -248,19 +265,21 @@ class EventAPITestCase(TestBase):                          #print("Event description:", desc)                          match = pattern.search(desc)                          if not match: -                            break; +                            break                          if match.group(1) == 'connected':                              # When debugging remote targets with lldb-server, we                              # first get the 'connected' event. -                            self.context.assertTrue(self.context.state == None) +                            self.context.assertTrue(self.context.state is None)                              self.context.state = 'connected'                              continue                          elif match.group(1) == 'running': -                            self.context.assertTrue(self.context.state == None or self.context.state == 'connected') +                            self.context.assertTrue( +                                self.context.state is None or self.context.state == 'connected')                              self.context.state = 'running'                              continue                          elif match.group(1) == 'stopped': -                            self.context.assertTrue(self.context.state == 'running') +                            self.context.assertTrue( +                                self.context.state == 'running')                              # Whoopee, both events have been received!                              self.context.state = 'stopped'                              break  | 
