summaryrefslogtreecommitdiffstats
path: root/tests/units/anta_tests
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-17 09:02:00 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-17 09:02:00 +0000
commitab75044d21e47a84224ec8f664440d42fd5fc4be (patch)
treedda163e45555d3eecc2a63934a259a19a4b4b0fa /tests/units/anta_tests
parentReleasing progress-linux version 0.15.0-1. (diff)
downloadanta-ab75044d21e47a84224ec8f664440d42fd5fc4be.tar.xz
anta-ab75044d21e47a84224ec8f664440d42fd5fc4be.zip
Merging upstream version 1.0.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/units/anta_tests')
-rw-r--r--tests/units/anta_tests/routing/test_isis.py1350
1 files changed, 1349 insertions, 1 deletions
diff --git a/tests/units/anta_tests/routing/test_isis.py b/tests/units/anta_tests/routing/test_isis.py
index ec41105..2167ea4 100644
--- a/tests/units/anta_tests/routing/test_isis.py
+++ b/tests/units/anta_tests/routing/test_isis.py
@@ -3,11 +3,23 @@
# that can be found in the LICENSE file.
"""Tests for anta.tests.routing.ospf.py."""
+# pylint: disable=too-many-lines
+
from __future__ import annotations
from typing import Any
-from anta.tests.routing.isis import VerifyISISInterfaceMode, VerifyISISNeighborCount, VerifyISISNeighborState
+import pytest
+
+from anta.tests.routing.isis import (
+ VerifyISISInterfaceMode,
+ VerifyISISNeighborCount,
+ VerifyISISNeighborState,
+ VerifyISISSegmentRoutingAdjacencySegments,
+ VerifyISISSegmentRoutingDataplane,
+ VerifyISISSegmentRoutingTunnels,
+ _get_interface_data,
+)
from tests.lib.anta import test # noqa: F401; pylint: disable=W0611
DATA: list[dict[str, Any]] = [
@@ -155,6 +167,18 @@ DATA: list[dict[str, Any]] = [
},
},
{
+ "name": "skipped - no neighbor",
+ "test": VerifyISISNeighborState,
+ "eos_data": [
+ {"vrfs": {"default": {"isisInstances": {"CORE-ISIS": {"neighbors": {}}}}}},
+ ],
+ "inputs": None,
+ "expected": {
+ "result": "skipped",
+ "messages": ["No IS-IS neighbor detected"],
+ },
+ },
+ {
"name": "success only default vrf",
"test": VerifyISISNeighborCount,
"eos_data": [
@@ -227,6 +251,108 @@ DATA: list[dict[str, Any]] = [
"expected": {"result": "success"},
},
{
+ "name": "skipped - no neighbor",
+ "test": VerifyISISNeighborCount,
+ "eos_data": [
+ {"vrfs": {"default": {"isisInstances": {"CORE-ISIS": {"interfaces": {}}}}}},
+ ],
+ "inputs": {
+ "interfaces": [
+ {"name": "Ethernet1", "level": 2, "count": 1},
+ ]
+ },
+ "expected": {
+ "result": "skipped",
+ "messages": ["No IS-IS neighbor detected"],
+ },
+ },
+ {
+ "name": "failure - missing interface",
+ "test": VerifyISISNeighborCount,
+ "eos_data": [
+ {
+ "vrfs": {
+ "default": {
+ "isisInstances": {
+ "CORE-ISIS": {
+ "interfaces": {
+ "Ethernet1": {
+ "intfLevels": {
+ "2": {
+ "ipv4Metric": 10,
+ "numAdjacencies": 0,
+ "linkId": "84",
+ "sharedSecretProfile": "",
+ "isisAdjacencies": [],
+ "passive": False,
+ "v4Protection": "link",
+ "v6Protection": "disabled",
+ }
+ },
+ "interfaceSpeed": 1000,
+ "areaProxyBoundary": False,
+ },
+ }
+ }
+ }
+ }
+ }
+ },
+ ],
+ "inputs": {
+ "interfaces": [
+ {"name": "Ethernet2", "level": 2, "count": 1},
+ ]
+ },
+ "expected": {
+ "result": "failure",
+ "messages": ["No neighbor detected for interface Ethernet2"],
+ },
+ },
+ {
+ "name": "failure - wrong count",
+ "test": VerifyISISNeighborCount,
+ "eos_data": [
+ {
+ "vrfs": {
+ "default": {
+ "isisInstances": {
+ "CORE-ISIS": {
+ "interfaces": {
+ "Ethernet1": {
+ "intfLevels": {
+ "2": {
+ "ipv4Metric": 10,
+ "numAdjacencies": 3,
+ "linkId": "84",
+ "sharedSecretProfile": "",
+ "isisAdjacencies": [],
+ "passive": False,
+ "v4Protection": "link",
+ "v6Protection": "disabled",
+ }
+ },
+ "interfaceSpeed": 1000,
+ "areaProxyBoundary": False,
+ },
+ }
+ }
+ }
+ }
+ }
+ },
+ ],
+ "inputs": {
+ "interfaces": [
+ {"name": "Ethernet1", "level": 2, "count": 1},
+ ]
+ },
+ "expected": {
+ "result": "failure",
+ "messages": ["Interface Ethernet1: expected Level 2: count 1, got Level 2: count 3"],
+ },
+ },
+ {
"name": "success VerifyISISInterfaceMode only default vrf",
"test": VerifyISISInterfaceMode,
"eos_data": [
@@ -567,4 +693,1226 @@ DATA: list[dict[str, Any]] = [
],
},
},
+ {
+ "name": "skipped VerifyISISInterfaceMode no vrf",
+ "test": VerifyISISInterfaceMode,
+ "eos_data": [{"vrfs": {}}],
+ "inputs": {
+ "interfaces": [
+ {"name": "Loopback0", "mode": "passive"},
+ {"name": "Ethernet2", "mode": "passive"},
+ {"name": "Ethernet1", "mode": "point-to-point", "vrf": "default"},
+ ]
+ },
+ "expected": {"result": "skipped", "messages": ["IS-IS is not configured on device"]},
+ },
+ {
+ "name": "Skipped of VerifyISISSegmentRoutingAdjacencySegments no VRF.",
+ "test": VerifyISISSegmentRoutingAdjacencySegments,
+ "eos_data": [{"vrfs": {}}],
+ "inputs": {
+ "instances": [
+ {
+ "name": "CORE-ISIS",
+ "vrf": "default",
+ "segments": [
+ {
+ "interface": "Ethernet2",
+ "address": "10.0.1.3",
+ "sid_origin": "dynamic",
+ }
+ ],
+ }
+ ]
+ },
+ "expected": {"result": "skipped", "messages": ["IS-IS is not configured on device"]},
+ },
+ {
+ "test": VerifyISISSegmentRoutingAdjacencySegments,
+ "name": "Success of VerifyISISSegmentRoutingAdjacencySegments in default VRF.",
+ "eos_data": [
+ {
+ "vrfs": {
+ "default": {
+ "isisInstances": {
+ "CORE-ISIS": {
+ "dataPlane": "MPLS",
+ "routerId": "1.0.0.11",
+ "systemId": "0168.0000.0011",
+ "hostname": "s1-pe01",
+ "adjSidAllocationMode": "SrOnly",
+ "adjSidPoolBase": 116384,
+ "adjSidPoolSize": 16384,
+ "adjacencySegments": [
+ {
+ "ipAddress": "10.0.1.3",
+ "localIntf": "Ethernet2",
+ "sid": 116384,
+ "lan": False,
+ "sidOrigin": "dynamic",
+ "protection": "unprotected",
+ "flags": {
+ "b": False,
+ "v": True,
+ "l": True,
+ "f": False,
+ "s": False,
+ },
+ "level": 2,
+ },
+ {
+ "ipAddress": "10.0.1.1",
+ "localIntf": "Ethernet1",
+ "sid": 116385,
+ "lan": False,
+ "sidOrigin": "dynamic",
+ "protection": "unprotected",
+ "flags": {
+ "b": False,
+ "v": True,
+ "l": True,
+ "f": False,
+ "s": False,
+ },
+ "level": 2,
+ },
+ ],
+ "receivedGlobalAdjacencySegments": [],
+ "misconfiguredAdjacencySegments": [],
+ }
+ }
+ }
+ }
+ }
+ ],
+ "inputs": {
+ "instances": [
+ {
+ "name": "CORE-ISIS",
+ "vrf": "default",
+ "segments": [
+ {
+ "interface": "Ethernet2",
+ "address": "10.0.1.3",
+ "sid_origin": "dynamic",
+ }
+ ],
+ }
+ ]
+ },
+ "expected": {
+ "result": "success",
+ "messages": [],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingAdjacencySegments,
+ "name": "Failure of VerifyISISSegmentRoutingAdjacencySegments in default VRF for incorrect segment definition.",
+ "eos_data": [
+ {
+ "vrfs": {
+ "default": {
+ "isisInstances": {
+ "CORE-ISIS": {
+ "dataPlane": "MPLS",
+ "routerId": "1.0.0.11",
+ "systemId": "0168.0000.0011",
+ "hostname": "s1-pe01",
+ "adjSidAllocationMode": "SrOnly",
+ "adjSidPoolBase": 116384,
+ "adjSidPoolSize": 16384,
+ "adjacencySegments": [
+ {
+ "ipAddress": "10.0.1.3",
+ "localIntf": "Ethernet2",
+ "sid": 116384,
+ "lan": False,
+ "sidOrigin": "dynamic",
+ "protection": "unprotected",
+ "flags": {
+ "b": False,
+ "v": True,
+ "l": True,
+ "f": False,
+ "s": False,
+ },
+ "level": 2,
+ },
+ {
+ "ipAddress": "10.0.1.1",
+ "localIntf": "Ethernet1",
+ "sid": 116385,
+ "lan": False,
+ "sidOrigin": "dynamic",
+ "protection": "unprotected",
+ "flags": {
+ "b": False,
+ "v": True,
+ "l": True,
+ "f": False,
+ "s": False,
+ },
+ "level": 2,
+ },
+ ],
+ "receivedGlobalAdjacencySegments": [],
+ "misconfiguredAdjacencySegments": [],
+ }
+ }
+ }
+ }
+ }
+ ],
+ "inputs": {
+ "instances": [
+ {
+ "name": "CORE-ISIS",
+ "vrf": "default",
+ "segments": [
+ {
+ "interface": "Ethernet2",
+ "address": "10.0.1.3",
+ "sid_origin": "dynamic",
+ },
+ {
+ "interface": "Ethernet3",
+ "address": "10.0.1.2",
+ "sid_origin": "dynamic",
+ },
+ ],
+ }
+ ]
+ },
+ "expected": {
+ "result": "failure",
+ "messages": ["Your segment has not been found: interface='Ethernet3' level=2 sid_origin='dynamic' address=IPv4Address('10.0.1.2')."],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingAdjacencySegments,
+ "name": "Failure of VerifyISISSegmentRoutingAdjacencySegments with incorrect VRF.",
+ "eos_data": [
+ {
+ "vrfs": {
+ "default": {
+ "isisInstances": {
+ "CORE-ISIS": {
+ "dataPlane": "MPLS",
+ "routerId": "1.0.0.11",
+ "systemId": "0168.0000.0011",
+ "hostname": "s1-pe01",
+ "adjSidAllocationMode": "SrOnly",
+ "adjSidPoolBase": 116384,
+ "adjSidPoolSize": 16384,
+ "adjacencySegments": [
+ {
+ "ipAddress": "10.0.1.3",
+ "localIntf": "Ethernet2",
+ "sid": 116384,
+ "lan": False,
+ "sidOrigin": "dynamic",
+ "protection": "unprotected",
+ "flags": {
+ "b": False,
+ "v": True,
+ "l": True,
+ "f": False,
+ "s": False,
+ },
+ "level": 2,
+ },
+ {
+ "ipAddress": "10.0.1.1",
+ "localIntf": "Ethernet1",
+ "sid": 116385,
+ "lan": False,
+ "sidOrigin": "dynamic",
+ "protection": "unprotected",
+ "flags": {
+ "b": False,
+ "v": True,
+ "l": True,
+ "f": False,
+ "s": False,
+ },
+ "level": 2,
+ },
+ ],
+ "receivedGlobalAdjacencySegments": [],
+ "misconfiguredAdjacencySegments": [],
+ }
+ }
+ }
+ }
+ }
+ ],
+ "inputs": {
+ "instances": [
+ {
+ "name": "CORE-ISIS",
+ "vrf": "custom",
+ "segments": [
+ {
+ "interface": "Ethernet2",
+ "address": "10.0.1.3",
+ "sid_origin": "dynamic",
+ },
+ {
+ "interface": "Ethernet3",
+ "address": "10.0.1.2",
+ "sid_origin": "dynamic",
+ },
+ ],
+ }
+ ]
+ },
+ "expected": {
+ "result": "failure",
+ "messages": ["VRF custom is not configured to run segment routging."],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingAdjacencySegments,
+ "name": "Failure of VerifyISISSegmentRoutingAdjacencySegments with incorrect Instance.",
+ "eos_data": [
+ {
+ "vrfs": {
+ "default": {
+ "isisInstances": {
+ "CORE-ISIS": {
+ "dataPlane": "MPLS",
+ "routerId": "1.0.0.11",
+ "systemId": "0168.0000.0011",
+ "hostname": "s1-pe01",
+ "adjSidAllocationMode": "SrOnly",
+ "adjSidPoolBase": 116384,
+ "adjSidPoolSize": 16384,
+ "adjacencySegments": [
+ {
+ "ipAddress": "10.0.1.3",
+ "localIntf": "Ethernet2",
+ "sid": 116384,
+ "lan": False,
+ "sidOrigin": "dynamic",
+ "protection": "unprotected",
+ "flags": {
+ "b": False,
+ "v": True,
+ "l": True,
+ "f": False,
+ "s": False,
+ },
+ "level": 2,
+ },
+ {
+ "ipAddress": "10.0.1.1",
+ "localIntf": "Ethernet1",
+ "sid": 116385,
+ "lan": False,
+ "sidOrigin": "dynamic",
+ "protection": "unprotected",
+ "flags": {
+ "b": False,
+ "v": True,
+ "l": True,
+ "f": False,
+ "s": False,
+ },
+ "level": 2,
+ },
+ ],
+ "receivedGlobalAdjacencySegments": [],
+ "misconfiguredAdjacencySegments": [],
+ }
+ }
+ }
+ }
+ }
+ ],
+ "inputs": {
+ "instances": [
+ {
+ "name": "CORE-ISIS2",
+ "vrf": "default",
+ "segments": [
+ {
+ "interface": "Ethernet2",
+ "address": "10.0.1.3",
+ "sid_origin": "dynamic",
+ },
+ {
+ "interface": "Ethernet3",
+ "address": "10.0.1.2",
+ "sid_origin": "dynamic",
+ },
+ ],
+ }
+ ]
+ },
+ "expected": {
+ "result": "failure",
+ "messages": ["Instance CORE-ISIS2 is not found in vrf default."],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingAdjacencySegments,
+ "name": "Failure of VerifyISISSegmentRoutingAdjacencySegments with incorrect segment info.",
+ "eos_data": [
+ {
+ "vrfs": {
+ "default": {
+ "isisInstances": {
+ "CORE-ISIS": {
+ "dataPlane": "MPLS",
+ "routerId": "1.0.0.11",
+ "systemId": "0168.0000.0011",
+ "hostname": "s1-pe01",
+ "adjSidAllocationMode": "SrOnly",
+ "adjSidPoolBase": 116384,
+ "adjSidPoolSize": 16384,
+ "adjacencySegments": [
+ {
+ "ipAddress": "10.0.1.3",
+ "localIntf": "Ethernet2",
+ "sid": 116384,
+ "lan": False,
+ "sidOrigin": "dynamic",
+ "protection": "unprotected",
+ "flags": {
+ "b": False,
+ "v": True,
+ "l": True,
+ "f": False,
+ "s": False,
+ },
+ "level": 2,
+ },
+ ],
+ "receivedGlobalAdjacencySegments": [],
+ "misconfiguredAdjacencySegments": [],
+ }
+ }
+ }
+ }
+ }
+ ],
+ "inputs": {
+ "instances": [
+ {
+ "name": "CORE-ISIS",
+ "vrf": "default",
+ "segments": [
+ {
+ "interface": "Ethernet2",
+ "address": "10.0.1.3",
+ "sid_origin": "dynamic",
+ "level": 1, # Wrong level
+ },
+ ],
+ }
+ ]
+ },
+ "expected": {
+ "result": "failure",
+ "messages": [
+ (
+ "Your segment is not correct: Expected: interface='Ethernet2' level=1 sid_origin='dynamic' address=IPv4Address('10.0.1.3') - "
+ "Found: {'ipAddress': '10.0.1.3', 'localIntf': 'Ethernet2', 'sid': 116384, 'lan': False, 'sidOrigin': 'dynamic', 'protection': "
+ "'unprotected', 'flags': {'b': False, 'v': True, 'l': True, 'f': False, 's': False}, 'level': 2}."
+ )
+ ],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingDataplane,
+ "name": "Check VerifyISISSegmentRoutingDataplane is running successfully",
+ "eos_data": [
+ {
+ "vrfs": {
+ "default": {
+ "isisInstances": {
+ "CORE-ISIS": {
+ "dataPlane": "MPLS",
+ "routerId": "1.0.0.11",
+ "systemId": "0168.0000.0011",
+ "hostname": "s1-pe01",
+ }
+ }
+ }
+ }
+ }
+ ],
+ "inputs": {
+ "instances": [
+ {
+ "name": "CORE-ISIS",
+ "vrf": "default",
+ "dataplane": "MPLS",
+ },
+ ]
+ },
+ "expected": {
+ "result": "success",
+ "messages": [],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingDataplane,
+ "name": "Check VerifyISISSegmentRoutingDataplane is failing with incorrect dataplane",
+ "eos_data": [
+ {
+ "vrfs": {
+ "default": {
+ "isisInstances": {
+ "CORE-ISIS": {
+ "dataPlane": "MPLS",
+ "routerId": "1.0.0.11",
+ "systemId": "0168.0000.0011",
+ "hostname": "s1-pe01",
+ }
+ }
+ }
+ }
+ }
+ ],
+ "inputs": {
+ "instances": [
+ {
+ "name": "CORE-ISIS",
+ "vrf": "default",
+ "dataplane": "unset",
+ },
+ ]
+ },
+ "expected": {
+ "result": "failure",
+ "messages": ["ISIS instance CORE-ISIS is not running dataplane unset (MPLS)"],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingDataplane,
+ "name": "Check VerifyISISSegmentRoutingDataplane is failing for unknown instance",
+ "eos_data": [
+ {
+ "vrfs": {
+ "default": {
+ "isisInstances": {
+ "CORE-ISIS": {
+ "dataPlane": "MPLS",
+ "routerId": "1.0.0.11",
+ "systemId": "0168.0000.0011",
+ "hostname": "s1-pe01",
+ }
+ }
+ }
+ }
+ }
+ ],
+ "inputs": {
+ "instances": [
+ {
+ "name": "CORE-ISIS2",
+ "vrf": "default",
+ "dataplane": "unset",
+ },
+ ]
+ },
+ "expected": {
+ "result": "failure",
+ "messages": ["Instance CORE-ISIS2 is not found in vrf default."],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingDataplane,
+ "name": "Check VerifyISISSegmentRoutingDataplane is failing for unknown VRF",
+ "eos_data": [
+ {
+ "vrfs": {
+ "default": {
+ "isisInstances": {
+ "CORE-ISIS": {
+ "dataPlane": "MPLS",
+ "routerId": "1.0.0.11",
+ "systemId": "0168.0000.0011",
+ "hostname": "s1-pe01",
+ }
+ }
+ }
+ }
+ }
+ ],
+ "inputs": {
+ "instances": [
+ {
+ "name": "CORE-ISIS",
+ "vrf": "wrong_vrf",
+ "dataplane": "unset",
+ },
+ ]
+ },
+ "expected": {
+ "result": "failure",
+ "messages": ["VRF wrong_vrf is not configured to run segment routing."],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingDataplane,
+ "name": "Check VerifyISISSegmentRoutingDataplane is skipped",
+ "eos_data": [{"vrfs": {}}],
+ "inputs": {
+ "instances": [
+ {
+ "name": "CORE-ISIS",
+ "vrf": "wrong_vrf",
+ "dataplane": "unset",
+ },
+ ]
+ },
+ "expected": {
+ "result": "skipped",
+ "messages": ["IS-IS-SR is not running on device"],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingTunnels,
+ "name": "runs successfully",
+ "eos_data": [
+ {
+ "entries": {
+ "3": {
+ "endpoint": "1.0.0.122/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "31": {
+ "endpoint": "1.0.0.13/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "32": {
+ "endpoint": "1.0.0.122/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "2": {
+ "endpoint": "1.0.0.111/32",
+ "vias": [
+ {
+ "type": "tunnel",
+ "tunnelId": {"type": "TI-LFA", "index": 4},
+ "labels": ["3"],
+ }
+ ],
+ },
+ }
+ }
+ ],
+ "inputs": {
+ "entries": [
+ {"endpoint": "1.0.0.122/32"},
+ {"endpoint": "1.0.0.13/32", "vias": [{"type": "ip"}]},
+ {
+ "endpoint": "1.0.0.111/32",
+ "vias": [{"type": "tunnel", "tunnel_id": "ti-lfa"}],
+ },
+ {
+ "endpoint": "1.0.0.122/32",
+ "vias": [
+ {"interface": "Ethernet1", "nexthop": "10.0.1.1"}, # Testing empty type
+ {"type": "ip", "interface": "Ethernet2", "nexthop": "10.0.1.3"},
+ ],
+ },
+ ]
+ },
+ "expected": {
+ "result": "success",
+ "messages": [],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingTunnels,
+ "name": "is skipped if not entry founf in EOS",
+ "eos_data": [{"entries": {}}],
+ "inputs": {
+ "entries": [
+ {"endpoint": "1.0.0.122/32"},
+ ]
+ },
+ "expected": {
+ "result": "skipped",
+ "messages": ["IS-IS-SR is not running on device."],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingTunnels,
+ "name": "runs successfully",
+ "eos_data": [
+ {
+ "entries": {
+ "2": {
+ "endpoint": "1.0.0.111/32",
+ "vias": [
+ {
+ "type": "tunnel",
+ "tunnelId": {"type": "TI-LFA", "index": 4},
+ "labels": ["3"],
+ }
+ ],
+ },
+ }
+ }
+ ],
+ "inputs": {
+ "entries": [
+ {"endpoint": "1.0.0.122/32"},
+ ]
+ },
+ "expected": {
+ "result": "failure",
+ "messages": ["Tunnel to endpoint=IPv4Network('1.0.0.122/32') vias=None is not found."],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingTunnels,
+ "name": "fails with incorrect tunnel type",
+ "eos_data": [
+ {
+ "entries": {
+ "3": {
+ "endpoint": "1.0.0.122/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "31": {
+ "endpoint": "1.0.0.13/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "32": {
+ "endpoint": "1.0.0.122/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "2": {
+ "endpoint": "1.0.0.111/32",
+ "vias": [
+ {
+ "type": "tunnel",
+ "tunnelId": {"type": "TI-LFA", "index": 4},
+ "labels": ["3"],
+ }
+ ],
+ },
+ }
+ }
+ ],
+ "inputs": {
+ "entries": [
+ {"endpoint": "1.0.0.122/32"},
+ {"endpoint": "1.0.0.13/32", "vias": [{"type": "tunnel"}]},
+ ]
+ },
+ "expected": {
+ "result": "failure",
+ "messages": ["Tunnel to 1.0.0.13/32 is incorrect: incorrect tunnel type"],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingTunnels,
+ "name": "fails with incorrect nexthop",
+ "eos_data": [
+ {
+ "entries": {
+ "3": {
+ "endpoint": "1.0.0.122/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "31": {
+ "endpoint": "1.0.0.13/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "32": {
+ "endpoint": "1.0.0.122/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "2": {
+ "endpoint": "1.0.0.111/32",
+ "vias": [
+ {
+ "type": "tunnel",
+ "tunnelId": {"type": "TI-LFA", "index": 4},
+ "labels": ["3"],
+ }
+ ],
+ },
+ }
+ }
+ ],
+ "inputs": {
+ "entries": [
+ {"endpoint": "1.0.0.122/32"},
+ {"endpoint": "1.0.0.13/32", "vias": [{"type": "ip"}]},
+ {
+ "endpoint": "1.0.0.122/32",
+ "vias": [
+ {"type": "ip", "interface": "Ethernet1", "nexthop": "10.0.1.2"},
+ {"type": "ip", "interface": "Ethernet2", "nexthop": "10.0.1.3"},
+ ],
+ },
+ ]
+ },
+ "expected": {
+ "result": "failure",
+ "messages": ["Tunnel to 1.0.0.122/32 is incorrect: incorrect nexthop"],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingTunnels,
+ "name": "fails with incorrect nexthop",
+ "eos_data": [
+ {
+ "entries": {
+ "3": {
+ "endpoint": "1.0.0.122/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "31": {
+ "endpoint": "1.0.0.13/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "32": {
+ "endpoint": "1.0.0.122/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "2": {
+ "endpoint": "1.0.0.111/32",
+ "vias": [
+ {
+ "type": "tunnel",
+ "tunnelId": {"type": "TI-LFA", "index": 4},
+ "labels": ["3"],
+ }
+ ],
+ },
+ }
+ }
+ ],
+ "inputs": {
+ "entries": [
+ {"endpoint": "1.0.0.122/32"},
+ {"endpoint": "1.0.0.13/32", "vias": [{"type": "ip"}]},
+ {
+ "endpoint": "1.0.0.122/32",
+ "vias": [
+ {"type": "ip", "interface": "Ethernet4", "nexthop": "10.0.1.1"},
+ {"type": "ip", "interface": "Ethernet2", "nexthop": "10.0.1.3"},
+ ],
+ },
+ ]
+ },
+ "expected": {
+ "result": "failure",
+ "messages": ["Tunnel to 1.0.0.122/32 is incorrect: incorrect interface"],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingTunnels,
+ "name": "fails with incorrect interface",
+ "eos_data": [
+ {
+ "entries": {
+ "3": {
+ "endpoint": "1.0.0.122/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "31": {
+ "endpoint": "1.0.0.13/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "32": {
+ "endpoint": "1.0.0.122/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "2": {
+ "endpoint": "1.0.0.111/32",
+ "vias": [
+ {
+ "type": "tunnel",
+ "tunnelId": {"type": "TI-LFA", "index": 4},
+ "labels": ["3"],
+ }
+ ],
+ },
+ }
+ }
+ ],
+ "inputs": {
+ "entries": [
+ {"endpoint": "1.0.0.122/32"},
+ {"endpoint": "1.0.0.13/32", "vias": [{"type": "ip"}]},
+ {
+ "endpoint": "1.0.0.122/32",
+ "vias": [
+ {"type": "ip", "interface": "Ethernet1", "nexthop": "10.0.1.2"},
+ {"type": "ip", "interface": "Ethernet2", "nexthop": "10.0.1.3"},
+ ],
+ },
+ ]
+ },
+ "expected": {
+ "result": "failure",
+ "messages": ["Tunnel to 1.0.0.122/32 is incorrect: incorrect nexthop"],
+ },
+ },
+ {
+ "test": VerifyISISSegmentRoutingTunnels,
+ "name": "fails with incorrect tunnel ID type",
+ "eos_data": [
+ {
+ "entries": {
+ "3": {
+ "endpoint": "1.0.0.122/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "31": {
+ "endpoint": "1.0.0.13/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "32": {
+ "endpoint": "1.0.0.122/32",
+ "vias": [
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.1",
+ "interface": "Ethernet1",
+ "labels": ["900021"],
+ },
+ {
+ "type": "ip",
+ "nexthop": "10.0.1.3",
+ "interface": "Ethernet2",
+ "labels": ["900021"],
+ },
+ ],
+ },
+ "2": {
+ "endpoint": "1.0.0.111/32",
+ "vias": [
+ {
+ "type": "tunnel",
+ "tunnelId": {"type": "TI-LFA", "index": 4},
+ "labels": ["3"],
+ }
+ ],
+ },
+ }
+ }
+ ],
+ "inputs": {
+ "entries": [
+ {"endpoint": "1.0.0.122/32"},
+ {"endpoint": "1.0.0.13/32", "vias": [{"type": "ip"}]},
+ {
+ "endpoint": "1.0.0.111/32",
+ "vias": [
+ {"type": "tunnel", "tunnel_id": "unset"},
+ ],
+ },
+ ]
+ },
+ "expected": {
+ "result": "failure",
+ "messages": ["Tunnel to 1.0.0.111/32 is incorrect: incorrect tunnel ID"],
+ },
+ },
]
+
+
+COMMAND_OUTPUT = {
+ "vrfs": {
+ "default": {
+ "isisInstances": {
+ "CORE-ISIS": {
+ "interfaces": {
+ "Loopback0": {
+ "enabled": True,
+ "intfLevels": {
+ "2": {
+ "ipv4Metric": 10,
+ "sharedSecretProfile": "",
+ "isisAdjacencies": [],
+ "passive": True,
+ "v4Protection": "disabled",
+ "v6Protection": "disabled",
+ }
+ },
+ "areaProxyBoundary": False,
+ },
+ "Ethernet1": {
+ "intfLevels": {
+ "2": {
+ "ipv4Metric": 10,
+ "numAdjacencies": 1,
+ "linkId": "84",
+ "sharedSecretProfile": "",
+ "isisAdjacencies": [],
+ "passive": False,
+ "v4Protection": "link",
+ "v6Protection": "disabled",
+ }
+ },
+ "interfaceSpeed": 1000,
+ "areaProxyBoundary": False,
+ },
+ }
+ }
+ }
+ },
+ "EMPTY": {"isisInstances": {}},
+ "NO_INTERFACES": {"isisInstances": {"CORE-ISIS": {}}},
+ }
+}
+EXPECTED_LOOPBACK_0_OUTPUT = {
+ "enabled": True,
+ "intfLevels": {
+ "2": {
+ "ipv4Metric": 10,
+ "sharedSecretProfile": "",
+ "isisAdjacencies": [],
+ "passive": True,
+ "v4Protection": "disabled",
+ "v6Protection": "disabled",
+ }
+ },
+ "areaProxyBoundary": False,
+}
+
+
+@pytest.mark.parametrize(
+ ("interface", "vrf", "expected_value"),
+ [
+ pytest.param("Loopback0", "WRONG_VRF", None, id="VRF_not_found"),
+ pytest.param("Loopback0", "EMPTY", None, id="VRF_no_ISIS_instances"),
+ pytest.param("Loopback0", "NO_INTERFACES", None, id="ISIS_instance_no_interfaces"),
+ pytest.param("Loopback42", "default", None, id="interface_not_found"),
+ pytest.param("Loopback0", "default", EXPECTED_LOOPBACK_0_OUTPUT, id="interface_found"),
+ ],
+)
+def test__get_interface_data(interface: str, vrf: str, expected_value: dict[str, Any] | None) -> None:
+ """Test anta.tests.routing.isis._get_interface_data."""
+ assert _get_interface_data(interface, vrf, COMMAND_OUTPUT) == expected_value