Implement integration test suite for Miroir with docker-compose: - Updated docker-compose-dev.yml to use Meilisearch v1.37.0 - Created tests/integration.rs with comprehensive test coverage: * Document round-trip (1000 docs) * Search coverage across all shards (unique-keyword test) * Facet aggregation (3 colors, sum = 100) * Offset/limit paging * Settings broadcast * Task polling * Health check * Node failure test with RF=2 - Created docker-compose-dev-rf2.yml for RF=2/HA testing (6 nodes) - Created dev-config-rf2.yaml for RF=2 configuration - Created tests/README.md with documentation Tests run against real Docker Compose stack: cargo test --test integration -- --test-threads=1 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
102 lines
2.7 KiB
YAML
102 lines
2.7 KiB
YAML
# Miroir development stack — 3 Meilisearch nodes + 1 Miroir orchestrator
|
|
# Quick start: docker compose -f examples/docker-compose-dev.yml up -d
|
|
|
|
services:
|
|
# Meilisearch node 0 (shard replica group 0)
|
|
meili-0:
|
|
image: getmeili/meilisearch:v1.37.0
|
|
container_name: miroir-meili-0
|
|
environment:
|
|
- MEILI_ENV=development
|
|
- MEILI_MASTER_KEY=dev-node-key
|
|
- MEILI_NO_ANALYTICS=true
|
|
ports:
|
|
- "7701:7700"
|
|
volumes:
|
|
- meili-0-data:/meili_data
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:7700/health"]
|
|
interval: 5s
|
|
timeout: 2s
|
|
retries: 3
|
|
|
|
# Meilisearch node 1 (shard replica group 0)
|
|
meili-1:
|
|
image: getmeili/meilisearch:v1.37.0
|
|
container_name: miroir-meili-1
|
|
environment:
|
|
- MEILI_ENV=development
|
|
- MEILI_MASTER_KEY=dev-node-key
|
|
- MEILI_NO_ANALYTICS=true
|
|
ports:
|
|
- "7702:7700"
|
|
volumes:
|
|
- meili-1-data:/meili_data
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:7700/health"]
|
|
interval: 5s
|
|
timeout: 2s
|
|
retries: 3
|
|
|
|
# Meilisearch node 2 (shard replica group 0)
|
|
meili-2:
|
|
image: getmeili/meilisearch:v1.37.0
|
|
container_name: miroir-meili-2
|
|
environment:
|
|
- MEILI_ENV=development
|
|
- MEILI_MASTER_KEY=dev-node-key
|
|
- MEILI_NO_ANALYTICS=true
|
|
ports:
|
|
- "7703:7700"
|
|
volumes:
|
|
- meili-2-data:/meili_data
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:7700/health"]
|
|
interval: 5s
|
|
timeout: 2s
|
|
retries: 3
|
|
|
|
# Miroir orchestrator
|
|
miroir:
|
|
build:
|
|
context: ..
|
|
dockerfile: Dockerfile
|
|
image: miroir-dev:latest
|
|
container_name: miroir-orchestrator
|
|
environment:
|
|
- MIROIR_MASTER_KEY=dev-key
|
|
- MIROIR_NODE_MASTER_KEY=dev-node-key
|
|
ports:
|
|
- "7700:7700"
|
|
volumes:
|
|
- ../examples/dev-config.yaml:/etc/miroir/config.yaml:ro
|
|
- miroir-data:/data
|
|
depends_on:
|
|
meili-0:
|
|
condition: service_healthy
|
|
meili-1:
|
|
condition: service_healthy
|
|
meili-2:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:7700/health"]
|
|
interval: 5s
|
|
timeout: 2s
|
|
retries: 3
|
|
|
|
# Optional: Redis for multi-replica Miroir deployments
|
|
# Uncomment this service and set task_store.backend=redis in dev-config.yaml
|
|
# redis:
|
|
# image: redis:7-alpine
|
|
# container_name: miroir-redis
|
|
# ports:
|
|
# - "6379:6379"
|
|
# volumes:
|
|
# - redis-data:/data
|
|
|
|
volumes:
|
|
meili-0-data:
|
|
meili-1-data:
|
|
meili-2-data:
|
|
miroir-data:
|
|
# redis-data:
|