"""ML device-selection env parsing (#872). Pure logic — no models/GPU/DB.""" from backend.app.services.ml import device def test_gpu_requested_default_is_auto(monkeypatch): monkeypatch.delenv("FC_ML_DEVICE", raising=False) assert device.gpu_requested() is True def test_gpu_requested_modes(monkeypatch): for v in ("auto", "cuda", "gpu", "CUDA", " Auto "): monkeypatch.setenv("FC_ML_DEVICE", v) assert device.gpu_requested() is True for v in ("cpu", "CPU", "none", "0"): monkeypatch.setenv("FC_ML_DEVICE", v) assert device.gpu_requested() is False def test_onnx_gpu_mem_bytes(monkeypatch): monkeypatch.delenv("FC_ML_ONNX_GPU_MEM_GB", raising=False) assert device.onnx_gpu_mem_bytes() == 3 * 1024 ** 3 monkeypatch.setenv("FC_ML_ONNX_GPU_MEM_GB", "2") assert device.onnx_gpu_mem_bytes() == 2 * 1024 ** 3 def test_torch_mem_fraction(monkeypatch): monkeypatch.delenv("FC_ML_TORCH_MEM_FRACTION", raising=False) assert device.torch_mem_fraction() == 0.6 monkeypatch.setenv("FC_ML_TORCH_MEM_FRACTION", "0.5") assert device.torch_mem_fraction() == 0.5