Add comprehensive test environment documentation
This commit is contained in:
parent
333797314c
commit
8a8b0de337
|
|
@ -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.
|
||||||
Loading…
Reference in New Issue