Skip to content

ANTA Tests for profiles

Module related to ASIC profile tests.

VerifyTcamProfile

Verifies that the device is using the provided Ternary Content-Addressable Memory (TCAM) profile.

Note

For modular switches, the provided TCAM profile is checked against all linecards.

Expected Results
  • Success: The test will pass if the provided TCAM profile is actually running on the device.
  • Failure: The test will fail if the provided TCAM profile is not running on the device.
Examples
anta.tests.profiles:
  - VerifyTcamProfile:
      profile: vxlan-routing

Inputs

Name Type Description Default
profile str
Expected TCAM profile.
-
Source code in anta/tests/profiles.py
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
class VerifyTcamProfile(AntaTest):
    """Verifies that the device is using the provided Ternary Content-Addressable Memory (TCAM) profile.

    !!! note
      For modular switches, the provided TCAM profile is checked against all linecards.

    Expected Results
    ----------------
    * Success: The test will pass if the provided TCAM profile is actually running on the device.
    * Failure: The test will fail if the provided TCAM profile is not running on the device.

    Examples
    --------
    ```yaml
    anta.tests.profiles:
      - VerifyTcamProfile:
          profile: vxlan-routing
    ```
    """

    description = "Verifies the device TCAM profile."
    categories: ClassVar[list[str]] = ["profiles"]
    commands: ClassVar[list[AntaCommand | AntaTemplate]] = [AntaCommand(command="show hardware tcam profile", revision=1)]

    class Input(AntaTest.Input):
        """Input model for the VerifyTcamProfile test."""

        profile: str
        """Expected TCAM profile."""

    @skip_on_platforms(["cEOSLab", "vEOS-lab", "cEOSCloudLab", "vEOS"])
    @AntaTest.anta_test
    def test(self) -> None:
        """Main test function for VerifyTcamProfile."""
        command_output = self.instance_commands[0].json_output
        self.result.is_success()

        if not (pm_profiles := command_output["pmfProfiles"]):
            self.result.is_failure("No TCAM profile found")
            return

        for profile, details in pm_profiles.items():
            if not details["status"] == details["config"] == self.inputs.profile:
                self.result.is_failure(f"{profile} - Incorrect profile running on device - Expected: {self.inputs.profile} Actual: {details['status']}")

VerifyUnifiedForwardingTableMode

Verifies the device is using the expected UFT (Unified Forwarding Table) mode.

Expected Results
  • Success: The test will pass if the device is using the expected UFT mode.
  • Failure: The test will fail if the device is not using the expected UFT mode.
Examples
anta.tests.profiles:
  - VerifyUnifiedForwardingTableMode:
      mode: 3

Inputs

Name Type Description Default
mode Literal[0, 1, 2, 3, 4, 'flexible']
Expected UFT mode. Valid values are 0, 1, 2, 3, 4, or "flexible".
-
Source code in anta/tests/profiles.py
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class VerifyUnifiedForwardingTableMode(AntaTest):
    """Verifies the device is using the expected UFT (Unified Forwarding Table) mode.

    Expected Results
    ----------------
    * Success: The test will pass if the device is using the expected UFT mode.
    * Failure: The test will fail if the device is not using the expected UFT mode.

    Examples
    --------
    ```yaml
    anta.tests.profiles:
      - VerifyUnifiedForwardingTableMode:
          mode: 3
    ```
    """

    description = "Verifies the device is using the expected UFT mode."
    categories: ClassVar[list[str]] = ["profiles"]
    commands: ClassVar[list[AntaCommand | AntaTemplate]] = [AntaCommand(command="show platform trident forwarding-table partition", revision=1)]

    class Input(AntaTest.Input):
        """Input model for the VerifyUnifiedForwardingTableMode test."""

        mode: Literal[0, 1, 2, 3, 4, "flexible"]
        """Expected UFT mode. Valid values are 0, 1, 2, 3, 4, or "flexible"."""

    @skip_on_platforms(["cEOSLab", "vEOS-lab", "cEOSCloudLab", "vEOS"])
    @AntaTest.anta_test
    def test(self) -> None:
        """Main test function for VerifyUnifiedForwardingTableMode."""
        command_output = self.instance_commands[0].json_output
        if command_output["uftMode"] == str(self.inputs.mode):
            self.result.is_success()
        else:
            self.result.is_failure(f"Not running the correct UFT mode - Expected: {self.inputs.mode} Actual: {command_output['uftMode']}")