- Deleted the DebrosFramework integration test file to streamline the test suite. - Updated blog API server to import reflect-metadata for decorator support. - Changed Docker Compose command for blog integration tests to run real tests. - Modified TypeScript configuration for Docker to target ES2022 and enable synthetic default imports. - Removed obsolete Jest configuration and setup files for blog scenario tests. - Cleaned up global test setup by removing console mocks and custom matchers.
156 lines
3.9 KiB
YAML
156 lines
3.9 KiB
YAML
|
|
services:
|
|
# Bootstrap node for peer discovery
|
|
blog-bootstrap:
|
|
build:
|
|
context: ../../../../
|
|
dockerfile: tests/real-integration/shared/infrastructure/docker/Dockerfile.bootstrap
|
|
environment:
|
|
- NODE_TYPE=bootstrap
|
|
- NODE_ID=blog-bootstrap
|
|
- SWARM_KEY_FILE=/data/swarm.key
|
|
volumes:
|
|
- ./swarm.key:/data/swarm.key:ro
|
|
- bootstrap-data:/data/ipfs
|
|
networks:
|
|
- blog-network
|
|
ports:
|
|
- "4001:4001"
|
|
healthcheck:
|
|
test: ["CMD", "sh", "-c", "ipfs id >/dev/null 2>&1"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
# Blog API Node 1
|
|
blog-node-1:
|
|
build:
|
|
context: ../../../../
|
|
dockerfile: tests/real-integration/blog-scenario/docker/Dockerfile.blog-api
|
|
depends_on:
|
|
blog-bootstrap:
|
|
condition: service_healthy
|
|
environment:
|
|
- NODE_ID=blog-node-1
|
|
- NODE_PORT=3000
|
|
- IPFS_PORT=4011
|
|
- BOOTSTRAP_PEER=blog-bootstrap
|
|
- SWARM_KEY_FILE=/data/swarm.key
|
|
- NODE_ENV=test
|
|
ports:
|
|
- "3001:3000"
|
|
- "4011:4011"
|
|
volumes:
|
|
- ./swarm.key:/data/swarm.key:ro
|
|
- blog-node-1-data:/data
|
|
networks:
|
|
- blog-network
|
|
healthcheck:
|
|
test: ["CMD", "sh", "-c", "wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1"]
|
|
interval: 15s
|
|
timeout: 10s
|
|
retries: 10
|
|
start_period: 30s
|
|
|
|
# Blog API Node 2
|
|
blog-node-2:
|
|
build:
|
|
context: ../../../../
|
|
dockerfile: tests/real-integration/blog-scenario/docker/Dockerfile.blog-api
|
|
depends_on:
|
|
blog-bootstrap:
|
|
condition: service_healthy
|
|
environment:
|
|
- NODE_ID=blog-node-2
|
|
- NODE_PORT=3000
|
|
- IPFS_PORT=4012
|
|
- BOOTSTRAP_PEER=blog-bootstrap
|
|
- SWARM_KEY_FILE=/data/swarm.key
|
|
- NODE_ENV=test
|
|
ports:
|
|
- "3002:3000"
|
|
- "4012:4012"
|
|
volumes:
|
|
- ./swarm.key:/data/swarm.key:ro
|
|
- blog-node-2-data:/data
|
|
networks:
|
|
- blog-network
|
|
healthcheck:
|
|
test: ["CMD", "sh", "-c", "wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1"]
|
|
interval: 15s
|
|
timeout: 10s
|
|
retries: 10
|
|
start_period: 30s
|
|
|
|
# Blog API Node 3
|
|
blog-node-3:
|
|
build:
|
|
context: ../../../../
|
|
dockerfile: tests/real-integration/blog-scenario/docker/Dockerfile.blog-api
|
|
depends_on:
|
|
blog-bootstrap:
|
|
condition: service_healthy
|
|
environment:
|
|
- NODE_ID=blog-node-3
|
|
- NODE_PORT=3000
|
|
- IPFS_PORT=4013
|
|
- BOOTSTRAP_PEER=blog-bootstrap
|
|
- SWARM_KEY_FILE=/data/swarm.key
|
|
- NODE_ENV=test
|
|
ports:
|
|
- "3003:3000"
|
|
- "4013:4013"
|
|
volumes:
|
|
- ./swarm.key:/data/swarm.key:ro
|
|
- blog-node-3-data:/data
|
|
networks:
|
|
- blog-network
|
|
healthcheck:
|
|
test: ["CMD", "sh", "-c", "wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1"]
|
|
interval: 15s
|
|
timeout: 10s
|
|
retries: 10
|
|
start_period: 30s
|
|
|
|
# Test Runner
|
|
blog-test-runner:
|
|
build:
|
|
context: ../../../../
|
|
dockerfile: tests/real-integration/blog-scenario/docker/Dockerfile.test-runner
|
|
depends_on:
|
|
blog-node-1:
|
|
condition: service_healthy
|
|
blog-node-2:
|
|
condition: service_healthy
|
|
blog-node-3:
|
|
condition: service_healthy
|
|
environment:
|
|
- TEST_SCENARIO=blog
|
|
- NODE_ENDPOINTS=http://blog-node-1:3000,http://blog-node-2:3000,http://blog-node-3:3000
|
|
- TEST_TIMEOUT=300000
|
|
- NODE_ENV=test
|
|
volumes:
|
|
- ../tests:/app/tests:ro
|
|
- test-results:/app/results
|
|
networks:
|
|
- blog-network
|
|
command: ["pnpm", "run", "test:real"]
|
|
|
|
volumes:
|
|
bootstrap-data:
|
|
driver: local
|
|
blog-node-1-data:
|
|
driver: local
|
|
blog-node-2-data:
|
|
driver: local
|
|
blog-node-3-data:
|
|
driver: local
|
|
test-results:
|
|
driver: local
|
|
|
|
networks:
|
|
blog-network:
|
|
driver: bridge
|
|
ipam:
|
|
config:
|
|
- subnet: 172.20.0.0/16 |