Files
truf-server/tests/test_model_probe_preferences.py
T
2026-09-30 20:30:56 +03:00

73 lines
3.0 KiB
Python

from pathlib import Path
import sys
import unittest
from unittest import mock
ROOT = Path(__file__).resolve().parents[1]
APP_DIR = ROOT / "app"
sys.path.insert(0, str(APP_DIR))
import keycheck_runner
from keycheckers.gemini import geminiKeycheck as gemini
from keycheckers.openai import Keycheck as openai
from keycheckers.xai import xaiKeycheck as xai
class ModelProbePreferenceTests(unittest.TestCase):
def test_gemini_prefers_current_pro_then_current_flash(self):
models = ["gemini-2.5-flash", "gemini-3.7-flash", "gemini-3.1-pro-preview"]
self.assertEqual(gemini.choose_probe_model(models), "gemini-3.1-pro-preview")
self.assertEqual(
gemini.choose_probe_model(["gemini-2.5-flash", "gemini-3.7-flash"]),
"gemini-3.7-flash",
)
self.assertEqual(gemini.choose_probe_model(["gemini-4-preview"]), "gemini-4-preview")
def test_xai_prefers_grok_4_6_and_falls_back_to_advertised_model(self):
self.assertEqual(xai.choose_chat_model(["grok-4.5", "grok-4.6"]), "grok-4.6")
self.assertEqual(
xai.choose_chat_model(["grok-4.20-0309-non-reasoning", "grok-4.5"]),
"grok-4.5",
)
def test_openai_prefers_advertised_gpt_5_6_sol(self):
models = ["gpt-5", "gpt-5.6-terra", "gpt-5.6-sol", "o3-pro"]
self.assertEqual(openai.choose_probe_model(models), "gpt-5.6-sol")
self.assertEqual(openai.choose_probe_model(["gpt-5", "o3-pro"]), "gpt-5")
self.assertEqual(openai.choose_probe_model(["gpt-4o", "text-embedding-3-large"]), "gpt-4o")
self.assertEqual(
openai.reportable_target_models(models),
{"gpt-5", "gpt-5.6-terra", "gpt-5.6-sol", "o3-pro"},
)
def test_openai_probe_uses_supported_completion_budget(self):
response = mock.Mock(status_code=200, text='{"choices":[{}]}')
response.json.return_value = {"choices": [{}], "service_tier": "default"}
with mock.patch.object(openai.requests, "post", return_value=response) as request:
status, tier = openai.check_balance_and_tier("fixture-key", "gpt-5.6-sol", None)
self.assertEqual((status, tier), ("ok", "default"))
payload = request.call_args.kwargs["json"]
self.assertEqual(payload["model"], "gpt-5.6-sol")
self.assertEqual(payload["max_completion_tokens"], 16)
self.assertNotIn("max_tokens", payload)
def test_postgres_projection_detail_includes_probe_and_inventory(self):
detail = keycheck_runner.postgres_status_projection_detail({
"message": "accepted",
"llm_probe_model": "gpt-5.6-sol",
"llm_probe_status": "GENERATION_OK",
"model_count": 3,
"model_inventory": ["gpt-5.6-sol", "gpt-5", "o3-pro"],
})
self.assertEqual(
detail,
"accepted; probe_model=gpt-5.6-sol; probe_status=GENERATION_OK; "
"model_count=3; models=gpt-5.6-sol,gpt-5,o3-pro",
)
if __name__ == "__main__":
unittest.main()