mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-06-04 11:25:52 +08:00
68 lines
2.0 KiB
Python
68 lines
2.0 KiB
Python
import dataclasses
|
|
|
|
import pytest
|
|
from testcontainers.core.container import DockerContainer, Network
|
|
|
|
from fixtures import types
|
|
|
|
|
|
@pytest.fixture(name="zookeeper", scope="package")
|
|
def zookeeper(
|
|
network: Network, request: pytest.FixtureRequest, pytestconfig: pytest.Config
|
|
) -> types.TestContainerDocker:
|
|
"""
|
|
Package-scoped fixture for Zookeeper TestContainer.
|
|
"""
|
|
|
|
dev = request.config.getoption("--dev")
|
|
if dev:
|
|
cached_zookeeper = pytestconfig.cache.get("zookeeper", None)
|
|
if cached_zookeeper:
|
|
return types.TestContainerDocker(
|
|
host_config=types.TestContainerUrlConfig(
|
|
cached_zookeeper["host_config"]["scheme"],
|
|
cached_zookeeper["host_config"]["address"],
|
|
cached_zookeeper["host_config"]["port"],
|
|
),
|
|
container_config=types.TestContainerUrlConfig(
|
|
cached_zookeeper["container_config"]["scheme"],
|
|
cached_zookeeper["container_config"]["address"],
|
|
cached_zookeeper["container_config"]["port"],
|
|
),
|
|
)
|
|
|
|
version = request.config.getoption("--zookeeper-version")
|
|
|
|
container = DockerContainer(image=f"bitnami/zookeeper:{version}")
|
|
container.with_env("ALLOW_ANONYMOUS_LOGIN", "yes")
|
|
container.with_exposed_ports(2181)
|
|
container.with_network(network=network)
|
|
|
|
container.start()
|
|
|
|
def stop():
|
|
if dev:
|
|
return
|
|
|
|
container.stop(delete_volume=True)
|
|
|
|
request.addfinalizer(stop)
|
|
|
|
cached_zookeeper = types.TestContainerDocker(
|
|
host_config=types.TestContainerUrlConfig(
|
|
"tcp",
|
|
container.get_container_host_ip(),
|
|
container.get_exposed_port(2181),
|
|
),
|
|
container_config=types.TestContainerUrlConfig(
|
|
"tcp",
|
|
container.get_wrapped_container().name,
|
|
2181,
|
|
),
|
|
)
|
|
|
|
if dev:
|
|
pytestconfig.cache.set("zookeeper", dataclasses.asdict(cached_zookeeper))
|
|
|
|
return cached_zookeeper
|