"""Tests for local system probes — TDD: tests before implementation.""" import os import tempfile from unittest.mock import patch import pytest from i2p_apps.setup.local_probe import ( LocalProbeResult, measure_crypto_throughput, measure_disk_speed, measure_ram, run_local_probes, ) class TestCryptoThroughput: def test_returns_positive_int(self): result = measure_crypto_throughput(duration_seconds=0.5) assert isinstance(result, int) assert result > 0 def test_scales_with_duration(self): short = measure_crypto_throughput(duration_seconds=0.2) # Result is ops/sec, so should be roughly consistent regardless of duration assert short > 0 class TestMeasureRam: def test_returns_tuple(self): available, total = measure_ram() assert isinstance(available, int) assert isinstance(total, int) assert available > 0 assert total > 0 assert available <= total class TestMeasureDiskSpeed: def test_returns_positive_float(self): with tempfile.TemporaryDirectory() as tmpdir: speed = measure_disk_speed(tmpdir, size_mb=1) assert isinstance(speed, float) assert speed > 0 def test_creates_no_leftover_files(self): with tempfile.TemporaryDirectory() as tmpdir: measure_disk_speed(tmpdir, size_mb=1) assert len(os.listdir(tmpdir)) == 0 class TestRunLocalProbes: def test_returns_local_probe_result(self): with tempfile.TemporaryDirectory() as tmpdir: result = run_local_probes(data_dir=tmpdir) assert isinstance(result, LocalProbeResult) assert result.crypto_ops_per_sec > 0 assert result.available_ram_bytes > 0 assert result.total_ram_bytes > 0 assert result.cpu_count >= 1 assert result.disk_write_mbps > 0 assert result.disk_free_bytes >= 0 class TestLocalProbeResultFields: def test_all_fields_present(self): r = LocalProbeResult( crypto_ops_per_sec=10000, available_ram_bytes=8_000_000_000, total_ram_bytes=16_000_000_000, cpu_count=8, disk_write_mbps=200.0, disk_free_bytes=100_000_000_000, ) assert r.crypto_ops_per_sec == 10000 assert r.cpu_count == 8