From 7b969af18a2163a606583517e756e6af8764ce63 Mon Sep 17 00:00:00 2001 From: Elia Migliore Date: Thu, 20 Jun 2024 15:09:53 +0200 Subject: [PATCH] WIP --- tests/integration/test_schema_reader.py | 40 +++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/tests/integration/test_schema_reader.py b/tests/integration/test_schema_reader.py index 738f76498..47927a35b 100644 --- a/tests/integration/test_schema_reader.py +++ b/tests/integration/test_schema_reader.py @@ -4,6 +4,7 @@ """ from contextlib import closing from dataclasses import dataclass +from io import StringIO from karapace.config import set_config_defaults from karapace.constants import DEFAULT_SCHEMA_TOPIC from karapace.coordinator.master_coordinator import MasterCoordinator @@ -21,6 +22,7 @@ from typing import List, Tuple import asyncio +import contextlib import pytest @@ -287,3 +289,41 @@ async def test_key_format_detection( assert key_formatter.get_keymode() == testcase.expected finally: await master_coordinator.close() + +#todo: run process of `KafkaSchemaReader` in background and collect logs to assert that it started without any exception raised (or status code in error) +async def test_schema_topic_creation_is_needed( + kafka_servers: KafkaServers, +) -> None: + """Test that the schema registry can start successfully if the cluster needs create the schema registry from zero.""" + test_name = "test_regression_soft_delete_schemas_should_be_registered" + topic_name = new_random_name("topic") + group_id = create_group_name_factory(test_name)() + + config = set_config_defaults( + { + "bootstrap_uri": kafka_servers.bootstrap_servers, + "admin_metadata_max_age": 2, + "group_id": group_id, + "topic_name": topic_name, + } + ) + master_coordinator = MasterCoordinator(config=config) + + try: + await master_coordinator.start() + database = InMemoryDatabase() + offset_watcher = OffsetWatcher() + + schema_reader = KafkaSchemaReader( + config=config, + offset_watcher=offset_watcher, + key_formatter=KeyFormatter(), + master_coordinator=master_coordinator, + database=database, + ) + schema_reader.start() + + with closing(schema_reader): + await _wait_until_reader_is_ready_and_master(master_coordinator, schema_reader) + finally: + await master_coordinator.close()