now supports multi machine monitoring
This commit is contained in:
@@ -17,6 +17,7 @@ from media_library_viewer_api.dependencies import (
|
||||
get_jellyfin_client,
|
||||
get_jellyseerr_client,
|
||||
get_mail_queue,
|
||||
get_settings_store,
|
||||
get_user_id,
|
||||
)
|
||||
from media_library_viewer_api.clients.ssh import CommandResult
|
||||
@@ -159,6 +160,78 @@ class TestDashboard:
|
||||
assert data["series"] == 20
|
||||
assert data["episodes"] == 500
|
||||
|
||||
def test_monitoring_overview(self, test_client):
|
||||
store = MagicMock()
|
||||
store.list_machines.return_value = [
|
||||
{
|
||||
"id": "local",
|
||||
"name": "This machine",
|
||||
"mode": "local",
|
||||
"enabled": True,
|
||||
"host": "localhost",
|
||||
"port": 22,
|
||||
"username": "",
|
||||
"media_root": "/srv/media",
|
||||
"path_prefix": "",
|
||||
"notes": "",
|
||||
},
|
||||
{
|
||||
"id": "remote1",
|
||||
"name": "Remote",
|
||||
"mode": "ssh",
|
||||
"enabled": True,
|
||||
"host": "server.example.com",
|
||||
"port": 22,
|
||||
"username": "alex",
|
||||
"media_root": "/srv/media",
|
||||
"path_prefix": "",
|
||||
"notes": "",
|
||||
},
|
||||
]
|
||||
app.dependency_overrides[get_settings_store] = lambda: store
|
||||
try:
|
||||
with (
|
||||
patch("media_library_viewer_api.services.monitoring_actions.build_machine_client", return_value=object()),
|
||||
patch("media_library_viewer_api.services.monitoring_actions.resource_collector_status", return_value="running pid=123"),
|
||||
patch(
|
||||
"media_library_viewer_api.services.monitoring_actions.read_resource_metrics",
|
||||
return_value=[
|
||||
{
|
||||
"ts": 123.0,
|
||||
"cpu_pct": 10.0,
|
||||
"iowait_pct": 1.0,
|
||||
"mem_pct": 20.0,
|
||||
"net_rx_bytes_per_sec": 100.0,
|
||||
"net_tx_bytes_per_sec": 50.0,
|
||||
"disk_read_bps": 1.0,
|
||||
"disk_write_bps": 2.0,
|
||||
}
|
||||
],
|
||||
),
|
||||
patch(
|
||||
"media_library_viewer_api.services.monitoring_actions.disk_space",
|
||||
return_value={
|
||||
"filesystem": "/dev/sda1",
|
||||
"size": 1000,
|
||||
"used": 200,
|
||||
"available": 800,
|
||||
"used_pct": "20.0%",
|
||||
"mount": "/srv/media",
|
||||
},
|
||||
),
|
||||
):
|
||||
response = test_client.get("/api/dashboard/monitoring")
|
||||
finally:
|
||||
app.dependency_overrides.pop(get_settings_store, None)
|
||||
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert data["total"] == 2
|
||||
assert data["enabled"] == 2
|
||||
assert len(data["machines"]) == 2
|
||||
assert data["machines"][0]["latest_sample"]["cpu_pct"] == 10.0
|
||||
assert data["machines"][0]["disk"]["used_pct"] == "20.0%"
|
||||
|
||||
def test_libraries(self, test_client):
|
||||
response = test_client.get("/api/dashboard/libraries")
|
||||
assert response.status_code == 200
|
||||
|
||||
Reference in New Issue
Block a user