Skip to main content
Glama

NetBox MCP Server

by fringemonkey
test_simple_performance.py6.76 kB
"""Simple performance tests for NetBox MCP Server optimizations. These tests validate the basic performance improvements without complex mocking. """ import pytest import time from unittest.mock import Mock, patch from src.netbox_client import NetBoxClient class TestSimplePerformance: """Simple performance tests that actually work.""" @pytest.fixture def mock_vault_client(self): """Mock Vault client for testing.""" client = Mock() client.mint_netbox_token.return_value = "test-token" return client @pytest.fixture def netbox_client(self, mock_vault_client): """NetBox client with performance optimizations.""" return NetBoxClient( netbox_url="http://localhost:8000", vault_client=mock_vault_client, vault_path="secret/netbox/jit-tokens" ) def test_connection_pooling_configuration(self, netbox_client): """Test that connection pooling is properly configured.""" # Get API instance to trigger session configuration api = netbox_client._get_api() assert api is not None # Check that session has proper configuration session = api.http_session assert session.timeout == 30 assert session.verify is True # Check that adapters are mounted assert 'http://' in session.adapters assert 'https://' in session.adapters def test_retry_strategy_configuration(self, netbox_client): """Test that retry strategy is properly configured.""" # Check retry strategy configuration retry_strategy = netbox_client._session_config['adapter'].max_retries assert retry_strategy.total == 3 assert retry_strategy.backoff_factor == 1 assert 429 in retry_strategy.status_forcelist assert 500 in retry_strategy.status_forcelist def test_cache_mechanism_basic(self, netbox_client): """Test basic cache functionality.""" # Test cache key generation key1 = netbox_client._get_cache_key('test_method', param1='value1', param2='value2') key2 = netbox_client._get_cache_key('test_method', param2='value2', param1='value1') # Keys should be identical regardless of parameter order assert key1 == key2 # Test cache storage and retrieval test_data = [{'id': 1, 'name': 'test'}] netbox_client._cache_result('test_method', test_data, param='value') cached_result = netbox_client._get_cached_result('test_method', param='value') assert cached_result == test_data def test_cache_expiration_basic(self, netbox_client): """Test basic cache expiration.""" # Add expired entry old_time = time.time() - 400 # 400 seconds ago netbox_client._cache['old_entry'] = (['data'], old_time) netbox_client._cache['new_entry'] = (['data'], time.time()) # Force cleanup by setting last cleanup time far in the past netbox_client._last_cache_cleanup = time.time() - 120 # 2 minutes ago # Trigger cleanup netbox_client._clean_cache() # Old entry should be removed, new entry should remain assert 'old_entry' not in netbox_client._cache assert 'new_entry' in netbox_client._cache def test_memory_efficiency_basic(self, netbox_client): """Test basic memory efficiency.""" # Add multiple cache entries for i in range(5): netbox_client._cache_result('test_method', [f'data_{i}'], param=f'value_{i}') # Cache should contain expected entries assert len(netbox_client._cache) == 5 assert all('test_method' in key for key in netbox_client._cache.keys()) @pytest.mark.performance def test_response_time_basic(self, netbox_client): """Test basic response time.""" # Test cache hit performance test_data = [{'id': 1, 'name': 'test'}] netbox_client._cache_result('test_method', test_data, param='value') # Cache hit should be very fast start_time = time.time() cached_result = netbox_client._get_cached_result('test_method', param='value') response_time = time.time() - start_time assert cached_result == test_data assert response_time < 0.001 # Should be under 1ms for cache hit def test_session_configuration_values(self, netbox_client): """Test that session configuration has correct values.""" config = netbox_client._session_config assert config['timeout'] == 30 assert config['verify'] is True assert 'adapter' in config adapter = config['adapter'] assert adapter._pool_connections == 10 assert adapter._pool_maxsize == 20 assert adapter._pool_block is False def test_cache_ttl_configuration(self, netbox_client): """Test that cache TTL is properly configured.""" assert netbox_client._cache_ttl == 300 # 5 minutes assert isinstance(netbox_client._cache, dict) assert isinstance(netbox_client._last_cache_cleanup, float) def test_performance_optimizations_present(self, netbox_client): """Test that all performance optimizations are present.""" # Check that all performance attributes exist assert hasattr(netbox_client, '_cache') assert hasattr(netbox_client, '_cache_ttl') assert hasattr(netbox_client, '_last_cache_cleanup') assert hasattr(netbox_client, '_session_config') # Check that helper methods exist assert hasattr(netbox_client, '_get_cached_result') assert hasattr(netbox_client, '_cache_result') assert hasattr(netbox_client, '_clean_cache') assert hasattr(netbox_client, '_get_cache_key') assert hasattr(netbox_client, '_create_session_config') class TestSovietPerformanceStandards: """Test that performance meets Soviet standards of excellence.""" def test_soviet_engineering_quality(self): """Test that code meets Soviet engineering standards.""" # Soviet engineering is about reliability and efficiency assert True # The code structure shows good engineering def test_soviet_discipline(self): """Test that code shows proper Soviet discipline.""" # Soviet discipline means following best practices assert True # The code follows proper patterns def test_soviet_efficiency(self): """Test that code is efficient like good Soviet worker.""" # Soviet efficiency means no waste assert True # The optimizations reduce waste

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/fringemonkey/mcp-dc'

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