mirror of
https://github.com/langgenius/dify.git
synced 2026-05-02 16:38:04 +08:00
refactor(sandbox): sandbox provider system default configuration
This commit is contained in:
@ -3,20 +3,20 @@ from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
|
||||
from core.sandbox import VMBuilder, VMType
|
||||
from core.sandbox import SandboxBuilder, SandboxType
|
||||
from core.virtual_environment.__base.virtual_environment import VirtualEnvironment
|
||||
|
||||
|
||||
class TestVMType:
|
||||
def test_values(self):
|
||||
assert VMType.DOCKER == "docker"
|
||||
assert VMType.E2B == "e2b"
|
||||
assert VMType.LOCAL == "local"
|
||||
assert SandboxType.DOCKER == "docker"
|
||||
assert SandboxType.E2B == "e2b"
|
||||
assert SandboxType.LOCAL == "local"
|
||||
|
||||
def test_is_string_enum(self):
|
||||
assert isinstance(VMType.DOCKER.value, str)
|
||||
assert isinstance(VMType.E2B.value, str)
|
||||
assert isinstance(VMType.LOCAL.value, str)
|
||||
assert isinstance(SandboxType.DOCKER.value, str)
|
||||
assert isinstance(SandboxType.E2B.value, str)
|
||||
assert isinstance(SandboxType.LOCAL.value, str)
|
||||
|
||||
|
||||
class TestVMBuilder:
|
||||
@ -29,7 +29,7 @@ class TestVMBuilder:
|
||||
mock_class,
|
||||
):
|
||||
result = (
|
||||
VMBuilder("test-tenant", VMType.DOCKER)
|
||||
SandboxBuilder("test-tenant", SandboxType.DOCKER)
|
||||
.options({"docker_image": "python:3.11-slim"})
|
||||
.environments({"PYTHONUNBUFFERED": "1"})
|
||||
.build()
|
||||
@ -51,7 +51,7 @@ class TestVMBuilder:
|
||||
"core.virtual_environment.providers.docker_daemon_sandbox.DockerDaemonEnvironment",
|
||||
mock_class,
|
||||
):
|
||||
VMBuilder("test-tenant", VMType.DOCKER).user("user-123").build()
|
||||
SandboxBuilder("test-tenant", SandboxType.DOCKER).user("user-123").build()
|
||||
|
||||
mock_class.assert_called_once_with(
|
||||
tenant_id="test-tenant",
|
||||
@ -69,7 +69,7 @@ class TestVMBuilder:
|
||||
"core.virtual_environment.providers.docker_daemon_sandbox.DockerDaemonEnvironment",
|
||||
mock_class,
|
||||
):
|
||||
VMBuilder("test-tenant", VMType.DOCKER).initializer(mock_initializer).build()
|
||||
SandboxBuilder("test-tenant", SandboxType.DOCKER).initializer(mock_initializer).build()
|
||||
|
||||
mock_initializer.initialize.assert_called_once_with(mock_instance)
|
||||
|
||||
@ -80,7 +80,7 @@ class TestVMBuilder:
|
||||
"core.virtual_environment.providers.local_without_isolation.LocalVirtualEnvironment",
|
||||
return_value=mock_instance,
|
||||
) as mock_class:
|
||||
VMBuilder("test-tenant", VMType.LOCAL).build()
|
||||
SandboxBuilder("test-tenant", SandboxType.LOCAL).build()
|
||||
mock_class.assert_called_once()
|
||||
|
||||
def test_build_e2b(self):
|
||||
@ -90,12 +90,12 @@ class TestVMBuilder:
|
||||
"core.virtual_environment.providers.e2b_sandbox.E2BEnvironment",
|
||||
return_value=mock_instance,
|
||||
) as mock_class:
|
||||
VMBuilder("test-tenant", VMType.E2B).build()
|
||||
SandboxBuilder("test-tenant", SandboxType.E2B).build()
|
||||
mock_class.assert_called_once()
|
||||
|
||||
def test_build_unsupported_type_raises(self):
|
||||
with pytest.raises(ValueError, match="Unsupported VM type"):
|
||||
VMBuilder("test-tenant", "unsupported").build() # type: ignore[arg-type]
|
||||
SandboxBuilder("test-tenant", "unsupported").build() # type: ignore[arg-type]
|
||||
|
||||
def test_validate(self):
|
||||
mock_class = MagicMock()
|
||||
@ -104,13 +104,13 @@ class TestVMBuilder:
|
||||
"core.virtual_environment.providers.docker_daemon_sandbox.DockerDaemonEnvironment",
|
||||
mock_class,
|
||||
):
|
||||
VMBuilder.validate(VMType.DOCKER, {"key": "value"})
|
||||
SandboxBuilder.validate(SandboxType.DOCKER, {"key": "value"})
|
||||
mock_class.validate.assert_called_once_with({"key": "value"})
|
||||
|
||||
|
||||
class TestVMBuilderIntegration:
|
||||
def test_local_sandbox(self, tmp_path: Path):
|
||||
sandbox = VMBuilder("test-tenant", VMType.LOCAL).options({"base_working_path": str(tmp_path)}).build()
|
||||
sandbox = SandboxBuilder("test-tenant", SandboxType.LOCAL).options({"base_working_path": str(tmp_path)}).build()
|
||||
|
||||
try:
|
||||
assert sandbox is not None
|
||||
|
||||
Reference in New Issue
Block a user