userver: /home/antonyzhilin/arcadia/taxi/uservices/userver/testsuite/pytest_plugins/pytest_userver/plugins/kafka.py Source File
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
kafka.py
1"""
2Plugin that imports the required fixtures to start the broker.
3"""
4
5import logging
6import os
7from typing import List
8
9import pytest
10
11from testsuite.databases.kafka.classes import BootstrapServers
12
13pytest_plugins = [
14 'testsuite.databases.kafka.pytest_plugin',
15 'pytest_userver.plugins.core',
16]
17
18
19# @cond
20
21
22@pytest.fixture(scope='session')
23def _patched_bootstrap_servers_internal() -> BootstrapServers:
24 """Used for internal testing purposes"""
25
26 brokers_list = os.getenv('KAFKA_RECIPE_BROKER_LIST')
27 if brokers_list:
28 return brokers_list.split(',')
29
30 return []
31
32
33# @endcond
34
35
36@pytest.fixture(scope='session')
37def kafka_components() -> List[str]:
38 """
39 Should contain manually listed names of kafka producer and consumer
40 components.
41
42 @ingroup userver_testsuite_fixtures
43 """
44
45 return []
46
47
48@pytest.fixture(scope='session')
49def kafka_secdist(_bootstrap_servers, kafka_components) -> dict:
50 """
51 Automatically generates secdist config from user static config.
52 `_bootstrap_servers` is testsuite's fixture that determines current
53 bootstrap servers list depends on Kafka testsuite plugin's settings.
54
55 @snippet samples/kafka_service/testsuite/conftest.py Kafka service sample - secdist
56
57 @ingroup userver_testsuite_fixtures
58 """
59
60 single_setting = {
61 'brokers': _bootstrap_servers,
62 'username': '',
63 'password': '',
64 }
65 logging.info(f'Kafka brokers are: {single_setting["brokers"]}')
66
67 return {
68 'kafka_settings': {component_name: single_setting for component_name in kafka_components},
69 }