Files
sientia-dataops-opc-ingestor/tests/functional/conftest.py
vitor-aignosi 4208412eca SIENTIAPDE-988
Add temporary functiontal tests, that must be removed soon.

Refactor tests: Remove outdated resource manager tests and add functional tests with Docker and Kafka integration

- Deleted existing unit tests for ResourceManager.
- Introduced new functional tests for single node operations with Redis and Kafka.
- Added Docker Compose setup for test environment.
- Implemented fixtures for Redis and Kafka consumers.
- Created comprehensive tests for data publishing and slot management.
- Added unit tests for DataManager and IngestorManager with mocked dependencies.
- Included tests for OpcManager covering connection, subscription, and data change notifications.
2025-04-22 17:56:54 -03:00

48 lines
1.2 KiB
Python

import subprocess
from time import sleep
from typing import Generator
import uuid
from kafka import KafkaConsumer
import pytest
from redis import Redis
@pytest.fixture(scope="session", autouse=True)
def docker_compose():
"""Sobe os containers antes dos testes e derruba depois."""
print("\n🚀 Subindo Docker Compose...")
subprocess.run(["docker", "compose", "up", "-d"], check=True)
print("⏳ Aguardando containers ficarem prontos...")
sleep(15) # ajuste conforme necessário
yield # os testes rodam aqui
print("\n🧹 Derrubando Docker Compose...")
subprocess.run(["docker", "compose", "down"], check=True)
@pytest.fixture()
def redis_client():
redis = Redis(host="localhost", port=6379, decode_responses=True)
redis.flushdb()
yield redis
# Limpa o banco de dados após os testes
redis.flushdb()
redis.close()
def kafka_searcher(topic) -> Generator[KafkaConsumer, None, None]:
consumer = KafkaConsumer(
topic,
bootstrap_servers="localhost:9092",
group_id=f"test-group-{uuid.uuid4()}",
auto_offset_reset="earliest", # Começa a consumir apenas mensagens novas
enable_auto_commit=True,
)
yield consumer
consumer.close()