Add artifact.boot_logger/tests/test_core.py
This commit is contained in:
parent
6ce745ebb4
commit
f4fc1d5c68
1 changed files with 61 additions and 0 deletions
61
artifact.boot_logger/tests/test_core.py
Normal file
61
artifact.boot_logger/tests/test_core.py
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
import pytest
|
||||
import types
|
||||
|
||||
# Wir testen die Funktion collect_tsc_data aus dem Modul artifact_boot_logger.main
|
||||
import artifact_boot_logger.main as main
|
||||
|
||||
def fake_open_read_data(file_map):
|
||||
class FakeFile:
|
||||
def __init__(self, text):
|
||||
self.text = text
|
||||
def read(self):
|
||||
return self.text
|
||||
def __enter__(self):
|
||||
return self
|
||||
def __exit__(self, *a):
|
||||
return False
|
||||
def fake_open(path, *a, **kw):
|
||||
return FakeFile(file_map.get(path, ''))
|
||||
return fake_open
|
||||
|
||||
@pytest.fixture
|
||||
def mock_environment(monkeypatch):
|
||||
# Simulierte Daten für dmesg und sysfs
|
||||
fake_data = {
|
||||
'/var/log/dmesg': 'TSC: stable within 1ns (check passed)',
|
||||
'/sys/devices/system/clocksource/clocksource0/current_clocksource': 'tsc',
|
||||
'/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor': 'performance',
|
||||
'/sys/devices/virtual/dmi/id/product_uuid': 'test-boot-id',
|
||||
'/sys/class/dmi/id/sys_vendor': 'QEMU',
|
||||
}
|
||||
fake_os_path_exists = lambda p: p in fake_data
|
||||
monkeypatch.setattr(main.os.path, 'exists', fake_os_path_exists)
|
||||
monkeypatch.setattr(main, 'open', fake_open_read_data(fake_data))
|
||||
monkeypatch.setattr(main.subprocess, 'check_output', lambda cmd, text: fake_data['/var/log/dmesg'])
|
||||
yield fake_data
|
||||
|
||||
def test_collect_tsc_data_returns_valid_structure(mock_environment):
|
||||
result = main.collect_tsc_data()
|
||||
assert isinstance(result, dict)
|
||||
expected_keys = {'boot_id', 'host_vm', 'pinned', 'governor', 'tsc_status'}
|
||||
assert expected_keys.issubset(result.keys())
|
||||
|
||||
def test_tsc_status_extraction(mock_environment):
|
||||
data = main.collect_tsc_data()
|
||||
assert data['tsc_status'] in ('stable', 'unstable')
|
||||
|
||||
@pytest.mark.parametrize('governor_text,expected', [
|
||||
('performance', 'performance'),
|
||||
('ondemand', 'ondemand'),
|
||||
])
|
||||
def test_governor_detection(monkeypatch, mock_environment, governor_text, expected):
|
||||
fake_data = dict(mock_environment)
|
||||
fake_data['/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor'] = governor_text
|
||||
monkeypatch.setattr(main, 'open', fake_open_read_data(fake_data))
|
||||
res = main.collect_tsc_data()
|
||||
assert res['governor'] == expected
|
||||
|
||||
def test_boot_id_and_host_vm_fields(mock_environment):
|
||||
res = main.collect_tsc_data()
|
||||
assert isinstance(res['boot_id'], str)
|
||||
assert res['host_vm'] in ('host', 'vm')
|
||||
Loading…
Reference in a new issue