SNMP discovery updates continued

This commit is contained in:
Keith Smith
2026-05-26 17:43:33 -06:00
parent e59733d331
commit 6ff452a8a9
10 changed files with 554 additions and 36 deletions
+70
View File
@@ -20,6 +20,10 @@ from app.collectors.snmp import (
HR_STORAGE_SIZE,
HR_STORAGE_USED,
SYS_UPTIME,
UCD_DSK_PERCENT,
UCD_LA_LOAD_INT,
UCD_MEM_AVAIL_REAL,
UCD_MEM_TOTAL_REAL,
SnmpCheckConfig,
_with_index,
run_snmp_check,
@@ -66,6 +70,72 @@ class SnmpCollectorTestCase(unittest.IsolatedAsyncioTestCase):
("load_percent", 42.0, "%")
]
async def test_collects_linux_load_average(self) -> None:
oid = _with_index(UCD_LA_LOAD_INT, 1)
with patch("app.collectors.snmp.SnmpV2Client") as client_class:
client_class.return_value.get_many.return_value = {oid: 123}
result = await run_snmp_check(
SnmpCheckConfig(
host="192.0.2.10",
community="private-community",
item_id="linux.load.1",
item_type="linux_load_average",
label="Load average 1 minute",
)
)
assert result.status == "up"
assert result.message == "Load average 1 minute is 1.23"
assert [(metric.name, metric.value, metric.unit) for metric in result.metrics] == [
("load_average", 1.23, None)
]
async def test_collects_linux_memory_usage(self) -> None:
with patch("app.collectors.snmp.SnmpV2Client") as client_class:
client_class.return_value.get_many.return_value = {
UCD_MEM_TOTAL_REAL: 1000,
UCD_MEM_AVAIL_REAL: 250,
}
result = await run_snmp_check(
SnmpCheckConfig(
host="192.0.2.10",
community="private-community",
item_id="linux.memory.real",
item_type="linux_memory_usage",
)
)
assert result.status == "up"
assert result.message == "Memory is 75.0% used"
assert [(metric.name, metric.value, metric.unit) for metric in result.metrics] == [
("used_percent", 75.0, "%"),
("used_bytes", 768000.0, "bytes"),
("total_bytes", 1024000.0, "bytes"),
]
async def test_collects_linux_disk_usage(self) -> None:
oid = _with_index(UCD_DSK_PERCENT, 31)
with patch("app.collectors.snmp.SnmpV2Client") as client_class:
client_class.return_value.get_many.return_value = {oid: 81}
result = await run_snmp_check(
SnmpCheckConfig(
host="192.0.2.10",
community="private-community",
item_id="linux.disk.31",
item_type="linux_disk_usage",
label="Disk / usage",
)
)
assert result.status == "up"
assert result.message == "Disk / usage is 81% used"
assert [(metric.name, metric.value, metric.unit) for metric in result.metrics] == [
("used_percent", 81.0, "%")
]
async def test_collects_storage_usage(self) -> None:
oids = [
_with_index(HR_STORAGE_ALLOCATION_UNITS, 31),