Skip to main content
Glama
pshempel

MCP Time Server Node

by pshempel
test_rate_limiting.py4.58 kB
#!/usr/bin/env python3 """ TDD Tests for rate limiting stress tester """ import unittest import sys import os sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from stress.rate_limit_stress import RateLimitStressTester class TestRateLimitStressTester(unittest.TestCase): """Test rate limiting stress tester functionality""" def test_rate_limit_stress_tester_exists(self): """Test that RateLimitStressTester class exists""" self.assertIsNotNone(RateLimitStressTester, "RateLimitStressTester class should exist") def test_can_create_tester_instance(self): """Test that we can create a RateLimitStressTester instance""" tester = RateLimitStressTester(rate_limit=10, window_ms=1000) self.assertIsNotNone(tester) self.assertEqual(tester.rate_limit, 10) self.assertEqual(tester.window_ms, 1000) def test_burst_at_limit_scenario(self): """Test burst at limit scenario""" tester = RateLimitStressTester(rate_limit=5, window_ms=1000) # Should have a method to run burst test self.assertTrue(hasattr(tester, 'test_burst_at_limit')) # Run the test result = tester.test_burst_at_limit() # Should return results with expected structure self.assertIn('scenario', result) self.assertIn('successful_requests', result) self.assertIn('rate_limited_requests', result) self.assertIn('errors', result) self.assertEqual(result['scenario'], 'burst_at_limit') def test_parallel_connections_scenario(self): """Test parallel connections scenario""" tester = RateLimitStressTester(rate_limit=5, window_ms=1000) # Should have method for parallel connections test self.assertTrue(hasattr(tester, 'test_parallel_connections')) # Run test with 3 parallel connections result = tester.test_parallel_connections(num_connections=3) # Should return results for each connection self.assertIn('scenario', result) self.assertIn('connections', result) self.assertIn('total_requests', result) self.assertIn('bypass_detected', result) self.assertEqual(result['scenario'], 'parallel_connections') self.assertEqual(len(result['connections']), 3) def test_memory_exhaustion_scenario(self): """Test memory exhaustion prevention""" tester = RateLimitStressTester(rate_limit=100, window_ms=60000) # Should have method for memory exhaustion test self.assertTrue(hasattr(tester, 'test_memory_exhaustion')) # Run memory test result = tester.test_memory_exhaustion(duration_seconds=5) # Should track memory usage self.assertIn('scenario', result) self.assertIn('memory_start_mb', result) self.assertIn('memory_end_mb', result) self.assertIn('memory_growth_mb', result) self.assertIn('requests_made', result) self.assertEqual(result['scenario'], 'memory_exhaustion') def test_rapid_reconnect_scenario(self): """Test rapid disconnect/reconnect scenario""" tester = RateLimitStressTester(rate_limit=5, window_ms=1000) # Should have method for rapid reconnect test self.assertTrue(hasattr(tester, 'test_rapid_reconnect')) # Run reconnect test result = tester.test_rapid_reconnect(num_cycles=3) # Should show bypass via reconnection self.assertIn('scenario', result) self.assertIn('cycles', result) self.assertIn('total_requests', result) self.assertIn('expected_limited', result) self.assertIn('actual_limited', result) self.assertEqual(result['scenario'], 'rapid_reconnect') self.assertEqual(len(result['cycles']), 3) def test_can_save_results(self): """Test that results can be saved to file""" tester = RateLimitStressTester(rate_limit=5, window_ms=1000) # Should have method to save results self.assertTrue(hasattr(tester, 'save_results')) # Create dummy results results = { 'scenario': 'test', 'timestamp': '2025-01-01T00:00:00', 'success': True } # Should save without error filename = tester.save_results(results) self.assertTrue(filename.endswith('.json')) if __name__ == '__main__': unittest.main()

Latest Blog Posts

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/pshempel/mcp-time-server-node'

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