57 lines
2.0 KiB
Python
57 lines
2.0 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
"""Tests for psutil_compat memory telemetry."""
|
|
|
|
from unittest.mock import patch
|
|
|
|
import omlx.utils.psutil_compat as psutil_compat
|
|
|
|
|
|
def test_virtual_memory_uses_macos_host_stats():
|
|
with (
|
|
patch("omlx.utils.psutil_compat.sys.platform", "darwin"),
|
|
patch(
|
|
"omlx.utils.psutil_compat.get_macos_vm_stats",
|
|
return_value={
|
|
"free": 2 * 1024**3,
|
|
"inactive": 3 * 1024**3,
|
|
"active": 4 * 1024**3,
|
|
"wired": 1 * 1024**3,
|
|
},
|
|
),
|
|
patch("omlx.utils.psutil_compat.get_total_memory", return_value=16 * 1024**3),
|
|
):
|
|
vm = psutil_compat.virtual_memory()
|
|
|
|
assert vm.total == 16 * 1024**3
|
|
assert vm.available == 5 * 1024**3
|
|
assert vm.free == 2 * 1024**3
|
|
assert vm.inactive == 3 * 1024**3
|
|
assert vm.active == 4 * 1024**3
|
|
assert vm.wired == 1 * 1024**3
|
|
|
|
|
|
def test_virtual_memory_vm_stat_fallback_is_cached():
|
|
vm_stat_output = """Mach Virtual Memory Statistics: (page size of 4096 bytes)
|
|
Pages free: 10.
|
|
Pages active: 20.
|
|
Pages inactive: 30.
|
|
Pages wired down: 40.
|
|
"""
|
|
with (
|
|
patch("omlx.utils.psutil_compat.sys.platform", "darwin"),
|
|
patch("omlx.utils.psutil_compat.get_macos_vm_stats", return_value=None),
|
|
patch("omlx.utils.psutil_compat.get_total_memory", return_value=1024**3),
|
|
patch("omlx.utils.psutil_compat._cached_slow_virtual_memory", None),
|
|
patch("omlx.utils.psutil_compat._cached_slow_virtual_memory_at", 0.0),
|
|
patch(
|
|
"omlx.utils.psutil_compat.subprocess.check_output",
|
|
return_value=vm_stat_output,
|
|
) as mock_check_output,
|
|
):
|
|
first = psutil_compat.virtual_memory()
|
|
second = psutil_compat.virtual_memory()
|
|
|
|
assert first.available == (10 + 30) * 4096
|
|
assert second.available == first.available
|
|
mock_check_output.assert_called_once()
|