summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/packages/Python/lldbsuite')
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestPlatformClient.py39
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/gdbclientutils.py32
2 files changed, 69 insertions, 2 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestPlatformClient.py b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestPlatformClient.py
new file mode 100644
index 00000000000..b0c80b5438b
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestPlatformClient.py
@@ -0,0 +1,39 @@
+import lldb
+import binascii
+import os
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test.decorators import *
+from gdbclientutils import *
+
+
+class TestPlatformClient(GDBRemoteTestBase):
+
+ def test_process_list_with_all_users(self):
+ """Test connecting to a remote linux platform"""
+
+ class MyResponder(MockGDBServerResponder):
+ def qfProcessInfo(self, packet):
+ if "all_users:1" in packet:
+ return "pid:10;ppid:1;uid:1;gid:1;euid:1;egid:1;name:" + binascii.hexlify("/a/test_process").decode() + ";"
+ else:
+ return "E04"
+
+ self.server.responder = MyResponder()
+
+ self.runCmd("log enable gdb-remote all")
+ self.runCmd("platform select remote-linux")
+
+ try:
+ url = "connect://localhost:%d" % self.server.port
+
+ # self.gdb.GetSelectedPlatform().ConnectRemote(lldb.SBPlatformConnectOptions(url))
+ self.runCmd("platform connect connect://localhost:%d" %
+ self.server.port)
+ self.assertTrue(self.dbg.GetSelectedPlatform().IsConnected())
+ self.expect("platform process list -x",
+ substrs=["1 matching process was found", "test_process"])
+ self.expect("platform process list",
+ error=True,
+ substrs=["error: no processes were found on the \"remote-linux\" platform"])
+ finally:
+ self.dbg.GetSelectedPlatform().DisconnectRemote()
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/gdbclientutils.py b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/gdbclientutils.py
index 621279a0a99..8237d1e0712 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/gdbclientutils.py
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/gdbclientutils.py
@@ -3,6 +3,8 @@ import os.path
import threading
import socket
import lldb
+import binascii
+import traceback
from lldbsuite.support import seven
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbtest_config
@@ -160,9 +162,34 @@ class MockGDBServerResponder:
return self.QListThreadsInStopReply()
if packet.startswith("qMemoryRegionInfo:"):
return self.qMemoryRegionInfo()
+ if packet == "qQueryGDBServer":
+ return self.qQueryGDBServer()
+ if packet == "qHostInfo":
+ return self.qHostInfo()
+ if packet == "qGetWorkingDir":
+ return self.qGetWorkingDir()
+ if packet == "qsProcessInfo":
+ return self.qsProcessInfo()
+ if packet.startswith("qfProcessInfo"):
+ return self.qfProcessInfo(packet)
return self.other(packet)
+ def qsProcessInfo(self):
+ return "E04"
+
+ def qfProcessInfo(self, packet):
+ return "E04"
+
+ def qGetWorkingDir(self):
+ return "2f"
+
+ def qHostInfo(self):
+ return "ptrsize:8;endian:little;"
+
+ def qQueryGDBServer(self):
+ return "E04"
+
def interrupt(self):
raise self.UnexpectedPacketException()
@@ -171,7 +198,7 @@ class MockGDBServerResponder:
def vCont(self, packet):
raise self.UnexpectedPacketException()
-
+
def readRegisters(self):
return "00000000" * self.registerCount
@@ -315,6 +342,8 @@ class MockGDBServer:
break
self._receive(data)
except Exception as e:
+ print("An exception happened when receiving the response from the gdb server. Closing the client...")
+ traceback.print_exc()
self._client.close()
break
@@ -425,7 +454,6 @@ class MockGDBServer:
class InvalidPacketException(Exception):
pass
-
class GDBRemoteTestBase(TestBase):
"""
Base class for GDB client tests.
OpenPOWER on IntegriCloud