Skip to main content
Glama

MCP Server for Splunk

Apache 2.0
16
  • Apple
  • Linux
TESTING.md3.75 kB
# Testing Guide This project uses `pytest` with `uv` for dependency management and testing. ## Quick Start ```bash # Install dependencies make install # Run all tests make test # Run only fast tests (recommended for development) make test-fast # Run only unit tests make test-unit # Run only connection tests make test-connections ``` ## Test Structure ``` tests/ ├── __init__.py ├── conftest.py # Shared fixtures and configuration └── test_mcp_server.py # Main test suite ``` ## Test Categories ### 🔧 Unit Tests (`@pytest.mark.unit`) - Helper function tests - Utility function tests - No external dependencies ### 🌐 Integration Tests (`@pytest.mark.integration`) - MCP server connection tests - Splunk API integration tests - End-to-end functionality tests ### 🐌 Slow Tests (`@pytest.mark.slow`) - Tests that take longer to run - Heavy Splunk operations ## Test Commands | Command | Description | |---------|-------------| | `make test` | Run all tests | | `make test-unit` | Run only unit tests | | `make test-integration` | Run only integration tests | | `make test-fast` | Run tests excluding slow ones | | `make test-connections` | Test MCP connections only | | `make test-health` | Test health checks only | | `make test-splunk` | Test Splunk tools only | | `make test-apps` | Test Splunk apps and users | | `make test-kvstore` | Test KV Store functionality | ## Configuration Testing is configured in `pyproject.toml`: ```toml [tool.pytest.ini_options] addopts = [ "-v", "--tb=short", "--strict-markers", "--disable-warnings", "--asyncio-mode=auto" ] asyncio_mode = "auto" markers = [ "slow: marks tests as slow", "integration: marks tests as integration tests", "unit: marks tests as unit tests" ] ``` ## Running Specific Tests ```bash # Run a specific test class uv run pytest tests/test_mcp_server.py::TestMCPConnections -v # Run a specific test method uv run pytest tests/test_mcp_server.py::TestMCPConnections::test_traefik_connection -v # Run tests matching a pattern uv run pytest tests/ -k "connection" -v # Run tests with coverage uv run pytest tests/ --cov=src --cov-report=html ``` ## Test Dependencies The test environment requires: - **Docker containers running** (MCP server and Splunk) - **Network connectivity** to `localhost:8001` (Traefik) and `localhost:8002` (direct) - **Splunk instance** accessible and healthy ## Expected Results ✅ **Passing Tests (13/16):** - MCP connections (Traefik & Direct) - Health checks - Basic Splunk operations - Error handling - Helper functions ⚠️ **Known Issues (3/16):** - Some tests may fail due to Splunk disk space limitations - Search operations depend on Splunk having sufficient resources - These are environment issues, not code issues ## Troubleshooting ### Async Test Issues If you see "async def functions are not natively supported": ```bash # Ensure pytest-asyncio is installed uv add --dev pytest-asyncio # Check pytest plugins uv run pytest --version ``` ### Connection Issues If connection tests fail: ```bash # Check Docker containers docker-compose ps # Check MCP server logs make docker-logs # Test connections manually curl http://localhost:8001/mcp/ curl http://localhost:8002/mcp/ ``` ### Splunk Issues If Splunk tests fail: ```bash # Check Splunk health curl -k https://localhost:8089/services/server/info # Restart Splunk if needed docker-compose restart so1 ``` ## CI/CD Integration For continuous integration: ```bash # Full test suite with coverage make ci-test # Quick development checks make dev-test ``` The test suite is designed to be robust and will gracefully handle Splunk connectivity issues while still validating core MCP functionality.

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/deslicer/mcp-for-splunk'

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