46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
import pytest
|
|
from kafka import KafkaProducer
|
|
from kafka.admin import KafkaAdminClient, NewTopic
|
|
|
|
from common import execute_and_fetch_all, connect, NAME
|
|
|
|
# To run these test locally a running Kafka sever is necessery. The test tries
|
|
# to connect on localhost:9092.
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def connection():
|
|
connection = connect()
|
|
yield connection
|
|
cursor = connection.cursor()
|
|
execute_and_fetch_all(cursor, "MATCH (n) DETACH DELETE n")
|
|
stream_infos = execute_and_fetch_all(cursor, "SHOW STREAMS")
|
|
for stream_info in stream_infos:
|
|
execute_and_fetch_all(cursor, f"DROP STREAM {stream_info[NAME]}")
|
|
users = execute_and_fetch_all(cursor, "SHOW USERS")
|
|
for username, in users:
|
|
execute_and_fetch_all(cursor, f"DROP USER {username}")
|
|
|
|
|
|
@pytest.fixture(scope="function")
|
|
def topics():
|
|
admin_client = KafkaAdminClient(
|
|
bootstrap_servers="localhost:9092", client_id='test')
|
|
|
|
topics = []
|
|
topics_to_create = []
|
|
for index in range(3):
|
|
topic = f"topic_{index}"
|
|
topics.append(topic)
|
|
topics_to_create.append(NewTopic(name=topic,
|
|
num_partitions=1, replication_factor=1))
|
|
|
|
admin_client.create_topics(new_topics=topics_to_create, timeout_ms=5000)
|
|
yield topics
|
|
admin_client.delete_topics(topics=topics, timeout_ms=5000)
|
|
|
|
|
|
@pytest.fixture(scope="function")
|
|
def producer():
|
|
yield KafkaProducer(bootstrap_servers="localhost:9092")
|