test: add tests for compression config_context_length passthrough
- Test that auxiliary.compression.context_length from config is forwarded to get_model_context_length (positive case) - Test that invalid/non-integer config values are silently ignored - Fix _make_agent() to set config=None (cherry-picked code reads self.config)
This commit is contained in:
@@ -38,6 +38,7 @@ def _make_agent(
|
|||||||
agent.status_callback = None
|
agent.status_callback = None
|
||||||
agent.tool_progress_callback = None
|
agent.tool_progress_callback = None
|
||||||
agent._compression_warning = None
|
agent._compression_warning = None
|
||||||
|
agent.config = None
|
||||||
|
|
||||||
compressor = MagicMock(spec=ContextCompressor)
|
compressor = MagicMock(spec=ContextCompressor)
|
||||||
compressor.context_length = main_context
|
compressor.context_length = main_context
|
||||||
@@ -130,6 +131,64 @@ def test_feasibility_check_passes_live_main_runtime():
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@patch("agent.model_metadata.get_model_context_length", return_value=1_000_000)
|
||||||
|
@patch("agent.auxiliary_client.get_text_auxiliary_client")
|
||||||
|
def test_feasibility_check_passes_config_context_length(mock_get_client, mock_ctx_len):
|
||||||
|
"""auxiliary.compression.context_length from config is forwarded to
|
||||||
|
get_model_context_length so custom endpoints that lack /models still
|
||||||
|
report the correct context window (fixes #8499)."""
|
||||||
|
agent = _make_agent(main_context=200_000, threshold_percent=0.85)
|
||||||
|
agent.config = {
|
||||||
|
"auxiliary": {
|
||||||
|
"compression": {
|
||||||
|
"context_length": 1_000_000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
mock_client = MagicMock()
|
||||||
|
mock_client.base_url = "http://custom-endpoint:8080/v1"
|
||||||
|
mock_client.api_key = "sk-custom"
|
||||||
|
mock_get_client.return_value = (mock_client, "custom/big-model")
|
||||||
|
|
||||||
|
agent._emit_status = lambda msg: None
|
||||||
|
agent._check_compression_model_feasibility()
|
||||||
|
|
||||||
|
mock_ctx_len.assert_called_once_with(
|
||||||
|
"custom/big-model",
|
||||||
|
base_url="http://custom-endpoint:8080/v1",
|
||||||
|
api_key="sk-custom",
|
||||||
|
config_context_length=1_000_000,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@patch("agent.model_metadata.get_model_context_length", return_value=128_000)
|
||||||
|
@patch("agent.auxiliary_client.get_text_auxiliary_client")
|
||||||
|
def test_feasibility_check_ignores_invalid_context_length(mock_get_client, mock_ctx_len):
|
||||||
|
"""Non-integer context_length in config is silently ignored."""
|
||||||
|
agent = _make_agent(main_context=200_000, threshold_percent=0.50)
|
||||||
|
agent.config = {
|
||||||
|
"auxiliary": {
|
||||||
|
"compression": {
|
||||||
|
"context_length": "not-a-number",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
mock_client = MagicMock()
|
||||||
|
mock_client.base_url = "http://custom:8080/v1"
|
||||||
|
mock_client.api_key = "sk-test"
|
||||||
|
mock_get_client.return_value = (mock_client, "custom/model")
|
||||||
|
|
||||||
|
agent._emit_status = lambda msg: None
|
||||||
|
agent._check_compression_model_feasibility()
|
||||||
|
|
||||||
|
mock_ctx_len.assert_called_once_with(
|
||||||
|
"custom/model",
|
||||||
|
base_url="http://custom:8080/v1",
|
||||||
|
api_key="sk-test",
|
||||||
|
config_context_length=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@patch("agent.auxiliary_client.get_text_auxiliary_client")
|
@patch("agent.auxiliary_client.get_text_auxiliary_client")
|
||||||
def test_warns_when_no_auxiliary_provider(mock_get_client):
|
def test_warns_when_no_auxiliary_provider(mock_get_client):
|
||||||
"""Warning emitted when no auxiliary provider is configured."""
|
"""Warning emitted when no auxiliary provider is configured."""
|
||||||
|
|||||||
Reference in New Issue
Block a user