import asyncio from unittest.mock import AsyncMock, MagicMock import numpy as np import pytest from vllm_omni.entrypoints.openpi import connection as openpi_connection from vllm_omni.entrypoints.openpi.serving import PolicyServerConfig pytestmark = [pytest.mark.core_model, pytest.mark.cpu] class FakeWebSocket: def __init__(self, messages): self._messages = list(messages) self.sent_bytes = [] self.sent_texts = [] self.accepted = False self.closed = False async def accept(self): self.accepted = True async def send_bytes(self, data): self.sent_bytes.append(data) async def send_text(self, data): self.sent_texts.append(data) async def receive(self): return self._messages.pop(0) async def close(self): self.closed = True def _serving_mock(): serving = MagicMock() serving.policy_server_config = PolicyServerConfig( { "image_resolution": (180, 320), "n_external_cameras": 2, "needs_wrist_camera": True, "needs_stereo_camera": False, "needs_session_id": True, "action_space": "joint_position", } ) serving.infer = AsyncMock(return_value=[0.0]) return serving def test_pack_and_unpack_round_trip_numpy_values(): payload = { "image": np.arange(6, dtype=np.uint8).reshape(2, 3), "action": np.asarray([[1.0, 2.0]], dtype=np.float32), "scalar": np.float32(3.5), "nested": [{"done": np.bool_(True)}], } decoded = openpi_connection._unpack(openpi_connection._pack(payload)) np.testing.assert_array_equal(decoded["image"], payload["image"]) np.testing.assert_allclose(decoded["action"], payload["action"]) assert decoded["image"].dtype == np.uint8 assert decoded["action"].dtype == np.float32 assert decoded["scalar"] == np.float32(3.5) assert decoded["nested"][0]["done"] == np.bool_(True) def test_unpack_accepts_vllm_native_marker_dicts(): action = np.asarray([[1.0, 2.0]], dtype=np.float32) payload = { b"actions": { b"nd": True, b"type": action.dtype.str, b"kind": action.dtype.kind, b"shape": action.shape, b"data": action.tobytes(), } } decoded = openpi_connection._unpack_numpy(payload) np.testing.assert_allclose(decoded[b"actions"], action) assert decoded[b"actions"].flags.writeable is True decoded[b"actions"][:, -1] = 0.0 np.testing.assert_allclose(decoded[b"actions"], np.asarray([[1.0, 0.0]], dtype=np.float32)) def test_unpack_accepts_msgpack_numpy_marker_dicts(): action = np.asarray([[1.0, 2.0]], dtype=np.float32) payload = { b"actions": { b"nd": True, b"type": action.dtype.str, b"kind": b"", b"shape": action.shape, b"data": action.tobytes(), } } decoded = openpi_connection._unpack_numpy(payload) np.testing.assert_allclose(decoded[b"actions"], action) assert decoded[b"actions"].dtype == np.float32 def test_unpack_rejects_msgpack_numpy_structured_array_markers(): values = np.zeros(2, dtype=[("a", "