# 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.system."""

from __future__ import annotations

from typing import Any

from anta.tests.system import (
    VerifyAgentLogs,
    VerifyCoredump,
    VerifyCPUUtilization,
    VerifyFileSystemUtilization,
    VerifyMaintenance,
    VerifyMemoryUtilization,
    VerifyNTP,
    VerifyNTPAssociations,
    VerifyReloadCause,
    VerifyUptime,
)
from tests.units.anta_tests import test

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 incorrect - Expected: 666s Actual: 665.15s"]},
    },
    {
        "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": "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 -  Expected: < 75% Actual: 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 - Expected: < 75% Actual: 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 - Higher disk space utilization - Expected: 75% Actual: 84%",
                "Mount point: none            294M   78M  217M  84% /.overlay - Higher disk space utilization - Expected: 75% Actual: 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": ["NTP status mismatch - Expected: synchronised Actual: unsynchronised"]},
    },
    {
        "name": "success",
        "test": VerifyNTPAssociations,
        "eos_data": [
            {
                "peers": {
                    "1.1.1.1": {
                        "condition": "sys.peer",
                        "peerIpAddr": "1.1.1.1",
                        "stratumLevel": 1,
                    },
                    "2.2.2.2": {
                        "condition": "candidate",
                        "peerIpAddr": "2.2.2.2",
                        "stratumLevel": 2,
                    },
                    "3.3.3.3": {
                        "condition": "candidate",
                        "peerIpAddr": "3.3.3.3",
                        "stratumLevel": 2,
                    },
                }
            }
        ],
        "inputs": {
            "ntp_servers": [
                {"server_address": "1.1.1.1", "preferred": True, "stratum": 1},
                {"server_address": "2.2.2.2", "stratum": 2},
                {"server_address": "3.3.3.3", "stratum": 2},
            ]
        },
        "expected": {"result": "success"},
    },
    {
        "name": "success-pool-name",
        "test": VerifyNTPAssociations,
        "eos_data": [
            {
                "peers": {
                    "1.ntp.networks.com": {
                        "condition": "sys.peer",
                        "peerIpAddr": "1.1.1.1",
                        "stratumLevel": 1,
                    },
                    "2.ntp.networks.com": {
                        "condition": "candidate",
                        "peerIpAddr": "2.2.2.2",
                        "stratumLevel": 2,
                    },
                    "3.ntp.networks.com": {
                        "condition": "candidate",
                        "peerIpAddr": "3.3.3.3",
                        "stratumLevel": 2,
                    },
                }
            }
        ],
        "inputs": {
            "ntp_servers": [
                {"server_address": "1.ntp.networks.com", "preferred": True, "stratum": 1},
                {"server_address": "2.ntp.networks.com", "stratum": 2},
                {"server_address": "3.ntp.networks.com", "stratum": 2},
            ]
        },
        "expected": {"result": "success"},
    },
    {
        "name": "success-ntp-pool-as-input",
        "test": VerifyNTPAssociations,
        "eos_data": [
            {
                "peers": {
                    "1.1.1.1": {
                        "condition": "sys.peer",
                        "peerIpAddr": "1.1.1.1",
                        "stratumLevel": 1,
                    },
                    "2.2.2.2": {
                        "condition": "candidate",
                        "peerIpAddr": "2.2.2.2",
                        "stratumLevel": 2,
                    },
                    "3.3.3.3": {
                        "condition": "candidate",
                        "peerIpAddr": "3.3.3.3",
                        "stratumLevel": 2,
                    },
                }
            }
        ],
        "inputs": {"ntp_pool": {"server_addresses": ["1.1.1.1", "2.2.2.2", "3.3.3.3"], "preferred_stratum_range": [1, 2]}},
        "expected": {"result": "success"},
    },
    {
        "name": "success-ntp-pool-hostname",
        "test": VerifyNTPAssociations,
        "eos_data": [
            {
                "peers": {
                    "itsys-ntp010p.aristanetworks.com": {
                        "condition": "sys.peer",
                        "peerIpAddr": "1.1.1.1",
                        "stratumLevel": 1,
                    },
                    "itsys-ntp011p.aristanetworks.com": {
                        "condition": "candidate",
                        "peerIpAddr": "2.2.2.2",
                        "stratumLevel": 2,
                    },
                    "itsys-ntp012p.aristanetworks.com": {
                        "condition": "candidate",
                        "peerIpAddr": "3.3.3.3",
                        "stratumLevel": 2,
                    },
                }
            }
        ],
        "inputs": {
            "ntp_pool": {
                "server_addresses": ["itsys-ntp010p.aristanetworks.com", "itsys-ntp011p.aristanetworks.com", "itsys-ntp012p.aristanetworks.com"],
                "preferred_stratum_range": [1, 2],
            }
        },
        "expected": {"result": "success"},
    },
    {
        "name": "success-ip-dns",
        "test": VerifyNTPAssociations,
        "eos_data": [
            {
                "peers": {
                    "1.1.1.1 (1.ntp.networks.com)": {
                        "condition": "sys.peer",
                        "peerIpAddr": "1.1.1.1",
                        "stratumLevel": 1,
                    },
                    "2.2.2.2 (2.ntp.networks.com)": {
                        "condition": "candidate",
                        "peerIpAddr": "2.2.2.2",
                        "stratumLevel": 2,
                    },
                    "3.3.3.3 (3.ntp.networks.com)": {
                        "condition": "candidate",
                        "peerIpAddr": "3.3.3.3",
                        "stratumLevel": 2,
                    },
                }
            }
        ],
        "inputs": {
            "ntp_servers": [
                {"server_address": "1.1.1.1", "preferred": True, "stratum": 1},
                {"server_address": "2.2.2.2", "stratum": 2},
                {"server_address": "3.3.3.3", "stratum": 2},
            ]
        },
        "expected": {"result": "success"},
    },
    {
        "name": "failure-ntp-server",
        "test": VerifyNTPAssociations,
        "eos_data": [
            {
                "peers": {
                    "1.1.1.1": {
                        "condition": "candidate",
                        "peerIpAddr": "1.1.1.1",
                        "stratumLevel": 2,
                    },
                    "2.2.2.2": {
                        "condition": "sys.peer",
                        "peerIpAddr": "2.2.2.2",
                        "stratumLevel": 2,
                    },
                    "3.3.3.3": {
                        "condition": "sys.peer",
                        "peerIpAddr": "3.3.3.3",
                        "stratumLevel": 3,
                    },
                }
            }
        ],
        "inputs": {
            "ntp_servers": [
                {"server_address": "1.1.1.1", "preferred": True, "stratum": 1},
                {"server_address": "2.2.2.2", "stratum": 2},
                {"server_address": "3.3.3.3", "stratum": 2},
            ]
        },
        "expected": {
            "result": "failure",
            "messages": [
                "NTP Server: 1.1.1.1 Preferred: True Stratum: 1 - Incorrect condition - Expected: sys.peer Actual: candidate",
                "NTP Server: 1.1.1.1 Preferred: True Stratum: 1 - Incorrect stratum level - Expected: 1 Actual: 2",
                "NTP Server: 2.2.2.2 Preferred: False Stratum: 2 - Incorrect condition - Expected: candidate Actual: sys.peer",
                "NTP Server: 3.3.3.3 Preferred: False Stratum: 2 - Incorrect condition - Expected: candidate Actual: sys.peer",
                "NTP Server: 3.3.3.3 Preferred: False Stratum: 2 - Incorrect stratum level - Expected: 2 Actual: 3",
            ],
        },
    },
    {
        "name": "failure-no-peers",
        "test": VerifyNTPAssociations,
        "eos_data": [{"peers": {}}],
        "inputs": {
            "ntp_servers": [
                {"server_address": "1.1.1.1", "preferred": True, "stratum": 1},
                {"server_address": "2.2.2.2", "stratum": 1},
                {"server_address": "3.3.3.3", "stratum": 1},
            ]
        },
        "expected": {
            "result": "failure",
            "messages": ["No NTP peers configured"],
        },
    },
    {
        "name": "failure-one-peer-not-found",
        "test": VerifyNTPAssociations,
        "eos_data": [
            {
                "peers": {
                    "1.1.1.1": {
                        "condition": "sys.peer",
                        "peerIpAddr": "1.1.1.1",
                        "stratumLevel": 1,
                    },
                    "2.2.2.2": {
                        "condition": "candidate",
                        "peerIpAddr": "2.2.2.2",
                        "stratumLevel": 1,
                    },
                }
            }
        ],
        "inputs": {
            "ntp_servers": [
                {"server_address": "1.1.1.1", "preferred": True, "stratum": 1},
                {"server_address": "2.2.2.2", "stratum": 1},
                {"server_address": "3.3.3.3", "stratum": 1},
            ]
        },
        "expected": {
            "result": "failure",
            "messages": ["NTP Server: 3.3.3.3 Preferred: False Stratum: 1 - Not configured"],
        },
    },
    {
        "name": "failure-with-two-peers-not-found",
        "test": VerifyNTPAssociations,
        "eos_data": [
            {
                "peers": {
                    "1.1.1.1": {
                        "condition": "candidate",
                        "peerIpAddr": "1.1.1.1",
                        "stratumLevel": 1,
                    }
                }
            }
        ],
        "inputs": {
            "ntp_servers": [
                {"server_address": "1.1.1.1", "preferred": True, "stratum": 1},
                {"server_address": "2.2.2.2", "stratum": 1},
                {"server_address": "3.3.3.3", "stratum": 1},
            ]
        },
        "expected": {
            "result": "failure",
            "messages": [
                "NTP Server: 1.1.1.1 Preferred: True Stratum: 1 - Incorrect condition - Expected: sys.peer Actual: candidate",
                "NTP Server: 2.2.2.2 Preferred: False Stratum: 1 - Not configured",
                "NTP Server: 3.3.3.3 Preferred: False Stratum: 1 - Not configured",
            ],
        },
    },
    {
        "name": "failure-ntp-pool-as-input",
        "test": VerifyNTPAssociations,
        "eos_data": [
            {
                "peers": {
                    "ntp1.pool": {
                        "condition": "sys.peer",
                        "peerIpAddr": "1.1.1.1",
                        "stratumLevel": 1,
                    },
                    "ntp2.pool": {
                        "condition": "candidate",
                        "peerIpAddr": "2.2.2.2",
                        "stratumLevel": 2,
                    },
                    "ntp3.pool": {
                        "condition": "candidate",
                        "peerIpAddr": "3.3.3.3",
                        "stratumLevel": 2,
                    },
                }
            }
        ],
        "inputs": {"ntp_pool": {"server_addresses": ["1.1.1.1", "2.2.2.2"], "preferred_stratum_range": [1, 2]}},
        "expected": {
            "result": "failure",
            "messages": ["NTP Server: 3.3.3.3 Hostname: ntp3.pool - Associated but not part of the provided NTP pool"],
        },
    },
    {
        "name": "failure-ntp-pool-as-input-bad-association",
        "test": VerifyNTPAssociations,
        "eos_data": [
            {
                "peers": {
                    "ntp1.pool": {
                        "condition": "sys.peer",
                        "peerIpAddr": "1.1.1.1",
                        "stratumLevel": 1,
                    },
                    "ntp2.pool": {
                        "condition": "candidate",
                        "peerIpAddr": "2.2.2.2",
                        "stratumLevel": 2,
                    },
                    "ntp3.pool": {
                        "condition": "reject",
                        "peerIpAddr": "3.3.3.3",
                        "stratumLevel": 3,
                    },
                }
            }
        ],
        "inputs": {"ntp_pool": {"server_addresses": ["1.1.1.1", "2.2.2.2", "3.3.3.3"], "preferred_stratum_range": [1, 2]}},
        "expected": {
            "result": "failure",
            "messages": [
                "NTP Server: 3.3.3.3 Hostname: ntp3.pool - Incorrect condition  - Expected: sys.peer, candidate Actual: reject",
                "NTP Server: 3.3.3.3 Hostname: ntp3.pool - Incorrect stratum level - Expected Stratum Range: 1 to 2 Actual: 3",
            ],
        },
    },
    {
        "name": "failure-ntp-pool-hostname",
        "test": VerifyNTPAssociations,
        "eos_data": [
            {
                "peers": {
                    "itsys-ntp010p.aristanetworks.com": {
                        "condition": "sys.peer",
                        "peerIpAddr": "1.1.1.1",
                        "stratumLevel": 5,
                    },
                    "itsys-ntp011p.aristanetworks.com": {
                        "condition": "reject",
                        "peerIpAddr": "2.2.2.2",
                        "stratumLevel": 4,
                    },
                    "itsys-ntp012p.aristanetworks.com": {
                        "condition": "candidate",
                        "peerIpAddr": "3.3.3.3",
                        "stratumLevel": 2,
                    },
                }
            }
        ],
        "inputs": {"ntp_pool": {"server_addresses": ["itsys-ntp010p.aristanetworks.com", "itsys-ntp011p.aristanetworks.com"], "preferred_stratum_range": [1, 2]}},
        "expected": {
            "result": "failure",
            "messages": [
                "NTP Server: 1.1.1.1 Hostname: itsys-ntp010p.aristanetworks.com - Incorrect stratum level - Expected Stratum Range: 1 to 2 Actual: 5",
                "NTP Server: 2.2.2.2 Hostname: itsys-ntp011p.aristanetworks.com - Incorrect condition  - Expected: sys.peer, candidate Actual: reject",
                "NTP Server: 2.2.2.2 Hostname: itsys-ntp011p.aristanetworks.com - Incorrect stratum level - Expected Stratum Range: 1 to 2 Actual: 4",
                "NTP Server: 3.3.3.3 Hostname: itsys-ntp012p.aristanetworks.com - Associated but not part of the provided NTP pool",
            ],
        },
    },
    {
        "name": "success-no-maintenance-configured",
        "test": VerifyMaintenance,
        "eos_data": [
            {
                "units": {},
                "interfaces": {},
                "vrfs": {},
                "warnings": ["Maintenance Mode is disabled."],
            },
        ],
        "inputs": None,
        "expected": {"result": "success"},
    },
    {
        "name": "success-maintenance-configured-but-not-enabled",
        "test": VerifyMaintenance,
        "eos_data": [
            {
                "units": {
                    "System": {
                        "state": "active",
                        "adminState": "active",
                        "stateChangeTime": 0.0,
                        "onBootMaintenance": False,
                        "intfsViolatingTrafficThreshold": False,
                        "aggInBpsRate": 0,
                        "aggOutBpsRate": 0,
                    }
                },
                "interfaces": {},
                "vrfs": {},
            },
        ],
        "inputs": None,
        "expected": {"result": "success"},
    },
    {
        "name": "success-multiple-units-but-not-enabled",
        "test": VerifyMaintenance,
        "eos_data": [
            {
                "units": {
                    "mlag": {
                        "state": "active",
                        "adminState": "active",
                        "stateChangeTime": 0.0,
                        "onBootMaintenance": False,
                        "intfsViolatingTrafficThreshold": False,
                        "aggInBpsRate": 0,
                        "aggOutBpsRate": 0,
                    },
                    "System": {
                        "state": "active",
                        "adminState": "active",
                        "stateChangeTime": 0.0,
                        "onBootMaintenance": False,
                        "intfsViolatingTrafficThreshold": False,
                        "aggInBpsRate": 0,
                        "aggOutBpsRate": 0,
                    },
                },
                "interfaces": {},
                "vrfs": {},
            },
        ],
        "inputs": None,
        "expected": {"result": "success"},
    },
    {
        "name": "failure-maintenance-enabled",
        "test": VerifyMaintenance,
        "eos_data": [
            {
                "units": {
                    "mlag": {
                        "state": "underMaintenance",
                        "adminState": "underMaintenance",
                        "stateChangeTime": 1741257120.9532886,
                        "onBootMaintenance": False,
                        "intfsViolatingTrafficThreshold": False,
                        "aggInBpsRate": 0,
                        "aggOutBpsRate": 0,
                    },
                    "System": {
                        "state": "active",
                        "adminState": "active",
                        "stateChangeTime": 0.0,
                        "onBootMaintenance": False,
                        "intfsViolatingTrafficThreshold": False,
                        "aggInBpsRate": 0,
                        "aggOutBpsRate": 0,
                    },
                },
                "interfaces": {},
                "vrfs": {},
            },
        ],
        "inputs": None,
        "expected": {
            "result": "failure",
            "messages": [
                "Units under maintenance: 'mlag'.",
                "Possible causes: 'Quiesce is configured'.",
            ],
        },
    },
    {
        "name": "failure-multiple-reasons",
        "test": VerifyMaintenance,
        "eos_data": [
            {
                "units": {
                    "mlag": {
                        "state": "underMaintenance",
                        "adminState": "underMaintenance",
                        "stateChangeTime": 1741257120.9532895,
                        "onBootMaintenance": False,
                        "intfsViolatingTrafficThreshold": False,
                        "aggInBpsRate": 0,
                        "aggOutBpsRate": 0,
                    },
                    "System": {
                        "state": "maintenanceModeEnter",
                        "adminState": "underMaintenance",
                        "stateChangeTime": 1741257669.7231765,
                        "onBootMaintenance": False,
                        "intfsViolatingTrafficThreshold": False,
                        "aggInBpsRate": 0,
                        "aggOutBpsRate": 0,
                    },
                },
                "interfaces": {},
                "vrfs": {},
            },
        ],
        "inputs": None,
        "expected": {
            "result": "failure",
            "messages": [
                "Units under maintenance: 'mlag'.",
                "Units entering maintenance: 'System'.",
                "Possible causes: 'Quiesce is configured'.",
            ],
        },
    },
    {
        "name": "failure-onboot-maintenance",
        "test": VerifyMaintenance,
        "eos_data": [
            {
                "units": {
                    "System": {
                        "state": "underMaintenance",
                        "adminState": "underMaintenance",
                        "stateChangeTime": 1741258774.3756502,
                        "onBootMaintenance": True,
                        "intfsViolatingTrafficThreshold": False,
                        "aggInBpsRate": 0,
                        "aggOutBpsRate": 0,
                    }
                },
                "interfaces": {},
                "vrfs": {},
            },
        ],
        "inputs": None,
        "expected": {
            "result": "failure",
            "messages": [
                "Units under maintenance: 'System'.",
                "Possible causes: 'On-boot maintenance is configured, Quiesce is configured'.",
            ],
        },
    },
    {
        "name": "failure-entering-maintenance-interface-violation",
        "test": VerifyMaintenance,
        "eos_data": [
            {
                "units": {
                    "System": {
                        "state": "maintenanceModeEnter",
                        "adminState": "underMaintenance",
                        "stateChangeTime": 1741257669.7231765,
                        "onBootMaintenance": False,
                        "intfsViolatingTrafficThreshold": True,
                        "aggInBpsRate": 0,
                        "aggOutBpsRate": 0,
                    }
                },
                "interfaces": {},
                "vrfs": {},
            },
        ],
        "inputs": None,
        "expected": {
            "result": "failure",
            "messages": [
                "Units entering maintenance: 'System'.",
                "Possible causes: 'Interface traffic threshold violation, Quiesce is configured'.",
            ],
        },
    },
]
