-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(anta.tests): Added testcase to verify vlan internal allocation p…
…olicy (#528)
- Loading branch information
1 parent
ebf1e55
commit 0871246
Showing
6 changed files
with
117 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
# 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. | ||
""" | ||
Test functions related to VLAN | ||
""" | ||
# Mypy does not understand AntaTest.Input typing | ||
# mypy: disable-error-code=attr-defined | ||
|
||
from typing import Literal | ||
|
||
from anta.custom_types import Vlan | ||
from anta.models import AntaCommand, AntaTest | ||
from anta.tools.get_value import get_value | ||
from anta.tools.utils import get_failed_logs | ||
|
||
|
||
class VerifyVlanInternalPolicy(AntaTest): | ||
""" | ||
This class checks if the VLAN internal allocation policy is ascending or descending and | ||
if the VLANs are within the specified range. | ||
Expected Results: | ||
* Success: The test will pass if the VLAN internal allocation policy is either ascending or descending | ||
and the VLANs are within the specified range. | ||
* Failure: The test will fail if the VLAN internal allocation policy is neither ascending nor descending | ||
or the VLANs are outside the specified range. | ||
""" | ||
|
||
name = "VerifyVlanInternalPolicy" | ||
description = "This test checks the VLAN internal allocation policy and the range of VLANs." | ||
categories = ["vlan"] | ||
commands = [AntaCommand(command="show vlan internal allocation policy")] | ||
|
||
class Input(AntaTest.Input): | ||
"""Inputs for the VerifyVlanInternalPolicy test.""" | ||
|
||
policy: Literal["ascending", "descending"] | ||
"""The VLAN internal allocation policy.""" | ||
start_vlan_id: Vlan | ||
"""The starting VLAN ID in the range.""" | ||
end_vlan_id: Vlan | ||
"""The ending VLAN ID in the range.""" | ||
|
||
@AntaTest.anta_test | ||
def test(self) -> None: | ||
command_output = self.instance_commands[0].json_output | ||
|
||
keys_to_verify = ["policy", "startVlanId", "endVlanId"] | ||
actual_policy_output = {key: get_value(command_output, key) for key in keys_to_verify} | ||
expected_policy_output = {"policy": self.inputs.policy, "startVlanId": self.inputs.start_vlan_id, "endVlanId": self.inputs.end_vlan_id} | ||
|
||
# Check if the actual output matches the expected output | ||
if actual_policy_output != expected_policy_output: | ||
failed_log = "The VLAN internal allocation policy is not configured properly:" | ||
failed_log += get_failed_logs(expected_policy_output, actual_policy_output) | ||
self.result.is_failure(failed_log) | ||
else: | ||
self.result.is_success() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
<!-- | ||
~ 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. | ||
--> | ||
|
||
# ANTA catalog for vlan tests | ||
|
||
::: anta.tests.vlan | ||
options: | ||
show_root_heading: false | ||
show_root_toc_entry: false | ||
merge_init_into_class: false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
# 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.vlan.py | ||
""" | ||
from __future__ import annotations | ||
|
||
from typing import Any | ||
|
||
from anta.tests.vlan import VerifyVlanInternalPolicy | ||
from tests.lib.anta import test # noqa: F401; pylint: disable=W0611 | ||
|
||
DATA: list[dict[str, Any]] = [ | ||
{ | ||
"name": "success", | ||
"test": VerifyVlanInternalPolicy, | ||
"eos_data": [{"policy": "ascending", "startVlanId": 1006, "endVlanId": 4094}], | ||
"inputs": {"policy": "ascending", "start_vlan_id": 1006, "end_vlan_id": 4094}, | ||
"expected": {"result": "success"}, | ||
}, | ||
{ | ||
"name": "failure-incorrect-policy", | ||
"test": VerifyVlanInternalPolicy, | ||
"eos_data": [{"policy": "descending", "startVlanId": 4094, "endVlanId": 1006}], | ||
"inputs": {"policy": "ascending", "start_vlan_id": 1006, "end_vlan_id": 4094}, | ||
"expected": { | ||
"result": "failure", | ||
"messages": [ | ||
"The VLAN internal allocation policy is not configured properly:\n" | ||
"Expected `ascending` as the policy, but found `descending` instead.\n" | ||
"Expected `1006` as the startVlanId, but found `4094` instead.\n" | ||
"Expected `4094` as the endVlanId, but found `1006` instead." | ||
], | ||
}, | ||
}, | ||
] |