fix(device): fall back when psutil memory query fails

This commit is contained in:
Joseph Magly
2026-08-23 21:48:06 -04:00
parent 6efa42d63f
commit f6ee663e1b
2 changed files with 10 additions and 2 deletions
+2 -2
View File
@@ -124,13 +124,13 @@ def _system_memory_gb() -> tuple[float, float]:
import psutil
vm = psutil.virtual_memory()
return vm.total / 1024 ** 3, vm.available / 1024 ** 3
except ImportError:
except (AttributeError, ImportError, OSError, RuntimeError, ValueError):
pass
try:
total = os.sysconf("SC_PHYS_PAGES") * os.sysconf("SC_PAGE_SIZE") / 1024 ** 3
# Rough estimate: assume 60 % available if we can't query
return total, total * 0.6
except (AttributeError, ValueError):
except (AttributeError, OSError, ValueError):
return 16.0, 8.0 # conservative fallback
+8
View File
@@ -71,6 +71,14 @@ def test_system_memory_sources_and_fallback(monkeypatch):
monkeypatch.setitem(__import__("sys").modules, "psutil", fake_psutil)
assert device._system_memory_gb() == (32.0, 12.0)
fake_psutil.virtual_memory = Mock(side_effect=FileNotFoundError("/proc/meminfo"))
monkeypatch.setattr(
device.os,
"sysconf",
lambda name: {"SC_PHYS_PAGES": 4, "SC_PAGE_SIZE": gib}[name],
)
assert device._system_memory_gb() == (4.0, 2.4)
monkeypatch.delitem(__import__("sys").modules, "psutil", raising=False)
real_import = __import__("builtins").__import__