优化系统健康评分与缓存监测
This commit is contained in:
@@ -258,9 +258,14 @@ async def test_permission_system_health_degraded(db_session):
|
||||
assert "status" in data
|
||||
assert "health_score" in data
|
||||
assert "issues" in data
|
||||
assert "权限检查响应时间过长" in data["issues"]
|
||||
assert "权限拒绝率过高" in data["issues"]
|
||||
assert "缓存命中率过低" in data["issues"]
|
||||
assert any("权限检查平均响应时间过长" in issue for issue in data["issues"])
|
||||
assert any("权限拒绝率偏高" in issue for issue in data["issues"])
|
||||
assert any("缓存命中率偏低" in issue for issue in data["issues"])
|
||||
assert data["status"] == "unhealthy"
|
||||
assert data["health_score"] == 30
|
||||
assert data["score_breakdown"]["performance"]["deduction"] == 25
|
||||
assert data["score_breakdown"]["deny_rate"]["deduction"] == 20
|
||||
assert data["score_breakdown"]["cache"]["deduction"] == 25
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@@ -272,10 +277,33 @@ async def test_permission_system_health_includes_metrics(db_session):
|
||||
data = await permission_monitoring.permission_system_health(db=db_session, _=AdminUserStub())
|
||||
assert "last_hour" in data
|
||||
assert "cache_stats" in data
|
||||
assert "score_breakdown" in data
|
||||
assert "sample_sufficient" in data
|
||||
assert "total_checks" in data["last_hour"]
|
||||
assert "cache_metrics" in data["cache_stats"]
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_permission_system_health_ignores_small_cache_sample(db_session):
|
||||
"""缓存样本不足时不应因为低命中率扣分"""
|
||||
monitor = PermissionMonitor()
|
||||
set_permission_monitor(monitor)
|
||||
|
||||
for _ in range(3):
|
||||
monitor.record_cache_miss()
|
||||
|
||||
data = await permission_monitoring.permission_system_health(db=db_session, _=AdminUserStub())
|
||||
|
||||
assert data["score_breakdown"]["cache"]["sample_sufficient"] is False
|
||||
assert data["score_breakdown"]["cache"]["deduction"] == 0
|
||||
non_cache_deductions = sum(
|
||||
item["deduction"]
|
||||
for name, item in data["score_breakdown"].items()
|
||||
if name != "cache"
|
||||
)
|
||||
assert data["health_score"] == 100 - non_cache_deductions
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_ip_locations_counts_unique_users_per_location(db_session, monkeypatch):
|
||||
"""IP 属地统计应按省市聚合访问次数、来源 IP 数和访问用户数。"""
|
||||
|
||||
Reference in New Issue
Block a user