# 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'"]}, }, ]