1import lldb 2from lldbsuite.test.lldbtest import * 3from lldbsuite.test.decorators import * 4from lldbsuite.test.gdbclientutils import * 5from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase 6 7 8class TestPlatformListProcesses(GDBRemoteTestBase): 9 @skipIfRemote 10 @skipIfWindows 11 def test_get_all_processes(self): 12 """Test listing processes""" 13 14 class MyPlatformResponder(MockGDBServerResponder): 15 def __init__(self): 16 MockGDBServerResponder.__init__(self) 17 self.done = False 18 19 def qfProcessInfo(self, packet): 20 return "pid:95117;name:666f6f;" 21 22 def qsProcessInfo(self): 23 if not self.done: 24 self.done = True 25 return "pid:95126;name:666f6f;" 26 return "E10" 27 28 self.server.responder = MyPlatformResponder() 29 30 error = lldb.SBError() 31 platform = lldb.SBPlatform("remote-linux") 32 self.dbg.SetSelectedPlatform(platform) 33 34 error = platform.ConnectRemote( 35 lldb.SBPlatformConnectOptions(self.server.get_connect_url()) 36 ) 37 self.assertSuccess(error) 38 self.assertTrue(platform.IsConnected()) 39 40 processes = platform.GetAllProcesses(error) 41 self.assertSuccess(error) 42 self.assertEqual(processes.GetSize(), 2) 43 self.assertEqual(len(processes), 2) 44 45 process_info = lldb.SBProcessInfo() 46 processes.GetProcessInfoAtIndex(0, process_info) 47 self.assertEqual(process_info.GetProcessID(), 95117) 48 self.assertEqual(process_info.GetName(), "foo") 49 50 processes.GetProcessInfoAtIndex(1, process_info) 51 self.assertEqual(process_info.GetProcessID(), 95126) 52 self.assertEqual(process_info.GetName(), "foo") 53 54 platform.DisconnectRemote() 55