174 lines
4.9 KiB
YAML
174 lines
4.9 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
# PostgreSQL for testing
|
|
postgres-test:
|
|
image: postgres:15-alpine
|
|
environment:
|
|
POSTGRES_USER: mpc_user
|
|
POSTGRES_PASSWORD: mpc_password
|
|
POSTGRES_DB: mpc_system_test
|
|
ports:
|
|
- "5433:5432"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U mpc_user -d mpc_system_test"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
# Redis for testing
|
|
redis-test:
|
|
image: redis:7-alpine
|
|
ports:
|
|
- "6380:6379"
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
# RabbitMQ for testing
|
|
rabbitmq-test:
|
|
image: rabbitmq:3-management-alpine
|
|
environment:
|
|
RABBITMQ_DEFAULT_USER: mpc_user
|
|
RABBITMQ_DEFAULT_PASS: mpc_password
|
|
ports:
|
|
- "5673:5672"
|
|
- "15673:15672"
|
|
healthcheck:
|
|
test: ["CMD", "rabbitmq-diagnostics", "check_running"]
|
|
interval: 10s
|
|
timeout: 10s
|
|
retries: 5
|
|
|
|
# Database migration service
|
|
migrate:
|
|
image: migrate/migrate
|
|
depends_on:
|
|
postgres-test:
|
|
condition: service_healthy
|
|
volumes:
|
|
- ../migrations:/migrations
|
|
command: [
|
|
"-path", "/migrations",
|
|
"-database", "postgres://mpc_user:mpc_password@postgres-test:5432/mpc_system_test?sslmode=disable",
|
|
"up"
|
|
]
|
|
|
|
# Integration test runner
|
|
integration-tests:
|
|
build:
|
|
context: ..
|
|
dockerfile: tests/Dockerfile.test
|
|
depends_on:
|
|
postgres-test:
|
|
condition: service_healthy
|
|
redis-test:
|
|
condition: service_healthy
|
|
rabbitmq-test:
|
|
condition: service_healthy
|
|
migrate:
|
|
condition: service_completed_successfully
|
|
environment:
|
|
TEST_DATABASE_URL: postgres://mpc_user:mpc_password@postgres-test:5432/mpc_system_test?sslmode=disable
|
|
TEST_REDIS_URL: redis-test:6379
|
|
TEST_RABBITMQ_URL: amqp://mpc_user:mpc_password@rabbitmq-test:5672/
|
|
command: ["go", "test", "-v", "-tags=integration", "./tests/integration/..."]
|
|
|
|
# E2E test services
|
|
session-coordinator-test:
|
|
build:
|
|
context: ..
|
|
dockerfile: services/session-coordinator/Dockerfile
|
|
depends_on:
|
|
postgres-test:
|
|
condition: service_healthy
|
|
redis-test:
|
|
condition: service_healthy
|
|
rabbitmq-test:
|
|
condition: service_healthy
|
|
migrate:
|
|
condition: service_completed_successfully
|
|
environment:
|
|
MPC_DATABASE_HOST: postgres-test
|
|
MPC_DATABASE_PORT: 5432
|
|
MPC_DATABASE_USER: mpc_user
|
|
MPC_DATABASE_PASSWORD: mpc_password
|
|
MPC_DATABASE_DBNAME: mpc_system_test
|
|
MPC_DATABASE_SSLMODE: disable
|
|
MPC_REDIS_HOST: redis-test
|
|
MPC_REDIS_PORT: 6379
|
|
MPC_RABBITMQ_HOST: rabbitmq-test
|
|
MPC_RABBITMQ_PORT: 5672
|
|
MPC_RABBITMQ_USER: mpc_user
|
|
MPC_RABBITMQ_PASSWORD: mpc_password
|
|
MPC_SERVER_HTTP_PORT: 8080
|
|
MPC_SERVER_GRPC_PORT: 9090
|
|
MPC_SERVER_ENVIRONMENT: test
|
|
ports:
|
|
- "8080:8080"
|
|
- "9090:9090"
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://localhost:8080/health"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
|
|
account-service-test:
|
|
build:
|
|
context: ..
|
|
dockerfile: services/account/Dockerfile
|
|
depends_on:
|
|
postgres-test:
|
|
condition: service_healthy
|
|
redis-test:
|
|
condition: service_healthy
|
|
rabbitmq-test:
|
|
condition: service_healthy
|
|
migrate:
|
|
condition: service_completed_successfully
|
|
environment:
|
|
MPC_DATABASE_HOST: postgres-test
|
|
MPC_DATABASE_PORT: 5432
|
|
MPC_DATABASE_USER: mpc_user
|
|
MPC_DATABASE_PASSWORD: mpc_password
|
|
MPC_DATABASE_DBNAME: mpc_system_test
|
|
MPC_DATABASE_SSLMODE: disable
|
|
MPC_REDIS_HOST: redis-test
|
|
MPC_REDIS_PORT: 6379
|
|
MPC_RABBITMQ_HOST: rabbitmq-test
|
|
MPC_RABBITMQ_PORT: 5672
|
|
MPC_RABBITMQ_USER: mpc_user
|
|
MPC_RABBITMQ_PASSWORD: mpc_password
|
|
MPC_SERVER_HTTP_PORT: 8083
|
|
MPC_SERVER_ENVIRONMENT: test
|
|
MPC_JWT_SECRET_KEY: test-secret-key-for-jwt-tokens!!
|
|
MPC_JWT_ISSUER: mpc-test
|
|
ports:
|
|
- "8083:8083"
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://localhost:8083/health"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
|
|
# E2E test runner
|
|
e2e-tests:
|
|
build:
|
|
context: ..
|
|
dockerfile: tests/Dockerfile.test
|
|
depends_on:
|
|
session-coordinator-test:
|
|
condition: service_healthy
|
|
account-service-test:
|
|
condition: service_healthy
|
|
environment:
|
|
SESSION_COORDINATOR_URL: http://session-coordinator-test:8080
|
|
ACCOUNT_SERVICE_URL: http://account-service-test:8083
|
|
command: ["go", "test", "-v", "-tags=e2e", "./tests/e2e/..."]
|
|
|
|
networks:
|
|
default:
|
|
name: mpc-test-network
|