test_start_scripts_ps1.py 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import unittest
  2. from pathlib import Path
  3. ROOT = Path(r"E:\GitProjects\llama-cpp-server")
  4. ROUTER_SCRIPT = ROOT / "start-llama-router.ps1"
  5. ASR_SCRIPT = ROOT / "start-asr-server.ps1"
  6. QWEN_SCRIPT = ROOT / "start-qwen3.6-35b-a3b.ps1"
  7. class Ps1MigrationTests(unittest.TestCase):
  8. def test_ps1_scripts_exist(self):
  9. self.assertTrue(ROUTER_SCRIPT.exists(), ROUTER_SCRIPT)
  10. self.assertTrue(ASR_SCRIPT.exists(), ASR_SCRIPT)
  11. self.assertTrue(QWEN_SCRIPT.exists(), QWEN_SCRIPT)
  12. def test_legacy_bat_scripts_are_removed(self):
  13. self.assertFalse((ROOT / "start-llama-router.bat").exists())
  14. self.assertFalse((ROOT / "start-asr-server.bat").exists())
  15. self.assertFalse((ROOT / "start-qwen3.6-35b-a3b.bat").exists())
  16. class RouterScriptTests(unittest.TestCase):
  17. def test_router_script_uses_utf8_and_optional_gated_server_flags(self):
  18. text = ROUTER_SCRIPT.read_text(encoding="utf-8")
  19. self.assertIn("[Console]::OutputEncoding", text)
  20. self.assertIn("$env:PYTHONIOENCODING = 'utf-8'", text)
  21. self.assertIn("--models-preset", text)
  22. self.assertIn("--models-autoload", text)
  23. self.assertIn("--models-max", text)
  24. self.assertIn("--sleep-idle-seconds", text)
  25. self.assertIn("--cache-idle-slots", text)
  26. self.assertIn("--api-key", text)
  27. self.assertIn("--timeout", text)
  28. self.assertIn("--cache-ram", text)
  29. self.assertIn("--threads-http", text)
  30. self.assertIn("--metrics", text)
  31. self.assertIn("--ssl-cert-file", text)
  32. self.assertIn("--ssl-key-file", text)
  33. self.assertIn("--ui", text)
  34. self.assertIn("--no-ui", text)
  35. self.assertIn("if ($ApiKey)", text)
  36. self.assertIn("if ($EnableMetrics)", text)
  37. def test_router_script_can_regenerate_models_preset(self):
  38. text = ROUTER_SCRIPT.read_text(encoding="utf-8")
  39. self.assertIn("generate_models_preset.py", text)
  40. self.assertIn("--alias-style", text)
  41. self.assertIn("--profile", text)
  42. self.assertIn("--select", text)
  43. class SingleModelScriptTests(unittest.TestCase):
  44. def test_asr_script_uses_mmproj_and_ps1_argument_array(self):
  45. text = ASR_SCRIPT.read_text(encoding="utf-8")
  46. self.assertIn("$Args = @(", text)
  47. self.assertIn("-m", text)
  48. self.assertIn("--mmproj", text)
  49. self.assertIn("--parallel", text)
  50. self.assertIn("--mmap", text)
  51. def test_qwen_script_uses_recommended_threads_and_moe_runtime_flags(self):
  52. text = QWEN_SCRIPT.read_text(encoding="utf-8")
  53. self.assertIn("[Environment]::ProcessorCount", text)
  54. self.assertIn("* 0.7", text)
  55. self.assertIn("-b", text)
  56. self.assertIn("2048", text)
  57. self.assertIn("-ub", text)
  58. self.assertIn("512", text)
  59. self.assertIn("--parallel", text)
  60. self.assertIn("4", text)
  61. self.assertIn("-ncmoe", text)
  62. self.assertIn("--mmap", text)
  63. self.assertIn("--reasoning", text)
  64. self.assertIn("--reasoning-budget", text)
  65. self.assertIn("--spec-type", text)
  66. self.assertIn("--temp", text)
  67. self.assertIn("--top-k", text)
  68. self.assertIn("--top-p", text)
  69. self.assertIn("--min-p", text)
  70. self.assertIn("--repeat-penalty", text)
  71. if __name__ == "__main__":
  72. unittest.main()