summaryrefslogtreecommitdiff
path: root/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py')
-rw-r--r--lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py54
1 files changed, 53 insertions, 1 deletions
diff --git a/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py b/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
index a5da07027aaf..5cf49ab37791 100644
--- a/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
+++ b/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
@@ -11,7 +11,7 @@ from lldbsuite.test import lldbutil
from lldbsuite.test import lldbtest
-class PlatformProcessCrashInfoTestCase(TestBase):
+class ScriptedProcesTestCase(TestBase):
mydir = TestBase.compute_mydir(__file__)
@@ -43,3 +43,55 @@ class PlatformProcessCrashInfoTestCase(TestBase):
self.expect('script dir(ScriptedProcess)',
substrs=["launch"])
+ def test_launch_scripted_process_sbapi(self):
+ """Test that we can launch an lldb scripted process using the SBAPI,
+ check its process ID and read string from memory."""
+ self.build()
+ target = self.dbg.CreateTarget(self.getBuildArtifact("a.out"))
+ self.assertTrue(target, VALID_TARGET)
+
+ scripted_process_example_relpath = ['..','..','..','..','examples','python','scripted_process','my_scripted_process.py']
+ os.environ['SKIP_SCRIPTED_PROCESS_LAUNCH'] = '1'
+ self.runCmd("command script import " + os.path.join(self.getSourceDir(),
+ *scripted_process_example_relpath))
+
+ launch_info = lldb.SBLaunchInfo(None)
+ launch_info.SetProcessPluginName("ScriptedProcess")
+ launch_info.SetScriptedProcessClassName("my_scripted_process.MyScriptedProcess")
+
+ error = lldb.SBError()
+ process = target.Launch(launch_info, error)
+ self.assertTrue(process and process.IsValid(), PROCESS_IS_VALID)
+ self.assertEqual(process.GetProcessID(), 42)
+
+ hello_world = "Hello, world!"
+ memory_read = process.ReadCStringFromMemory(0x50000000000,
+ len(hello_world) + 1, # NULL byte
+ error)
+
+ self.assertTrue(error.Success(), "Failed to read memory from scripted process.")
+ self.assertEqual(hello_world, memory_read)
+
+ def test_launch_scripted_process_cli(self):
+ """Test that we can launch an lldb scripted process from the command
+ line, check its process ID and read string from memory."""
+ self.build()
+ target = self.dbg.CreateTarget(self.getBuildArtifact("a.out"))
+ self.assertTrue(target, VALID_TARGET)
+
+ scripted_process_example_relpath = ['..','..','..','..','examples','python','scripted_process','my_scripted_process.py']
+ self.runCmd("command script import " + os.path.join(self.getSourceDir(),
+ *scripted_process_example_relpath))
+
+ process = target.GetProcess()
+ self.assertTrue(process, PROCESS_IS_VALID)
+ self.assertEqual(process.GetProcessID(), 42)
+
+ error = lldb.SBError()
+ hello_world = "Hello, world!"
+ memory_read = process.ReadCStringFromMemory(0x50000000000,
+ len(hello_world) + 1, # NULL byte
+ error)
+
+ self.assertTrue(error.Success(), "Failed to read memory from scripted process.")
+ self.assertEqual(hello_world, memory_read)