Add comprehensive test environment documentation

This commit is contained in:
openhands 2025-10-30 13:57:56 +00:00
parent 333797314c
commit 8a8b0de337
1 changed files with 243 additions and 0 deletions

243
TEST_ENVIRONMENT.md Normal file
View File

@ -0,0 +1,243 @@
# Test Environment Setup
This document describes how to set up and use the test environment with mock SCADA and optimizer services for the Calejo Control Adapter.
## Overview
The test environment provides:
- **Mock SCADA System**: Simulates industrial process data with realistic variations
- **Mock Optimizer Service**: Provides optimization models for energy, production, and cost
- **Test Data Generator**: Automatically generates test scenarios and validates the system
- **Complete Docker Environment**: All services running in isolated containers
## Quick Start
### 1. Setup Test Environment
```bash
# Run the setup script (this will create all necessary files and start services)
./scripts/setup-test-environment.sh
```
### 2. Test Mock Services
```bash
# Quick test to verify all services are running
./scripts/test-mock-services.sh
```
### 3. Cleanup
```bash
# Stop and remove test services
./scripts/setup-test-environment.sh --clean
```
## Services Overview
### Mock SCADA System
- **Port**: 8081
- **Purpose**: Simulates industrial SCADA system with process data
- **Features**:
- Real-time process data (temperature, pressure, flow rate, etc.)
- Equipment control (pumps, valves, compressors)
- Alarm generation
- Data variation simulation
**Endpoints:**
- `GET /health` - Health check
- `GET /api/v1/data` - Get all SCADA data
- `GET /api/v1/data/{tag}` - Get specific data tag
- `POST /api/v1/control/{equipment}` - Control equipment
- `GET /api/v1/alarms` - Get current alarms
### Mock Optimizer Service
- **Port**: 8082
- **Purpose**: Simulates optimization algorithms for industrial processes
- **Features**:
- Energy consumption optimization
- Production efficiency optimization
- Cost reduction optimization
- Forecast generation
**Endpoints:**
- `GET /health` - Health check
- `GET /api/v1/models` - Get available optimization models
- `POST /api/v1/optimize/{model}` - Run optimization
- `GET /api/v1/history` - Get optimization history
- `POST /api/v1/forecast` - Generate forecasts
### Calejo Control Adapter (Test Version)
- **Port**: 8080
- **Purpose**: Main application with test configuration
- **Features**:
- Dashboard interface
- REST API
- Integration with mock services
- Health monitoring
## Test Scenarios
The test environment supports multiple scenarios:
### 1. Normal Operation
- All services running normally
- Stable process data
- No alarms
### 2. High Load
- Simulated high production load
- Increased energy consumption
- Potential efficiency drops
### 3. Low Efficiency
- Suboptimal process conditions
- Reduced production efficiency
- Optimization recommendations
### 4. Alarm Conditions
- Triggered alarms (high temperature, high pressure)
- Emergency response testing
- Safety system validation
### 5. Optimization Testing
- Energy optimization scenarios
- Production optimization
- Cost reduction strategies
## Usage Examples
### Testing SCADA Integration
```bash
# Get current SCADA data
curl http://localhost:8081/api/v1/data
# Control equipment
curl -X POST http://localhost:8081/api/v1/control/pump_1 \
-H "Content-Type: application/json" \
-d '{"command": "START"}'
# Check alarms
curl http://localhost:8081/api/v1/alarms
```
### Testing Optimization
```bash
# Get available optimization models
curl http://localhost:8082/api/v1/models
# Run energy optimization
curl -X POST http://localhost:8082/api/v1/optimize/energy_optimization \
-H "Content-Type: application/json" \
-d '{"power_load": 450, "time_of_day": 14, "production_rate": 95}'
# Get optimization history
curl http://localhost:8082/api/v1/history?limit=5
```
### Testing Calejo API
```bash
# Health check
curl http://localhost:8080/health
# Dashboard access
curl http://localhost:8080/dashboard
# API status
curl http://localhost:8080/api/v1/status
```
## Development Workflow
### 1. Start Test Environment
```bash
./scripts/setup-test-environment.sh
```
### 2. Run Tests
```bash
# Run unit tests
python -m pytest tests/unit/
# Run integration tests
python -m pytest tests/integration/
# Run comprehensive test suite
python -m pytest tests/
```
### 3. Generate Test Data
```bash
# Run the test data generator
./scripts/setup-test-environment.sh
# (The script automatically runs the test data generator)
# Or run it manually
docker-compose -f docker-compose.test.yml run --rm test-data-generator
```
### 4. Monitor Services
```bash
# View all logs
docker-compose -f docker-compose.test.yml logs -f
# View specific service logs
docker-compose -f docker-compose.test.yml logs -f calejo-control-adapter-test
```
## Configuration
The test environment uses `docker-compose.test.yml` which includes:
- **calejo-control-adapter-test**: Main application with test configuration
- **calejo-postgres-test**: PostgreSQL database
- **calejo-mock-scada**: Mock SCADA system
- **calejo-mock-optimizer**: Mock optimizer service
- **calejo-test-data-generator**: Test data generator
## Troubleshooting
### Services Not Starting
- Check if Docker is running: `docker ps`
- Check if ports are available: `netstat -tulpn | grep 8080`
- View logs: `docker-compose -f docker-compose.test.yml logs`
### Health Checks Failing
- Wait for services to initialize (30 seconds)
- Check individual service health:
```bash
curl http://localhost:8080/health
curl http://localhost:8081/health
curl http://localhost:8082/health
```
### Mock Services Not Responding
- Restart services: `docker-compose -f docker-compose.test.yml restart`
- Recreate containers: `docker-compose -f docker-compose.test.yml up -d --force-recreate`
## Cleanup
To completely remove the test environment:
```bash
# Stop and remove containers
./scripts/setup-test-environment.sh --clean
# Remove created files (optional)
rm docker-compose.test.yml
rm -rf tests/mock_services/
```
## Next Steps
After setting up the test environment:
1. **Run the test suite** to validate functionality
2. **Test integration scenarios** with the mock services
3. **Develop new features** using the test environment
4. **Validate deployments** before production
For production deployment, use the deployment scripts in the `deploy/` directory.