diff options
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/event/TestEvents.py')
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/python_api/event/TestEvents.py | 111 |
1 files changed, 65 insertions, 46 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/python_api/event/TestEvents.py b/lldb/packages/Python/lldbsuite/test/python_api/event/TestEvents.py index 1c23f50e9d4..e9ea0bd0087 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/event/TestEvents.py +++ b/lldb/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 |