Initial commit
This commit is contained in:
180
tests/test_helpers.py
Normal file
180
tests/test_helpers.py
Normal file
@@ -0,0 +1,180 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Tests for helper utilities.
|
||||
"""
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).parent.parent / 'scripts'))
|
||||
|
||||
from utils.helpers import *
|
||||
|
||||
|
||||
def test_format_bytes():
|
||||
"""Test byte formatting."""
|
||||
assert format_bytes(0) == "0.0 B"
|
||||
assert format_bytes(512) == "512.0 B"
|
||||
assert format_bytes(1024) == "1.0 KB"
|
||||
assert format_bytes(1048576) == "1.0 MB"
|
||||
assert format_bytes(1073741824) == "1.0 GB"
|
||||
print("✓ format_bytes() passed")
|
||||
return True
|
||||
|
||||
|
||||
def test_format_duration():
|
||||
"""Test duration formatting."""
|
||||
assert format_duration(30) == "30s"
|
||||
assert format_duration(65) == "1m 5s"
|
||||
assert format_duration(3600) == "1h"
|
||||
assert format_duration(3665) == "1h 1m"
|
||||
assert format_duration(7265) == "2h 1m"
|
||||
print("✓ format_duration() passed")
|
||||
return True
|
||||
|
||||
|
||||
def test_format_percentage():
|
||||
"""Test percentage formatting."""
|
||||
assert format_percentage(45.567) == "45.6%"
|
||||
assert format_percentage(100) == "100.0%"
|
||||
assert format_percentage(0.123, decimals=2) == "0.12%"
|
||||
print("✓ format_percentage() passed")
|
||||
return True
|
||||
|
||||
|
||||
def test_calculate_load_score():
|
||||
"""Test load score calculation."""
|
||||
score = calculate_load_score(50, 50, 50)
|
||||
assert 0 <= score <= 1
|
||||
assert abs(score - 0.5) < 0.01
|
||||
|
||||
score_low = calculate_load_score(20, 30, 25)
|
||||
score_high = calculate_load_score(80, 85, 90)
|
||||
assert score_low < score_high
|
||||
|
||||
print("✓ calculate_load_score() passed")
|
||||
return True
|
||||
|
||||
|
||||
def test_classify_load_status():
|
||||
"""Test load status classification."""
|
||||
assert classify_load_status(0.2) == "low"
|
||||
assert classify_load_status(0.5) == "moderate"
|
||||
assert classify_load_status(0.8) == "high"
|
||||
print("✓ classify_load_status() passed")
|
||||
return True
|
||||
|
||||
|
||||
def test_classify_latency():
|
||||
"""Test latency classification."""
|
||||
status, desc = classify_latency(25)
|
||||
assert status == "excellent"
|
||||
assert "interactive" in desc.lower()
|
||||
|
||||
status, desc = classify_latency(150)
|
||||
assert status == "fair"
|
||||
|
||||
print("✓ classify_latency() passed")
|
||||
return True
|
||||
|
||||
|
||||
def test_parse_disk_usage():
|
||||
"""Test disk usage parsing."""
|
||||
sample_output = """Filesystem Size Used Avail Use% Mounted on
|
||||
/dev/sda1 100G 45G 50G 45% /"""
|
||||
|
||||
result = parse_disk_usage(sample_output)
|
||||
assert result['filesystem'] == '/dev/sda1'
|
||||
assert result['size'] == '100G'
|
||||
assert result['used'] == '45G'
|
||||
assert result['use_pct'] == 45
|
||||
|
||||
print("✓ parse_disk_usage() passed")
|
||||
return True
|
||||
|
||||
|
||||
def test_parse_cpu_load():
|
||||
"""Test CPU load parsing."""
|
||||
sample_output = "19:43:41 up 5 days, 2:15, 3 users, load average: 0.45, 0.38, 0.32"
|
||||
|
||||
result = parse_cpu_load(sample_output)
|
||||
assert result['load_1min'] == 0.45
|
||||
assert result['load_5min'] == 0.38
|
||||
assert result['load_15min'] == 0.32
|
||||
|
||||
print("✓ parse_cpu_load() passed")
|
||||
return True
|
||||
|
||||
|
||||
def test_get_timestamp():
|
||||
"""Test timestamp generation."""
|
||||
ts_iso = get_timestamp(iso=True)
|
||||
assert 'T' in ts_iso
|
||||
assert 'Z' in ts_iso
|
||||
|
||||
ts_human = get_timestamp(iso=False)
|
||||
assert ' ' in ts_human
|
||||
assert len(ts_human) == 19 # YYYY-MM-DD HH:MM:SS
|
||||
|
||||
print("✓ get_timestamp() passed")
|
||||
return True
|
||||
|
||||
|
||||
def test_validate_path():
|
||||
"""Test path validation."""
|
||||
assert validate_path("/tmp", must_exist=True) == True
|
||||
assert validate_path("/nonexistent_path_12345", must_exist=False) == False
|
||||
|
||||
print("✓ validate_path() passed")
|
||||
return True
|
||||
|
||||
|
||||
def test_safe_execute():
|
||||
"""Test safe execution wrapper."""
|
||||
# Should return result on success
|
||||
result = safe_execute(int, "42")
|
||||
assert result == 42
|
||||
|
||||
# Should return default on failure
|
||||
result = safe_execute(int, "not_a_number", default=0)
|
||||
assert result == 0
|
||||
|
||||
print("✓ safe_execute() passed")
|
||||
return True
|
||||
|
||||
|
||||
def main():
|
||||
"""Run all helper tests."""
|
||||
print("=" * 70)
|
||||
print("HELPER TESTS")
|
||||
print("=" * 70)
|
||||
|
||||
tests = [
|
||||
test_format_bytes,
|
||||
test_format_duration,
|
||||
test_format_percentage,
|
||||
test_calculate_load_score,
|
||||
test_classify_load_status,
|
||||
test_classify_latency,
|
||||
test_parse_disk_usage,
|
||||
test_parse_cpu_load,
|
||||
test_get_timestamp,
|
||||
test_validate_path,
|
||||
test_safe_execute,
|
||||
]
|
||||
|
||||
passed = 0
|
||||
for test in tests:
|
||||
try:
|
||||
if test():
|
||||
passed += 1
|
||||
except Exception as e:
|
||||
print(f"✗ {test.__name__} failed: {e}")
|
||||
|
||||
print(f"\nResults: {passed}/{len(tests)} passed")
|
||||
return passed == len(tests)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = main()
|
||||
sys.exit(0 if success else 1)
|
||||
Reference in New Issue
Block a user