Files
spring-ai-examples/agentic-patterns/evaluator-optimizer/run-evaluator-optimizer.sh

141 lines
4.1 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# Script to build and run the Evaluator-Optimizer example with verification
# Usage: ./run-evaluator-optimizer.sh
# Colors for output
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
cd "$SCRIPT_DIR"
# Initialize error counter
ERRORS=0
# Function to display section header
function section() {
echo -e "\n${YELLOW}======== $1 ========${NC}"
}
# Build the project
section "Building Evaluator-Optimizer"
echo "Running mvn clean package..."
if ! ./mvnw clean package; then
echo -e "${RED}Build failed! Cannot continue.${NC}"
exit 1
fi
# Run the application and capture output
section "Running Evaluator-Optimizer"
echo "Starting the application..."
OUTPUT_FILE=$(mktemp)
./mvnw spring-boot:run | tee "$OUTPUT_FILE" || true
section "Verifying Output"
# Check if the application completed successfully
if ! grep -q "BUILD SUCCESS" "$OUTPUT_FILE"; then
echo -e "${RED}ERROR: Application did not complete successfully${NC}"
ERRORS=$((ERRORS+1))
fi
# Check for PASS evaluation in the final output
if grep -q "EVALUATION: PASS" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ Final evaluation PASSED${NC}"
else
echo -e "${RED}ERROR: Final evaluation did not PASS${NC}"
ERRORS=$((ERRORS+1))
fi
# Check for FINAL OUTPUT message
if grep -q "FINAL OUTPUT:" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ Final output generated successfully${NC}"
else
echo -e "${RED}ERROR: Final output not found${NC}"
ERRORS=$((ERRORS+1))
fi
section "Checking Stack Implementation Requirements"
# 1. Check for push method
if grep -q "public void push" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ push(x) method implemented correctly${NC}"
else
echo -e "${RED}ERROR: push method not implemented correctly${NC}"
ERRORS=$((ERRORS+1))
fi
# 2. Check for pop method
if grep -q "public void pop" "$OUTPUT_FILE" || grep -q "public int pop" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ pop() method implemented correctly${NC}"
else
echo -e "${RED}ERROR: pop method not implemented correctly${NC}"
ERRORS=$((ERRORS+1))
fi
# 3. Check for getMin method
if grep -q "public int getMin" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ getMin() method implemented correctly${NC}"
else
echo -e "${RED}ERROR: getMin method not implemented correctly${NC}"
ERRORS=$((ERRORS+1))
fi
# 4. Check for private fields
if grep -q "private" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ private fields used${NC}"
else
echo -e "${RED}ERROR: private fields not found${NC}"
ERRORS=$((ERRORS+1))
fi
# 5. Check for 'this.' keyword usage
if grep -q "this\." "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ 'this.' keyword used correctly${NC}"
else
echo -e "${RED}ERROR: 'this.' keyword usage not found${NC}"
ERRORS=$((ERRORS+1))
fi
# 6. Check for JavaDoc style comments
if grep -q "\/\*\*" "$OUTPUT_FILE" && grep -q "\* @" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ JavaDoc documentation present${NC}"
else
echo -e "${RED}ERROR: JavaDoc documentation not properly implemented${NC}"
ERRORS=$((ERRORS+1))
fi
# 7. Check for O(1) operations mention
if grep -q "O(1)" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ O(1) operations confirmed${NC}"
else
echo -e "${RED}ERROR: O(1) operations not confirmed${NC}"
ERRORS=$((ERRORS+1))
fi
# Verify iterative improvement process
if grep -q "NEEDS_IMPROVEMENT" "$OUTPUT_FILE" && grep -q "PASS" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ Iterative improvement process confirmed (NEEDS_IMPROVEMENT → PASS)${NC}"
echo -e "${CYAN} The evaluator-optimizer workflow is functioning correctly!${NC}"
else
echo -e "${RED}ERROR: Could not verify iterative improvement process${NC}"
ERRORS=$((ERRORS+1))
fi
# Clean up
rm "$OUTPUT_FILE"
# Final result
if [ $ERRORS -eq 0 ]; then
echo -e "\n${GREEN}✓ Evaluator-Optimizer executed and verified successfully!${NC}"
echo -e "${GREEN}✓ Stack implementation meets all requirements.${NC}"
exit 0
else
echo -e "\n${RED}× Evaluator-Optimizer verification failed with $ERRORS errors!${NC}"
exit 1
fi