Files
facefusion/tests/test_system.py
Henry Ruhs d982608c94 Support for AMD ADLX and refactor device handles (#1251)
* experimental amd_adlx support

* experimental amd_adlx support

* reorder

* move methods out of libraries

* driver version for amd_smi

* driver version for amd_smi

* driver version for amd_adlx

* driver version for amd_adlx

* make detect_graphic_devices idiotic

* uniform interface for devices

* uniform interface for devices part2

* uniform interface for devices part3

* fix ci

* fix version in amd adlx

* fix None for version lockup
2026-10-19 20:47:35 +02:00

88 lines
3.4 KiB
Python

import tempfile
from unittest.mock import patch
import pytest
from facefusion import state_manager
from facefusion.common_helper import is_linux, is_windows
from facefusion.system import detect_disk_metrics, detect_graphic_devices, detect_memory_metrics, detect_network_metrics, detect_processor_metrics, get_metrics_set
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('temp_path', tempfile.gettempdir())
state_manager.init_item('execution_providers', [ 'cpu' ])
def test_get_metrics_set() -> None:
with patch('facefusion.system.psutil.cpu_freq', create = True):
assert get_metrics_set().get('graphic_devices') == []
def test_detect_graphic_devices() -> None:
assert detect_graphic_devices([ 'cpu' ]) == []
with patch('facefusion.system.detect_nvidia_ml', return_value = [ 'nvidia_ml' ]):
assert detect_graphic_devices([ 'cuda' ]) == [ 'nvidia_ml' ]
assert detect_graphic_devices([ 'tensorrt' ]) == [ 'nvidia_ml' ]
if is_linux():
with patch('facefusion.system.detect_amd_smi', return_value = [ 'amd_smi' ]):
assert detect_graphic_devices([ 'migraphx' ]) == [ 'amd_smi' ]
if is_windows():
with patch('facefusion.system.detect_amd_adlx', return_value = [ 'amd_adlx' ]):
assert detect_graphic_devices([ 'directml' ]) == [ 'amd_adlx' ]
with patch('facefusion.system.detect_amd_adlx', return_value = []):
with patch('facefusion.system.detect_nvidia_ml', return_value = [ 'nvidia_ml' ]):
assert detect_graphic_devices([ 'directml' ]) == [ 'nvidia_ml' ]
def test_detect_disk_metrics() -> None:
with patch('facefusion.system.shutil.disk_usage') as disk_usage:
disk_usage.return_value.total = 20 * 1024 ** 4
disk_usage.return_value.free = 10 * 1024 ** 4
disk_usage.return_value.used = 10 * 1024 ** 4
disk_metrics = detect_disk_metrics([ tempfile.gettempdir() ])
assert disk_metrics[0].get('total').get('value') == 20480
assert disk_metrics[0].get('free').get('value') == 10240
assert disk_metrics[0].get('utilization').get('value') == 50
def test_detect_memory_metrics() -> None:
with patch('facefusion.system.psutil.virtual_memory') as virtual_memory:
virtual_memory.return_value.total = 32 * 1024 ** 3
virtual_memory.return_value.available = 16 * 1024 ** 3
virtual_memory.return_value.percent = 50
memory_metrics = detect_memory_metrics()
assert memory_metrics.get('total').get('value') == 32
assert memory_metrics.get('free').get('value') == 16
assert memory_metrics.get('utilization').get('value') == 50
def test_detect_network_metrics() -> None:
with patch('facefusion.system.psutil.net_io_counters') as net_io_counters:
net_io_counters.return_value.bytes_sent = 400 * 1024 * 1024
net_io_counters.return_value.bytes_recv = 800 * 1024 * 1024
network_metrics = detect_network_metrics()
assert network_metrics.get('up').get('value') == 400
assert network_metrics.get('down').get('value') == 800
def test_detect_processor_metrics() -> None:
with patch('facefusion.system.psutil.cpu_count', return_value = 16):
with patch('facefusion.system.psutil.cpu_freq', create = True) as cpu_freq:
cpu_freq.return_value.current = 3000
with patch('facefusion.system.psutil.cpu_percent', return_value = 50):
processor_metrics = detect_processor_metrics()
assert processor_metrics.get('cores').get('value') == 16
assert processor_metrics.get('frequency').get('value') == 3000
assert processor_metrics.get('utilization').get('value') == 50