summaryrefslogtreecommitdiff
path: root/packages/Python/lldbsuite/test/functionalities/thread/state/TestThreadStates.py
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2019-08-20 18:01:57 +0000
committerDimitry Andric <dim@FreeBSD.org>2019-08-20 18:01:57 +0000
commit88c643b6fec27eec436c8d138fee6346e92337d6 (patch)
tree82cd13b2f3cde1c9e5f79689ba4e6ba67694843f /packages/Python/lldbsuite/test/functionalities/thread/state/TestThreadStates.py
parent94994d372d014ce4c8758b9605d63fae651bd8aa (diff)
Notes
Diffstat (limited to 'packages/Python/lldbsuite/test/functionalities/thread/state/TestThreadStates.py')
-rw-r--r--packages/Python/lldbsuite/test/functionalities/thread/state/TestThreadStates.py326
1 files changed, 0 insertions, 326 deletions
diff --git a/packages/Python/lldbsuite/test/functionalities/thread/state/TestThreadStates.py b/packages/Python/lldbsuite/test/functionalities/thread/state/TestThreadStates.py
deleted file mode 100644
index 4b1247316e18..000000000000
--- a/packages/Python/lldbsuite/test/functionalities/thread/state/TestThreadStates.py
+++ /dev/null
@@ -1,326 +0,0 @@
-"""
-Test thread states.
-"""
-
-from __future__ import print_function
-
-
-import unittest2
-import os
-import time
-import lldb
-from lldbsuite.test.decorators import *
-from lldbsuite.test.lldbtest import *
-from lldbsuite.test import lldbutil
-
-
-class ThreadStateTestCase(TestBase):
-
- mydir = TestBase.compute_mydir(__file__)
-
- @expectedFailureAll(
- oslist=["linux"],
- bugnumber="llvm.org/pr15824 thread states not properly maintained")
- @skipIfDarwin # llvm.org/pr15824 thread states not properly maintained and <rdar://problem/28557237>
- @expectedFailureAll(
- oslist=["freebsd"],
- bugnumber="llvm.org/pr18190 thread states not properly maintained")
- def test_state_after_breakpoint(self):
- """Test thread state after breakpoint."""
- self.build(dictionary=self.getBuildFlags(use_cpp11=False))
- self.thread_state_after_breakpoint_test()
-
- @skipIfDarwin # 'llvm.org/pr23669', cause Python crash randomly
- @expectedFailureAll(
- oslist=lldbplatformutil.getDarwinOSTriples(),
- bugnumber="llvm.org/pr23669")
- @expectedFailureAll(oslist=["freebsd"], bugnumber="llvm.org/pr15824")
- @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24660")
- def test_state_after_continue(self):
- """Test thread state after continue."""
- self.build(dictionary=self.getBuildFlags(use_cpp11=False))
- self.thread_state_after_continue_test()
-
- @skipIfDarwin # 'llvm.org/pr23669', cause Python crash randomly
- @expectedFailureDarwin('llvm.org/pr23669')
- @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24660")
- # thread states not properly maintained
- @unittest2.expectedFailure("llvm.org/pr16712")
- def test_state_after_expression(self):
- """Test thread state after expression."""
- self.build(dictionary=self.getBuildFlags(use_cpp11=False))
- self.thread_state_after_expression_test()
-
- # thread states not properly maintained
- @unittest2.expectedFailure("llvm.org/pr15824 and <rdar://problem/28557237>")
- @expectedFailureAll(
- oslist=["windows"],
- bugnumber="llvm.org/pr24668: Breakpoints not resolved correctly")
- @skipIfDarwin # llvm.org/pr15824 thread states not properly maintained and <rdar://problem/28557237>
- def test_process_state(self):
- """Test thread states (comprehensive)."""
- self.build(dictionary=self.getBuildFlags(use_cpp11=False))
- self.thread_states_test()
-
- def setUp(self):
- # Call super's setUp().
- TestBase.setUp(self)
- # Find the line numbers for our breakpoints.
- self.break_1 = line_number('main.cpp', '// Set first breakpoint here')
- self.break_2 = line_number('main.cpp', '// Set second breakpoint here')
-
- def thread_state_after_breakpoint_test(self):
- """Test thread state after breakpoint."""
- exe = self.getBuildArtifact("a.out")
- self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
-
- # This should create a breakpoint in the main thread.
- bp = lldbutil.run_break_set_by_file_and_line(
- self, "main.cpp", self.break_1, num_expected_locations=1)
-
- # Run the program.
- self.runCmd("run", RUN_SUCCEEDED)
-
- # Get the target process
- target = self.dbg.GetSelectedTarget()
- process = target.GetProcess()
-
- thread = lldbutil.get_stopped_thread(
- process, lldb.eStopReasonBreakpoint)
- self.assertIsNotNone(thread)
-
- # Make sure the thread is in the stopped state.
- self.assertTrue(
- thread.IsStopped(),
- "Thread state isn't \'stopped\' during breakpoint 1.")
- self.assertFalse(thread.IsSuspended(),
- "Thread state is \'suspended\' during breakpoint 1.")
-
- # Kill the process
- self.runCmd("process kill")
-
- def wait_for_running_event(self, process):
- listener = self.dbg.GetListener()
- if lldb.remote_platform:
- lldbutil.expect_state_changes(
- self, listener, process, [
- lldb.eStateConnected])
- lldbutil.expect_state_changes(
- self, listener, process, [
- lldb.eStateRunning])
-
- def thread_state_after_continue_test(self):
- """Test thread state after continue."""
- exe = self.getBuildArtifact("a.out")
- self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
-
- # This should create a breakpoint in the main thread.
- lldbutil.run_break_set_by_file_and_line(
- self, "main.cpp", self.break_1, num_expected_locations=1)
- lldbutil.run_break_set_by_file_and_line(
- self, "main.cpp", self.break_2, num_expected_locations=1)
-
- # Run the program.
- self.runCmd("run", RUN_SUCCEEDED)
-
- # Get the target process
- target = self.dbg.GetSelectedTarget()
- process = target.GetProcess()
-
- thread = lldbutil.get_stopped_thread(
- process, lldb.eStopReasonBreakpoint)
- self.assertIsNotNone(thread)
-
- # Continue, the inferior will go into an infinite loop waiting for
- # 'g_test' to change.
- self.dbg.SetAsync(True)
- self.runCmd("continue")
- self.wait_for_running_event(process)
-
- # Check the thread state. It should be running.
- self.assertFalse(
- thread.IsStopped(),
- "Thread state is \'stopped\' when it should be running.")
- self.assertFalse(
- thread.IsSuspended(),
- "Thread state is \'suspended\' when it should be running.")
-
- # Go back to synchronous interactions
- self.dbg.SetAsync(False)
-
- # Kill the process
- self.runCmd("process kill")
-
- def thread_state_after_expression_test(self):
- """Test thread state after expression."""
- exe = self.getBuildArtifact("a.out")
- self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
-
- # This should create a breakpoint in the main thread.
- lldbutil.run_break_set_by_file_and_line(
- self, "main.cpp", self.break_1, num_expected_locations=1)
- lldbutil.run_break_set_by_file_and_line(
- self, "main.cpp", self.break_2, num_expected_locations=1)
-
- # Run the program.
- self.runCmd("run", RUN_SUCCEEDED)
-
- # Get the target process
- target = self.dbg.GetSelectedTarget()
- process = target.GetProcess()
-
- thread = lldbutil.get_stopped_thread(
- process, lldb.eStopReasonBreakpoint)
- self.assertIsNotNone(thread)
-
- # Get the inferior out of its loop
- self.runCmd("expression g_test = 1")
-
- # Check the thread state
- self.assertTrue(
- thread.IsStopped(),
- "Thread state isn't \'stopped\' after expression evaluation.")
- self.assertFalse(
- thread.IsSuspended(),
- "Thread state is \'suspended\' after expression evaluation.")
-
- # Let the process run to completion
- self.runCmd("process continue")
-
- @expectedFailureAll(
- oslist=["windows"],
- bugnumber="llvm.org/pr24668: Breakpoints not resolved correctly")
- @skipIfDarwin # llvm.org/pr15824 thread states not properly maintained and <rdar://problem/28557237>
- @no_debug_info_test
- def test_process_interrupt(self):
- """Test process interrupt and continue."""
- self.build(dictionary=self.getBuildFlags(use_cpp11=False))
- exe = self.getBuildArtifact("a.out")
- self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
-
- # This should create a breakpoint in the main thread.
- bpno = lldbutil.run_break_set_by_file_and_line(
- self, "main.cpp", self.break_1, num_expected_locations=1)
-
- # Run the program.
- self.runCmd("run", RUN_SUCCEEDED)
-
- # Get the target process
- target = self.dbg.GetSelectedTarget()
- process = target.GetProcess()
-
- thread = lldbutil.get_stopped_thread(
- process, lldb.eStopReasonBreakpoint)
- self.assertIsNotNone(thread)
-
- # Remove the breakpoint to avoid the single-step-over-bkpt dance in the
- # "continue" below
- self.assertTrue(target.BreakpointDelete(bpno))
-
- # Continue, the inferior will go into an infinite loop waiting for
- # 'g_test' to change.
- self.dbg.SetAsync(True)
- self.runCmd("continue")
- self.wait_for_running_event(process)
-
- # Go back to synchronous interactions
- self.dbg.SetAsync(False)
-
- # Stop the process
- self.runCmd("process interrupt")
-
- self.assertEqual(thread.GetStopReason(), lldb.eStopReasonSignal)
-
- # Get the inferior out of its loop
- self.runCmd("expression g_test = 1")
-
- # Run to completion
- self.runCmd("continue")
-
- def thread_states_test(self):
- """Test thread states (comprehensive)."""
- exe = self.getBuildArtifact("a.out")
- self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
-
- # This should create a breakpoint in the main thread.
- lldbutil.run_break_set_by_file_and_line(
- self, "main.cpp", self.break_1, num_expected_locations=1)
- lldbutil.run_break_set_by_file_and_line(
- self, "main.cpp", self.break_2, num_expected_locations=1)
-
- # Run the program.
- self.runCmd("run", RUN_SUCCEEDED)
-
- # Get the target process
- target = self.dbg.GetSelectedTarget()
- process = target.GetProcess()
- thread = lldbutil.get_stopped_thread(
- process, lldb.eStopReasonBreakpoint)
- self.assertIsNotNone(thread)
-
- # Make sure the thread is in the stopped state.
- self.assertTrue(
- thread.IsStopped(),
- "Thread state isn't \'stopped\' during breakpoint 1.")
- self.assertFalse(thread.IsSuspended(),
- "Thread state is \'suspended\' during breakpoint 1.")
-
- # Continue, the inferior will go into an infinite loop waiting for
- # 'g_test' to change.
- self.dbg.SetAsync(True)
- self.runCmd("continue")
- self.wait_for_running_event(process)
-
- # Check the thread state. It should be running.
- self.assertFalse(
- thread.IsStopped(),
- "Thread state is \'stopped\' when it should be running.")
- self.assertFalse(
- thread.IsSuspended(),
- "Thread state is \'suspended\' when it should be running.")
-
- # Go back to synchronous interactions
- self.dbg.SetAsync(False)
-
- # Stop the process
- self.runCmd("process interrupt")
-
- self.assertEqual(thread.GetState(), lldb.eStopReasonSignal)
-
- # Check the thread state
- self.assertTrue(
- thread.IsStopped(),
- "Thread state isn't \'stopped\' after process stop.")
- self.assertFalse(thread.IsSuspended(),
- "Thread state is \'suspended\' after process stop.")
-
- # Get the inferior out of its loop
- self.runCmd("expression g_test = 1")
-
- # Check the thread state
- self.assertTrue(
- thread.IsStopped(),
- "Thread state isn't \'stopped\' after expression evaluation.")
- self.assertFalse(
- thread.IsSuspended(),
- "Thread state is \'suspended\' after expression evaluation.")
-
- self.assertEqual(thread.GetState(), lldb.eStopReasonSignal)
-
- # Run to breakpoint 2
- self.runCmd("continue")
-
- self.assertEqual(thread.GetState(), lldb.eStopReasonBreakpoint)
-
- # Make sure both threads are stopped
- self.assertTrue(
- thread.IsStopped(),
- "Thread state isn't \'stopped\' during breakpoint 2.")
- self.assertFalse(thread.IsSuspended(),
- "Thread state is \'suspended\' during breakpoint 2.")
-
- # Run to completion
- self.runCmd("continue")
-
- # At this point, the inferior process should have exited.
- self.assertEqual(process.GetState(), lldb.eStateExited, PROCESS_EXITED)