diff --git a/mcp_forge_cli.py b/mcp_forge_cli.py index 43a11ee..ecc5036 100755 --- a/mcp_forge_cli.py +++ b/mcp_forge_cli.py @@ -24,12 +24,12 @@ from typing import Optional sys.path.insert(0, str(Path(__file__).parent / "src")) from mcp_forge.config.loader import load_config -from mcp_forge.podman.client import PodmanClient +from pod_executor.containers.client import PodmanClient from mcp_forge.podman.containers import SecureContainerManager from mcp_forge.security.audit import AuditLogger from mcp_forge.security.allowlist import AllowlistValidator -from mcp_forge.security.resource_limits import ResourceLimits -from mcp_forge.execution.simple.backend import SimpleBackend +from pod_executor.security.resource_limits import ResourceLimits +from mcp_forge.adapters import SimpleBackend from mcp_forge.execution.jupyter.backend import JupyterBackend diff --git a/simple_test_cli.py b/simple_test_cli.py index ee28de8..aa08b6d 100755 --- a/simple_test_cli.py +++ b/simple_test_cli.py @@ -27,13 +27,13 @@ from pathlib import Path # Add src to path sys.path.insert(0, str(Path(__file__).parent / "src")) -from mcp_forge.execution.simple.executor import ExecutionResult +from pod_executor.simple.executor import ExecutionResult from mcp_forge.execution.jupyter.kernel import JupyterKernelManager -from mcp_forge.podman.client import PodmanClient +from pod_executor.containers.client import PodmanClient from mcp_forge.podman.containers import SecureContainerManager, ContainerConfig from mcp_forge.security.audit import AuditLogger from mcp_forge.security.allowlist import OperationValidator -from mcp_forge.security.resource_limits import ResourceLimits +from pod_executor.security.resource_limits import ResourceLimits import time from typing import Optional, Dict diff --git a/src/mcp_forge/execution/jupyter/backend.py b/src/mcp_forge/execution/jupyter/backend.py index d51b3ec..3c1992b 100644 --- a/src/mcp_forge/execution/jupyter/backend.py +++ b/src/mcp_forge/execution/jupyter/backend.py @@ -6,8 +6,8 @@ import hashlib from mcp_forge.config.schema import ForgeConfig from mcp_forge.podman.containers import SecureContainerManager from mcp_forge.security.audit import AuditLogger, AuditEventType, AuditSeverity -from mcp_forge.security.resource_limits import ResourceLimits, parse_memory_string -from mcp_forge.execution.simple.executor import ExecutionResult +from pod_executor.security.resource_limits import ResourceLimits, parse_memory_string +from pod_executor.simple.executor import ExecutionResult from mcp_forge.execution.jupyter.kernel import JupyterKernelManager from mcp_forge.execution.jupyter.sessions import SessionManager, SessionState, SessionError diff --git a/src/mcp_forge/execution/jupyter/kernel.py b/src/mcp_forge/execution/jupyter/kernel.py index 668f1bd..5ae9eb1 100644 --- a/src/mcp_forge/execution/jupyter/kernel.py +++ b/src/mcp_forge/execution/jupyter/kernel.py @@ -22,8 +22,8 @@ from jupyter_client.blocking.client import BlockingKernelClient import zmq from mcp_forge.podman.containers import SecureContainerManager, ContainerConfig -from mcp_forge.security.resource_limits import ResourceLimits -from mcp_forge.execution.simple.executor import ExecutionResult +from pod_executor.security.resource_limits import ResourceLimits +from pod_executor.simple.executor import ExecutionResult class KernelError(Exception): diff --git a/src/mcp_forge/execution/jupyter/sessions.py b/src/mcp_forge/execution/jupyter/sessions.py index 5b0a494..1570ef0 100644 --- a/src/mcp_forge/execution/jupyter/sessions.py +++ b/src/mcp_forge/execution/jupyter/sessions.py @@ -7,8 +7,8 @@ from datetime import datetime, timedelta from mcp_forge.execution.jupyter.kernel import JupyterKernelManager from mcp_forge.config.schema import SessionConfig from mcp_forge.security.audit import AuditLogger, AuditEventType, AuditSeverity -from mcp_forge.security.resource_limits import ResourceLimits -from mcp_forge.execution.simple.executor import ExecutionResult +from pod_executor.security.resource_limits import ResourceLimits +from pod_executor.simple.executor import ExecutionResult class SessionError(Exception): diff --git a/src/mcp_forge/podman/containers.py b/src/mcp_forge/podman/containers.py index e84f3f7..ceeb911 100644 --- a/src/mcp_forge/podman/containers.py +++ b/src/mcp_forge/podman/containers.py @@ -10,10 +10,10 @@ from typing import Optional, Dict, List from datetime import datetime, timedelta from pathlib import Path -from mcp_forge.podman.client import PodmanClient +from pod_executor.containers.client import PodmanClient from mcp_forge.security.allowlist import OperationValidator, SecurityError from mcp_forge.security.audit import AuditLogger, AuditEventType, AuditSeverity -from mcp_forge.security.resource_limits import ResourceLimits +from pod_executor.security.resource_limits import ResourceLimits class ContainerConfig: diff --git a/test_cli.py b/test_cli.py index 36efb86..fe102db 100755 --- a/test_cli.py +++ b/test_cli.py @@ -25,12 +25,12 @@ from pathlib import Path # Add src to path sys.path.insert(0, str(Path(__file__).parent / "src")) -from mcp_forge.execution.simple.executor import CodeExecutor +from pod_executor.simple.executor import CodeExecutor from mcp_forge.execution.jupyter.kernel import JupyterKernelManager -from mcp_forge.podman.client import PodmanClient +from pod_executor.containers.client import PodmanClient from mcp_forge.podman.containers import SecureContainerManager from mcp_forge.security.audit import AuditLogger -from mcp_forge.security.allowlist import OperationValidator, AllowlistManager +from mcp_forge.security.allowlist import OperationValidator class PassthroughValidator(OperationValidator): diff --git a/tests/builder/test_environment_builder.py b/tests/builder/test_environment_builder.py index 9223d80..3db39b0 100644 --- a/tests/builder/test_environment_builder.py +++ b/tests/builder/test_environment_builder.py @@ -12,7 +12,7 @@ from mcp_forge.builder.environment_builder import ( from mcp_forge.builder.package_validator import SecurityError from mcp_forge.builder.image_builder import BuildResult from mcp_forge.config.schema import EnvironmentBuilderConfig -from mcp_forge.podman.client import PodmanClient +from pod_executor.containers.client import PodmanClient from mcp_forge.security.audit import AuditLogger diff --git a/tests/builder/test_image_builder.py b/tests/builder/test_image_builder.py index 20e58ae..a2b7819 100644 --- a/tests/builder/test_image_builder.py +++ b/tests/builder/test_image_builder.py @@ -5,7 +5,7 @@ from pathlib import Path from unittest.mock import Mock from mcp_forge.builder.image_builder import ImageBuilder, BuildResult -from mcp_forge.podman.client import PodmanClient +from pod_executor.containers.client import PodmanClient from mcp_forge.config.schema import EnvironmentBuilderConfig from mcp_forge.security.audit import AuditLogger diff --git a/tests/execution/jupyter/test_backend.py b/tests/execution/jupyter/test_backend.py index 7e8bc6d..4814b87 100644 --- a/tests/execution/jupyter/test_backend.py +++ b/tests/execution/jupyter/test_backend.py @@ -6,11 +6,11 @@ from pathlib import Path from mcp_forge.execution.jupyter.backend import JupyterBackend from mcp_forge.execution.jupyter.sessions import SessionManager, Session, SessionState -from mcp_forge.execution.simple.executor import ExecutionResult +from pod_executor.simple.executor import ExecutionResult from mcp_forge.config.schema import ForgeConfig, ExecutionConfig, ImageConfig, SessionConfig from mcp_forge.podman.containers import SecureContainerManager from mcp_forge.security.audit import AuditLogger -from mcp_forge.security.resource_limits import ResourceLimits +from pod_executor.security.resource_limits import ResourceLimits @pytest.fixture diff --git a/tests/execution/jupyter/test_kernel.py b/tests/execution/jupyter/test_kernel.py index 09871a2..5f564a2 100644 --- a/tests/execution/jupyter/test_kernel.py +++ b/tests/execution/jupyter/test_kernel.py @@ -11,8 +11,8 @@ from mcp_forge.execution.jupyter.kernel import ( KernelError ) from mcp_forge.podman.containers import SecureContainerManager -from mcp_forge.security.resource_limits import ResourceLimits -from mcp_forge.execution.simple.executor import ExecutionResult +from pod_executor.security.resource_limits import ResourceLimits +from pod_executor.simple.executor import ExecutionResult @pytest.fixture diff --git a/tests/execution/jupyter/test_sessions.py b/tests/execution/jupyter/test_sessions.py index 23e674c..7107b33 100644 --- a/tests/execution/jupyter/test_sessions.py +++ b/tests/execution/jupyter/test_sessions.py @@ -14,8 +14,8 @@ from mcp_forge.execution.jupyter.sessions import ( from mcp_forge.execution.jupyter.kernel import JupyterKernelManager from mcp_forge.config.schema import SessionConfig from mcp_forge.security.audit import AuditLogger -from mcp_forge.security.resource_limits import ResourceLimits -from mcp_forge.execution.simple.executor import ExecutionResult +from pod_executor.security.resource_limits import ResourceLimits +from pod_executor.simple.executor import ExecutionResult @pytest.fixture diff --git a/tests/execution/simple/test_backend.py b/tests/execution/simple/test_backend.py index 19fc74c..21ab40d 100644 --- a/tests/execution/simple/test_backend.py +++ b/tests/execution/simple/test_backend.py @@ -4,12 +4,12 @@ import pytest from unittest.mock import Mock, MagicMock, patch from pathlib import Path -from mcp_forge.execution.simple.backend import SimpleBackend -from mcp_forge.execution.simple.executor import ExecutionResult +from mcp_forge.adapters import SimpleBackend +from pod_executor.simple.executor import ExecutionResult from mcp_forge.config.schema import ForgeConfig, ExecutionConfig, ImageConfig from mcp_forge.podman.containers import SecureContainerManager from mcp_forge.security.audit import AuditLogger -from mcp_forge.security.resource_limits import ResourceLimits +from pod_executor.security.resource_limits import ResourceLimits @pytest.fixture diff --git a/tests/execution/simple/test_executor.py b/tests/execution/simple/test_executor.py index 5908cee..c3602a9 100644 --- a/tests/execution/simple/test_executor.py +++ b/tests/execution/simple/test_executor.py @@ -4,9 +4,9 @@ import pytest from unittest.mock import Mock import json -from mcp_forge.execution.simple.executor import CodeExecutor, ExecutionResult +from pod_executor.simple.executor import CodeExecutor, ExecutionResult from mcp_forge.podman.containers import SecureContainerManager -from mcp_forge.security.resource_limits import ResourceLimits +from pod_executor.security.resource_limits import ResourceLimits @pytest.fixture diff --git a/tests/podman/test_containers.py b/tests/podman/test_containers.py index b2d6d1c..7ce9a3d 100644 --- a/tests/podman/test_containers.py +++ b/tests/podman/test_containers.py @@ -15,10 +15,10 @@ from pathlib import Path def test_create_container_with_valid_params_succeeds(): """Test that container creation with valid params succeeds.""" from mcp_forge.podman.containers import ContainerConfig, SecureContainerManager - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.allowlist import OperationValidator from mcp_forge.security.audit import AuditLogger, AuditEventType - from mcp_forge.security.resource_limits import ResourceLimits + from pod_executor.security.resource_limits import ResourceLimits from mcp_forge.config.schema import SecurityConfig # Setup mocks @@ -51,7 +51,7 @@ def test_create_container_with_valid_params_succeeds(): def test_create_container_with_forbidden_params_raises_security_error(): """Test that forbidden parameters raise SecurityError.""" from mcp_forge.podman.containers import ContainerConfig, SecureContainerManager - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.allowlist import OperationValidator, SecurityError from mcp_forge.security.audit import AuditLogger from mcp_forge.config.schema import SecurityConfig @@ -80,7 +80,7 @@ def test_create_container_with_forbidden_params_raises_security_error(): def test_create_container_with_invalid_image_raises_security_error(): """Test that invalid/disallowed images raise SecurityError.""" from mcp_forge.podman.containers import ContainerConfig, SecureContainerManager - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.allowlist import OperationValidator, SecurityError from mcp_forge.security.audit import AuditLogger from mcp_forge.config.schema import SecurityConfig @@ -126,7 +126,7 @@ def test_create_container_enforces_required_parameters(): def test_resource_limits_are_applied_correctly(): """Test that resource limits are correctly applied.""" from mcp_forge.podman.containers import ContainerConfig - from mcp_forge.security.resource_limits import ResourceLimits + from pod_executor.security.resource_limits import ResourceLimits limits = ResourceLimits( memory="1g", @@ -149,7 +149,7 @@ def test_resource_limits_are_applied_correctly(): def test_volume_mounts_are_validated(): """Test that volume mounts are validated against allowlist.""" from mcp_forge.podman.containers import ContainerConfig, SecureContainerManager - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.allowlist import OperationValidator, SecurityError from mcp_forge.security.audit import AuditLogger from mcp_forge.config.schema import SecurityConfig @@ -190,7 +190,7 @@ def test_volume_mounts_are_validated(): def test_start_container_on_session_container_succeeds(): """Test that starting a session container succeeds.""" from mcp_forge.podman.containers import SecureContainerManager - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.allowlist import OperationValidator from mcp_forge.security.audit import AuditLogger from mcp_forge.config.schema import SecurityConfig @@ -218,7 +218,7 @@ def test_start_container_on_session_container_succeeds(): def test_start_container_on_non_session_container_raises_security_error(): """Test that starting a non-session container raises SecurityError.""" from mcp_forge.podman.containers import SecureContainerManager - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.allowlist import OperationValidator, SecurityError from mcp_forge.security.audit import AuditLogger from mcp_forge.config.schema import SecurityConfig @@ -241,7 +241,7 @@ def test_start_container_on_non_session_container_raises_security_error(): def test_stop_container_works(): """Test that stopping a container works.""" from mcp_forge.podman.containers import SecureContainerManager - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.allowlist import OperationValidator from mcp_forge.security.audit import AuditLogger from mcp_forge.config.schema import SecurityConfig @@ -269,7 +269,7 @@ def test_stop_container_works(): def test_remove_container_works(): """Test that removing a container works.""" from mcp_forge.podman.containers import SecureContainerManager - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.allowlist import OperationValidator from mcp_forge.security.audit import AuditLogger from mcp_forge.config.schema import SecurityConfig @@ -297,7 +297,7 @@ def test_remove_container_works(): def test_cleanup_old_containers(): """Test cleanup of old containers.""" from mcp_forge.podman.containers import SecureContainerManager - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.allowlist import OperationValidator from mcp_forge.security.audit import AuditLogger from mcp_forge.config.schema import SecurityConfig @@ -340,7 +340,7 @@ def test_cleanup_old_containers(): def test_get_container_logs(): """Test getting container logs.""" from mcp_forge.podman.containers import SecureContainerManager - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.allowlist import OperationValidator from mcp_forge.security.audit import AuditLogger from mcp_forge.config.schema import SecurityConfig @@ -371,7 +371,7 @@ def test_get_container_logs(): def test_wait_for_container(): """Test waiting for container to exit.""" from mcp_forge.podman.containers import SecureContainerManager - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.allowlist import OperationValidator from mcp_forge.security.audit import AuditLogger from mcp_forge.config.schema import SecurityConfig @@ -402,7 +402,7 @@ def test_wait_for_container(): def test_container_config_to_podman_params_includes_all_security_settings(): """Test that ContainerConfig.to_podman_params includes all required settings.""" from mcp_forge.podman.containers import ContainerConfig - from mcp_forge.security.resource_limits import ResourceLimits + from pod_executor.security.resource_limits import ResourceLimits config = ContainerConfig( image="mcp-forge/python:3.11", diff --git a/tests/podman/test_podman_client.py b/tests/podman/test_podman_client.py index fc485ad..1e57d69 100644 --- a/tests/podman/test_podman_client.py +++ b/tests/podman/test_podman_client.py @@ -13,7 +13,7 @@ from unittest.mock import Mock, MagicMock, patch def test_connection_to_podman_socket_succeeds(tmp_path): """Test that connection to Podman socket succeeds.""" - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.audit import AuditLogger from mcp_forge.security.allowlist import OperationValidator from mcp_forge.config.schema import SecurityConfig @@ -42,7 +42,7 @@ def test_connection_to_podman_socket_succeeds(tmp_path): def test_connection_failure_raises_clear_error(tmp_path): """Test that connection failure raises clear error.""" - from mcp_forge.podman.client import PodmanClient, PodmanConnectionError + from pod_executor.containers.client import PodmanClient, PodmanConnectionError from mcp_forge.security.audit import AuditLogger from mcp_forge.security.allowlist import OperationValidator from mcp_forge.config.schema import SecurityConfig @@ -66,7 +66,7 @@ def test_connection_failure_raises_clear_error(tmp_path): def test_socket_path_validation(tmp_path): """Test that socket path is validated before connecting.""" - from mcp_forge.podman.client import PodmanClient, PodmanConnectionError + from pod_executor.containers.client import PodmanClient, PodmanConnectionError from mcp_forge.security.audit import AuditLogger from mcp_forge.security.allowlist import OperationValidator from mcp_forge.config.schema import SecurityConfig @@ -89,7 +89,7 @@ def test_socket_path_validation(tmp_path): def test_socket_permissions_check(tmp_path): """Test that socket permissions are checked.""" - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.audit import AuditLogger from mcp_forge.security.allowlist import OperationValidator from mcp_forge.config.schema import SecurityConfig @@ -120,7 +120,7 @@ def test_socket_permissions_check(tmp_path): def test_api_version_compatibility_check(tmp_path): """Test that API version is checked.""" - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.audit import AuditLogger from mcp_forge.security.allowlist import OperationValidator from mcp_forge.config.schema import SecurityConfig @@ -154,7 +154,7 @@ def test_api_version_compatibility_check(tmp_path): def test_ping_health_check(tmp_path): """Test that ping/health check works.""" - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.audit import AuditLogger from mcp_forge.security.allowlist import OperationValidator from mcp_forge.config.schema import SecurityConfig @@ -184,7 +184,7 @@ def test_ping_health_check(tmp_path): def test_lazy_connection(tmp_path): """Test that connection is lazy (only connects when needed).""" - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.audit import AuditLogger from mcp_forge.security.allowlist import OperationValidator from mcp_forge.config.schema import SecurityConfig @@ -215,7 +215,7 @@ def test_lazy_connection(tmp_path): def test_disconnect_cleanup(tmp_path): """Test that disconnect cleans up properly.""" - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.audit import AuditLogger from mcp_forge.security.allowlist import OperationValidator from mcp_forge.config.schema import SecurityConfig @@ -246,7 +246,7 @@ def test_disconnect_cleanup(tmp_path): def test_connection_error_includes_socket_path(tmp_path): """Test that connection errors include the socket path for debugging.""" - from mcp_forge.podman.client import PodmanClient, PodmanConnectionError + from pod_executor.containers.client import PodmanClient, PodmanConnectionError from mcp_forge.security.audit import AuditLogger from mcp_forge.security.allowlist import OperationValidator from mcp_forge.config.schema import SecurityConfig @@ -270,7 +270,7 @@ def test_connection_error_includes_socket_path(tmp_path): def test_client_property_auto_connects(tmp_path): """Test that accessing client property auto-connects if not connected.""" - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.audit import AuditLogger from mcp_forge.security.allowlist import OperationValidator from mcp_forge.config.schema import SecurityConfig @@ -304,7 +304,7 @@ def test_client_property_auto_connects(tmp_path): def test_validator_and_audit_logger_stored(tmp_path): """Test that validator and audit logger are stored for later use.""" - from mcp_forge.podman.client import PodmanClient + from pod_executor.containers.client import PodmanClient from mcp_forge.security.audit import AuditLogger from mcp_forge.security.allowlist import OperationValidator from mcp_forge.config.schema import SecurityConfig diff --git a/tests/security/test_resource_limits.py b/tests/security/test_resource_limits.py index 5b65fbb..6927282 100644 --- a/tests/security/test_resource_limits.py +++ b/tests/security/test_resource_limits.py @@ -10,7 +10,7 @@ import pytest def test_parse_memory_string_megabytes(): """Test parsing memory string with megabytes suffix.""" - from mcp_forge.security.resource_limits import parse_memory_string + from pod_executor.security.resource_limits import parse_memory_string result = parse_memory_string("512m") assert result == 536870912 # 512 * 1024 * 1024 @@ -18,7 +18,7 @@ def test_parse_memory_string_megabytes(): def test_parse_memory_string_gigabytes(): """Test parsing memory string with gigabytes suffix.""" - from mcp_forge.security.resource_limits import parse_memory_string + from pod_executor.security.resource_limits import parse_memory_string result = parse_memory_string("2g") assert result == 2147483648 # 2 * 1024 * 1024 * 1024 @@ -26,7 +26,7 @@ def test_parse_memory_string_gigabytes(): def test_parse_memory_string_kilobytes(): """Test parsing memory string with kilobytes suffix.""" - from mcp_forge.security.resource_limits import parse_memory_string + from pod_executor.security.resource_limits import parse_memory_string result = parse_memory_string("1024k") assert result == 1048576 # 1024 * 1024 @@ -34,7 +34,7 @@ def test_parse_memory_string_kilobytes(): def test_parse_memory_string_case_insensitive(): """Test that memory string parsing is case-insensitive.""" - from mcp_forge.security.resource_limits import parse_memory_string + from pod_executor.security.resource_limits import parse_memory_string assert parse_memory_string("512M") == 536870912 assert parse_memory_string("2G") == 2147483648 @@ -43,7 +43,7 @@ def test_parse_memory_string_case_insensitive(): def test_parse_memory_string_invalid_format_raises_value_error(): """Test that invalid format raises ValueError.""" - from mcp_forge.security.resource_limits import parse_memory_string + from pod_executor.security.resource_limits import parse_memory_string with pytest.raises(ValueError) as exc_info: parse_memory_string("invalid") @@ -58,7 +58,7 @@ def test_parse_memory_string_invalid_format_raises_value_error(): def test_parse_memory_string_negative_value_raises_value_error(): """Test that negative values raise ValueError.""" - from mcp_forge.security.resource_limits import parse_memory_string + from pod_executor.security.resource_limits import parse_memory_string with pytest.raises(ValueError) as exc_info: parse_memory_string("-512m") @@ -67,7 +67,7 @@ def test_parse_memory_string_negative_value_raises_value_error(): def test_parse_memory_string_zero_value_raises_value_error(): """Test that zero value raises ValueError.""" - from mcp_forge.security.resource_limits import parse_memory_string + from pod_executor.security.resource_limits import parse_memory_string with pytest.raises(ValueError) as exc_info: parse_memory_string("0m") @@ -76,7 +76,7 @@ def test_parse_memory_string_zero_value_raises_value_error(): def test_parse_cpu_quota_valid_value(): """Test that valid CPU quota values are accepted.""" - from mcp_forge.security.resource_limits import parse_cpu_quota + from pod_executor.security.resource_limits import parse_cpu_quota result = parse_cpu_quota(50000) assert result == 50000 @@ -87,7 +87,7 @@ def test_parse_cpu_quota_valid_value(): def test_parse_cpu_quota_max_limit(): """Test that CPU quota has a reasonable maximum (10 cores).""" - from mcp_forge.security.resource_limits import parse_cpu_quota + from pod_executor.security.resource_limits import parse_cpu_quota # Should accept up to 1000000 (10 cores) result = parse_cpu_quota(1000000) @@ -101,7 +101,7 @@ def test_parse_cpu_quota_max_limit(): def test_parse_cpu_quota_negative_raises_value_error(): """Test that negative CPU quota raises ValueError.""" - from mcp_forge.security.resource_limits import parse_cpu_quota + from pod_executor.security.resource_limits import parse_cpu_quota with pytest.raises(ValueError) as exc_info: parse_cpu_quota(-1) @@ -110,7 +110,7 @@ def test_parse_cpu_quota_negative_raises_value_error(): def test_parse_cpu_quota_zero_raises_value_error(): """Test that zero CPU quota raises ValueError.""" - from mcp_forge.security.resource_limits import parse_cpu_quota + from pod_executor.security.resource_limits import parse_cpu_quota with pytest.raises(ValueError) as exc_info: parse_cpu_quota(0) @@ -119,7 +119,7 @@ def test_parse_cpu_quota_zero_raises_value_error(): def test_parse_storage_string_same_as_memory(): """Test that storage parsing works the same as memory parsing.""" - from mcp_forge.security.resource_limits import parse_storage_string + from pod_executor.security.resource_limits import parse_storage_string assert parse_storage_string("1g") == 1073741824 assert parse_storage_string("512m") == 536870912 @@ -128,7 +128,7 @@ def test_parse_storage_string_same_as_memory(): def test_resource_limits_class_initialization(): """Test ResourceLimits class initializes correctly.""" - from mcp_forge.security.resource_limits import ResourceLimits + from pod_executor.security.resource_limits import ResourceLimits limits = ResourceLimits( memory="512m", @@ -145,7 +145,7 @@ def test_resource_limits_class_initialization(): def test_resource_limits_validates_memory(): """Test that ResourceLimits validates memory string.""" - from mcp_forge.security.resource_limits import ResourceLimits + from pod_executor.security.resource_limits import ResourceLimits with pytest.raises(ValueError): ResourceLimits( @@ -158,7 +158,7 @@ def test_resource_limits_validates_memory(): def test_resource_limits_validates_storage(): """Test that ResourceLimits validates storage string.""" - from mcp_forge.security.resource_limits import ResourceLimits + from pod_executor.security.resource_limits import ResourceLimits with pytest.raises(ValueError): ResourceLimits( @@ -171,7 +171,7 @@ def test_resource_limits_validates_storage(): def test_resource_limits_validates_cpu_quota(): """Test that ResourceLimits validates CPU quota.""" - from mcp_forge.security.resource_limits import ResourceLimits + from pod_executor.security.resource_limits import ResourceLimits with pytest.raises(ValueError): ResourceLimits( @@ -184,7 +184,7 @@ def test_resource_limits_validates_cpu_quota(): def test_resource_limits_to_podman_params(): """Test conversion to Podman container parameters.""" - from mcp_forge.security.resource_limits import ResourceLimits + from pod_executor.security.resource_limits import ResourceLimits limits = ResourceLimits( memory="512m", @@ -205,7 +205,7 @@ def test_resource_limits_to_podman_params(): def test_resource_limits_default_timeout(): """Test that ResourceLimits has a default timeout.""" - from mcp_forge.security.resource_limits import ResourceLimits + from pod_executor.security.resource_limits import ResourceLimits limits = ResourceLimits( memory="512m", @@ -218,7 +218,7 @@ def test_resource_limits_default_timeout(): def test_parse_memory_string_with_spaces(): """Test parsing memory strings that have spaces.""" - from mcp_forge.security.resource_limits import parse_memory_string + from pod_executor.security.resource_limits import parse_memory_string # Should handle spaces gracefully (strip them) result = parse_memory_string(" 512m ") @@ -227,7 +227,7 @@ def test_parse_memory_string_with_spaces(): def test_parse_memory_string_bytes_suffix(): """Test parsing memory string with bytes suffix (no multiplier).""" - from mcp_forge.security.resource_limits import parse_memory_string + from pod_executor.security.resource_limits import parse_memory_string # Just a number (bytes) - should this be supported? # Based on architecture, we support k, m, g suffixes @@ -238,7 +238,7 @@ def test_parse_memory_string_bytes_suffix(): def test_resource_limits_storage_quota_in_podman_params(): """Test that storage limits are included in Podman params.""" - from mcp_forge.security.resource_limits import ResourceLimits + from pod_executor.security.resource_limits import ResourceLimits limits = ResourceLimits( memory="512m", @@ -256,7 +256,7 @@ def test_resource_limits_storage_quota_in_podman_params(): def test_cpu_quota_explanation(): """Test that CPU quota values have clear meaning.""" - from mcp_forge.security.resource_limits import parse_cpu_quota + from pod_executor.security.resource_limits import parse_cpu_quota # 100000 = 100% of one CPU core # 50000 = 50% of one CPU core @@ -269,7 +269,7 @@ def test_cpu_quota_explanation(): def test_parse_memory_with_decimal(): """Test parsing memory strings with decimal values.""" - from mcp_forge.security.resource_limits import parse_memory_string + from pod_executor.security.resource_limits import parse_memory_string # Should handle decimals result = parse_memory_string("1.5g") diff --git a/tests/server/tools/test_execute_python.py b/tests/server/tools/test_execute_python.py index bb796db..09229ba 100644 --- a/tests/server/tools/test_execute_python.py +++ b/tests/server/tools/test_execute_python.py @@ -6,7 +6,7 @@ from mcp.types import Tool, TextContent import json from mcp_forge.server.tools.execute_python import ExecutePythonTool -from mcp_forge.execution.simple.backend import ExecutionResult +from pod_executor.simple.executor import ExecutionResult @pytest.fixture diff --git a/test_containers.py b/verify_containers.py similarity index 100% rename from test_containers.py rename to verify_containers.py