test_condenser.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from unittest.mock import Mock, patch
  2. import pytest
  3. from openhands.core.exceptions import LLMResponseError
  4. from openhands.llm.llm import LLM
  5. from openhands.memory.condenser import MemoryCondenser
  6. @pytest.fixture
  7. def memory_condenser():
  8. return MemoryCondenser()
  9. @pytest.fixture
  10. def mock_llm():
  11. return Mock(spec=LLM)
  12. def test_condense_success(memory_condenser, mock_llm):
  13. mock_llm.completion.return_value = {
  14. 'choices': [{'message': {'content': 'Condensed memory'}}]
  15. }
  16. result = memory_condenser.condense('Summarize this', mock_llm)
  17. assert result == 'Condensed memory'
  18. mock_llm.completion.assert_called_once_with(
  19. messages=[{'content': 'Summarize this', 'role': 'user'}]
  20. )
  21. def test_condense_exception(memory_condenser, mock_llm):
  22. mock_llm.completion.side_effect = LLMResponseError('LLM error')
  23. with pytest.raises(LLMResponseError, match='LLM error'):
  24. memory_condenser.condense('Summarize this', mock_llm)
  25. @patch('openhands.memory.condenser.logger')
  26. def test_condense_logs_error(mock_logger, memory_condenser, mock_llm):
  27. mock_llm.completion.side_effect = LLMResponseError('LLM error')
  28. with pytest.raises(LLMResponseError):
  29. memory_condenser.condense('Summarize this', mock_llm)
  30. mock_logger.error.assert_called_once_with(
  31. 'Error condensing thoughts: %s', 'LLM error', exc_info=False
  32. )