Refactored ZMQ context implementation #16
@@ -1,9 +1,9 @@
|
|||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
import zmq
|
||||||
from spade.agent import Agent
|
from spade.agent import Agent
|
||||||
from spade.behaviour import CyclicBehaviour
|
from spade.behaviour import CyclicBehaviour
|
||||||
import zmq
|
|
||||||
from zmq.asyncio import Context
|
from zmq.asyncio import Context
|
||||||
|
|
||||||
from control_backend.core.config import settings
|
from control_backend.core.config import settings
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
import zmq
|
||||||
from spade.agent import Agent
|
from spade.agent import Agent
|
||||||
from spade.behaviour import CyclicBehaviour
|
from spade.behaviour import CyclicBehaviour
|
||||||
import zmq
|
|
||||||
from zmq.asyncio import Context
|
from zmq.asyncio import Context
|
||||||
|
|
||||||
from control_backend.agents.ri_command_agent import RICommandAgent
|
from control_backend.agents.ri_command_agent import RICommandAgent
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ from control_backend.agents.vad_agent import VADAgent
|
|||||||
from control_backend.api.v1.router import api_router
|
from control_backend.api.v1.router import api_router
|
||||||
from control_backend.core.config import settings
|
from control_backend.core.config import settings
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
logging.basicConfig(level=logging.DEBUG)
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
|
|
||||||
|
|||||||
@@ -57,12 +57,17 @@ def test_in_socket_creation(zmq_context, do_bind: bool):
|
|||||||
assert vad_agent.audio_in_socket is not None
|
assert vad_agent.audio_in_socket is not None
|
||||||
|
|
||||||
zmq_context.return_value.socket.assert_called_once_with(zmq.SUB)
|
zmq_context.return_value.socket.assert_called_once_with(zmq.SUB)
|
||||||
zmq_context.return_value.socket.return_value.setsockopt_string.assert_called_once_with(zmq.SUBSCRIBE, "")
|
zmq_context.return_value.socket.return_value.setsockopt_string.assert_called_once_with(
|
||||||
|
zmq.SUBSCRIBE,
|
||||||
|
"",
|
||||||
|
)
|
||||||
|
|
||||||
if do_bind:
|
if do_bind:
|
||||||
zmq_context.return_value.socket.return_value.bind.assert_called_once_with("tcp://*:12345")
|
zmq_context.return_value.socket.return_value.bind.assert_called_once_with("tcp://*:12345")
|
||||||
else:
|
else:
|
||||||
zmq_context.return_value.socket.return_value.connect.assert_called_once_with("tcp://localhost:12345")
|
zmq_context.return_value.socket.return_value.connect.assert_called_once_with(
|
||||||
|
"tcp://localhost:12345"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_out_socket_creation(zmq_context):
|
def test_out_socket_creation(zmq_context):
|
||||||
@@ -85,7 +90,9 @@ async def test_out_socket_creation_failure(zmq_context):
|
|||||||
Test setup failure when the audio output socket cannot be created.
|
Test setup failure when the audio output socket cannot be created.
|
||||||
"""
|
"""
|
||||||
with patch.object(Agent, "stop", new_callable=AsyncMock) as mock_super_stop:
|
with patch.object(Agent, "stop", new_callable=AsyncMock) as mock_super_stop:
|
||||||
zmq_context.return_value.socket.return_value.bind_to_random_port.side_effect = zmq.ZMQBindError
|
zmq_context.return_value.socket.return_value.bind_to_random_port.side_effect = (
|
||||||
|
zmq.ZMQBindError
|
||||||
|
)
|
||||||
vad_agent = VADAgent("tcp://localhost:12345", False)
|
vad_agent = VADAgent("tcp://localhost:12345", False)
|
||||||
|
|
||||||
await vad_agent.setup()
|
await vad_agent.setup()
|
||||||
@@ -100,7 +107,10 @@ async def test_stop(zmq_context, transcription_agent):
|
|||||||
Test that when the VAD agent is stopped, the sockets are closed correctly.
|
Test that when the VAD agent is stopped, the sockets are closed correctly.
|
||||||
"""
|
"""
|
||||||
vad_agent = VADAgent("tcp://localhost:12345", False)
|
vad_agent = VADAgent("tcp://localhost:12345", False)
|
||||||
zmq_context.return_value.socket.return_value.bind_to_random_port.return_value = random.randint(1000, 10000)
|
zmq_context.return_value.socket.return_value.bind_to_random_port.return_value = random.randint(
|
||||||
|
1000,
|
||||||
|
10000,
|
||||||
|
)
|
||||||
|
|
||||||
await vad_agent.setup()
|
await vad_agent.setup()
|
||||||
await vad_agent.stop()
|
await vad_agent.stop()
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from unittest.mock import AsyncMock, patch
|
from unittest.mock import AsyncMock
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
@@ -27,9 +27,9 @@ def client(app):
|
|||||||
|
|
||||||
def test_receive_command_success(client):
|
def test_receive_command_success(client):
|
||||||
"""
|
"""
|
||||||
Test for successful reception of a command.
|
Test for successful reception of a command. Ensures the status code is 202 and the response body
|
||||||
Ensures the status code is 202 and the response body is correct.
|
is correct. It also verifies that the ZeroMQ socket's send_multipart method is called with the
|
||||||
It also verifies that the ZeroMQ socket's send_multipart method is called with the expected data.
|
expected data.
|
||||||
"""
|
"""
|
||||||
# Arrange
|
# Arrange
|
||||||
mock_pub_socket = AsyncMock()
|
mock_pub_socket = AsyncMock()
|
||||||
|
|||||||
Reference in New Issue
Block a user