anta/tests/units/anta_tests/test_hardware.py

876 lines
36 KiB
Python
Raw Normal View History

# Copyright (c) 2023-2025 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.hardware."""
from __future__ import annotations
import sys
from typing import TYPE_CHECKING, Any
from anta.models import AntaTest
from anta.result_manager.models import AntaTestStatus
from anta.tests.hardware import (
VerifyAdverseDrops,
VerifyEnvironmentCooling,
VerifyEnvironmentPower,
VerifyEnvironmentSystemCooling,
VerifyTemperature,
VerifyTransceiversManufacturers,
VerifyTransceiversTemperature,
)
from tests.units.anta_tests import test
if TYPE_CHECKING:
from tests.units.anta_tests import AntaUnitTestDataDict
DATA: AntaUnitTestDataDict = {
(VerifyTransceiversManufacturers, "success"): {
"eos_data": [
{
"xcvrSlots": {
"1": {"mfgName": "Arista Networks", "modelName": "QSFP-100G-DR", "serialNum": "XKT203501340", "hardwareRev": "21"},
"2": {"mfgName": "Arista Networks", "modelName": "QSFP-100G-DR", "serialNum": "XKT203501337", "hardwareRev": "21"},
}
}
],
"inputs": {"manufacturers": ["Arista Networks"]},
"expected": {"result": AntaTestStatus.SUCCESS},
},
(VerifyTransceiversManufacturers, "failure"): {
"eos_data": [
{
"xcvrSlots": {
"1": {"mfgName": "Arista Networks", "modelName": "QSFP-100G-DR", "serialNum": "XKT203501340", "hardwareRev": "21"},
"2": {"mfgName": "Arista Networks", "modelName": "QSFP-100G-DR", "serialNum": "XKT203501337", "hardwareRev": "21"},
}
}
],
"inputs": {"manufacturers": ["Arista"]},
"expected": {
"result": AntaTestStatus.FAILURE,
"messages": [
"Interface: 1 - Transceiver is from unapproved manufacturers - Expected: Arista Actual: Arista Networks",
"Interface: 2 - Transceiver is from unapproved manufacturers - Expected: Arista Actual: Arista Networks",
],
},
},
(VerifyTemperature, "success"): {
"eos_data": [
{
"powercycleOnOverheat": "False",
"ambientThreshold": 45,
"cardSlots": [],
"shutdownOnOverheat": "True",
"systemStatus": "temperatureOk",
"recoveryModeOnOverheat": "recoveryModeNA",
}
],
"expected": {"result": AntaTestStatus.SUCCESS},
},
(VerifyTemperature, "failure"): {
"eos_data": [
{
"powercycleOnOverheat": "False",
"ambientThreshold": 45,
"cardSlots": [],
"shutdownOnOverheat": "True",
"systemStatus": "temperatureCritical",
"recoveryModeOnOverheat": "recoveryModeNA",
}
],
"expected": {
"result": AntaTestStatus.FAILURE,
"messages": ["Device temperature exceeds acceptable limits - Expected: temperatureOk Actual: temperatureCritical"],
},
},
(VerifyTransceiversTemperature, "success"): {
"eos_data": [
{
"tempSensors": [
{
"maxTemperature": 25.03125,
"maxTemperatureLastChange": 1682509618.2227979,
"hwStatus": "ok",
"alertCount": 0,
"description": "Xcvr54 temp sensor",
"overheatThreshold": 70.0,
"criticalThreshold": 70.0,
"inAlertState": False,
"targetTemperature": 62.0,
"relPos": "54",
"currentTemperature": 24.171875,
"setPointTemperature": 61.8,
"pidDriverCount": 0,
"isPidDriver": False,
"name": "DomTemperatureSensor54",
}
],
"cardSlots": [],
}
],
"expected": {"result": AntaTestStatus.SUCCESS},
},
(VerifyTransceiversTemperature, "failure-hwStatus"): {
"eos_data": [
{
"tempSensors": [
{
"maxTemperature": 25.03125,
"maxTemperatureLastChange": 1682509618.2227979,
"hwStatus": "ko",
"alertCount": 0,
"description": "Xcvr54 temp sensor",
"overheatThreshold": 70.0,
"criticalThreshold": 70.0,
"inAlertState": False,
"targetTemperature": 62.0,
"relPos": "54",
"currentTemperature": 24.171875,
"setPointTemperature": 61.8,
"pidDriverCount": 0,
"isPidDriver": False,
"name": "DomTemperatureSensor54",
}
],
"cardSlots": [],
}
],
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["Sensor: DomTemperatureSensor54 - Invalid hardware state - Expected: ok Actual: ko"]},
},
(VerifyTransceiversTemperature, "failure-alertCount"): {
"eos_data": [
{
"tempSensors": [
{
"maxTemperature": 25.03125,
"maxTemperatureLastChange": 1682509618.2227979,
"hwStatus": "ok",
"alertCount": 1,
"description": "Xcvr54 temp sensor",
"overheatThreshold": 70.0,
"criticalThreshold": 70.0,
"inAlertState": False,
"targetTemperature": 62.0,
"relPos": "54",
"currentTemperature": 24.171875,
"setPointTemperature": 61.8,
"pidDriverCount": 0,
"isPidDriver": False,
"name": "DomTemperatureSensor54",
}
],
"cardSlots": [],
}
],
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["Sensor: DomTemperatureSensor54 - Incorrect alert counter - Expected: 0 Actual: 1"]},
},
(VerifyEnvironmentSystemCooling, "success"): {
"eos_data": [
{
"defaultZones": False,
"numCoolingZones": [],
"coolingMode": "automatic",
"ambientTemperature": 24.5,
"shutdownOnInsufficientFans": True,
"airflowDirection": "frontToBackAirflow",
"overrideFanSpeed": 0,
"powerSupplySlots": [],
"fanTraySlots": [],
"minFanSpeed": 0,
"currentZones": 1,
"configuredZones": 0,
"systemStatus": "coolingOk",
}
],
"expected": {"result": AntaTestStatus.SUCCESS},
},
(VerifyEnvironmentSystemCooling, "failure"): {
"eos_data": [
{
"defaultZones": False,
"numCoolingZones": [],
"coolingMode": "automatic",
"ambientTemperature": 24.5,
"shutdownOnInsufficientFans": True,
"airflowDirection": "frontToBackAirflow",
"overrideFanSpeed": 0,
"powerSupplySlots": [],
"fanTraySlots": [],
"minFanSpeed": 0,
"currentZones": 1,
"configuredZones": 0,
"systemStatus": "coolingKo",
}
],
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["Device system cooling status invalid - Expected: coolingOk Actual: coolingKo"]},
},
(VerifyEnvironmentCooling, "success"): {
"eos_data": [
{
"defaultZones": False,
"numCoolingZones": [],
"coolingMode": "automatic",
"ambientTemperature": 24.5,
"shutdownOnInsufficientFans": True,
"airflowDirection": "frontToBackAirflow",
"overrideFanSpeed": 0,
"powerSupplySlots": [
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498937.0240965,
"maxSpeed": 23000,
"lastSpeedStableChangeTime": 1682499033.0403435,
"configuredSpeed": 30,
"actualSpeed": 33,
"speedHwOverride": True,
"speedStable": True,
"label": "PowerSupply1/1",
}
],
"speed": 30,
"label": "PowerSupply1",
},
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498935.9121106,
"maxSpeed": 23000,
"lastSpeedStableChangeTime": 1682499092.4665174,
"configuredSpeed": 30,
"actualSpeed": 33,
"speedHwOverride": True,
"speedStable": True,
"label": "PowerSupply2/1",
}
],
"speed": 30,
"label": "PowerSupply2",
},
],
"fanTraySlots": [
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498923.9303148,
"maxSpeed": 17500,
"lastSpeedStableChangeTime": 1682498975.0139885,
"configuredSpeed": 30,
"actualSpeed": 29,
"speedHwOverride": False,
"speedStable": True,
"label": "1/1",
}
],
"speed": 30,
"label": "1",
},
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498923.9304729,
"maxSpeed": 17500,
"lastSpeedStableChangeTime": 1682498939.9329433,
"configuredSpeed": 30,
"actualSpeed": 30,
"speedHwOverride": False,
"speedStable": True,
"label": "2/1",
}
],
"speed": 30,
"label": "2",
},
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498923.9383528,
"maxSpeed": 17500,
"lastSpeedStableChangeTime": 1682498975.0140095,
"configuredSpeed": 30,
"actualSpeed": 30,
"speedHwOverride": False,
"speedStable": True,
"label": "3/1",
}
],
"speed": 30,
"label": "3",
},
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498923.9303904,
"maxSpeed": 17500,
"lastSpeedStableChangeTime": 1682498975.0140295,
"configuredSpeed": 30,
"actualSpeed": 30,
"speedHwOverride": False,
"speedStable": True,
"label": "4/1",
}
],
"speed": 30,
"label": "4",
},
],
"minFanSpeed": 0,
"currentZones": 1,
"configuredZones": 0,
"systemStatus": "coolingOk",
}
],
"inputs": {"states": ["ok"]},
"expected": {"result": AntaTestStatus.SUCCESS},
},
(VerifyEnvironmentCooling, "success-additional-states"): {
"eos_data": [
{
"defaultZones": False,
"numCoolingZones": [],
"coolingMode": "automatic",
"ambientTemperature": 24.5,
"shutdownOnInsufficientFans": True,
"airflowDirection": "frontToBackAirflow",
"overrideFanSpeed": 0,
"powerSupplySlots": [
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498937.0240965,
"maxSpeed": 23000,
"lastSpeedStableChangeTime": 1682499033.0403435,
"configuredSpeed": 30,
"actualSpeed": 33,
"speedHwOverride": True,
"speedStable": True,
"label": "PowerSupply1/1",
}
],
"speed": 30,
"label": "PowerSupply1",
},
{
"status": "ok",
"fans": [
{
"status": "powerLoss",
"uptime": 1682498935.9121106,
"maxSpeed": 23000,
"lastSpeedStableChangeTime": 1682499092.4665174,
"configuredSpeed": 30,
"actualSpeed": 33,
"speedHwOverride": True,
"speedStable": True,
"label": "PowerSupply2/1",
}
],
"speed": 30,
"label": "PowerSupply2",
},
],
"fanTraySlots": [
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498923.9303148,
"maxSpeed": 17500,
"lastSpeedStableChangeTime": 1682498975.0139885,
"configuredSpeed": 30,
"actualSpeed": 29,
"speedHwOverride": False,
"speedStable": True,
"label": "1/1",
}
],
"speed": 30,
"label": "1",
},
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498923.9304729,
"maxSpeed": 17500,
"lastSpeedStableChangeTime": 1682498939.9329433,
"configuredSpeed": 30,
"actualSpeed": 30,
"speedHwOverride": False,
"speedStable": True,
"label": "2/1",
}
],
"speed": 30,
"label": "2",
},
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498923.9383528,
"maxSpeed": 17500,
"lastSpeedStableChangeTime": 1682498975.0140095,
"configuredSpeed": 30,
"actualSpeed": 30,
"speedHwOverride": False,
"speedStable": True,
"label": "3/1",
}
],
"speed": 30,
"label": "3",
},
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498923.9303904,
"maxSpeed": 17500,
"lastSpeedStableChangeTime": 1682498975.0140295,
"configuredSpeed": 30,
"actualSpeed": 30,
"speedHwOverride": False,
"speedStable": True,
"label": "4/1",
}
],
"speed": 30,
"label": "4",
},
],
"minFanSpeed": 0,
"currentZones": 1,
"configuredZones": 0,
"systemStatus": "coolingOk",
}
],
"inputs": {"states": ["ok", "powerLoss"]},
"expected": {"result": AntaTestStatus.SUCCESS},
},
(VerifyEnvironmentCooling, "failure-fan-tray"): {
"eos_data": [
{
"defaultZones": False,
"numCoolingZones": [],
"coolingMode": "automatic",
"ambientTemperature": 24.5,
"shutdownOnInsufficientFans": True,
"airflowDirection": "frontToBackAirflow",
"overrideFanSpeed": 0,
"powerSupplySlots": [
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498937.0240965,
"maxSpeed": 23000,
"lastSpeedStableChangeTime": 1682499033.0403435,
"configuredSpeed": 30,
"actualSpeed": 33,
"speedHwOverride": True,
"speedStable": True,
"label": "PowerSupply1/1",
}
],
"speed": 30,
"label": "PowerSupply1",
},
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498935.9121106,
"maxSpeed": 23000,
"lastSpeedStableChangeTime": 1682499092.4665174,
"configuredSpeed": 30,
"actualSpeed": 33,
"speedHwOverride": True,
"speedStable": True,
"label": "PowerSupply2/1",
}
],
"speed": 30,
"label": "PowerSupply2",
},
],
"fanTraySlots": [
{
"status": "ok",
"fans": [
{
"status": "unknownHwStatus",
"uptime": 1682498923.9303148,
"maxSpeed": 17500,
"lastSpeedStableChangeTime": 1682498975.0139885,
"configuredSpeed": 30,
"actualSpeed": 29,
"speedHwOverride": False,
"speedStable": True,
"label": "1/1",
}
],
"speed": 30,
"label": "1",
},
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498923.9304729,
"maxSpeed": 17500,
"lastSpeedStableChangeTime": 1682498939.9329433,
"configuredSpeed": 30,
"actualSpeed": 30,
"speedHwOverride": False,
"speedStable": True,
"label": "2/1",
}
],
"speed": 30,
"label": "2",
},
{
"status": "ok",
"fans": [
{
"status": "powerLoss",
"uptime": 1682498923.9383528,
"maxSpeed": 17500,
"lastSpeedStableChangeTime": 1682498975.0140095,
"configuredSpeed": 30,
"actualSpeed": 30,
"speedHwOverride": False,
"speedStable": True,
"label": "3/1",
}
],
"speed": 30,
"label": "3",
},
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498923.9303904,
"maxSpeed": 17500,
"lastSpeedStableChangeTime": 1682498975.0140295,
"configuredSpeed": 30,
"actualSpeed": 30,
"speedHwOverride": False,
"speedStable": True,
"label": "4/1",
}
],
"speed": 30,
"label": "4",
},
],
"minFanSpeed": 0,
"currentZones": 1,
"configuredZones": 0,
"systemStatus": "CoolingKo",
}
],
"inputs": {"states": ["ok", "powerLoss"]},
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["Fan Tray: 1 Fan: 1/1 - Invalid state - Expected: ok, powerLoss Actual: unknownHwStatus"]},
},
(VerifyEnvironmentCooling, "failure-power-supply"): {
"eos_data": [
{
"defaultZones": False,
"numCoolingZones": [],
"coolingMode": "automatic",
"ambientTemperature": 24.5,
"shutdownOnInsufficientFans": True,
"airflowDirection": "frontToBackAirflow",
"overrideFanSpeed": 0,
"powerSupplySlots": [
{
"status": "ok",
"fans": [
{
"status": "unknownHwStatus",
"uptime": 1682498937.0240965,
"maxSpeed": 23000,
"lastSpeedStableChangeTime": 1682499033.0403435,
"configuredSpeed": 30,
"actualSpeed": 33,
"speedHwOverride": True,
"speedStable": True,
"label": "PowerSupply1/1",
}
],
"speed": 30,
"label": "PowerSupply1",
},
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498935.9121106,
"maxSpeed": 23000,
"lastSpeedStableChangeTime": 1682499092.4665174,
"configuredSpeed": 30,
"actualSpeed": 33,
"speedHwOverride": True,
"speedStable": True,
"label": "PowerSupply2/1",
}
],
"speed": 30,
"label": "PowerSupply2",
},
],
"fanTraySlots": [
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498923.9303148,
"maxSpeed": 17500,
"lastSpeedStableChangeTime": 1682498975.0139885,
"configuredSpeed": 30,
"actualSpeed": 29,
"speedHwOverride": False,
"speedStable": True,
"label": "1/1",
}
],
"speed": 30,
"label": "1",
},
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498923.9304729,
"maxSpeed": 17500,
"lastSpeedStableChangeTime": 1682498939.9329433,
"configuredSpeed": 30,
"actualSpeed": 30,
"speedHwOverride": False,
"speedStable": True,
"label": "2/1",
}
],
"speed": 30,
"label": "2",
},
{
"status": "ok",
"fans": [
{
"status": "powerLoss",
"uptime": 1682498923.9383528,
"maxSpeed": 17500,
"lastSpeedStableChangeTime": 1682498975.0140095,
"configuredSpeed": 30,
"actualSpeed": 30,
"speedHwOverride": False,
"speedStable": True,
"label": "3/1",
}
],
"speed": 30,
"label": "3",
},
{
"status": "ok",
"fans": [
{
"status": "ok",
"uptime": 1682498923.9303904,
"maxSpeed": 17500,
"lastSpeedStableChangeTime": 1682498975.0140295,
"configuredSpeed": 30,
"actualSpeed": 30,
"speedHwOverride": False,
"speedStable": True,
"label": "4/1",
}
],
"speed": 30,
"label": "4",
},
],
"minFanSpeed": 0,
"currentZones": 1,
"configuredZones": 0,
"systemStatus": "CoolingKo",
}
],
"inputs": {"states": ["ok", "powerLoss"]},
"expected": {
"result": AntaTestStatus.FAILURE,
"messages": ["Power Slot: PowerSupply1 Fan: PowerSupply1/1 - Invalid state - Expected: ok, powerLoss Actual: unknownHwStatus"],
},
},
(VerifyEnvironmentPower, "success"): {
"eos_data": [
{
"powerSupplies": {
"1": {
"outputPower": 0.0,
"modelName": "PWR-500AC-F",
"capacity": 500.0,
"tempSensors": {
"TempSensorP1/2": {"status": "ok", "temperature": 0.0},
"TempSensorP1/3": {"status": "ok", "temperature": 0.0},
"TempSensorP1/1": {"status": "ok", "temperature": 0.0},
},
"fans": {"FanP1/1": {"status": "ok", "speed": 33}},
"state": "ok",
"inputCurrent": 0.0,
"dominant": False,
"inputVoltage": 0.0,
"outputCurrent": 0.0,
"managed": True,
},
"2": {
"outputPower": 117.375,
"uptime": 1682498935.9121966,
"modelName": "PWR-500AC-F",
"capacity": 500.0,
"tempSensors": {
"TempSensorP2/1": {"status": "ok", "temperature": 39.0},
"TempSensorP2/3": {"status": "ok", "temperature": 43.0},
"TempSensorP2/2": {"status": "ok", "temperature": 31.0},
},
"fans": {"FanP2/1": {"status": "ok", "speed": 33}},
"state": "ok",
"inputCurrent": 0.572265625,
"dominant": False,
"inputVoltage": 232.5,
"outputCurrent": 9.828125,
"managed": True,
},
}
}
],
"inputs": {"states": ["ok"]},
"expected": {"result": AntaTestStatus.SUCCESS},
},
(VerifyEnvironmentPower, "success-additional-states"): {
"eos_data": [
{
"powerSupplies": {
"1": {
"outputPower": 0.0,
"modelName": "PWR-500AC-F",
"capacity": 500.0,
"tempSensors": {
"TempSensorP1/2": {"status": "ok", "temperature": 0.0},
"TempSensorP1/3": {"status": "ok", "temperature": 0.0},
"TempSensorP1/1": {"status": "ok", "temperature": 0.0},
},
"fans": {"FanP1/1": {"status": "ok", "speed": 33}},
"state": "powerLoss",
"inputCurrent": 0.0,
"dominant": False,
"inputVoltage": 0.0,
"outputCurrent": 0.0,
"managed": True,
},
"2": {
"outputPower": 117.375,
"uptime": 1682498935.9121966,
"modelName": "PWR-500AC-F",
"capacity": 500.0,
"tempSensors": {
"TempSensorP2/1": {"status": "ok", "temperature": 39.0},
"TempSensorP2/3": {"status": "ok", "temperature": 43.0},
"TempSensorP2/2": {"status": "ok", "temperature": 31.0},
},
"fans": {"FanP2/1": {"status": "ok", "speed": 33}},
"state": "ok",
"inputCurrent": 0.572265625,
"dominant": False,
"inputVoltage": 232.5,
"outputCurrent": 9.828125,
"managed": True,
},
}
}
],
"inputs": {"states": ["ok", "powerLoss"]},
"expected": {"result": AntaTestStatus.SUCCESS},
},
(VerifyEnvironmentPower, "failure"): {
"eos_data": [
{
"powerSupplies": {
"1": {
"outputPower": 0.0,
"modelName": "PWR-500AC-F",
"capacity": 500.0,
"tempSensors": {
"TempSensorP1/2": {"status": "ok", "temperature": 0.0},
"TempSensorP1/3": {"status": "ok", "temperature": 0.0},
"TempSensorP1/1": {"status": "ok", "temperature": 0.0},
},
"fans": {"FanP1/1": {"status": "ok", "speed": 33}},
"state": "powerLoss",
"inputCurrent": 0.0,
"dominant": False,
"inputVoltage": 0.0,
"outputCurrent": 0.0,
"managed": True,
},
"2": {
"outputPower": 117.375,
"uptime": 1682498935.9121966,
"modelName": "PWR-500AC-F",
"capacity": 500.0,
"tempSensors": {
"TempSensorP2/1": {"status": "ok", "temperature": 39.0},
"TempSensorP2/3": {"status": "ok", "temperature": 43.0},
"TempSensorP2/2": {"status": "ok", "temperature": 31.0},
},
"fans": {"FanP2/1": {"status": "ok", "speed": 33}},
"state": "ok",
"inputCurrent": 0.572265625,
"dominant": False,
"inputVoltage": 232.5,
"outputCurrent": 9.828125,
"managed": True,
},
}
}
],
"inputs": {"states": ["ok"]},
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["Power Slot: 1 - Invalid power supplies state - Expected: ok Actual: powerLoss"]},
},
(VerifyAdverseDrops, "success"): {"eos_data": [{"totalAdverseDrops": 0}], "expected": {"result": AntaTestStatus.SUCCESS}},
(VerifyAdverseDrops, "failure"): {
"eos_data": [{"totalAdverseDrops": 10}],
"expected": {"result": AntaTestStatus.FAILURE, "messages": ["Incorrect total adverse drops counter - Expected: 0 Actual: 10"]},
},
}