- Change file mode from 644 to 755 for all project files - Add chain_id parameter to get_balance RPC endpoint with default "ait-devnet" - Rename Miner.extra_meta_data to extra_metadata for consistency
48 lines
1.6 KiB
Python
Executable File
48 lines
1.6 KiB
Python
Executable File
import pytest
|
|
import websockets
|
|
import asyncio
|
|
import json
|
|
|
|
WS_URL = "ws://127.0.0.1:8000/v1/multi-modal-rl/fusion"
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_websocket_fusion_stream():
|
|
# First get a valid fusion model via REST (mocking it for the test)
|
|
import httpx
|
|
async with httpx.AsyncClient() as client:
|
|
res = await client.post(
|
|
"http://127.0.0.1:8000/v1/multi-modal-rl/fusion/models",
|
|
json={
|
|
"model_name": "StreamAnalyzer",
|
|
"version": "1.0.0",
|
|
"fusion_type": "cross_domain",
|
|
"base_models": ["gemma3:1b"],
|
|
"input_modalities": ["text"],
|
|
"fusion_strategy": "ensemble_fusion"
|
|
}
|
|
)
|
|
data = res.json()
|
|
fusion_id = data.get("fusion_id", data.get("id"))
|
|
|
|
uri = f"{WS_URL}/{fusion_id}/stream"
|
|
try:
|
|
async with websockets.connect(uri) as websocket:
|
|
# Send test payload
|
|
payload = {
|
|
"text": "Streaming test data",
|
|
"structured_data": {"test": True}
|
|
}
|
|
await websocket.send(json.dumps(payload))
|
|
|
|
# Receive response
|
|
response_str = await websocket.recv()
|
|
response = json.loads(response_str)
|
|
|
|
assert "combined_result" in response
|
|
assert "metadata" in response
|
|
assert response["metadata"]["protocol"] == "websocket"
|
|
assert response["metadata"]["processing_time"] > 0
|
|
except Exception as e:
|
|
pytest.fail(f"WebSocket test failed: {e}")
|
|
|