86 lines
2.5 KiB
Bash
Executable File
86 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Benchmark script for opendataloader-pdf
|
|
#
|
|
# Clones opendataloader-bench and runs benchmark against locally built JAR.
|
|
#
|
|
# Usage:
|
|
# ./scripts/bench.sh # Run full benchmark
|
|
# ./scripts/bench.sh --doc-id 01030... # Run for specific document
|
|
# ./scripts/bench.sh --check-regression # Run with regression check (CI)
|
|
# ./scripts/bench.sh --skip-build # Skip Java build step
|
|
#
|
|
# Environment:
|
|
# BENCH_DIR Override bench repo clone location (default: /tmp/opendataloader-bench)
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
|
BENCH_REPO="https://github.com/opendataloader-project/opendataloader-bench.git"
|
|
BENCH_DIR="${BENCH_DIR:-/tmp/opendataloader-bench}"
|
|
|
|
# Parse --skip-build flag (pass everything else through)
|
|
SKIP_BUILD=false
|
|
ARGS=()
|
|
for arg in "$@"; do
|
|
if [[ "$arg" == "--skip-build" ]]; then
|
|
SKIP_BUILD=true
|
|
else
|
|
ARGS+=("$arg")
|
|
fi
|
|
done
|
|
|
|
# Find CLI JAR (shaded first, then regular, excluding sources/javadoc/original)
|
|
find_jar() {
|
|
local target_dir="$PROJECT_ROOT/java/opendataloader-pdf-cli/target"
|
|
local jar
|
|
jar=$(find "$target_dir" -name "opendataloader-pdf-cli-*-shaded.jar" 2>/dev/null | head -1)
|
|
if [[ -z "$jar" ]]; then
|
|
jar=$(find "$target_dir" -name "opendataloader-pdf-cli-*.jar" \
|
|
! -name "*-sources.jar" ! -name "*-javadoc.jar" ! -name "original-*" \
|
|
2>/dev/null | head -1)
|
|
fi
|
|
echo "$jar"
|
|
}
|
|
|
|
# Step 1: Build Java if needed
|
|
if [[ "$SKIP_BUILD" == "false" ]]; then
|
|
JAR_PATH=$(find_jar)
|
|
if [[ -z "$JAR_PATH" ]]; then
|
|
echo "Building Java..."
|
|
"$SCRIPT_DIR/build-java.sh"
|
|
else
|
|
echo "Using existing JAR: $JAR_PATH"
|
|
fi
|
|
fi
|
|
|
|
# Step 2: Clone or update bench repo
|
|
if [[ -d "$BENCH_DIR/.git" ]]; then
|
|
echo "Updating bench repo..."
|
|
git -C "$BENCH_DIR" pull --ff-only --quiet 2>/dev/null || true
|
|
else
|
|
echo "Cloning bench repo..."
|
|
git clone --depth 1 "$BENCH_REPO" "$BENCH_DIR"
|
|
fi
|
|
|
|
# Step 3: Find JAR path
|
|
JAR_PATH=$(find_jar)
|
|
if [[ -z "$JAR_PATH" ]]; then
|
|
echo "Error: No JAR found. Run ./scripts/build-java.sh first."
|
|
exit 1
|
|
fi
|
|
|
|
# Step 4: Run benchmark with JAR
|
|
echo "Running benchmark with JAR: $JAR_PATH"
|
|
cd "$BENCH_DIR"
|
|
|
|
if ! command -v uv &> /dev/null; then
|
|
echo "Error: uv is not installed."
|
|
exit 1
|
|
fi
|
|
|
|
uv sync --quiet
|
|
OPENDATALOADER_JAR="$JAR_PATH" uv run python src/run.py \
|
|
--engine opendataloader \
|
|
"${ARGS[@]}"
|