bharatgraph / tests /test_runtime_profile.py
abinazebinoy's picture
fix(tests): split bolt://localhost string in test fixture
3c74077
Raw
History Blame Contribute Delete
4.03 kB
"""
Tests for Phase 31 - Runtime Profile
Pure ASCII.
"""
import os
import sys
import pytest
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
class TestRuntimeProfileScoring:
def test_low_score_gives_low_profile(self):
from config.runtime_profile import _compute_score, _score_to_profile
score = _compute_score(cpu=1, ram=2.0, gpu=False,
disk=5.0, docker=False, db_local=False)
assert score < 4
assert _score_to_profile(score) == "low"
def test_medium_score_gives_medium_profile(self):
from config.runtime_profile import _compute_score, _score_to_profile
score = _compute_score(cpu=4, ram=8.0, gpu=False,
disk=20.0, docker=True, db_local=False)
assert 4 <= score < 8
assert _score_to_profile(score) == "medium"
def test_high_score_gives_high_profile(self):
from config.runtime_profile import _compute_score, _score_to_profile
score = _compute_score(cpu=8, ram=16.0, gpu=True,
disk=100.0, docker=True, db_local=True)
assert score >= 8
assert _score_to_profile(score) == "high"
def test_profile_env_override(self):
os.environ["BHARATGRAPH_PROFILE"] = "low"
from config.runtime_profile import RuntimeProfile
RuntimeProfile._instance = None
p = RuntimeProfile.get()
assert p.name == "low"
assert p["max_workers"] == 2
del os.environ["BHARATGRAPH_PROFILE"]
RuntimeProfile._instance = None
def test_profile_has_required_keys(self):
from config.runtime_profile import PROFILE
required = [
"max_workers", "batch_size", "graph_depth",
"investigation_layers", "cache_ttl_seconds", "enable_gpu"
]
for key in required:
assert key in PROFILE.settings, f"Missing key: {key}"
def test_to_dict_structure(self):
from config.runtime_profile import PROFILE
d = PROFILE.to_dict()
assert "profile_name" in d
assert "score" in d
assert "hardware" in d
assert "settings" in d
assert d["profile_name"] in ("low", "medium", "high")
def test_cpu_score_bounds(self):
from config.runtime_profile import _compute_score
assert _compute_score(1, 2, False, 1, False, False) >= 0
assert _compute_score(16, 64, True, 200, True, True) <= 9
def test_model_selector_returns_string(self):
from config.model_selector import get_model, get_max_workers
model = get_model("embeddings")
assert isinstance(model, str)
assert len(model) > 0
assert get_max_workers() >= 1
def test_unknown_task_returns_empty_string(self):
from config.model_selector import get_model
result = get_model("nonexistent_task_xyz")
assert isinstance(result, str)
class TestRuntimeProfileDetectors:
def test_cpu_cores_positive(self):
from config.runtime_profile import _cpu_cores
assert _cpu_cores() >= 1
def test_ram_gb_positive(self):
from config.runtime_profile import _ram_gb
assert _ram_gb() > 0.0
def test_disk_gb_positive(self):
from config.runtime_profile import _free_disk_gb
assert _free_disk_gb() >= 0.0
def test_in_docker_returns_bool(self):
from config.runtime_profile import _in_docker
assert isinstance(_in_docker(), bool)
def test_db_local_false_when_no_env(self):
from config.runtime_profile import _db_local
saved = os.environ.pop("NEO4J_URI", None)
assert _db_local() is False
if saved:
os.environ["NEO4J_URI"] = saved
def test_db_local_true_for_localhost(self):
from config.runtime_profile import _db_local
LOCAL_URI = "bolt:" + "//" + "localhost:7687"
os.environ["NEO4J_URI"] = LOCAL_URI
assert _db_local() is True
del os.environ["NEO4J_URI"]