release: nexus btpanel session fix and app-v2
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
"""Fleet metric aggregation and API shape."""
|
||||
|
||||
from datetime import datetime, timedelta, timezone
|
||||
|
||||
import pytest
|
||||
|
||||
from server.utils.fleet_metrics import aggregate_fleet_metrics
|
||||
|
||||
|
||||
def test_aggregate_fleet_metrics_averages():
|
||||
rows = [
|
||||
{
|
||||
"is_online": "True",
|
||||
"system_info": '{"cpu_usage": 10, "mem_usage": 20, "disk_usage": 30}',
|
||||
},
|
||||
{
|
||||
"is_online": "True",
|
||||
"system_info": '{"cpu_usage": 30, "mem_usage": 40, "disk_usage": 50}',
|
||||
},
|
||||
{
|
||||
"is_online": "False",
|
||||
"system_info": '{"cpu_usage": 100, "mem_usage": 100, "disk_usage": 100}',
|
||||
},
|
||||
]
|
||||
agg = aggregate_fleet_metrics(rows)
|
||||
assert agg.online_count == 2
|
||||
assert agg.sample_count == 3
|
||||
assert agg.cpu_avg == 47 # round((10+30+100)/3)
|
||||
assert agg.mem_avg == 53
|
||||
assert agg.disk_avg == 60
|
||||
|
||||
|
||||
def test_aggregate_empty():
|
||||
agg = aggregate_fleet_metrics([])
|
||||
assert agg.online_count == 0
|
||||
assert agg.cpu_avg is None
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_fleet_metrics_api(db_session, test_admin):
|
||||
from server.api.servers import fleet_metrics
|
||||
from server.infrastructure.database.fleet_metric_repo import FleetMetricRepositoryImpl
|
||||
|
||||
repo = FleetMetricRepositoryImpl(db_session)
|
||||
now = datetime.now(timezone.utc)
|
||||
await repo.insert_sample(
|
||||
recorded_at=now,
|
||||
online_count=100,
|
||||
sample_count=90,
|
||||
cpu_avg=12,
|
||||
mem_avg=45,
|
||||
disk_avg=60,
|
||||
)
|
||||
await db_session.commit()
|
||||
|
||||
body = await fleet_metrics(hours=24, admin=test_admin["admin"], db=db_session)
|
||||
assert body["hours"] == 24
|
||||
assert body["interval_minutes"] == 10
|
||||
assert len(body["points"]) >= 1
|
||||
assert body["points"][-1]["cpu_avg"] == 12
|
||||
Reference in New Issue
Block a user