Author: David Spickett Date: 2026-07-03T10:27:14+01:00 New Revision: ba8e423be48d3505b89f27348faaad3e810168fa
URL: https://github.com/llvm/llvm-project/commit/ba8e423be48d3505b89f27348faaad3e810168fa DIFF: https://github.com/llvm/llvm-project/commit/ba8e423be48d3505b89f27348faaad3e810168fa.diff LOG: [lldb][test] Add a function to spawn lldb-server platforms (#205083) I will be doing this in a future test and we already have a few copies of this code in various tests. Added: Modified: lldb/packages/Python/lldbsuite/test/lldbutil.py lldb/test/API/commands/platform/connect/TestPlatformConnect.py lldb/test/API/commands/platform/launchgdbserver/TestPlatformLaunchGDBServer.py lldb/test/API/commands/target/auto-install-main-executable/TestAutoInstallMainExecutable.py Removed: ################################################################################ diff --git a/lldb/packages/Python/lldbsuite/test/lldbutil.py b/lldb/packages/Python/lldbsuite/test/lldbutil.py index 7698c709858e5..91f872bce3827 100644 --- a/lldb/packages/Python/lldbsuite/test/lldbutil.py +++ b/lldb/packages/Python/lldbsuite/test/lldbutil.py @@ -10,6 +10,7 @@ import json import os import re +import socket import sys import subprocess import time @@ -1889,3 +1890,23 @@ def send_packet_get_reply(test, packet_str): def get_qsupported_capabilities(test): reply = send_packet_get_reply(test, "qSupported") return reply.strip().split(";") + + +def connect_to_new_remote_platform(testcase, platform_exe, extra_args=[]): + hostname = socket.getaddrinfo("localhost", 0, proto=socket.IPPROTO_TCP)[0][4][0] + port_file = testcase.getBuildArtifact("port") + commandline_args = [ + "platform", + "--listen", + f"[{hostname}]:0", + "--socket-file", + port_file, + ] + extra_args + testcase.spawnSubprocess(platform_exe, commandline_args) + + socket_id = wait_for_file_on_target(testcase, port_file) + new_platform = lldb.SBPlatform("remote-" + testcase.getPlatform()) + testcase.dbg.SetSelectedPlatform(new_platform) + testcase.runCmd(f"platform connect connect://[{hostname}]:{socket_id}") + + return new_platform diff --git a/lldb/test/API/commands/platform/connect/TestPlatformConnect.py b/lldb/test/API/commands/platform/connect/TestPlatformConnect.py index 93fa5a5da45ea..15c1bff44e93b 100644 --- a/lldb/test/API/commands/platform/connect/TestPlatformConnect.py +++ b/lldb/test/API/commands/platform/connect/TestPlatformConnect.py @@ -1,4 +1,3 @@ -import socket import gdbremote_testcase import lldbgdbserverutils from lldbsuite.test.decorators import * @@ -26,29 +25,11 @@ class TestPlatformProcessConnect(TestBase): def test_platform_process_connect(self): self.build() - hostname = socket.getaddrinfo("localhost", 0, proto=socket.IPPROTO_TCP)[0][4][0] - listen_url = "[%s]:0" % hostname - - port_file = self.getBuildArtifact("port") - commandline_args = [ - "platform", - "--listen", - listen_url, - "--socket-file", - port_file, - "--", - self.getBuildArtifact("a.out"), - "foo", - ] - self.spawnSubprocess(lldbgdbserverutils.get_lldb_server_exe(), commandline_args) - - socket_id = lldbutil.wait_for_file_on_target(self, port_file) - - new_platform = lldb.SBPlatform("remote-" + self.getPlatform()) - self.dbg.SetSelectedPlatform(new_platform) - - connect_url = "connect://[%s]:%s" % (hostname, socket_id) - self.runCmd("platform connect %s" % connect_url) + lldbutil.connect_to_new_remote_platform( + self, + lldbgdbserverutils.get_lldb_server_exe(), + extra_args=["--", self.getBuildArtifact("a.out"), "foo"], + ) lldbutil.run_break_set_by_symbol(self, "main") process = self.process() diff --git a/lldb/test/API/commands/platform/launchgdbserver/TestPlatformLaunchGDBServer.py b/lldb/test/API/commands/platform/launchgdbserver/TestPlatformLaunchGDBServer.py index 5d318e8d8bd20..93f9d9a4f6948 100644 --- a/lldb/test/API/commands/platform/launchgdbserver/TestPlatformLaunchGDBServer.py +++ b/lldb/test/API/commands/platform/launchgdbserver/TestPlatformLaunchGDBServer.py @@ -1,5 +1,4 @@ import os -import socket import shutil import lldbgdbserverutils from lldbsuite.test.decorators import * @@ -13,27 +12,7 @@ class TestPlatformProcessLaunchGDBServer(TestBase): SHARED_BUILD_TESTCASE = False def _launch_and_connect(self, exe): - hostname = socket.getaddrinfo("localhost", 0, proto=socket.IPPROTO_TCP)[0][4][0] - listen_url = "[%s]:0" % hostname - - port_file = self.getBuildArtifact("port") - commandline_args = [ - "platform", - "--listen", - listen_url, - "--socket-file", - port_file, - ] - - self.spawnSubprocess(exe, commandline_args) - socket_id = lldbutil.wait_for_file_on_target(self, port_file) - - new_platform = lldb.SBPlatform("remote-" + self.getPlatform()) - self.dbg.SetSelectedPlatform(new_platform) - - connect_url = "connect://[%s]:%s" % (hostname, socket_id) - self.runCmd("platform connect %s" % connect_url) - + new_platform = lldbutil.connect_to_new_remote_platform(self, exe) wd = self.getBuildArtifact("wd") os.mkdir(wd) new_platform.SetWorkingDirectory(wd) diff --git a/lldb/test/API/commands/target/auto-install-main-executable/TestAutoInstallMainExecutable.py b/lldb/test/API/commands/target/auto-install-main-executable/TestAutoInstallMainExecutable.py index f0bb450fb65e6..72143837f711f 100644 --- a/lldb/test/API/commands/target/auto-install-main-executable/TestAutoInstallMainExecutable.py +++ b/lldb/test/API/commands/target/auto-install-main-executable/TestAutoInstallMainExecutable.py @@ -2,7 +2,6 @@ Test target commands: target.auto-install-main-executable. """ -import socket import time import lldbgdbserverutils @@ -23,27 +22,9 @@ def test_target_auto_install_main_executable(self): self.skipTest("lldb-server not found") self.build() - hostname = socket.getaddrinfo("localhost", 0, proto=socket.IPPROTO_TCP)[0][4][0] - listen_url = "[%s]:0" % hostname - - port_file = self.getBuildArtifact("port") - commandline_args = [ - "platform", - "--listen", - listen_url, - "--socket-file", - port_file, - ] - self.spawnSubprocess(lldbgdbserverutils.get_lldb_server_exe(), commandline_args) - - socket_id = lldbutil.wait_for_file_on_target(self, port_file) - - new_platform = lldb.SBPlatform("remote-" + self.getPlatform()) - self.dbg.SetSelectedPlatform(new_platform) - - connect_url = "connect://[%s]:%s" % (hostname, socket_id) - connect_opts = lldb.SBPlatformConnectOptions(connect_url) - self.assertSuccess(new_platform.ConnectRemote(connect_opts)) + new_platform = lldbutil.connect_to_new_remote_platform( + self, lldbgdbserverutils.get_lldb_server_exe() + ) wd = self.getBuildArtifact("wd") os.mkdir(wd) _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
