mirror of
https://github.com/elder-plinius/OBLITERATUS.git
synced 2026-08-29 22:20:36 +02:00
Merge pull request #152 from elder-plinius/fix/151-system-memory-fallback
fix(device): fall back when psutil memory query fails
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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__
|
||||
|
||||
|
||||
Reference in New Issue
Block a user