blob: ba1d83eaf40ec082f30e2ff0c60684a28d1850cf [file] [log] [blame]
#!/usr/bin/env bash
usage() {
echo "Usage: ${PROGRAM_NAME} command dirname"
echo "command: [m|s|p|f]"
echo " -m [profiling|benchmark], specify benchmark mode"
echo " -s hostname, host name"
echo " -p port, port number"
echo " -f output file path"
echo " -a other args"
echo "dirname: test module name"
}
build() {
mvn --projects benchmark-base,client-base,server-base,${PROJECT_DIR} clean package
}
java_options() {
JAVA_OPTIONS="-server -Xmx1g -Xms1g -XX:MaxDirectMemorySize=1g -XX:+UseG1GC"
if [ "x${MODE}" = "xprofiling" ]; then
JAVA_OPTIONS="${JAVA_OPTIONS} \
-XX:+UnlockCommercialFeatures \
-XX:+FlightRecorder \
-XX:StartFlightRecording=duration=30s,filename=${PROJECT_DIR}.jfr \
-XX:FlightRecorderOptions=stackdepth=256"
fi
}
run() {
if [ -d "${PROJECT_DIR}/target" ]; then
JAR=`find ${PROJECT_DIR}/target/*.jar | head -n 1`
echo
echo "RUN ${PROJECT_DIR} IN ${MODE:-benchmark} MODE"
CMD="java ${JAVA_OPTIONS} -Dserver.host=${SERVER} -Dserver.port=${PORT} -Dbenchmark.output=${OUTPUT} -jar ${JAR} ${OTHERARGS}"
echo "command is: ${CMD}"
echo
${CMD}
fi
}
PROGRAM_NAME=$0
MODE="benchmark"
SERVER="localhost"
PORT="8080"
OUTPUT=""
OPTIND=1
OTHERARGS=""
while getopts "m:s:p:f:a:" opt; do
case "$opt" in
m)
MODE=${OPTARG}
;;
s)
SERVER=${OPTARG}
;;
p)
PORT=${OPTARG}
;;
f)
OUTPUT=${OPTARG}
;;
a)
OTHERARGS=${OPTARG}
;;
?)
usage
exit 0
;;
esac
done
shift $((OPTIND-1))
PROJECT_DIR=$1
if [ ! -d "${PROJECT_DIR}" ]; then
usage
exit 0
fi
build
java_options
run