From 5389bb01d206f42381ec1043e43e12ac6bb883c5 Mon Sep 17 00:00:00 2001 From: vitthalmagadum <122079046+vitthalmagadum@users.noreply.github.com> Date: Tue, 14 Jan 2025 09:58:22 +0530 Subject: [PATCH] feat(anta): Added the test case to verify syslog logging is enabled (#859) --- anta/tests/logging.py | 29 ++++++++++++++++++ examples/tests.yaml | 2 ++ tests/units/anta_tests/test_logging.py | 42 ++++++++++++++++++++++++++ 3 files changed, 73 insertions(+) diff --git a/anta/tests/logging.py b/anta/tests/logging.py index d32701836..4a1c594e8 100644 --- a/anta/tests/logging.py +++ b/anta/tests/logging.py @@ -43,6 +43,35 @@ def _get_logging_states(logger: logging.Logger, command_output: str) -> str: return log_states +class VerifySyslogLogging(AntaTest): + """Verifies if syslog logging is enabled. + + Expected Results + ---------------- + * Success: The test will pass if syslog logging is enabled. + * Failure: The test will fail if syslog logging is disabled. + + Examples + -------- + ```yaml + anta.tests.logging: + - VerifySyslogLogging: + ``` + """ + + categories: ClassVar[list[str]] = ["logging"] + commands: ClassVar[list[AntaCommand | AntaTemplate]] = [AntaCommand(command="show logging", ofmt="text")] + + @AntaTest.anta_test + def test(self) -> None: + """Main test function for VerifySyslogLogging.""" + self.result.is_success() + log_output = self.instance_commands[0].text_output + + if "Syslog logging: enabled" not in _get_logging_states(self.logger, log_output): + self.result.is_failure("Syslog logging is disabled.") + + class VerifyLoggingPersistent(AntaTest): """Verifies if logging persistent is enabled and logs are saved in flash. diff --git a/examples/tests.yaml b/examples/tests.yaml index 77b534a74..0b573616c 100644 --- a/examples/tests.yaml +++ b/examples/tests.yaml @@ -307,6 +307,8 @@ anta.tests.logging: vrf: default - VerifyLoggingTimestamp: # Verifies if logs are generated with the appropriate timestamp. + - VerifySyslogLogging: + # Verifies if syslog logging is enabled. anta.tests.mlag: - VerifyMlagConfigSanity: # Verifies there are no MLAG config-sanity inconsistencies. diff --git a/tests/units/anta_tests/test_logging.py b/tests/units/anta_tests/test_logging.py index 6aeac4a21..0c1408817 100644 --- a/tests/units/anta_tests/test_logging.py +++ b/tests/units/anta_tests/test_logging.py @@ -16,6 +16,7 @@ VerifyLoggingPersistent, VerifyLoggingSourceIntf, VerifyLoggingTimestamp, + VerifySyslogLogging, ) from tests.units.anta_tests import test @@ -277,4 +278,45 @@ "inputs": None, "expected": {"result": "failure", "messages": ["Device has reported syslog messages with a severity of ERRORS or higher"]}, }, + { + "name": "success", + "test": VerifySyslogLogging, + "eos_data": [ + """Syslog logging: enabled + Buffer logging: level debugging + + External configuration: + active: + inactive: + + Facility Severity Effective Severity + -------------------- ------------- ------------------ + aaa debugging debugging + accounting debugging debugging""", + ], + "inputs": None, + "expected": {"result": "success"}, + }, + { + "name": "failure", + "test": VerifySyslogLogging, + "eos_data": [ + """Syslog logging: disabled + Buffer logging: level debugging + Console logging: level errors + Persistent logging: disabled + Monitor logging: level errors + + External configuration: + active: + inactive: + + Facility Severity Effective Severity + -------------------- ------------- ------------------ + aaa debugging debugging + accounting debugging debugging""", + ], + "inputs": None, + "expected": {"result": "failure", "messages": ["Syslog logging is disabled."]}, + }, ]