tasq/node_modules/agentic-flow/scripts/run-validation.sh

166 lines
5.1 KiB
Bash

#!/bin/bash
# Comprehensive Validation Script for v1.7.0
# Runs Docker-based validation and generates report
set -e
echo "================================================================"
echo "AGENTIC-FLOW v1.7.0 - DOCKER VALIDATION"
echo "================================================================"
echo "Started: $(date)"
echo "================================================================"
echo ""
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Create results directory
mkdir -p validation-results
mkdir -p benchmark-results
# Function to print colored messages
print_status() {
echo -e "${GREEN}${NC} $1"
}
print_error() {
echo -e "${RED}${NC} $1"
}
print_warning() {
echo -e "${YELLOW}${NC} $1"
}
# Step 1: Clean previous runs
echo "Step 1: Cleaning previous validation runs..."
docker-compose -f docker-compose.validation.yml down -v 2>/dev/null || true
rm -rf validation-results/* benchmark-results/*
print_status "Cleaned previous runs"
echo ""
# Step 2: Build validation image
echo "Step 2: Building validation Docker image..."
if docker-compose -f docker-compose.validation.yml build validation; then
print_status "Validation image built successfully"
else
print_error "Failed to build validation image"
exit 1
fi
echo ""
# Step 3: Run validation suite
echo "Step 3: Running comprehensive validation suite..."
echo " This will test:"
echo " - Backwards compatibility"
echo " - New HybridReasoningBank capabilities"
echo " - SharedMemoryPool performance"
echo " - AdvancedMemorySystem features"
echo " - Memory profiling"
echo " - Regression detection"
echo ""
if docker-compose -f docker-compose.validation.yml run --rm validation; then
print_status "Validation suite PASSED"
VALIDATION_STATUS=0
else
print_error "Validation suite FAILED"
VALIDATION_STATUS=1
fi
echo ""
# Step 4: Copy results from container
echo "Step 4: Extracting validation results..."
docker cp agentic-flow-validation:/app/validation-results.json validation-results/ 2>/dev/null || true
if [ -f "validation-results/validation-results.json" ]; then
print_status "Results extracted successfully"
else
print_warning "Could not extract results file"
fi
echo ""
# Step 5: Display results summary
echo "Step 5: Validation Results Summary"
echo "================================================================"
if [ -f "validation-results/validation-results.json" ]; then
# Extract key metrics using jq if available
if command -v jq &> /dev/null; then
TOTAL=$(jq '.summary.total' validation-results/validation-results.json)
PASSED=$(jq '.summary.passed' validation-results/validation-results.json)
FAILED=$(jq '.summary.failed' validation-results/validation-results.json)
PASS_RATE=$(jq '.summary.passRate' validation-results/validation-results.json)
echo "Total Tests: $TOTAL"
echo "Passed: $PASSED"
echo "Failed: $FAILED"
echo "Pass Rate: $PASS_RATE%"
echo ""
if [ "$FAILED" -gt 0 ]; then
echo "Failed Tests:"
jq -r '.results[] | select(.status == "FAIL") | " - \(.test): \(.error)"' validation-results/validation-results.json
echo ""
fi
else
cat validation-results/validation-results.json
fi
else
print_warning "No results file found - check Docker logs"
fi
echo "================================================================"
echo ""
# Step 6: Run regression tests (optional - if validation passed)
if [ $VALIDATION_STATUS -eq 0 ]; then
echo "Step 6: Running regression tests..."
if docker-compose -f docker-compose.validation.yml run --rm regression 2>/dev/null; then
print_status "Regression tests PASSED"
else
print_warning "Some regression tests failed (check logs)"
fi
echo ""
fi
# Step 7: Run performance benchmarks (optional)
echo "Step 7: Running performance benchmarks..."
echo " (This may take several minutes)"
if docker-compose -f docker-compose.validation.yml run --rm benchmark 2>/dev/null; then
print_status "Benchmarks completed"
else
print_warning "Benchmarks incomplete (check logs)"
fi
echo ""
# Step 8: Cleanup
echo "Step 8: Cleaning up Docker resources..."
docker-compose -f docker-compose.validation.yml down -v
print_status "Cleanup complete"
echo ""
# Final Summary
echo "================================================================"
echo "VALIDATION COMPLETE"
echo "================================================================"
echo "Completed: $(date)"
echo ""
if [ $VALIDATION_STATUS -eq 0 ]; then
echo -e "${GREEN}✓✓✓ ALL VALIDATIONS PASSED ✓✓✓${NC}"
echo ""
echo "Next steps:"
echo " 1. Review results in validation-results/"
echo " 2. Check benchmark-results/ for performance metrics"
echo " 3. Proceed with release"
exit 0
else
echo -e "${RED}✗✗✗ VALIDATION FAILED ✗✗✗${NC}"
echo ""
echo "Action required:"
echo " 1. Review failed tests in validation-results/"
echo " 2. Check Docker logs: docker-compose -f docker-compose.validation.yml logs"
echo " 3. Fix issues before release"
exit 1
fi