#!/bin/bash set -e # Wave 7.19: Comprehensive Workspace Test Suite # Sequential GPU testing to avoid resource conflicts echo "=== WAVE 7.19: COMPREHENSIVE WORKSPACE TEST SUITE ===" echo "Start Time: $(date)" echo "" # Initialize counters TOTAL_TESTS=0 PASSED_TESTS=0 FAILED_TESTS=0 # Function to run tests and capture results run_test_suite() { local crate=$1 local threads=$2 local label=$3 echo "" echo "========================================" echo "Testing: $crate ($label)" echo "========================================" if [ "$threads" == "1" ]; then cargo test -p "$crate" --lib -- --test-threads=1 2>&1 | tee "/tmp/test_${crate}.log" else cargo test -p "$crate" --lib 2>&1 | tee "/tmp/test_${crate}.log" fi # Parse test results if grep -q "test result: ok" "/tmp/test_${crate}.log"; then local passed=$(grep -oP '\d+(?= passed)' "/tmp/test_${crate}.log" | tail -1) local failed=$(grep -oP '\d+(?= failed)' "/tmp/test_${crate}.log" | tail -1 || echo "0") TOTAL_TESTS=$((TOTAL_TESTS + passed + failed)) PASSED_TESTS=$((PASSED_TESTS + passed)) FAILED_TESTS=$((FAILED_TESTS + failed)) echo "✅ $crate: $passed passed, $failed failed" else echo "⚠️ $crate: Unable to parse results" fi } # Phase 1: Non-GPU Crates (Parallel Testing) echo "" echo "=== PHASE 1: NON-GPU CRATES (PARALLEL) ===" echo "" run_test_suite "common" "parallel" "Core types and traits" run_test_suite "storage" "parallel" "S3 integration" run_test_suite "data" "parallel" "Market data providers" run_test_suite "config" "parallel" "Configuration management" run_test_suite "risk" "parallel" "Risk management" # Phase 2: ML Crate (Sequential GPU Testing) echo "" echo "=== PHASE 2: ML CRATE (SEQUENTIAL GPU) ===" echo "" run_test_suite "ml" "1" "Machine learning models (GPU)" # Phase 3: Service Crates (Parallel Testing) echo "" echo "=== PHASE 3: SERVICE CRATES (PARALLEL) ===" echo "" run_test_suite "api_gateway" "parallel" "API Gateway service" run_test_suite "trading_service" "parallel" "Trading service" run_test_suite "backtesting_service" "parallel" "Backtesting service" run_test_suite "ml_training_service" "parallel" "ML training service" # Phase 4: Trading Engine (Sequential Testing) echo "" echo "=== PHASE 4: TRADING ENGINE (SEQUENTIAL) ===" echo "" run_test_suite "trading_engine" "1" "Core trading engine (memory safety)" # Calculate pass rate if [ $TOTAL_TESTS -gt 0 ]; then PASS_RATE=$(echo "scale=2; $PASSED_TESTS * 100 / $TOTAL_TESTS" | bc) else PASS_RATE=0 fi # Final Report echo "" echo "========================================" echo "FINAL TEST REPORT" echo "========================================" echo "Total Tests: $TOTAL_TESTS" echo "Passed: $PASSED_TESTS" echo "Failed: $FAILED_TESTS" echo "Pass Rate: ${PASS_RATE}%" echo "" echo "End Time: $(date)" echo "" # Export results for documentation cat > /tmp/workspace_test_summary.txt << EOF Wave 7.19: Comprehensive Workspace Test Suite Results Generated: $(date) Overall Statistics: - Total Tests: $TOTAL_TESTS - Passed: $PASSED_TESTS - Failed: $FAILED_TESTS - Pass Rate: ${PASS_RATE}% Test Phases: 1. Non-GPU Crates (common, storage, data, config, risk) 2. ML Crate (sequential GPU testing) 3. Service Crates (api_gateway, trading_service, backtesting_service, ml_training_service) 4. Trading Engine (sequential memory safety testing) Test Strategy: - Parallel testing for non-GPU crates - Sequential GPU testing (--test-threads=1) for ml crate - Sequential testing for trading_engine (memory corruption prevention) Logs Location: /tmp/test_*.log EOF cat /tmp/workspace_test_summary.txt exit 0