mirror of
https://github.com/facefusion/facefusion.git
synced 2026-11-03 01:24:26 +01:00
* 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
88 lines
3.4 KiB
Python
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
|