mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-06-04 11:25:52 +08:00
70 lines
1.8 KiB
Python
70 lines
1.8 KiB
Python
import sqlite3
|
|
from collections import namedtuple
|
|
from typing import Any, Generator
|
|
|
|
import pytest
|
|
|
|
from fixtures import types
|
|
|
|
ConnectionTuple = namedtuple("ConnectionTuple", "connection config")
|
|
|
|
|
|
@pytest.fixture(name="sqlite", scope="package")
|
|
def sqlite(
|
|
tmpfs: Generator[types.LegacyPath, Any, None],
|
|
request: pytest.FixtureRequest,
|
|
pytestconfig: pytest.Config,
|
|
) -> types.TestContainerSQL:
|
|
"""
|
|
Package-scoped fixture for SQLite.
|
|
"""
|
|
|
|
dev = request.config.getoption("--dev")
|
|
if dev:
|
|
container = pytestconfig.cache.get("sqlite.container", None)
|
|
env = pytestconfig.cache.get("sqlite.env", None)
|
|
|
|
if container and env:
|
|
assert isinstance(container, dict)
|
|
assert isinstance(env, dict)
|
|
|
|
return types.TestContainerSQL(
|
|
container=types.TestContainerDocker(
|
|
host_config=None,
|
|
container_config=None,
|
|
),
|
|
conn=sqlite3.connect(
|
|
env["SIGNOZ_SQLSTORE_SQLITE_PATH"], check_same_thread=False
|
|
),
|
|
env=env,
|
|
)
|
|
|
|
tmpdir = tmpfs("sqlite")
|
|
path = tmpdir / "signoz.db"
|
|
connection = sqlite3.connect(path, check_same_thread=False)
|
|
|
|
def stop():
|
|
if dev:
|
|
return
|
|
|
|
connection.close()
|
|
|
|
request.addfinalizer(stop)
|
|
|
|
cached_sqlite = types.TestContainerSQL(
|
|
container=types.TestContainerDocker(
|
|
host_config=None,
|
|
container_config=None,
|
|
),
|
|
conn=connection,
|
|
env={
|
|
"SIGNOZ_SQLSTORE_PROVIDER": "sqlite",
|
|
"SIGNOZ_SQLSTORE_SQLITE_PATH": str(path),
|
|
},
|
|
)
|
|
|
|
if dev:
|
|
pytestconfig.cache.set("sqlite.env", cached_sqlite.env)
|
|
|
|
return cached_sqlite
|