166 lines
5.1 KiB
Bash
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
|