| 12345678910111213141516171819202122232425 |
- import pytest
- from pydantic import ValidationError
- from zhifu.operations.scale_capacity import ScaleRequest, inspect_capacity
- @pytest.mark.parametrize("values", [
- {"replicas": 0}, {"replicas": 17}, {"replicas": 2, "pool_size": 0},
- {"replicas": 2, "max_overflow": -1}, {"replicas": 2, "reserved_connections": -1},
- ])
- def test_scale_budget_rejects_invalid_bounds(values):
- with pytest.raises(ValidationError):
- ScaleRequest(**values)
- async def test_scale_budget_reads_real_mysql_capacity():
- request = ScaleRequest(replicas=2, pool_size=5, max_overflow=5)
- result = await inspect_capacity(request)
- assert result["mysql_max_connections"] > 0
- assert result["currently_connected"] >= 1
- assert result["planned_peak_connections"] == 20
- expected = result["mysql_max_connections"] - result["currently_connected"] - 40
- assert result["remaining_connections"] == expected
- assert result["status"] == ("READY" if expected >= 0 else "BLOCKED")
- assert result["database_configuration_changed"] is False
|