| #!/bin/bash
|
|
|
|
|
|
|
|
|
| cd "$(dirname "$0")/../../../" || exit 1
|
|
|
|
|
| HISTOGRAM=false
|
| SAVE=false
|
| COMPARE=""
|
| TEST_PATH="tests/integration/performance/"
|
|
|
|
|
| while [[ $# -gt 0 ]]; do
|
| case $1 in
|
| --histogram)
|
| HISTOGRAM=true
|
| shift
|
| ;;
|
| --save)
|
| SAVE=true
|
| shift
|
| ;;
|
| --compare=*)
|
| COMPARE="${1#*=}"
|
| shift
|
| ;;
|
| --compare)
|
| COMPARE="$2"
|
| shift 2
|
| ;;
|
| --help)
|
| echo "Usage: $0 [OPTIONS]"
|
| echo ""
|
| echo "Options:"
|
| echo " --histogram Generate histogram output"
|
| echo " --save Save benchmark data for historical tracking"
|
| echo " --compare=FILE Compare to previous run"
|
| echo " --help Show this help message"
|
| echo ""
|
| echo "Examples:"
|
| echo " $0 # Run all benchmarks"
|
| echo " $0 --histogram --save # Run with histogram and save"
|
| echo " $0 --compare=.benchmarks/001 # Compare to previous run"
|
| exit 0
|
| ;;
|
| *)
|
| echo "Unknown option: $1"
|
| echo "Use --help for usage information"
|
| exit 1
|
| ;;
|
| esac
|
| done
|
|
|
|
|
| PYTEST_CMD="pytest --benchmark-only -v $TEST_PATH"
|
|
|
|
|
| if [ "$SAVE" = true ]; then
|
| PYTEST_CMD="$PYTEST_CMD --benchmark-autosave"
|
| fi
|
|
|
| if [ "$HISTOGRAM" = true ]; then
|
| PYTEST_CMD="$PYTEST_CMD --benchmark-histogram"
|
| fi
|
|
|
| if [ -n "$COMPARE" ]; then
|
| PYTEST_CMD="$PYTEST_CMD --benchmark-compare=$COMPARE"
|
| fi
|
|
|
|
|
| echo "Running: $PYTEST_CMD"
|
| echo ""
|
| echo "Performance benchmarks measure API latency and database query performance"
|
| echo ""
|
|
|
|
|
| eval "$PYTEST_CMD"
|
| EXIT_CODE=$?
|
|
|
|
|
| echo ""
|
| if [ $EXIT_CODE -eq 0 ]; then
|
| echo "✓ Performance benchmarks completed"
|
| echo " Review P50, P95, P99 metrics above"
|
| else
|
| echo "✗ Performance benchmarks failed"
|
| fi
|
|
|
| exit $EXIT_CODE
|
|
|