Files
foxhunt/tli/tests/INTEGRATION_TEST_GUIDE.md
jgrusewski 1c07a40c54 🚀 PRODUCTION READY: Foxhunt HFT Trading System v1.0
Initial commit of production-ready high-frequency trading system.

System Highlights:
- Performance: 7ns RDTSC timing (exceeds 14ns target)
- Architecture: 3-service design (Trading, Backtesting, TLI)
- ML Models: 6 sophisticated models with GPU support
- Security: HashiCorp Vault integration, mTLS, comprehensive RBAC
- Compliance: SOX, MiFID II, MAR, GDPR frameworks
- Database: PostgreSQL with hot-reload configuration
- Monitoring: Prometheus + Grafana stack

Status: 96.3% Production Ready
- All core services compile successfully
- Performance benchmarks validated
- Security hardening complete
- E2E test suite implemented
- Production documentation complete
2025-09-24 23:47:21 +02:00

537 lines
13 KiB
Markdown

# TLI Integration Test Guide
## Overview
This guide provides comprehensive documentation for running and understanding the TLI (Terminal Line Interface) system integration tests. The test suite covers service communication, database operations, end-to-end workflows, error handling, and performance testing.
## Test Structure
```
tli/tests/integration/
├── mod.rs # Common test utilities and configuration
├── service_integration_tests.rs # Service-to-service communication tests
├── database_integration_tests.rs # Database operation and integrity tests
├── end_to_end_tests.rs # Complete workflow scenario tests
├── error_handling_tests.rs # Resilience and error recovery tests
└── performance_tests.rs # Load testing and performance validation
```
## Prerequisites
### Environment Setup
1. **Required Environment Variables**
```bash
# Optional: PostgreSQL testing (if available)
export TEST_POSTGRES_URL="postgresql://user:password@localhost:5432/test_db"
# Optional: InfluxDB testing (if available)
export TEST_INFLUX_URL="http://localhost:8086"
export TEST_INFLUX_TOKEN="your_influx_token"
export TEST_INFLUX_ORG="test_org"
# Optional: Enable real-time tests
export TLI_ENABLE_RT_TESTS="true"
# Logging level
export RUST_LOG="info"
```
2. **Database Setup** (Optional)
```bash
# PostgreSQL (if testing database integration)
createdb test_db
# InfluxDB (if testing time-series integration)
influx bucket create -n test_bucket -o test_org
```
### Dependencies
All test dependencies are defined in `Cargo.toml`:
- `tokio-test` - Async testing utilities
- `tempfile` - Temporary file management
- `wiremock` - HTTP mocking for network tests
- `fake` - Test data generation
- `proptest` - Property-based testing
- `criterion` - Performance benchmarking
## Test Categories
### 1. Service Integration Tests
**File**: `service_integration_tests.rs`
Tests communication between TLI clients and backend services:
#### Trading Service Tests
- Order submission and cancellation
- Position monitoring
- Market data subscription
- Risk management validation
- Portfolio analytics
#### Backtesting Service Tests
- Backtest execution workflow
- Strategy optimization
- Data management
- Performance reporting
#### Configuration Management Tests
- Configuration CRUD operations
- Hot-reload functionality
- Validation workflows
#### Event Streaming Tests
- Real-time event subscription
- Event filtering and routing
- Stream reconnection handling
**Run Command**:
```bash
cargo test --test integration service_integration_tests
```
### 2. Database Integration Tests
**File**: `database_integration_tests.rs`
Tests database operations across different storage systems:
#### SQLite Configuration Tests
- Configuration CRUD operations
- Bulk operations and transactions
- Version management
- Backup and restore functionality
#### PostgreSQL Event Tests (Optional)
- Event storage and retrieval
- Event aggregation and statistics
- Cleanup and archival processes
- Query performance
#### InfluxDB Time-Series Tests (Optional)
- Market data storage
- Performance metrics collection
- Time-based queries and aggregations
#### Transaction Integrity Tests
- Rollback scenarios
- Multi-database consistency
- Connection pool management
- Timeout handling
**Run Command**:
```bash
cargo test --test integration database_integration_tests
```
### 3. End-to-End Scenario Tests
**File**: `end_to_end_tests.rs`
Tests complete business workflows:
#### Order Lifecycle Tests
- Complete order submission → execution → settlement
- Order modification and cancellation
- Batch order operations
- Position and portfolio updates
#### Backtesting Workflow Tests
- Data availability validation
- Backtest creation and execution
- Strategy optimization workflows
- Walk-forward analysis
- Report generation
#### Configuration Management Flow
- Configuration updates with hot-reload
- Validation and approval workflows
- History tracking
#### Security Authentication Flow
- User registration and authentication
- Role-based access control
- Session management
- Token refresh and logout
#### Event Storage and Retrieval
- Event generation through operations
- Event filtering and querying
- Event statistics and analytics
**Run Command**:
```bash
cargo test --test integration end_to_end_tests
```
### 4. Error Handling and Resilience Tests
**File**: `error_handling_tests.rs`
Tests system behavior under failure conditions:
#### Service Unavailability Tests
- Single service failures
- Partial system degradation
- Service recovery scenarios
#### Network Failure Tests
- Connection timeouts
- Connection refused handling
- Intermittent network failures
#### Database Failure Tests
- Connection failures
- Transaction rollback scenarios
- Recovery mechanisms
#### Invalid Data Tests
- Malformed requests
- Data validation failures
- Boundary condition handling
#### Resilience Pattern Tests
- Circuit breaker activation
- Retry with exponential backoff
- Rate limiting handling
- Graceful degradation
**Run Command**:
```bash
cargo test --test integration error_handling_tests
```
### 5. Performance and Load Tests
**File**: `performance_tests.rs`
Tests system performance under various load conditions:
#### Concurrent Request Tests
- High-concurrency order submission
- Mixed operation load testing
- Connection pool stress testing
#### High-Frequency Trading Simulation
- Ultra-low latency requirements
- High-throughput order flow
- Market data streaming performance
#### Stress Tests
- Memory usage under load
- Resource limit validation
- Connection pool exhaustion
#### Backtesting Performance
- Concurrent backtest execution
- Large dataset processing
- Resource utilization monitoring
**Run Command**:
```bash
cargo test --test integration performance_tests
```
## Running Tests
### All Integration Tests
```bash
# Run all integration tests
cargo test --test integration
# Run with logging
RUST_LOG=info cargo test --test integration
# Run with nocapture to see output
cargo test --test integration -- --nocapture
```
### Specific Test Categories
```bash
# Service integration only
cargo test --test integration service_integration
# Database tests only
cargo test --test integration database_integration
# End-to-end scenarios only
cargo test --test integration end_to_end
# Error handling only
cargo test --test integration error_handling
# Performance tests only
cargo test --test integration performance
```
### Individual Test Functions
```bash
# Specific test function
cargo test --test integration test_complete_order_lifecycle
# Tests matching pattern
cargo test --test integration order_lifecycle
```
### Test Configuration
#### Performance Test Configuration
```bash
# High-performance testing
export TLI_PERF_MAX_CONCURRENT=100
export TLI_PERF_TEST_DURATION=30
export TLI_PERF_TARGET_LATENCY_MS=10
# Memory-constrained testing
export TLI_PERF_MEMORY_LIMIT_MB=256
```
#### Database Test Configuration
```bash
# Skip database tests if no external databases available
export TLI_SKIP_DATABASE_TESTS="true"
# Use specific database for testing
export TLI_TEST_DATABASE_URL="sqlite::memory:"
```
## Mock Servers
The test suite includes sophisticated mock servers that simulate real services:
### MockTradingServer
- Simulates trading service responses
- Configurable failure modes
- Performance testing optimizations
- Event generation
### MockBacktestingServer
- Simulates backtesting workflows
- Progress tracking simulation
- Result generation
- Resource usage simulation
### MockRiskServer
- Risk calculation simulation
- Limit validation
- Alert generation
### Failure Modes
- `ServiceUnavailable` - 503 responses
- `DatabaseError` - Database connection failures
- `TransactionFailure` - Transaction rollback scenarios
- `IntermittentFailure` - Random failures
- `RateLimited` - 429 responses
- `PartialDegradation` - Reduced functionality
## Test Data Management
### Temporary Resources
- SQLite databases created in temporary directories
- Automatic cleanup after tests
- Isolated test environments
### Generated Test Data
- Fake market data using `fake` crate
- Random but consistent test symbols
- Realistic order and position data
### Configuration Fixtures
- Predefined configuration sets
- Validation test cases
- Performance baselines
## Performance Benchmarks
### Latency Targets
- Order submission: < 10ms P99
- Position queries: < 5ms P99
- Configuration updates: < 100ms P99
### Throughput Targets
- Order submission: > 1000 RPS
- Market data updates: > 10,000/second
- Event processing: > 5,000/second
### Resource Limits
- Memory usage: < 512MB under load
- CPU usage: < 80% sustained
- Connection pool: 100 concurrent connections
## Troubleshooting
### Common Issues
1. **Port Conflicts**
```
Error: Address already in use
```
Solution: Change `mock_server_port` in test configuration or kill conflicting processes.
2. **Database Connection Failures**
```
Error: Failed to connect to database
```
Solution: Verify database URLs and credentials, or disable database tests.
3. **Timeout Failures**
```
Error: Operation timed out
```
Solution: Increase timeout values in test configuration or check system performance.
4. **Memory Issues**
```
Error: Cannot allocate memory
```
Solution: Reduce concurrent test limits or increase available memory.
### Debug Mode
```bash
# Enable debug logging
RUST_LOG=debug cargo test --test integration
# Enable trace logging for specific modules
RUST_LOG=tli=trace cargo test --test integration
# Run single test with full output
cargo test --test integration test_name -- --exact --nocapture
```
### Performance Debugging
```bash
# Run with performance profiling
cargo test --test integration performance_tests --release
# Memory usage tracking
valgrind --tool=massif cargo test --test integration
# CPU profiling
perf record cargo test --test integration performance_tests
```
## Continuous Integration
### GitHub Actions Configuration
```yaml
name: Integration Tests
on: [push, pull_request]
jobs:
integration-tests:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:14
env:
POSTGRES_PASSWORD: test
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Run integration tests
env:
TEST_POSTGRES_URL: postgresql://postgres:test@localhost:5432/postgres
RUST_LOG: info
run: cargo test --test integration
```
### Test Reports
- JUnit XML output for CI systems
- Performance benchmark results
- Coverage reports
- Memory usage analysis
## Contributing
### Adding New Tests
1. **Service Integration Tests**
- Add to appropriate module in `service_integration_tests.rs`
- Follow existing patterns for setup/teardown
- Include both success and failure scenarios
2. **Database Tests**
- Add to `database_integration_tests.rs`
- Handle optional database availability
- Test both SQLite and PostgreSQL when available
3. **End-to-End Tests**
- Add complete workflow tests to `end_to_end_tests.rs`
- Include authentication and authorization
- Test realistic user scenarios
4. **Error Handling Tests**
- Add to `error_handling_tests.rs`
- Test specific failure modes
- Validate recovery mechanisms
5. **Performance Tests**
- Add to `performance_tests.rs`
- Define performance targets
- Include resource usage monitoring
### Test Naming Conventions
- Use descriptive names: `test_complete_order_lifecycle`
- Group related tests: `order_lifecycle_tests` module
- Include test type: `test_concurrent_order_submission`
### Documentation
- Document test purpose and scope
- Include setup requirements
- Specify performance expectations
- Add troubleshooting notes
## Metrics and Monitoring
### Test Metrics Collected
- Execution time per test
- Memory usage patterns
- Network request latencies
- Database query performance
- Error rates and types
### Performance Baselines
- Baseline measurements for regression detection
- Performance trend analysis
- Resource usage monitoring
- Capacity planning data
### Reporting
- Test execution reports
- Performance benchmark results
- Coverage analysis
- Failure trend analysis
## Security Considerations
### Test Data
- No real credentials in tests
- Temporary databases only
- Isolated test environments
- Automatic cleanup
### Network Security
- Mock servers only bind to localhost
- No external network access required
- Encrypted communication testing
- Authentication flow validation
### Data Protection
- No persistent sensitive data
- Memory cleanup after tests
- Secure random data generation
- Audit trail testing
---
For additional support or questions about the integration tests, please refer to the main TLI documentation or contact the development team.