Add artifact.boot_logger/tests/test_core.py

This commit is contained in:
Mika 2026-01-07 16:12:03 +00:00
parent 6ce745ebb4
commit f4fc1d5c68

View 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')