test: increased cb test coverage
This commit is contained in:
committed by
Luijkx,S.O.H. (Storm)
parent
de2e56ffce
commit
7f7c658901
@@ -1,7 +1,8 @@
|
||||
from unittest.mock import AsyncMock, MagicMock
|
||||
from unittest.mock import AsyncMock, MagicMock, patch
|
||||
|
||||
import numpy as np
|
||||
import pytest
|
||||
import zmq
|
||||
|
||||
from control_backend.agents.perception.vad_agent import VADAgent
|
||||
|
||||
@@ -123,3 +124,44 @@ async def test_no_data(audio_out_socket, vad_agent):
|
||||
|
||||
audio_out_socket.send.assert_not_called()
|
||||
assert len(vad_agent.audio_buffer) == 0
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_vad_model_load_failure_stops_agent(vad_agent):
|
||||
"""
|
||||
Test that if loading the VAD model raises an Exception, it is caught,
|
||||
the agent logs an exception, stops itself, and setup returns.
|
||||
"""
|
||||
# Patch torch.hub.load to raise an exception
|
||||
with patch(
|
||||
"control_backend.agents.perception.vad_agent.torch.hub.load",
|
||||
side_effect=Exception("model fail"),
|
||||
):
|
||||
# Patch stop to an AsyncMock so we can check it was awaited
|
||||
vad_agent.stop = AsyncMock()
|
||||
|
||||
result = await vad_agent.setup()
|
||||
|
||||
# Assert stop was called
|
||||
vad_agent.stop.assert_awaited_once()
|
||||
# Assert setup returned None
|
||||
assert result is None
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_audio_out_bind_failure_sets_none_and_logs(vad_agent, caplog):
|
||||
"""
|
||||
Test that if binding the output socket raises ZMQBindError,
|
||||
audio_out_socket is set to None, None is returned, and an error is logged.
|
||||
"""
|
||||
mock_socket = MagicMock()
|
||||
mock_socket.bind_to_random_port.side_effect = zmq.ZMQBindError()
|
||||
with patch("control_backend.agents.perception.vad_agent.azmq.Context.instance") as mock_ctx:
|
||||
mock_ctx.return_value.socket.return_value = mock_socket
|
||||
|
||||
with caplog.at_level("ERROR"):
|
||||
port = vad_agent._connect_audio_out_socket()
|
||||
|
||||
assert port is None
|
||||
assert vad_agent.audio_out_socket is None
|
||||
assert caplog.text is not None
|
||||
|
||||
Reference in New Issue
Block a user