From 99a8be07945536e28c0a69b023511e9705b63fb0 Mon Sep 17 00:00:00 2001 From: vitthalmagadum Date: Wed, 5 Feb 2025 05:43:57 -0500 Subject: [PATCH 1/2] Nicer result failure messages BFD & Connectivity test module --- anta/input_models/connectivity.py | 8 ++++---- anta/tests/bfd.py | 2 +- tests/units/anta_tests/test_bfd.py | 2 +- tests/units/anta_tests/test_connectivity.py | 20 ++++++++++---------- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/anta/input_models/connectivity.py b/anta/input_models/connectivity.py index 53581ea3c..b88415d92 100644 --- a/anta/input_models/connectivity.py +++ b/anta/input_models/connectivity.py @@ -36,11 +36,11 @@ def __str__(self) -> str: Examples -------- - Host 10.1.1.1 (src: 10.2.2.2, vrf: mgmt, size: 100B, repeat: 2) + Host 10.1.1.1, src: 10.2.2.2, vrf: mgmt, size: 100B, repeat: 2 """ df_status = ", df-bit: enabled" if self.df_bit else "" - return f"Host {self.destination} (src: {self.source}, vrf: {self.vrf}, size: {self.size}B, repeat: {self.repeat}{df_status})" + return f"Host {self.destination}, src: {self.source}, vrf: {self.vrf}, size: {self.size}B, repeat: {self.repeat}{df_status}" class LLDPNeighbor(BaseModel): @@ -59,10 +59,10 @@ def __str__(self) -> str: Examples -------- - Port Ethernet1 (Neighbor: DC1-SPINE2, Neighbor Port: Ethernet2) + Port: Ethernet1, Neighbor: DC1-SPINE2, Neighbor Port: Ethernet2 """ - return f"Port {self.port} (Neighbor: {self.neighbor_device}, Neighbor Port: {self.neighbor_port})" + return f"Port: {self.port}, Neighbor: {self.neighbor_device}, Neighbor Port: {self.neighbor_port}" class Neighbor(LLDPNeighbor): # pragma: no cover diff --git a/anta/tests/bfd.py b/anta/tests/bfd.py index 2361a4221..d33d3005d 100644 --- a/anta/tests/bfd.py +++ b/anta/tests/bfd.py @@ -362,5 +362,5 @@ def test(self) -> None: # Check registered protocols difference = sorted(set(protocols) - set(get_value(bfd_output, "peerStatsDetail.apps"))) if difference: - failures = " ".join(f"`{item}`" for item in difference) + failures = ", ".join(f"`{item}`" for item in difference) self.result.is_failure(f"{bfd_peer} - {failures} routing protocol(s) not configured") diff --git a/tests/units/anta_tests/test_bfd.py b/tests/units/anta_tests/test_bfd.py index 8b234222f..d809b4aca 100644 --- a/tests/units/anta_tests/test_bfd.py +++ b/tests/units/anta_tests/test_bfd.py @@ -737,7 +737,7 @@ "result": "failure", "messages": [ "Peer: 192.0.255.7 VRF: default - `isis` routing protocol(s) not configured", - "Peer: 192.0.255.70 VRF: MGMT - `isis` `ospf` routing protocol(s) not configured", + "Peer: 192.0.255.70 VRF: MGMT - `isis`, `ospf` routing protocol(s) not configured", ], }, }, diff --git a/tests/units/anta_tests/test_connectivity.py b/tests/units/anta_tests/test_connectivity.py index 0e37e053b..a301163bd 100644 --- a/tests/units/anta_tests/test_connectivity.py +++ b/tests/units/anta_tests/test_connectivity.py @@ -153,7 +153,7 @@ ], }, ], - "expected": {"result": "failure", "messages": ["Host 10.0.0.11 (src: 10.0.0.5, vrf: default, size: 100B, repeat: 2) - Unreachable"]}, + "expected": {"result": "failure", "messages": ["Host 10.0.0.11, src: 10.0.0.5, vrf: default, size: 100B, repeat: 2 - Unreachable"]}, }, { "name": "failure-interface", @@ -187,7 +187,7 @@ ], }, ], - "expected": {"result": "failure", "messages": ["Host 10.0.0.11 (src: Management0, vrf: default, size: 100B, repeat: 2) - Unreachable"]}, + "expected": {"result": "failure", "messages": ["Host 10.0.0.11, src: Management0, vrf: default, size: 100B, repeat: 2 - Unreachable"]}, }, { "name": "failure-size", @@ -209,7 +209,7 @@ ], }, ], - "expected": {"result": "failure", "messages": ["Host 10.0.0.1 (src: Management0, vrf: default, size: 1501B, repeat: 5, df-bit: enabled) - Unreachable"]}, + "expected": {"result": "failure", "messages": ["Host 10.0.0.1, src: Management0, vrf: default, size: 1501B, repeat: 5, df-bit: enabled - Unreachable"]}, }, { "name": "success", @@ -330,7 +330,7 @@ {"port": "Ethernet2", "neighbor_device": "DC1-SPINE2", "neighbor_port": "Ethernet1"}, ], }, - "expected": {"result": "failure", "messages": ["Port Ethernet2 (Neighbor: DC1-SPINE2, Neighbor Port: Ethernet1) - Port not found"]}, + "expected": {"result": "failure", "messages": ["Port: Ethernet2, Neighbor: DC1-SPINE2, Neighbor Port: Ethernet1 - Port not found"]}, }, { "name": "failure-no-neighbor", @@ -363,7 +363,7 @@ {"port": "Ethernet2", "neighbor_device": "DC1-SPINE2", "neighbor_port": "Ethernet1"}, ], }, - "expected": {"result": "failure", "messages": ["Port Ethernet2 (Neighbor: DC1-SPINE2, Neighbor Port: Ethernet1) - No LLDP neighbors"]}, + "expected": {"result": "failure", "messages": ["Port: Ethernet2, Neighbor: DC1-SPINE2, Neighbor Port: Ethernet1 - No LLDP neighbors"]}, }, { "name": "failure-wrong-neighbor", @@ -412,7 +412,7 @@ }, "expected": { "result": "failure", - "messages": ["Port Ethernet2 (Neighbor: DC1-SPINE2, Neighbor Port: Ethernet1) - Wrong LLDP neighbors: DC1-SPINE2/Ethernet2"], + "messages": ["Port: Ethernet2, Neighbor: DC1-SPINE2, Neighbor Port: Ethernet1 - Wrong LLDP neighbors: DC1-SPINE2/Ethernet2"], }, }, { @@ -450,9 +450,9 @@ "expected": { "result": "failure", "messages": [ - "Port Ethernet1 (Neighbor: DC1-SPINE1, Neighbor Port: Ethernet1) - Wrong LLDP neighbors: DC1-SPINE1/Ethernet2", - "Port Ethernet2 (Neighbor: DC1-SPINE2, Neighbor Port: Ethernet1) - No LLDP neighbors", - "Port Ethernet3 (Neighbor: DC1-SPINE3, Neighbor Port: Ethernet1) - Port not found", + "Port: Ethernet1, Neighbor: DC1-SPINE1, Neighbor Port: Ethernet1 - Wrong LLDP neighbors: DC1-SPINE1/Ethernet2", + "Port: Ethernet2, Neighbor: DC1-SPINE2, Neighbor Port: Ethernet1 - No LLDP neighbors", + "Port: Ethernet3, Neighbor: DC1-SPINE3, Neighbor Port: Ethernet1 - Port not found", ], }, }, @@ -498,7 +498,7 @@ }, "expected": { "result": "failure", - "messages": ["Port Ethernet1 (Neighbor: DC1-SPINE3, Neighbor Port: Ethernet1) - Wrong LLDP neighbors: DC1-SPINE1/Ethernet1, DC1-SPINE2/Ethernet1"], + "messages": ["Port: Ethernet1, Neighbor: DC1-SPINE3, Neighbor Port: Ethernet1 - Wrong LLDP neighbors: DC1-SPINE1/Ethernet1, DC1-SPINE2/Ethernet1"], }, }, ] From c14222f92f255e323eda85dd9416995d5d3b28c3 Mon Sep 17 00:00:00 2001 From: vitthalmagadum Date: Thu, 6 Feb 2025 04:50:02 -0500 Subject: [PATCH 2/2] Updated failure msgs and unit tests --- anta/input_models/connectivity.py | 9 ++++----- tests/units/anta_tests/test_connectivity.py | 22 ++++++++++----------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/anta/input_models/connectivity.py b/anta/input_models/connectivity.py index 89cb964aa..f967e775b 100644 --- a/anta/input_models/connectivity.py +++ b/anta/input_models/connectivity.py @@ -36,11 +36,10 @@ def __str__(self) -> str: Examples -------- - Host 10.1.1.1, src: 10.2.2.2, vrf: mgmt, size: 100B, repeat: 2 + Host: 10.1.1.1 Source: 10.2.2.2 VRF: mgmt """ - df_status = ", df-bit: enabled" if self.df_bit else "" - return f"Host {self.destination}, src: {self.source}, vrf: {self.vrf}, size: {self.size}B, repeat: {self.repeat}{df_status}" + return f"Host: {self.destination} Source: {self.source} VRF: {self.vrf}" class LLDPNeighbor(BaseModel): @@ -59,10 +58,10 @@ def __str__(self) -> str: Examples -------- - Port: Ethernet1, Neighbor: DC1-SPINE2, Neighbor Port: Ethernet2 + Port: Ethernet1 Neighbor: DC1-SPINE2 Neighbor Port: Ethernet2 """ - return f"Port: {self.port}, Neighbor: {self.neighbor_device}, Neighbor Port: {self.neighbor_port}" + return f"Port: {self.port} Neighbor: {self.neighbor_device} Neighbor Port: {self.neighbor_port}" class Neighbor(LLDPNeighbor): # pragma: no cover diff --git a/tests/units/anta_tests/test_connectivity.py b/tests/units/anta_tests/test_connectivity.py index 5938a1bee..86ada5dea 100644 --- a/tests/units/anta_tests/test_connectivity.py +++ b/tests/units/anta_tests/test_connectivity.py @@ -193,7 +193,7 @@ ], }, ], - "expected": {"result": "failure", "messages": ["Host 10.0.0.11, src: 10.0.0.5, vrf: default, size: 100B, repeat: 2 - Unreachable"]}, + "expected": {"result": "failure", "messages": ["Host: 10.0.0.11 Source: 10.0.0.5 VRF: default - Unreachable"]}, }, { "name": "failure-ipv6", @@ -210,7 +210,7 @@ }, ], "inputs": {"hosts": [{"destination": "fd12:3456:789a:1::2", "source": "fd12:3456:789a:1::1"}]}, - "expected": {"result": "failure", "messages": ["Host fd12:3456:789a:1::2 (src: fd12:3456:789a:1::1, vrf: default, size: 100B, repeat: 2) - Unreachable"]}, + "expected": {"result": "failure", "messages": ["Host: fd12:3456:789a:1::2 Source: fd12:3456:789a:1::1 VRF: default - Unreachable"]}, }, { "name": "failure-interface", @@ -244,7 +244,7 @@ ], }, ], - "expected": {"result": "failure", "messages": ["Host 10.0.0.11, src: Management0, vrf: default, size: 100B, repeat: 2 - Unreachable"]}, + "expected": {"result": "failure", "messages": ["Host: 10.0.0.11 Source: Management0 VRF: default - Unreachable"]}, }, { "name": "failure-size", @@ -266,7 +266,7 @@ ], }, ], - "expected": {"result": "failure", "messages": ["Host 10.0.0.1, src: Management0, vrf: default, size: 1501B, repeat: 5, df-bit: enabled - Unreachable"]}, + "expected": {"result": "failure", "messages": ["Host: 10.0.0.1 Source: Management0 VRF: default - Unreachable"]}, }, { "name": "success", @@ -387,7 +387,7 @@ {"port": "Ethernet2", "neighbor_device": "DC1-SPINE2", "neighbor_port": "Ethernet1"}, ], }, - "expected": {"result": "failure", "messages": ["Port: Ethernet2, Neighbor: DC1-SPINE2, Neighbor Port: Ethernet1 - Port not found"]}, + "expected": {"result": "failure", "messages": ["Port: Ethernet2 Neighbor: DC1-SPINE2 Neighbor Port: Ethernet1 - Port not found"]}, }, { "name": "failure-no-neighbor", @@ -420,7 +420,7 @@ {"port": "Ethernet2", "neighbor_device": "DC1-SPINE2", "neighbor_port": "Ethernet1"}, ], }, - "expected": {"result": "failure", "messages": ["Port: Ethernet2, Neighbor: DC1-SPINE2, Neighbor Port: Ethernet1 - No LLDP neighbors"]}, + "expected": {"result": "failure", "messages": ["Port: Ethernet2 Neighbor: DC1-SPINE2 Neighbor Port: Ethernet1 - No LLDP neighbors"]}, }, { "name": "failure-wrong-neighbor", @@ -469,7 +469,7 @@ }, "expected": { "result": "failure", - "messages": ["Port: Ethernet2, Neighbor: DC1-SPINE2, Neighbor Port: Ethernet1 - Wrong LLDP neighbors: DC1-SPINE2/Ethernet2"], + "messages": ["Port: Ethernet2 Neighbor: DC1-SPINE2 Neighbor Port: Ethernet1 - Wrong LLDP neighbors: DC1-SPINE2/Ethernet2"], }, }, { @@ -507,9 +507,9 @@ "expected": { "result": "failure", "messages": [ - "Port: Ethernet1, Neighbor: DC1-SPINE1, Neighbor Port: Ethernet1 - Wrong LLDP neighbors: DC1-SPINE1/Ethernet2", - "Port: Ethernet2, Neighbor: DC1-SPINE2, Neighbor Port: Ethernet1 - No LLDP neighbors", - "Port: Ethernet3, Neighbor: DC1-SPINE3, Neighbor Port: Ethernet1 - Port not found", + "Port: Ethernet1 Neighbor: DC1-SPINE1 Neighbor Port: Ethernet1 - Wrong LLDP neighbors: DC1-SPINE1/Ethernet2", + "Port: Ethernet2 Neighbor: DC1-SPINE2 Neighbor Port: Ethernet1 - No LLDP neighbors", + "Port: Ethernet3 Neighbor: DC1-SPINE3 Neighbor Port: Ethernet1 - Port not found", ], }, }, @@ -555,7 +555,7 @@ }, "expected": { "result": "failure", - "messages": ["Port: Ethernet1, Neighbor: DC1-SPINE3, Neighbor Port: Ethernet1 - Wrong LLDP neighbors: DC1-SPINE1/Ethernet1, DC1-SPINE2/Ethernet1"], + "messages": ["Port: Ethernet1 Neighbor: DC1-SPINE3 Neighbor Port: Ethernet1 - Wrong LLDP neighbors: DC1-SPINE1/Ethernet1, DC1-SPINE2/Ethernet1"], }, }, ]