2025-02-05 11:39:50 +01:00
# 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.
""" Tests for anta.tests.routing.ospf.py. """
2025-02-05 11:54:06 +01:00
# pylint: disable=too-many-lines
2025-02-05 11:39:50 +01:00
from __future__ import annotations
from typing import Any
2025-02-05 11:54:06 +01:00
import pytest
from anta . tests . routing . isis import (
VerifyISISInterfaceMode ,
VerifyISISNeighborCount ,
VerifyISISNeighborState ,
VerifyISISSegmentRoutingAdjacencySegments ,
VerifyISISSegmentRoutingDataplane ,
VerifyISISSegmentRoutingTunnels ,
_get_interface_data ,
)
2025-02-05 11:54:55 +01:00
from tests . units . anta_tests import test
2025-02-05 11:39:50 +01:00
DATA : list [ dict [ str , Any ] ] = [
{
" name " : " success only default vrf " ,
" test " : VerifyISISNeighborState ,
" eos_data " : [
{
" vrfs " : {
" default " : {
" isisInstances " : {
" CORE-ISIS " : {
" neighbors " : {
" 0168.0000.0111 " : {
" adjacencies " : [
{
" hostname " : " s1-p01 " ,
" circuitId " : " 83 " ,
" interfaceName " : " Ethernet1 " ,
" state " : " up " ,
" lastHelloTime " : 1713688408 ,
" routerIdV4 " : " 1.0.0.111 " ,
}
]
} ,
" 0168.0000.0112 " : {
" adjacencies " : [
{
" hostname " : " s1-p02 " ,
" circuitId " : " 87 " ,
" interfaceName " : " Ethernet2 " ,
" state " : " up " ,
" lastHelloTime " : 1713688405 ,
" routerIdV4 " : " 1.0.0.112 " ,
}
]
} ,
}
}
}
}
}
} ,
] ,
" inputs " : None ,
" expected " : { " result " : " success " } ,
} ,
{
" name " : " success different vrfs " ,
" test " : VerifyISISNeighborState ,
" eos_data " : [
{
" vrfs " : {
" default " : {
" isisInstances " : {
" CORE-ISIS " : {
" neighbors " : {
" 0168.0000.0111 " : {
" adjacencies " : [
{
" hostname " : " s1-p01 " ,
" circuitId " : " 83 " ,
" interfaceName " : " Ethernet1 " ,
" state " : " up " ,
" lastHelloTime " : 1713688408 ,
" routerIdV4 " : " 1.0.0.111 " ,
}
]
} ,
} ,
} ,
} ,
" customer " : {
" isisInstances " : {
" CORE-ISIS " : {
" neighbors " : {
" 0168.0000.0112 " : {
" adjacencies " : [
{
" hostname " : " s1-p02 " ,
" circuitId " : " 87 " ,
" interfaceName " : " Ethernet2 " ,
" state " : " up " ,
" lastHelloTime " : 1713688405 ,
" routerIdV4 " : " 1.0.0.112 " ,
}
]
}
}
}
}
} ,
}
}
} ,
] ,
" inputs " : None ,
" expected " : { " result " : " success " } ,
} ,
{
" name " : " failure " ,
" test " : VerifyISISNeighborState ,
" eos_data " : [
{
" vrfs " : {
" default " : {
" isisInstances " : {
" CORE-ISIS " : {
" neighbors " : {
" 0168.0000.0111 " : {
" adjacencies " : [
{
" hostname " : " s1-p01 " ,
" circuitId " : " 83 " ,
" interfaceName " : " Ethernet1 " ,
" state " : " down " ,
" lastHelloTime " : 1713688408 ,
" routerIdV4 " : " 1.0.0.111 " ,
}
]
} ,
" 0168.0000.0112 " : {
" adjacencies " : [
{
" hostname " : " s1-p02 " ,
" circuitId " : " 87 " ,
" interfaceName " : " Ethernet2 " ,
" state " : " up " ,
" lastHelloTime " : 1713688405 ,
" routerIdV4 " : " 1.0.0.112 " ,
}
]
} ,
}
}
}
}
}
} ,
] ,
" inputs " : None ,
" expected " : {
" result " : " failure " ,
" messages " : [ " Some neighbors are not in the correct state (UP): [ { ' vrf ' : ' default ' , ' instance ' : ' CORE-ISIS ' , ' neighbor ' : ' s1-p01 ' , ' state ' : ' down ' }]. " ] ,
} ,
} ,
2025-02-05 11:54:06 +01:00
{
" 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 " ] ,
} ,
} ,
2025-02-05 11:39:50 +01:00
{
" name " : " success only default vrf " ,
" test " : VerifyISISNeighborCount ,
" eos_data " : [
{
" 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 ,
} ,
" Ethernet2 " : {
" enabled " : True ,
" intfLevels " : {
" 2 " : {
" ipv4Metric " : 10 ,
" numAdjacencies " : 1 ,
" linkId " : " 88 " ,
" sharedSecretProfile " : " " ,
" isisAdjacencies " : [ ] ,
" passive " : False ,
" v4Protection " : " link " ,
" v6Protection " : " disabled " ,
}
} ,
" interfaceSpeed " : 1000 ,
" areaProxyBoundary " : False ,
} ,
}
}
}
}
}
} ,
] ,
" inputs " : {
" interfaces " : [
{ " name " : " Ethernet1 " , " level " : 2 , " count " : 1 } ,
{ " name " : " Ethernet2 " , " level " : 2 , " count " : 1 } ,
]
} ,
" expected " : { " result " : " success " } ,
} ,
2025-02-05 11:54:06 +01:00
{
" 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 " ] ,
} ,
} ,
2025-02-05 11:39:50 +01:00
{
" name " : " success VerifyISISInterfaceMode only default vrf " ,
" test " : VerifyISISInterfaceMode ,
" eos_data " : [
{
" vrfs " : {
" default " : {
" isisInstances " : {
" CORE-ISIS " : {
" interfaces " : {
" Loopback0 " : {
" enabled " : True ,
" index " : 2 ,
" snpa " : " 0:0:0:0:0:0 " ,
" mtu " : 65532 ,
" interfaceAddressFamily " : " ipv4 " ,
" interfaceType " : " loopback " ,
" intfLevels " : {
" 2 " : {
" ipv4Metric " : 10 ,
" sharedSecretProfile " : " " ,
" isisAdjacencies " : [ ] ,
" passive " : True ,
" v4Protection " : " disabled " ,
" v6Protection " : " disabled " ,
}
} ,
" areaProxyBoundary " : False ,
} ,
" Ethernet1 " : {
" enabled " : True ,
" index " : 132 ,
" snpa " : " P2P " ,
" interfaceType " : " point-to-point " ,
" intfLevels " : {
" 2 " : {
" ipv4Metric " : 10 ,
" numAdjacencies " : 1 ,
" linkId " : " 84 " ,
" sharedSecretProfile " : " " ,
" isisAdjacencies " : [ ] ,
" passive " : False ,
" v4Protection " : " link " ,
" v6Protection " : " disabled " ,
}
} ,
" interfaceSpeed " : 1000 ,
" areaProxyBoundary " : False ,
} ,
" Ethernet2 " : {
" enabled " : True ,
" interfaceType " : " broadcast " ,
" intfLevels " : {
" 2 " : {
" ipv4Metric " : 10 ,
" numAdjacencies " : 0 ,
" sharedSecretProfile " : " " ,
" isisAdjacencies " : [ ] ,
" passive " : True ,
" v4Protection " : " disabled " ,
" v6Protection " : " disabled " ,
}
} ,
" interfaceSpeed " : 1000 ,
" areaProxyBoundary " : False ,
} ,
}
}
}
}
}
}
] ,
" inputs " : {
" interfaces " : [
{ " name " : " Loopback0 " , " mode " : " passive " } ,
{ " name " : " Ethernet2 " , " mode " : " passive " } ,
{ " name " : " Ethernet1 " , " mode " : " point-to-point " , " vrf " : " default " } ,
]
} ,
" expected " : { " result " : " success " } ,
} ,
{
" name " : " failure VerifyISISInterfaceMode default vrf with interface not running passive mode " ,
" test " : VerifyISISInterfaceMode ,
" eos_data " : [
{
" vrfs " : {
" default " : {
" isisInstances " : {
" CORE-ISIS " : {
" interfaces " : {
" Loopback0 " : {
" enabled " : True ,
" index " : 2 ,
" snpa " : " 0:0:0:0:0:0 " ,
" mtu " : 65532 ,
" interfaceAddressFamily " : " ipv4 " ,
" interfaceType " : " loopback " ,
" intfLevels " : {
" 2 " : {
" ipv4Metric " : 10 ,
" sharedSecretProfile " : " " ,
" isisAdjacencies " : [ ] ,
" passive " : True ,
" v4Protection " : " disabled " ,
" v6Protection " : " disabled " ,
}
} ,
" areaProxyBoundary " : False ,
} ,
" Ethernet1 " : {
" enabled " : True ,
" index " : 132 ,
" snpa " : " P2P " ,
" interfaceType " : " point-to-point " ,
" intfLevels " : {
" 2 " : {
" ipv4Metric " : 10 ,
" numAdjacencies " : 1 ,
" linkId " : " 84 " ,
" sharedSecretProfile " : " " ,
" isisAdjacencies " : [ ] ,
" passive " : False ,
" v4Protection " : " link " ,
" v6Protection " : " disabled " ,
}
} ,
" interfaceSpeed " : 1000 ,
" areaProxyBoundary " : False ,
} ,
" Ethernet2 " : {
" enabled " : True ,
" interfaceType " : " point-to-point " ,
" intfLevels " : {
" 2 " : {
" ipv4Metric " : 10 ,
" numAdjacencies " : 0 ,
" sharedSecretProfile " : " " ,
" isisAdjacencies " : [ ] ,
" passive " : False ,
" v4Protection " : " disabled " ,
" v6Protection " : " disabled " ,
}
} ,
" interfaceSpeed " : 1000 ,
" areaProxyBoundary " : False ,
} ,
}
}
}
}
}
}
] ,
" inputs " : {
" interfaces " : [
{ " name " : " Loopback0 " , " mode " : " passive " } ,
{ " name " : " Ethernet2 " , " mode " : " passive " } ,
{ " name " : " Ethernet1 " , " mode " : " point-to-point " , " vrf " : " default " } ,
]
} ,
" expected " : {
" result " : " failure " ,
" messages " : [ " Interface Ethernet2 in VRF default is not running in passive mode " ] ,
} ,
} ,
{
" name " : " failure VerifyISISInterfaceMode default vrf with interface not running point-point mode " ,
" test " : VerifyISISInterfaceMode ,
" eos_data " : [
{
" vrfs " : {
" default " : {
" isisInstances " : {
" CORE-ISIS " : {
" interfaces " : {
" Loopback0 " : {
" enabled " : True ,
" index " : 2 ,
" snpa " : " 0:0:0:0:0:0 " ,
" mtu " : 65532 ,
" interfaceAddressFamily " : " ipv4 " ,
" interfaceType " : " loopback " ,
" intfLevels " : {
" 2 " : {
" ipv4Metric " : 10 ,
" sharedSecretProfile " : " " ,
" isisAdjacencies " : [ ] ,
" passive " : True ,
" v4Protection " : " disabled " ,
" v6Protection " : " disabled " ,
}
} ,
" areaProxyBoundary " : False ,
} ,
" Ethernet1 " : {
" enabled " : True ,
" index " : 132 ,
" snpa " : " P2P " ,
" interfaceType " : " broadcast " ,
" intfLevels " : {
" 2 " : {
" ipv4Metric " : 10 ,
" numAdjacencies " : 1 ,
" linkId " : " 84 " ,
" sharedSecretProfile " : " " ,
" isisAdjacencies " : [ ] ,
" passive " : False ,
" v4Protection " : " link " ,
" v6Protection " : " disabled " ,
}
} ,
" interfaceSpeed " : 1000 ,
" areaProxyBoundary " : False ,
} ,
" Ethernet2 " : {
" enabled " : True ,
" interfaceType " : " broadcast " ,
" intfLevels " : {
" 2 " : {
" ipv4Metric " : 10 ,
" numAdjacencies " : 0 ,
" sharedSecretProfile " : " " ,
" isisAdjacencies " : [ ] ,
" passive " : True ,
" v4Protection " : " disabled " ,
" v6Protection " : " disabled " ,
}
} ,
" interfaceSpeed " : 1000 ,
" areaProxyBoundary " : False ,
} ,
}
}
}
}
}
}
] ,
" inputs " : {
" interfaces " : [
{ " name " : " Loopback0 " , " mode " : " passive " } ,
{ " name " : " Ethernet2 " , " mode " : " passive " } ,
{ " name " : " Ethernet1 " , " mode " : " point-to-point " , " vrf " : " default " } ,
]
} ,
" expected " : {
" result " : " failure " ,
" messages " : [ " Interface Ethernet1 in VRF default is not running in point-to-point reporting broadcast " ] ,
} ,
} ,
{
" name " : " failure VerifyISISInterfaceMode default vrf with interface not running correct VRF mode " ,
" test " : VerifyISISInterfaceMode ,
" eos_data " : [
{
" vrfs " : {
" fake_vrf " : {
" isisInstances " : {
" CORE-ISIS " : {
" interfaces " : {
" Loopback0 " : {
" enabled " : True ,
" index " : 2 ,
" snpa " : " 0:0:0:0:0:0 " ,
" mtu " : 65532 ,
" interfaceAddressFamily " : " ipv4 " ,
" interfaceType " : " loopback " ,
" intfLevels " : {
" 2 " : {
" ipv4Metric " : 10 ,
" sharedSecretProfile " : " " ,
" isisAdjacencies " : [ ] ,
" passive " : True ,
" v4Protection " : " disabled " ,
" v6Protection " : " disabled " ,
}
} ,
" areaProxyBoundary " : False ,
} ,
" Ethernet1 " : {
" enabled " : True ,
" index " : 132 ,
" snpa " : " P2P " ,
" interfaceType " : " point-to-point " ,
" intfLevels " : {
" 2 " : {
" ipv4Metric " : 10 ,
" numAdjacencies " : 1 ,
" linkId " : " 84 " ,
" sharedSecretProfile " : " " ,
" isisAdjacencies " : [ ] ,
" passive " : False ,
" v4Protection " : " link " ,
" v6Protection " : " disabled " ,
}
} ,
" interfaceSpeed " : 1000 ,
" areaProxyBoundary " : False ,
} ,
" Ethernet2 " : {
" enabled " : True ,
" interfaceType " : " broadcast " ,
" intfLevels " : {
" 2 " : {
" ipv4Metric " : 10 ,
" numAdjacencies " : 0 ,
" sharedSecretProfile " : " " ,
" isisAdjacencies " : [ ] ,
" passive " : True ,
" v4Protection " : " disabled " ,
" v6Protection " : " disabled " ,
}
} ,
" interfaceSpeed " : 1000 ,
" areaProxyBoundary " : False ,
} ,
}
}
}
}
}
}
] ,
" inputs " : {
" interfaces " : [
{ " name " : " Loopback0 " , " mode " : " passive " } ,
{ " name " : " Ethernet2 " , " mode " : " passive " } ,
{ " name " : " Ethernet1 " , " mode " : " point-to-point " , " vrf " : " default " } ,
]
} ,
" expected " : {
" result " : " failure " ,
" messages " : [
" Interface Loopback0 not found in VRF default " ,
" Interface Ethernet2 not found in VRF default " ,
" Interface Ethernet1 not found in VRF default " ,
] ,
} ,
} ,
2025-02-05 11:54:06 +01:00
{
" 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 " ] ,
} ,
} ,
2025-02-05 11:39:50 +01:00
]
2025-02-05 11:54:06 +01:00
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