Implements FED-010: Agent Spawn via Federation feature that enables spawning and managing Claude agents on remote federated Mosaic Stack instances via COMMAND message type. Features: - Federation agent command types (spawn, status, kill) - FederationAgentService for handling agent operations - Integration with orchestrator's agent spawner/lifecycle services - API endpoints for spawning, querying status, and killing agents - Full command routing through federation COMMAND infrastructure - Comprehensive test coverage (12/12 tests passing) Architecture: - Hub → Spoke: Spawn agents on remote instances - Command flow: FederationController → FederationAgentService → CommandService → Remote Orchestrator - Response handling: Remote orchestrator returns agent status/results - Security: Connection validation, signature verification Files created: - apps/api/src/federation/types/federation-agent.types.ts - apps/api/src/federation/federation-agent.service.ts - apps/api/src/federation/federation-agent.service.spec.ts Files modified: - apps/api/src/federation/command.service.ts (agent command routing) - apps/api/src/federation/federation.controller.ts (agent endpoints) - apps/api/src/federation/federation.module.ts (service registration) - apps/orchestrator/src/api/agents/agents.controller.ts (status endpoint) - apps/orchestrator/src/api/agents/agents.module.ts (lifecycle integration) Testing: - 12/12 tests passing for FederationAgentService - All command service tests passing - TypeScript compilation successful - Linting passed Refs #93 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1.8 KiB
1.8 KiB
Docker Integration Tests
This directory contains integration tests for Docker Compose deployment modes.
Traefik Integration Tests
Tests for Traefik reverse proxy integration in bundled, upstream, and none modes.
Prerequisites
- Docker and Docker Compose installed
jqfor JSON parsing:apt install jqorbrew install jqcurlfor HTTP testing
Running Tests
# Run all tests
./traefik.test.sh all
# Run specific mode tests
./traefik.test.sh bundled
./traefik.test.sh upstream
./traefik.test.sh none
Test Coverage
Bundled Mode Tests
- Traefik container starts with
traefik-bundledprofile - Traefik dashboard is accessible
- Traefik API responds correctly
- Services have proper Traefik labels
- Routes are registered with Traefik
Upstream Mode Tests
- Bundled Traefik does not start
- Services connect to external Traefik network
- Services have labels for external discovery
- Correct network configuration
None Mode Tests
- No Traefik container starts
- Traefik labels are disabled
- Direct port access works
- Services accessible via published ports
CI/CD Integration
These tests can be run in CI/CD pipelines:
# Example GitHub Actions
test-docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: sudo apt-get install -y jq
- name: Run Traefik integration tests
run: ./tests/integration/docker/traefik.test.sh all
Troubleshooting
Test cleanup issues
If tests fail and leave containers running:
docker compose -f docker-compose.test.yml down -v
docker network rm traefik-public-test
Permission denied
Make sure the test script is executable:
chmod +x traefik.test.sh
Port conflicts
Ensure ports 8080, 3000, 3001 are available before running tests.