Files
spring-ai-examples/agentic-patterns/chain-workflow/run-chain-workflow.sh

90 lines
2.4 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 Chain Workflow example with verification
# Usage: ./run-chain-workflow.sh
set -e
# Colors for output
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
cd "$SCRIPT_DIR"
# Function to display section header
function section() {
echo -e "\n${YELLOW}======== $1 ========${NC}"
}
# Build the project
section "Building Chain Workflow"
echo "Running mvn clean package..."
./mvnw clean package
# Run the application and capture output
section "Running Chain Workflow"
echo "Starting the application..."
OUTPUT_FILE=$(mktemp)
./mvnw spring-boot:run | tee "$OUTPUT_FILE"
# Verify the output
section "Verifying Output"
# Check if markdown table is present
if ! grep -q "| Metric | Value |" "$OUTPUT_FILE"; then
echo -e "${RED}ERROR: Markdown table header not found in output${NC}"
rm "$OUTPUT_FILE"
exit 1
fi
# Check for expected metrics in the output
EXPECTED_METRICS=(
"Customer Satisfaction"
"Employee Satisfaction"
"Product Adoption Rate"
"Revenue Growth"
"Operating Margin"
"Market Share"
"Customer Churn"
)
ERRORS=0
for metric in "${EXPECTED_METRICS[@]}"; do
if ! grep -q "| $metric |" "$OUTPUT_FILE"; then
echo -e "${RED}ERROR: Expected metric not found: $metric${NC}"
ERRORS=$((ERRORS+1))
fi
done
# Verify sorting (highest values should come first)
# This is a basic check - values should decrease as we go down the table
if grep -A1 "Customer Satisfaction" "$OUTPUT_FILE" | grep -q "Employee Satisfaction" && \
grep -A1 "Employee Satisfaction" "$OUTPUT_FILE" | grep -q "Product Adoption Rate"; then
echo -e "${GREEN}✓ Metrics appear to be correctly sorted by value${NC}"
else
echo -e "${RED}ERROR: Metrics don't appear to be correctly sorted${NC}"
ERRORS=$((ERRORS+1))
fi
# Check for completion status
if grep -q "BUILD SUCCESS" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ Application completed successfully${NC}"
else
echo -e "${RED}ERROR: Application did not complete successfully${NC}"
ERRORS=$((ERRORS+1))
fi
# Clean up
rm "$OUTPUT_FILE"
# Final result
if [ $ERRORS -eq 0 ]; then
echo -e "\n${GREEN}✓ Chain Workflow executed and verified successfully!${NC}"
exit 0
else
echo -e "\n${RED}× Chain Workflow verification failed with $ERRORS errors!${NC}"
exit 1
fi