mirror of
https://github.com/Comfy-Org/ComfyUI.git
synced 2026-08-25 18:32:35 +08:00
test(isolation): process boundary coverage and workflows
This commit is contained in:
44
tests/isolation/test_shared_model_proxy_contract.py
Normal file
44
tests/isolation/test_shared_model_proxy_contract.py
Normal file
@@ -0,0 +1,44 @@
|
||||
import asyncio
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
repo_root = Path(__file__).resolve().parents[2]
|
||||
pyisolate_root = repo_root.parent / "pyisolate"
|
||||
if pyisolate_root.exists():
|
||||
sys.path.insert(0, str(pyisolate_root))
|
||||
|
||||
from comfy.isolation.adapter import ComfyUIAdapter
|
||||
from comfy.isolation.runtime_helpers import _wrap_remote_handles_as_host_proxies
|
||||
from pyisolate._internal.model_serialization import deserialize_from_isolation
|
||||
from pyisolate._internal.remote_handle import RemoteObjectHandle
|
||||
from pyisolate._internal.serialization_registry import SerializerRegistry
|
||||
|
||||
|
||||
def test_shared_model_ksampler_contract():
|
||||
registry = SerializerRegistry.get_instance()
|
||||
registry.clear()
|
||||
ComfyUIAdapter().register_serializers(registry)
|
||||
|
||||
handle = RemoteObjectHandle("model_0", "ModelPatcher")
|
||||
|
||||
class FakeExtension:
|
||||
async def call_remote_object_method(self, object_id, method_name, *args, **kwargs):
|
||||
assert object_id == "model_0"
|
||||
assert method_name == "get_model_object"
|
||||
assert args == ("latent_format",)
|
||||
assert kwargs == {}
|
||||
return "resolved:latent_format"
|
||||
|
||||
wrapped = (handle,)
|
||||
assert isinstance(wrapped, tuple)
|
||||
assert isinstance(wrapped[0], RemoteObjectHandle)
|
||||
|
||||
deserialized = asyncio.run(deserialize_from_isolation(wrapped))
|
||||
proxied = _wrap_remote_handles_as_host_proxies(deserialized, FakeExtension())
|
||||
model_for_host = proxied[0]
|
||||
|
||||
assert not isinstance(model_for_host, RemoteObjectHandle)
|
||||
assert hasattr(model_for_host, "get_model_object")
|
||||
assert model_for_host.get_model_object("latent_format") == "resolved:latent_format"
|
||||
|
||||
registry.clear()
|
||||
Reference in New Issue
Block a user