diff options
Diffstat (limited to 'lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py')
| -rw-r--r-- | lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py | 54 |
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) |
