summaryrefslogtreecommitdiffstats
path: root/tests/units/anta_tests/test_system.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/units/anta_tests/test_system.py')
-rw-r--r--tests/units/anta_tests/test_system.py283
1 files changed, 283 insertions, 0 deletions
diff --git a/tests/units/anta_tests/test_system.py b/tests/units/anta_tests/test_system.py
new file mode 100644
index 0000000..62260fa
--- /dev/null
+++ b/tests/units/anta_tests/test_system.py
@@ -0,0 +1,283 @@
+# Copyright (c) 2023-2024 Arista Networks, Inc.
+# Use of this source code is governed by the Apache License 2.0
+# that can be found in the LICENSE file.
+"""Test inputs for anta.tests.system"""
+from __future__ import annotations
+
+from typing import Any
+
+from anta.tests.system import (
+ VerifyAgentLogs,
+ VerifyCoredump,
+ VerifyCPUUtilization,
+ VerifyFileSystemUtilization,
+ VerifyMemoryUtilization,
+ VerifyNTP,
+ VerifyReloadCause,
+ VerifyUptime,
+)
+from tests.lib.anta import test # noqa: F401; pylint: disable=W0611
+
+DATA: list[dict[str, Any]] = [
+ {
+ "name": "success",
+ "test": VerifyUptime,
+ "eos_data": [{"upTime": 1186689.15, "loadAvg": [0.13, 0.12, 0.09], "users": 1, "currentTime": 1683186659.139859}],
+ "inputs": {"minimum": 666},
+ "expected": {"result": "success"},
+ },
+ {
+ "name": "failure",
+ "test": VerifyUptime,
+ "eos_data": [{"upTime": 665.15, "loadAvg": [0.13, 0.12, 0.09], "users": 1, "currentTime": 1683186659.139859}],
+ "inputs": {"minimum": 666},
+ "expected": {"result": "failure", "messages": ["Device uptime is 665.15 seconds"]},
+ },
+ {
+ "name": "success-no-reload",
+ "test": VerifyReloadCause,
+ "eos_data": [{"kernelCrashData": [], "resetCauses": [], "full": False}],
+ "inputs": None,
+ "expected": {"result": "success"},
+ },
+ {
+ "name": "success-valid-cause",
+ "test": VerifyReloadCause,
+ "eos_data": [
+ {
+ "resetCauses": [
+ {"recommendedAction": "No action necessary.", "description": "Reload requested by the user.", "timestamp": 1683186892.0, "debugInfoIsDir": False}
+ ],
+ "full": False,
+ }
+ ],
+ "inputs": None,
+ "expected": {"result": "success"},
+ },
+ {
+ "name": "failure",
+ "test": VerifyReloadCause,
+ # The failure cause is made up
+ "eos_data": [
+ {
+ "resetCauses": [
+ {"recommendedAction": "No action necessary.", "description": "Reload after crash.", "timestamp": 1683186892.0, "debugInfoIsDir": False}
+ ],
+ "full": False,
+ }
+ ],
+ "inputs": None,
+ "expected": {"result": "failure", "messages": ["Reload cause is: 'Reload after crash.'"]},
+ },
+ {
+ "name": "error",
+ "test": VerifyReloadCause,
+ "eos_data": [{}],
+ "inputs": None,
+ "expected": {"result": "error", "messages": ["No reload causes available"]},
+ },
+ {
+ "name": "success-without-minidump",
+ "test": VerifyCoredump,
+ "eos_data": [{"mode": "compressedDeferred", "coreFiles": []}],
+ "inputs": None,
+ "expected": {"result": "success"},
+ },
+ {
+ "name": "success-with-minidump",
+ "test": VerifyCoredump,
+ "eos_data": [{"mode": "compressedDeferred", "coreFiles": ["minidump"]}],
+ "inputs": None,
+ "expected": {"result": "success"},
+ },
+ {
+ "name": "failure-without-minidump",
+ "test": VerifyCoredump,
+ "eos_data": [{"mode": "compressedDeferred", "coreFiles": ["core.2344.1584483862.Mlag.gz", "core.23101.1584483867.Mlag.gz"]}],
+ "inputs": None,
+ "expected": {"result": "failure", "messages": ["Core dump(s) have been found: ['core.2344.1584483862.Mlag.gz', 'core.23101.1584483867.Mlag.gz']"]},
+ },
+ {
+ "name": "failure-with-minidump",
+ "test": VerifyCoredump,
+ "eos_data": [{"mode": "compressedDeferred", "coreFiles": ["minidump", "core.2344.1584483862.Mlag.gz", "core.23101.1584483867.Mlag.gz"]}],
+ "inputs": None,
+ "expected": {"result": "failure", "messages": ["Core dump(s) have been found: ['core.2344.1584483862.Mlag.gz', 'core.23101.1584483867.Mlag.gz']"]},
+ },
+ {
+ "name": "success",
+ "test": VerifyAgentLogs,
+ "eos_data": [""],
+ "inputs": None,
+ "expected": {"result": "success"},
+ },
+ {
+ "name": "failure",
+ "test": VerifyAgentLogs,
+ "eos_data": [
+ """===> /var/log/agents/Test-666 Thu May 4 09:57:02 2023 <===
+CLI Exception: Exception
+CLI Exception: Backtrace
+===> /var/log/agents/Aaa-855 Fri Jul 7 15:07:00 2023 <===
+===== Output from /usr/bin/Aaa [] (PID=855) started Jul 7 15:06:11.606414 ===
+EntityManager::doBackoff waiting for remote sysdb version ....ok
+
+===> /var/log/agents/Acl-830 Fri Jul 7 15:07:00 2023 <===
+===== Output from /usr/bin/Acl [] (PID=830) started Jul 7 15:06:10.871700 ===
+EntityManager::doBackoff waiting for remote sysdb version ...................ok
+"""
+ ],
+ "inputs": None,
+ "expected": {
+ "result": "failure",
+ "messages": [
+ "Device has reported agent crashes:\n"
+ " * /var/log/agents/Test-666 Thu May 4 09:57:02 2023\n"
+ " * /var/log/agents/Aaa-855 Fri Jul 7 15:07:00 2023\n"
+ " * /var/log/agents/Acl-830 Fri Jul 7 15:07:00 2023",
+ ],
+ },
+ },
+ {
+ "name": "success",
+ "test": VerifyCPUUtilization,
+ "eos_data": [
+ {
+ "cpuInfo": {"%Cpu(s)": {"idle": 88.2, "stolen": 0.0, "user": 5.9, "swIrq": 0.0, "ioWait": 0.0, "system": 0.0, "hwIrq": 5.9, "nice": 0.0}},
+ "processes": {
+ "1": {
+ "userName": "root",
+ "status": "S",
+ "memPct": 0.3,
+ "niceValue": 0,
+ "cpuPct": 0.0,
+ "cpuPctType": "{:.1f}",
+ "cmd": "systemd",
+ "residentMem": "5096",
+ "priority": "20",
+ "activeTime": 360,
+ "virtMem": "6644",
+ "sharedMem": "3996",
+ }
+ },
+ }
+ ],
+ "inputs": None,
+ "expected": {"result": "success"},
+ },
+ {
+ "name": "failure",
+ "test": VerifyCPUUtilization,
+ "eos_data": [
+ {
+ "cpuInfo": {"%Cpu(s)": {"idle": 24.8, "stolen": 0.0, "user": 5.9, "swIrq": 0.0, "ioWait": 0.0, "system": 0.0, "hwIrq": 5.9, "nice": 0.0}},
+ "processes": {
+ "1": {
+ "userName": "root",
+ "status": "S",
+ "memPct": 0.3,
+ "niceValue": 0,
+ "cpuPct": 0.0,
+ "cpuPctType": "{:.1f}",
+ "cmd": "systemd",
+ "residentMem": "5096",
+ "priority": "20",
+ "activeTime": 360,
+ "virtMem": "6644",
+ "sharedMem": "3996",
+ }
+ },
+ }
+ ],
+ "inputs": None,
+ "expected": {"result": "failure", "messages": ["Device has reported a high CPU utilization: 75.2%"]},
+ },
+ {
+ "name": "success",
+ "test": VerifyMemoryUtilization,
+ "eos_data": [
+ {
+ "uptime": 1994.67,
+ "modelName": "vEOS-lab",
+ "internalVersion": "4.27.3F-26379303.4273F",
+ "memTotal": 2004568,
+ "memFree": 879004,
+ "version": "4.27.3F",
+ }
+ ],
+ "inputs": None,
+ "expected": {"result": "success"},
+ },
+ {
+ "name": "failure",
+ "test": VerifyMemoryUtilization,
+ "eos_data": [
+ {
+ "uptime": 1994.67,
+ "modelName": "vEOS-lab",
+ "internalVersion": "4.27.3F-26379303.4273F",
+ "memTotal": 2004568,
+ "memFree": 89004,
+ "version": "4.27.3F",
+ }
+ ],
+ "inputs": None,
+ "expected": {"result": "failure", "messages": ["Device has reported a high memory usage: 95.56%"]},
+ },
+ {
+ "name": "success",
+ "test": VerifyFileSystemUtilization,
+ "eos_data": [
+ """Filesystem Size Used Avail Use% Mounted on
+/dev/sda2 3.9G 988M 2.9G 26% /mnt/flash
+none 294M 78M 217M 27% /
+none 294M 78M 217M 27% /.overlay
+/dev/loop0 461M 461M 0 100% /rootfs-i386
+"""
+ ],
+ "inputs": None,
+ "expected": {"result": "success"},
+ },
+ {
+ "name": "failure",
+ "test": VerifyFileSystemUtilization,
+ "eos_data": [
+ """Filesystem Size Used Avail Use% Mounted on
+/dev/sda2 3.9G 988M 2.9G 84% /mnt/flash
+none 294M 78M 217M 27% /
+none 294M 78M 217M 84% /.overlay
+/dev/loop0 461M 461M 0 100% /rootfs-i386
+"""
+ ],
+ "inputs": None,
+ "expected": {
+ "result": "failure",
+ "messages": [
+ "Mount point /dev/sda2 3.9G 988M 2.9G 84% /mnt/flash is higher than 75%: reported 84%",
+ "Mount point none 294M 78M 217M 84% /.overlay is higher than 75%: reported 84%",
+ ],
+ },
+ },
+ {
+ "name": "success",
+ "test": VerifyNTP,
+ "eos_data": [
+ """synchronised
+poll interval unknown
+"""
+ ],
+ "inputs": None,
+ "expected": {"result": "success"},
+ },
+ {
+ "name": "failure",
+ "test": VerifyNTP,
+ "eos_data": [
+ """unsynchronised
+poll interval unknown
+"""
+ ],
+ "inputs": None,
+ "expected": {"result": "failure", "messages": ["The device is not synchronized with the configured NTP server(s): 'unsynchronised'"]},
+ },
+]