test_scale_capacity.py 1.0 KB

12345678910111213141516171819202122232425
  1. import pytest
  2. from pydantic import ValidationError
  3. from zhifu.operations.scale_capacity import ScaleRequest, inspect_capacity
  4. @pytest.mark.parametrize("values", [
  5. {"replicas": 0}, {"replicas": 17}, {"replicas": 2, "pool_size": 0},
  6. {"replicas": 2, "max_overflow": -1}, {"replicas": 2, "reserved_connections": -1},
  7. ])
  8. def test_scale_budget_rejects_invalid_bounds(values):
  9. with pytest.raises(ValidationError):
  10. ScaleRequest(**values)
  11. async def test_scale_budget_reads_real_mysql_capacity():
  12. request = ScaleRequest(replicas=2, pool_size=5, max_overflow=5)
  13. result = await inspect_capacity(request)
  14. assert result["mysql_max_connections"] > 0
  15. assert result["currently_connected"] >= 1
  16. assert result["planned_peak_connections"] == 20
  17. expected = result["mysql_max_connections"] - result["currently_connected"] - 40
  18. assert result["remaining_connections"] == expected
  19. assert result["status"] == ("READY" if expected >= 0 else "BLOCKED")
  20. assert result["database_configuration_changed"] is False