mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-06-10 23:35:14 +02:00
resolve_cassandra_config did not accept replication_factor as a kwarg, so cassandra_replication_factor from YAML params was silently ignored by all 6 callers. Add the kwarg and pass it from every caller. Same fix for Qdrant: 3 writers now pass qdrant_replication_factor and qdrant_shard_number from params. Add tests covering the params path for both helpers.
136 lines
4.5 KiB
Python
136 lines
4.5 KiB
Python
|
|
import os
|
|
import pytest
|
|
from unittest.mock import patch
|
|
|
|
from trustgraph.base.qdrant_config import (
|
|
get_qdrant_defaults,
|
|
resolve_qdrant_config,
|
|
)
|
|
|
|
|
|
class TestGetQdrantDefaults:
|
|
|
|
def test_defaults_with_no_env_vars(self):
|
|
with patch.dict(os.environ, {}, clear=True):
|
|
defaults = get_qdrant_defaults()
|
|
assert defaults['url'] == 'http://localhost:6333'
|
|
assert defaults['api_key'] is None
|
|
assert defaults['replication_factor'] == 1
|
|
assert defaults['shard_number'] == 1
|
|
|
|
def test_defaults_from_env(self):
|
|
env = {
|
|
'QDRANT_URL': 'http://qdrant:6333',
|
|
'QDRANT_API_KEY': 'secret',
|
|
'QDRANT_REPLICATION_FACTOR': '3',
|
|
'QDRANT_SHARD_NUMBER': '5',
|
|
}
|
|
with patch.dict(os.environ, env, clear=True):
|
|
defaults = get_qdrant_defaults()
|
|
assert defaults['url'] == 'http://qdrant:6333'
|
|
assert defaults['api_key'] == 'secret'
|
|
assert defaults['replication_factor'] == 3
|
|
assert defaults['shard_number'] == 5
|
|
|
|
|
|
class TestResolveQdrantConfig:
|
|
|
|
def test_defaults(self):
|
|
with patch.dict(os.environ, {}, clear=True):
|
|
url, api_key, rf, sn = resolve_qdrant_config()
|
|
assert url == 'http://localhost:6333'
|
|
assert api_key is None
|
|
assert rf == 1
|
|
assert sn == 1
|
|
|
|
def test_explicit_kwargs(self):
|
|
with patch.dict(os.environ, {}, clear=True):
|
|
url, api_key, rf, sn = resolve_qdrant_config(
|
|
url='http://custom:6333',
|
|
api_key='key',
|
|
replication_factor=3,
|
|
shard_number=5,
|
|
)
|
|
assert url == 'http://custom:6333'
|
|
assert api_key == 'key'
|
|
assert rf == 3
|
|
assert sn == 5
|
|
|
|
def test_kwargs_override_env(self):
|
|
env = {
|
|
'QDRANT_URL': 'http://env:6333',
|
|
'QDRANT_REPLICATION_FACTOR': '10',
|
|
'QDRANT_SHARD_NUMBER': '10',
|
|
}
|
|
with patch.dict(os.environ, env, clear=True):
|
|
url, _, rf, sn = resolve_qdrant_config(
|
|
url='http://explicit:6333',
|
|
replication_factor=3,
|
|
shard_number=5,
|
|
)
|
|
assert url == 'http://explicit:6333'
|
|
assert rf == 3
|
|
assert sn == 5
|
|
|
|
def test_env_fallback_when_kwargs_none(self):
|
|
env = {
|
|
'QDRANT_URL': 'http://env:6333',
|
|
'QDRANT_REPLICATION_FACTOR': '3',
|
|
'QDRANT_SHARD_NUMBER': '5',
|
|
}
|
|
with patch.dict(os.environ, env, clear=True):
|
|
url, _, rf, sn = resolve_qdrant_config()
|
|
assert url == 'http://env:6333'
|
|
assert rf == 3
|
|
assert sn == 5
|
|
|
|
def test_params_dict_path(self):
|
|
with patch.dict(os.environ, {}, clear=True):
|
|
params = {
|
|
'store_uri': 'http://params:6333',
|
|
'api_key': 'pkey',
|
|
'qdrant_replication_factor': 3,
|
|
'qdrant_shard_number': 5,
|
|
}
|
|
url, api_key, rf, sn = resolve_qdrant_config(
|
|
url=params.get('store_uri'),
|
|
api_key=params.get('api_key'),
|
|
replication_factor=params.get('qdrant_replication_factor'),
|
|
shard_number=params.get('qdrant_shard_number'),
|
|
)
|
|
assert url == 'http://params:6333'
|
|
assert api_key == 'pkey'
|
|
assert rf == 3
|
|
assert sn == 5
|
|
|
|
def test_params_dict_overrides_env(self):
|
|
env = {
|
|
'QDRANT_REPLICATION_FACTOR': '10',
|
|
'QDRANT_SHARD_NUMBER': '10',
|
|
}
|
|
with patch.dict(os.environ, env, clear=True):
|
|
params = {
|
|
'qdrant_replication_factor': 3,
|
|
'qdrant_shard_number': 5,
|
|
}
|
|
_, _, rf, sn = resolve_qdrant_config(
|
|
replication_factor=params.get('qdrant_replication_factor'),
|
|
shard_number=params.get('qdrant_shard_number'),
|
|
)
|
|
assert rf == 3
|
|
assert sn == 5
|
|
|
|
def test_params_dict_missing_falls_to_env(self):
|
|
env = {
|
|
'QDRANT_REPLICATION_FACTOR': '3',
|
|
'QDRANT_SHARD_NUMBER': '5',
|
|
}
|
|
with patch.dict(os.environ, env, clear=True):
|
|
params = {}
|
|
_, _, rf, sn = resolve_qdrant_config(
|
|
replication_factor=params.get('qdrant_replication_factor'),
|
|
shard_number=params.get('qdrant_shard_number'),
|
|
)
|
|
assert rf == 3
|
|
assert sn == 5
|