#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
MODE="${1:-baseline}"
|
|
ITERATIONS="${2:-5}"
|
|
PAUSE_MILLIS="${3:-300}"
|
|
MVN_BIN="${MVN_BIN:-mvn}"
|
|
JAVA_BIN="${JAVA_BIN:-java}"
|
|
|
|
if [[ ! -d "$ROOT_DIR/target/classes" ]]; then
|
|
if ! command -v "$MVN_BIN" >/dev/null 2>&1; then
|
|
echo "mvn was not found. Install Maven or set MVN_BIN to its absolute path." >&2
|
|
exit 1
|
|
fi
|
|
"$MVN_BIN" -q -f "$ROOT_DIR/pom.xml" package
|
|
fi
|
|
|
|
CLASSPATH="$ROOT_DIR/target/classes:$ROOT_DIR/target/dependency/*"
|
|
MAIN_CLASS="com.nicksxs.bytecode.demo.app.DemoApplication"
|
|
VERSION="1.0.0"
|
|
|
|
case "$MODE" in
|
|
baseline)
|
|
exec "$JAVA_BIN" -cp "$CLASSPATH" "$MAIN_CLASS" "$ITERATIONS" "$PAUSE_MILLIS"
|
|
;;
|
|
asm)
|
|
exec "$JAVA_BIN" \
|
|
-javaagent:"$ROOT_DIR/target/asm-bytekit-arthas-demo-$VERSION-asm-agent.jar" \
|
|
-cp "$CLASSPATH" "$MAIN_CLASS" "$ITERATIONS" "$PAUSE_MILLIS"
|
|
;;
|
|
bytekit)
|
|
exec "$JAVA_BIN" \
|
|
-javaagent:"$ROOT_DIR/target/asm-bytekit-arthas-demo-$VERSION-bytekit-agent.jar" \
|
|
-cp "$CLASSPATH" "$MAIN_CLASS" "$ITERATIONS" "$PAUSE_MILLIS"
|
|
;;
|
|
app)
|
|
exec "$JAVA_BIN" -cp "$CLASSPATH" "$MAIN_CLASS" 0 1000
|
|
;;
|
|
*)
|
|
echo "usage: $0 {baseline|asm|bytekit|app} [iterations] [pauseMillis]" >&2
|
|
exit 1
|
|
;;
|
|
esac
|