#!/bin/sh

#
# Benchmark runner
#
# Usage: benchmark.sh [--jbigi] [JMH_ARGS]
#
# To use:
# 1) Set jmh.home in override.properties to a folder containing:
#    - jmh-core.jar
#    - jmh-generator-annprocess.jar
#    - jopt-simple.jar
#    - commons-math3.jar
#    Fetch these from Maven Central. Tested using JMH 1.19 which requires
#    jopt-simple 4.6 and commons-math3 3.2.
# 2) Compile the benchmarks with "ant bench".
# 3) Run the benchmarks:
#    - To see underlying JMH options:
#      - ./benchmark.sh -h
#    - To run the benchmarks in pure-Java mode:
#      - ./benchmark.sh
#    - To run the benchmarks with jbigi.jar in the classpath:
#      - ./benchmark.sh --jbigi
#    - To run the benchmarks with a different JVM:
#      - JAVA=/path/to/java ./benchmarks/benchmark.sh
#

CWD=$(dirname "$0")
if [ "x$JAVA" = 'x' ]; then
  JAVA=java
fi

if [ "x$BENCHMARKS" = 'x' ]; then
  BENCHMARKS="$CWD/i2p-benchmarks.jar"
  stat "$BENCHMARKS" >/dev/null 2>&1
  if [ "x$?" != 'x0' ]; then
    BENCHMARKS="$CWD/../../core/java/build/i2p-benchmarks.jar"
  fi
fi

if [ "x$JBIGI" = 'x' ]; then
  JBIGI="$CWD/jbigi.jar"
  stat "$JBIGI" >/dev/null 2>&1
  if [ "x$?" != 'x0' ]; then
    JBIGI="$CWD/../../build/jbigi.jar"
  fi
fi

CLASSPATH="$BENCHMARKS"
if [ "x${1:-}" = 'x--jbigi' ]; then
  CLASSPATH="$CLASSPATH:$JBIGI"
  shift
fi

$JAVA -cp "$CLASSPATH" org.openjdk.jmh.Main "$@"
