| import os | |
| import tempfile | |
| import unittest | |
| from lldbsuite.test.decorators import * | |
| from lldbsuite.test.lldbtest import * | |
| # To be safe and portable, Unix domain socket paths should be kept at or below | |
| # 108 characters on Linux, and around 104 characters on macOS: | |
| MAX_SOCKET_PATH_LENGTH = 104 | |
| class MCPUnixSocketCommandTestCase(TestBase): | |
| @skipIfWindows | |
| @skipIfRemote | |
| @no_debug_info_test | |
| def test_unix_socket(self): | |
| """ | |
| Test if we can start an MCP protocol-server accepting unix sockets | |
| """ | |
| temp_directory = tempfile.TemporaryDirectory() | |
| socket_file = os.path.join(temp_directory.name, "mcp.sock") | |
| if len(socket_file) >= MAX_SOCKET_PATH_LENGTH: | |
| self.skipTest( | |
| f"Socket path {socket_file} exceeds the {MAX_SOCKET_PATH_LENGTH} character limit" | |
| ) | |
| self.expect( | |
| f"protocol-server start MCP accept://{socket_file}", | |
| startstr="MCP server started with connection listeners:", | |
| substrs=[f"unix-connect://{socket_file}"], | |
| ) | |
| self.expect( | |
| "protocol-server get MCP", | |
| startstr="MCP server connection listeners:", | |
| substrs=[f"unix-connect://{socket_file}"], | |
| ) | |
| self.runCmd("protocol-server stop MCP", check=False) | |
| self.expect( | |
| "protocol-server get MCP", | |
| error=True, | |
| substrs=["MCP server is not running"], | |
| ) |