Skip to main content
Glama

System Information MCP Server

by dknell
test_utils.py•5.87 kB
"""Tests for utility functions.""" import time from system_info_mcp.utils import ( bytes_to_gb, bytes_to_mb, format_uptime, timestamp_to_iso, cache_result, clear_cache, get_cache_stats, safe_float, safe_int, filter_sensitive_cmdline, ) class TestDataFormatting: """Test data formatting functions.""" def test_bytes_to_gb(self): """Test byte to GB conversion.""" assert bytes_to_gb(1024**3) == 1.0 assert bytes_to_gb(1024**3 * 2) == 2.0 assert bytes_to_gb(1536 * 1024**2) == 1.5 # 1.5 GB assert bytes_to_gb(0) == 0.0 def test_bytes_to_mb(self): """Test byte to MB conversion.""" assert bytes_to_mb(1024**2) == 1.0 assert bytes_to_mb(1024**2 * 2) == 2.0 assert bytes_to_mb(1536 * 1024) == 1.5 # 1.5 MB assert bytes_to_mb(0) == 0.0 def test_format_uptime(self): """Test uptime formatting.""" assert format_uptime(0) == "0 minutes" assert format_uptime(60) == "1 minute" assert format_uptime(120) == "2 minutes" assert format_uptime(3600) == "1 hour" assert format_uptime(7200) == "2 hours" assert format_uptime(86400) == "1 day" assert format_uptime(90061) == "1 day, 1 hour, 1 minute" assert format_uptime(172800) == "2 days" def test_timestamp_to_iso(self): """Test timestamp to ISO conversion.""" timestamp = 1609459200.0 # 2021-01-01 00:00:00 UTC iso_string = timestamp_to_iso(timestamp) assert iso_string == "2021-01-01T00:00:00+00:00" def test_safe_float(self): """Test safe float conversion.""" assert safe_float(1.5) == 1.5 assert safe_float("1.5") == 1.5 assert safe_float("invalid") == 0.0 assert safe_float("invalid", 5.0) == 5.0 assert safe_float(None) == 0.0 def test_safe_int(self): """Test safe int conversion.""" assert safe_int(5) == 5 assert safe_int("5") == 5 assert safe_int(5.9) == 5 assert safe_int("invalid") == 0 assert safe_int("invalid", 10) == 10 assert safe_int(None) == 0 class TestCaching: """Test caching functionality.""" def setup_method(self): """Clear cache before each test.""" clear_cache() def test_cache_decorator_sync(self): """Test cache decorator with synchronous function.""" call_count = 0 @cache_result("test_sync", ttl=1) def test_func(value): nonlocal call_count call_count += 1 return value * 2 # First call should execute function result1 = test_func(5) assert result1 == 10 assert call_count == 1 # Second call should use cache result2 = test_func(5) assert result2 == 10 assert call_count == 1 # No additional call # Wait for cache to expire time.sleep(1.1) result3 = test_func(5) assert result3 == 10 assert call_count == 2 # Cache expired, function called again def test_cache_clear(self): """Test cache clearing.""" @cache_result("test_clear") def test_func(): return "cached_value" # Cache a value test_func() stats = get_cache_stats() assert stats["total_entries"] == 1 # Clear specific cache clear_cache("test_clear") stats = get_cache_stats() assert stats["total_entries"] == 0 # Cache again and clear all test_func() clear_cache() # Clear all stats = get_cache_stats() assert stats["total_entries"] == 0 def test_cache_stats(self): """Test cache statistics.""" @cache_result("test_stats") def test_func(): return "value" # No cache initially stats = get_cache_stats() assert stats["total_entries"] == 0 # Add cache entry test_func() stats = get_cache_stats() assert stats["total_entries"] == 1 assert "test_stats" in stats["entries"] assert stats["entries"]["test_stats"]["age_seconds"] >= 0 assert not stats["entries"]["test_stats"]["expired"] class TestCommandLineFiltering: """Test command line argument filtering.""" def test_filter_sensitive_cmdline(self): """Test filtering of sensitive command line arguments.""" # Test empty command line assert filter_sensitive_cmdline([]) == [] # Test normal arguments normal_cmd = ["python", "script.py", "--verbose"] assert filter_sensitive_cmdline(normal_cmd) == normal_cmd # Test password with equals password_cmd = ["mysql", "--password=secret123", "--host=localhost"] expected = ["mysql", "--password=[REDACTED]", "--host=localhost"] assert filter_sensitive_cmdline(password_cmd) == expected # Test password as separate argument password_cmd2 = ["mysql", "--password", "secret123", "--host", "localhost"] expected2 = ["mysql", "--password", "[REDACTED]", "--host", "localhost"] assert filter_sensitive_cmdline(password_cmd2) == expected2 # Test multiple sensitive arguments multi_cmd = ["app", "--token", "abc123", "--secret=def456", "--key", "ghi789"] expected_multi = [ "app", "--token", "[REDACTED]", "--secret=[REDACTED]", "--key", "[REDACTED]", ] assert filter_sensitive_cmdline(multi_cmd) == expected_multi # Test case insensitive matching case_cmd = ["app", "--PASSWORD", "secret", "--Token=token123"] expected_case = ["app", "--PASSWORD", "[REDACTED]", "--Token=[REDACTED]"] assert filter_sensitive_cmdline(case_cmd) == expected_case

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dknell/mcp-system-info'

If you have feedback or need assistance with the MCP directory API, please join our Discord server