mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-07-15 12:58:04 +00:00
fix(hwfit): normalize CPU arch for fallback estimates (#4441)
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
"""CPU architecture normalization for HW Fit hardware detection."""
|
||||
|
||||
import pytest
|
||||
|
||||
from services.hwfit import hardware
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def _clear_hwfit_cache(monkeypatch):
|
||||
hardware._cache_by_host.clear()
|
||||
monkeypatch.setattr(hardware, "_remote_host", None)
|
||||
monkeypatch.setattr(hardware, "_remote_platform", None)
|
||||
monkeypatch.setattr(hardware, "_is_containerized", lambda: False)
|
||||
yield
|
||||
hardware._cache_by_host.clear()
|
||||
|
||||
|
||||
def _stub_common_probe(monkeypatch, machine):
|
||||
monkeypatch.setattr(hardware.platform, "machine", lambda: machine)
|
||||
monkeypatch.setattr(hardware, "_get_ram_gb", lambda: 64.0)
|
||||
monkeypatch.setattr(hardware, "_get_available_ram_gb", lambda: 48.0)
|
||||
monkeypatch.setattr(hardware, "_get_cpu_count", lambda: 16)
|
||||
monkeypatch.setattr(hardware, "_get_cpu_name", lambda: "Test CPU")
|
||||
monkeypatch.setattr(hardware, "_detect_apple_silicon", lambda: None)
|
||||
monkeypatch.setattr(hardware, "_detect_amd", lambda: None)
|
||||
|
||||
|
||||
def test_detect_system_reports_cpu_arch_for_gpu_backends(monkeypatch):
|
||||
"""GPU-backed systems still need CPU architecture for cpu_only estimates."""
|
||||
_stub_common_probe(monkeypatch, "aarch64")
|
||||
monkeypatch.setattr(hardware, "_detect_nvidia", lambda: {
|
||||
"gpu_name": "NVIDIA GB10",
|
||||
"gpu_vram_gb": 64.0,
|
||||
"gpu_count": 1,
|
||||
"gpus": [],
|
||||
"gpu_groups": [],
|
||||
"homogeneous": True,
|
||||
"backend": "cuda",
|
||||
})
|
||||
|
||||
system = hardware.detect_system(fresh=True)
|
||||
|
||||
assert system["backend"] == "cuda"
|
||||
assert system["cpu_arch"] == "arm64"
|
||||
|
||||
|
||||
def test_detect_system_keeps_32_bit_arm_on_conservative_cpu_backend(monkeypatch):
|
||||
"""Plain arm/armv7 is not the same as the ARM64-class cpu_arm fallback."""
|
||||
_stub_common_probe(monkeypatch, "armv7l")
|
||||
monkeypatch.setattr(hardware, "_detect_nvidia", lambda: None)
|
||||
|
||||
system = hardware.detect_system(fresh=True)
|
||||
|
||||
assert system["cpu_arch"] == "arm"
|
||||
assert system["backend"] == "cpu_x86"
|
||||
Reference in New Issue
Block a user