Skip to main content
Glama

MCP Memory Service

#!/usr/bin/env python3 # Copyright 2024 Heinrich Krupp # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Test script for mDNS functionality. This script runs the mDNS unit and integration tests to verify that the service discovery functionality works correctly. """ import os import sys import subprocess import argparse # Add the src directory to the Python path sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)), 'src')) def run_unit_tests(): """Run unit tests for mDNS functionality.""" print("🧪 Running mDNS unit tests...") # Try pytest first, fall back to simple test test_file_pytest = os.path.join( os.path.dirname(os.path.dirname(__file__)), 'tests', 'unit', 'test_mdns.py' ) test_file_simple = os.path.join( os.path.dirname(os.path.dirname(__file__)), 'tests', 'unit', 'test_mdns_simple.py' ) # Try pytest first try: result = subprocess.run([ sys.executable, '-m', 'pytest', test_file_pytest, '-v' ], check=True, capture_output=True, text=True) print("✅ Unit tests passed (pytest)!") print(result.stdout) return True except (subprocess.CalledProcessError, FileNotFoundError): # Fall back to simple test try: result = subprocess.run([ sys.executable, test_file_simple ], check=True, capture_output=True, text=True) print("✅ Unit tests passed (simple)!") print(result.stdout) return True except subprocess.CalledProcessError as e: print("❌ Unit tests failed!") print(e.stdout) print(e.stderr) return False def run_integration_tests(): """Run integration tests for mDNS functionality.""" print("🌐 Running mDNS integration tests...") test_file = os.path.join( os.path.dirname(os.path.dirname(__file__)), 'tests', 'integration', 'test_mdns_integration.py' ) try: result = subprocess.run([ sys.executable, '-m', 'pytest', test_file, '-v', '-m', 'integration' ], check=True, capture_output=True, text=True) print("✅ Integration tests passed!") print(result.stdout) return True except subprocess.CalledProcessError as e: print("⚠️ Integration tests had issues (may be expected in CI):") print(e.stdout) print(e.stderr) # Integration tests may fail in CI environments, so don't fail the script return True def check_dependencies(): """Check if required dependencies are available.""" print("🔍 Checking mDNS test dependencies...") pytest_available = True try: import pytest print("✅ pytest available") except ImportError: print("⚠️ pytest not available - will use simple tests") pytest_available = False try: import zeroconf print("✅ zeroconf available") except ImportError: print("❌ zeroconf not available - this should have been installed with the package") return False try: import aiohttp print("✅ aiohttp available") except ImportError: print("❌ aiohttp not available - install with: pip install aiohttp") return False return True def test_basic_imports(): """Test that mDNS modules can be imported.""" print("📦 Testing mDNS module imports...") try: from mcp_memory_service.discovery.mdns_service import ServiceAdvertiser, ServiceDiscovery print("✅ mDNS service modules imported successfully") from mcp_memory_service.discovery.client import DiscoveryClient print("✅ Discovery client imported successfully") return True except ImportError as e: print(f"❌ Import failed: {e}") return False def main(): """Main test function.""" parser = argparse.ArgumentParser(description="Test mDNS functionality") parser.add_argument( "--unit-only", action="store_true", help="Run only unit tests (skip integration tests)" ) parser.add_argument( "--integration-only", action="store_true", help="Run only integration tests (skip unit tests)" ) parser.add_argument( "--no-integration", action="store_true", help="Skip integration tests (same as --unit-only)" ) args = parser.parse_args() print("🔧 MCP Memory Service - mDNS Functionality Test") print("=" * 50) # Check dependencies if not check_dependencies(): print("\n❌ Dependency check failed!") return 1 # Test imports if not test_basic_imports(): print("\n❌ Import test failed!") return 1 success = True # Run unit tests if not args.integration_only: if not run_unit_tests(): success = False # Run integration tests if not (args.unit_only or args.no_integration): if not run_integration_tests(): success = False print("\n" + "=" * 50) if success: print("🎉 All mDNS tests completed successfully!") return 0 else: print("❌ Some tests failed!") return 1 if __name__ == "__main__": sys.exit(main())

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/doobidoo/mcp-memory-service'

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