Skip to content

Commit

Permalink
tests: test configure logging
Browse files Browse the repository at this point in the history
  • Loading branch information
nosahama committed Jan 9, 2025
1 parent db28695 commit 2064bea
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 2 deletions.
4 changes: 2 additions & 2 deletions container/compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ services:
KARAPACE_GROUP_ID: karapace-schema-registry
KARAPACE_MASTER_ELIGIBILITY: true
KARAPACE_TOPIC_NAME: _schemas
KARAPACE_LOG_LEVEL: WARNING
KARAPACE_LOG_LEVEL: INFO
KARAPACE_COMPATIBILITY: FULL
KARAPACE_STATSD_HOST: statsd-exporter
KARAPACE_STATSD_PORT: 8125
Expand Down Expand Up @@ -118,7 +118,7 @@ services:
KARAPACE_REGISTRY_HOST: karapace-schema-registry
KARAPACE_REGISTRY_PORT: 8081
KARAPACE_ADMIN_METADATA_MAX_AGE: 0
KARAPACE_LOG_LEVEL: WARNING
KARAPACE_LOG_LEVEL: INFO
KARAPACE_STATSD_HOST: statsd-exporter
KARAPACE_STATSD_PORT: 8125
KARAPACE_KAFKA_SCHEMA_READER_STRICT_MODE: false
Expand Down
72 changes: 72 additions & 0 deletions tests/unit/test_logging_setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
"""
Copyright (c) 2024 Aiven Ltd
See LICENSE for details
"""

from _pytest.logging import LogCaptureFixture
from karapace.container import KarapaceContainer
from karapace.logging_setup import configure_logging
from unittest.mock import patch, call

import logging
import pytest


def test_configure_logging_stdout_handler(caplog: LogCaptureFixture, karapace_container: KarapaceContainer) -> None:
config = karapace_container.config().set_config_defaults(
{
"log_handler": "stdout",
"log_level": "WARNING",
}
)
with caplog.at_level(logging.WARNING, logger="karapace.logging_setup"):
with patch("karapace.logging_setup.logging") as mock_logging, patch("karapace.logging_setup.sys") as mock_sys:
configure_logging(config=config)
mock_logging.assert_has_calls(
[
call.StreamHandler(stream=mock_sys.stdout),
call.Formatter("%(name)-20s\t%(threadName)s\t%(levelname)-8s\t%(message)s"),
call.StreamHandler().setFormatter(mock_logging.Formatter.return_value),
call.StreamHandler().setLevel("WARNING"),
call.StreamHandler().set_name(name="karapace"),
call.root.addHandler(mock_logging.StreamHandler.return_value),
call.root.setLevel("WARNING"),
]
)


def test_configure_logging_systemd_handler(karapace_container: KarapaceContainer) -> None:
config = karapace_container.config().set_config_defaults(
{
"log_handler": "systemd",
"log_level": "WARNING",
}
)
with pytest.raises(ModuleNotFoundError):
configure_logging(config=config)


def test_configure_logging_unknown_handler(caplog: LogCaptureFixture, karapace_container: KarapaceContainer) -> None:
config = karapace_container.config().set_config_defaults(
{
"log_handler": "unknown",
"log_level": "DEBUG",
}
)
with caplog.at_level(logging.WARNING, logger="karapace.logging_setup"):
with patch("karapace.logging_setup.logging") as mock_logging:
configure_logging(config=config)

mock_logging.assert_has_calls(
[
call.basicConfig(level="DEBUG", format="%(name)-20s\t%(threadName)s\t%(levelname)-8s\t%(message)s"),
call.getLogger(),
call.getLogger().setLevel("DEBUG"),
call.warning("Log handler %s not recognized, root handler not set.", "unknown"),
call.root.setLevel("DEBUG"),
]
)
for log in caplog.records:
assert log.name == "karapace.logging_setup"
assert log.levelname == "WARNING"
assert log.message == "Log handler unknown not recognized, root handler not set."

0 comments on commit 2064bea

Please sign in to comment.