369 lines
10 KiB
Markdown
369 lines
10 KiB
Markdown
# MidStream Integration Test Guide
|
|
|
|
## Overview
|
|
|
|
This guide describes the comprehensive integration test suite for the MidStream system, covering end-to-end workflows across all published crates.
|
|
|
|
## Test Files
|
|
|
|
### 1. `/tests/integration_tests.rs` - Native Integration Tests
|
|
|
|
Comprehensive integration tests for native (non-WASM) environments covering:
|
|
|
|
#### Test 1: Scheduler + Temporal Compare Integration
|
|
- **Purpose**: Pattern-based task prioritization
|
|
- **Scenario**:
|
|
- Historical execution patterns are analyzed using temporal comparison
|
|
- Tasks are scheduled with priority based on pattern similarity
|
|
- Verification of correct priority assignment and task retrieval
|
|
- **Coverage**: Cross-crate integration between `nanosecond-scheduler` and `temporal-compare`
|
|
|
|
#### Test 2: Scheduler + Attractor Analysis Integration
|
|
- **Purpose**: Dynamics-aware scheduling
|
|
- **Scenario**:
|
|
- System behavior is tracked during task scheduling
|
|
- Attractor analysis detects stability patterns
|
|
- Scheduling adapts based on behavioral dynamics
|
|
- **Coverage**: Integration of `nanosecond-scheduler` with `temporal-attractor-studio`
|
|
|
|
#### Test 3: Attractor + Neural Solver Integration
|
|
- **Purpose**: Behavioral verification
|
|
- **Scenario**:
|
|
- Detect limit cycle behavior in system dynamics
|
|
- Verify temporal properties (boundedness, periodicity)
|
|
- Ensure attractor classification matches temporal invariants
|
|
- **Coverage**: Deep integration between `temporal-attractor-studio` and `temporal-neural-solver`
|
|
|
|
#### Test 4: Temporal Compare + Neural Solver Integration
|
|
- **Purpose**: Pattern property verification
|
|
- **Scenario**:
|
|
- Pattern matching identifies sequence similarities
|
|
- Temporal logic verifies safety properties
|
|
- Correlation between pattern similarity and verification confidence
|
|
- **Coverage**: Integration of `temporal-compare` with `temporal-neural-solver`
|
|
|
|
#### Test 5: Full System with Strange Loop
|
|
- **Purpose**: Meta-learning from complete workflows
|
|
- **Scenario**:
|
|
- Multi-level meta-learning (Level 0, 1, 2)
|
|
- Integration of all crates in hierarchical analysis
|
|
- Behavioral dynamics analysis and verification
|
|
- **Coverage**: Complete system integration including `strange-loop`
|
|
|
|
#### Test 6: Error Propagation
|
|
- **Purpose**: Robust error handling
|
|
- **Scenarios**:
|
|
- Dimension mismatch in attractor analysis
|
|
- Insufficient data for analysis
|
|
- Empty trace in temporal solver
|
|
- Queue overflow in scheduler
|
|
- Max depth exceeded in strange loop
|
|
- Sequence length validation
|
|
- **Coverage**: Error handling across all crates
|
|
|
|
#### Test 7: Performance and Scalability
|
|
- **Purpose**: Performance validation
|
|
- **Metrics**:
|
|
- Scheduler: 1000 tasks, <100ms total
|
|
- Temporal Compare: Cache effectiveness
|
|
- Attractor: 1000 points analysis
|
|
- **Coverage**: Performance characteristics of all crates
|
|
|
|
#### Test 8: Pattern Detection Pipeline
|
|
- **Purpose**: Real-world pattern detection
|
|
- **Scenario**:
|
|
- Time series pattern matching
|
|
- Repeating pattern detection
|
|
- Pattern similarity scoring
|
|
- **Coverage**: `temporal-compare` advanced features
|
|
|
|
#### Test 9: State Management and Recovery
|
|
- **Purpose**: State lifecycle management
|
|
- **Scenarios**:
|
|
- Clear operations for all components
|
|
- Reset functionality
|
|
- Memory leak prevention
|
|
- **Coverage**: State management across all crates
|
|
|
|
#### Test 10: Deadline and Priority Handling
|
|
- **Purpose**: Real-time scheduling validation
|
|
- **Scenarios**:
|
|
- Multi-priority task scheduling
|
|
- Execution order verification
|
|
- Deadline miss detection
|
|
- Scheduler lifecycle management
|
|
- **Coverage**: `nanosecond-scheduler` advanced features
|
|
|
|
### 2. `/tests/wasm_integration_test.rs` - WASM Integration Tests
|
|
|
|
WASM-specific integration tests for browser and WASM environments:
|
|
|
|
#### Test 1: WASM Temporal Comparison
|
|
- Basic temporal pattern matching in WASM environment
|
|
- Browser console logging
|
|
|
|
#### Test 2: WASM Scheduler
|
|
- Async task scheduling in WASM
|
|
- Statistics verification
|
|
|
|
#### Test 3: WASM Attractor Analysis
|
|
- Phase space analysis in browser
|
|
- Confidence scoring
|
|
|
|
#### Test 4: WASM Temporal Verification
|
|
- Temporal logic verification in WASM
|
|
- Safety property checking
|
|
|
|
#### Test 5: WASM Meta-Learning
|
|
- Strange loop operation in browser environment
|
|
- Pattern learning verification
|
|
|
|
#### Test 6: WASM Memory Limits
|
|
- Memory-constrained operation
|
|
- Limited allocation testing
|
|
|
|
#### Test 7: WASM Performance
|
|
- Browser performance API integration
|
|
- Timing validation (<5s for 500-element comparison)
|
|
|
|
#### Test 8: WASM Concurrent Operations
|
|
- Browser-based concurrency
|
|
- spawn_local integration
|
|
- Atomic counter verification
|
|
|
|
#### Test 9: WASM Error Handling
|
|
- Error propagation in WASM
|
|
- Browser-compatible error handling
|
|
|
|
#### Test 10: WASM Integration Workflow
|
|
- Complete workflow in browser
|
|
- Pattern detection → scheduling → verification
|
|
|
|
## Running Tests
|
|
|
|
### Native Tests
|
|
|
|
```bash
|
|
# Run all integration tests
|
|
cargo test --test integration_tests
|
|
|
|
# Run specific test
|
|
cargo test --test integration_tests test_scheduler_temporal_integration
|
|
|
|
# Run with output
|
|
cargo test --test integration_tests -- --nocapture
|
|
|
|
# Run with parallel execution disabled
|
|
cargo test --test integration_tests -- --test-threads=1
|
|
```
|
|
|
|
### WASM Tests
|
|
|
|
```bash
|
|
# Install wasm-pack if not already installed
|
|
cargo install wasm-pack
|
|
|
|
# Run WASM tests in headless browser
|
|
wasm-pack test --headless --chrome tests/wasm_integration_test.rs
|
|
|
|
# Run in Firefox
|
|
wasm-pack test --headless --firefox tests/wasm_integration_test.rs
|
|
|
|
# Run in actual browser (opens browser window)
|
|
wasm-pack test --chrome tests/wasm_integration_test.rs
|
|
```
|
|
|
|
## Test Coverage
|
|
|
|
### Cross-Crate Integration
|
|
- ✅ Scheduler + Temporal Compare
|
|
- ✅ Scheduler + Attractor Studio
|
|
- ✅ Attractor Studio + Neural Solver
|
|
- ✅ Temporal Compare + Neural Solver
|
|
- ✅ Full system with Strange Loop
|
|
|
|
### Functional Areas
|
|
- ✅ Pattern detection and matching
|
|
- ✅ Real-time scheduling
|
|
- ✅ Behavioral dynamics analysis
|
|
- ✅ Temporal logic verification
|
|
- ✅ Meta-learning and self-reference
|
|
- ✅ Error handling and propagation
|
|
- ✅ State management
|
|
- ✅ Performance validation
|
|
|
|
### Scenarios
|
|
- ✅ End-to-end workflows
|
|
- ✅ Error conditions
|
|
- ✅ Performance under load
|
|
- ✅ Concurrent operations
|
|
- ✅ State recovery
|
|
- ✅ WASM compatibility
|
|
|
|
## Expected Results
|
|
|
|
All tests should pass with the following characteristics:
|
|
|
|
### Performance Metrics
|
|
- **Scheduler**: <100ms for 1000 tasks
|
|
- **Temporal Compare**: Cache hit rate >50% on repeated comparisons
|
|
- **Attractor Analysis**: <1s for 1000 points
|
|
- **WASM Operations**: <5s for 500-element comparisons
|
|
|
|
### Quality Metrics
|
|
- **Code Coverage**: >80% across all crates
|
|
- **Error Detection**: 100% of invalid inputs rejected
|
|
- **Memory Safety**: Zero memory leaks
|
|
- **Thread Safety**: Safe concurrent access
|
|
|
|
## CI/CD Integration
|
|
|
|
### GitHub Actions Workflow
|
|
|
|
```yaml
|
|
name: Integration Tests
|
|
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
test-native:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
- run: cargo test --test integration_tests
|
|
|
|
test-wasm:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
target: wasm32-unknown-unknown
|
|
- run: cargo install wasm-pack
|
|
- run: wasm-pack test --headless --chrome tests/wasm_integration_test.rs
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
#### Test Timeout
|
|
```bash
|
|
# Increase timeout for slow tests
|
|
cargo test --test integration_tests -- --test-threads=1 --timeout 300
|
|
```
|
|
|
|
#### WASM Browser Not Found
|
|
```bash
|
|
# Install Chrome/Firefox drivers
|
|
# Ubuntu/Debian:
|
|
sudo apt-get install chromium-chromedriver firefox-geckodriver
|
|
|
|
# macOS:
|
|
brew install chromedriver geckodriver
|
|
```
|
|
|
|
#### Cache Issues
|
|
```bash
|
|
# Clear cargo cache
|
|
cargo clean
|
|
|
|
# Rebuild tests
|
|
cargo test --test integration_tests --no-fail-fast
|
|
```
|
|
|
|
## Extending Tests
|
|
|
|
### Adding New Integration Tests
|
|
|
|
1. **Identify integration points** between crates
|
|
2. **Create test scenario** covering real-world use case
|
|
3. **Add test function** to appropriate file
|
|
4. **Document test** in this guide
|
|
5. **Update CI/CD** configuration if needed
|
|
|
|
### Test Template
|
|
|
|
```rust
|
|
/// Test N: [Test Name]
|
|
///
|
|
/// Scenario:
|
|
/// - [What this test does]
|
|
/// - [Integration points]
|
|
/// - [Expected outcomes]
|
|
#[test]
|
|
fn test_new_integration() {
|
|
println!("\n=== Test N: [Test Name] ===");
|
|
|
|
// Setup
|
|
let component1 = Component1::new();
|
|
let component2 = Component2::new();
|
|
|
|
// Execute
|
|
let result = component1.interact_with(&component2);
|
|
|
|
// Verify
|
|
assert!(result.is_ok());
|
|
println!(" ✓ Integration verified");
|
|
|
|
println!("=== Test N PASSED ===\n");
|
|
}
|
|
```
|
|
|
|
## Performance Benchmarking
|
|
|
|
Integration tests also serve as performance benchmarks. Key metrics:
|
|
|
|
```rust
|
|
use std::time::Instant;
|
|
|
|
let start = Instant::now();
|
|
// ... test code ...
|
|
let duration = start.elapsed();
|
|
|
|
assert!(duration.as_millis() < expected_ms, "Performance regression");
|
|
```
|
|
|
|
## Test Data
|
|
|
|
Tests use synthetic data representative of real-world scenarios:
|
|
|
|
- **Temporal sequences**: Workflow steps, state transitions
|
|
- **Phase space points**: System dynamics, behavioral patterns
|
|
- **Temporal traces**: State evolution, property verification
|
|
- **Meta-patterns**: Learning hierarchies, self-reference
|
|
|
|
## Reporting
|
|
|
|
Test results are formatted for easy reading:
|
|
|
|
```
|
|
╔═══════════════════════════════════════════════════════════════╗
|
|
║ MidStream Integration Test Suite ║
|
|
╠═══════════════════════════════════════════════════════════════╣
|
|
║ ║
|
|
║ ✓ Test 1: Scheduler + Temporal Compare ║
|
|
║ ✓ Test 2: Scheduler + Attractor Analysis ║
|
|
...
|
|
╚═══════════════════════════════════════════════════════════════╝
|
|
```
|
|
|
|
## Contributing
|
|
|
|
When adding new integration tests:
|
|
|
|
1. Follow existing patterns and naming conventions
|
|
2. Add comprehensive documentation
|
|
3. Include performance assertions
|
|
4. Update this guide
|
|
5. Ensure WASM compatibility where applicable
|
|
6. Add to CI/CD pipeline
|
|
|
|
## License
|
|
|
|
Same as MidStream project (MIT OR Apache-2.0)
|