blob: 536c088a37c0b13d80fa8b549e723f3b1b52d570 [file] [log] [blame]
#!/usr/bin/env bash
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -e -o pipefail
DEFAULT_BENCHMARK_REPO='https://github.com/apache/geode-benchmarks'
BENCHMARK_REPO=${DEFAULT_BENCHMARK_REPO}
DEFAULT_BENCHMARK_BRANCH='develop'
BENCHMARK_BRANCH=${DEFAULT_BENCHMARK_BRANCH}
DEFAULT_REPO='apache/geode'
DEFAULT_REPO_URI="https://github.com/${DEFAULT_REPO}"
REPO=${DEFAULT_REPO_URI}
DEFAULT_BRANCH='develop'
BRANCH=${DEFAULT_BRANCH}
DEFAULT_BASELINE_REPO='apache/geode'
DEFAULT_BASELINE_REPO_URL="https://github.com/${DEFAULT_BASELINE_REPO}"
BASELINE_REPO=${DEFAULT_BASELINE_REPO}
DEFAULT_BASELINE_VERSION=1.13.0
BASELINE_VERSION=${DEFAULT_BASELINE_VERSION}
TAG=
METADATA=
OUTPUT=
CI=
while (( "$#" )); do
case $1 in
-t|--tag )
if [ "$2" ]; then
TAG=$2
shift
else
echo 'ERROR: "--tag" requires a non-empty option argument.'
exit 1
fi
;;
-p|--br|--benchmark-repo )
if [ "$2" ]; then
BENCHMARK_REPO=$2
shift
fi
;;
-e|--bb|--benchmark-branch )
if [ "$2" ]; then
BENCHMARK_BRANCH=$2
shift
fi
;;
-m|--metadata )
if [ "$2" ]; then
METADATA=$2
shift
fi
;;
-o|--output )
if [ "$2" ]; then
OUTPUT=$2
shift
fi
;;
-r|--gr|--repo|--geode-repo )
if [ "$2" ]; then
REPO=$2
shift
fi
;;
-b|--gb|--branch|--geode-branch )
if [ "$2" ]; then
BRANCH=$2
shift
fi
;;
-v|--version|--geode-version )
if [ "$2" ]; then
VERSION=$2
shift
fi
;;
-R|--bgr|--baseline-repo|--baseline-geode-repo )
if [ "$2" ]; then
BASELINE_REPO=$2
shift
fi
;;
-B|--bgb|--baseline-branch|--baseline-geode-branch )
if [ "$2" ]; then
BASELINE_BRANCH=$2
shift
fi
;;
-V|--bv|--baseline-version|--baseline-geode-version )
if [ "$2" ]; then
BASELINE_VERSION=$2
shift
fi
;;
--ci )
CI=1
;;
-h|--help|-\? )
echo "Usage: $(basename "$0") -t [tag] [-v [version] | -b [branch]] [-V [baseline version] | -B [baseline branch]] [--ci] <options...>"
echo "Options:"
echo "-t|--tag : Cluster tag"
echo "-p|--benchmark-repo : Benchmark repo (default: ${DEFAULT_BENCHMARK_REPO})"
echo "-e|--benchmark-branch : Benchmark branch (default: ${DEFAULT_BENCHMARK_BRANCH})"
echo "-o|--output : Output directory (defaults: ./output-<date>-<tag>)"
echo "-v|--geode-version : Geode version"
echo "-r|--geode-repo : Geode repo (default: ${DEFAULT_REPO})"
echo "-b|--geode-branch : Geode branch (default: ${DEFAULT_BRANCH})"
echo "-V|--baseline-geode-version : Geode baseline version (default: ${DEFAULT_BASELINE_VERSION})"
echo "-R|--baseline-geode-repo : Geode baseline repo (default: ${DEFAULT_BASELINE_REPO})"
echo "-B|--baseline-geode-branch : Geode baseline branch"
echo "-m|--metadata : Test metadata to output to file, comma-delimited"
echo "--ci : Set if starting instances for Continuous Integration - used to retry failed tests and to name/target AWS instances"
echo "-- : All subsequent arguments are passed to the benchmark task as arguments."
echo "-h|--help|-? : This help message"
exit 1
;;
-- )
shift
break 2
;;
-?* )
printf 'Invalid option: %s\n' "$1" >&2
exit 1
;;
esac
shift
done
DATE=$(date '+%m-%d-%Y-%H-%M-%S')
if [ -z "${TAG}" ]; then
echo "--tag argument is required."
exit 1
fi
if [ ! -z "${OUTPUT}" ]; then
OUTPUT="${OUTPUT}-"
fi
OUTPUT="${OUTPUT}output-${DATE}-${TAG}"
set -x
if ! [[ "$OUTPUT" = /* ]]; then
OUTPUT="$(pwd)/${OUTPUT}"
fi
if [[ -z "${BASELINE_BRANCH}" ]]; then
./run_tests.sh \
-t ${TAG} \
-v ${BASELINE_VERSION} \
-p ${BENCHMARK_REPO} \
-e ${BENCHMARK_BRANCH} \
-o ${OUTPUT}/baseline \
-m "${METADATA}" \
-- "$@"
else
./run_tests.sh \
-t ${TAG} \
-r ${BASELINE_REPO} \
-b ${BASELINE_BRANCH} \
-p ${BENCHMARK_REPO} \
-e ${BENCHMARK_BRANCH} \
-o ${OUTPUT}/baseline \
-m "${METADATA}" \
-- "$@"
fi
if [[ -z "${VERSION}" ]]; then
./run_tests.sh \
-t ${TAG} \
-r ${REPO} \
-b ${BRANCH} \
-p ${BENCHMARK_REPO} \
-e ${BENCHMARK_BRANCH} \
-o ${OUTPUT}/branch \
-m "${METADATA}" \
-- "$@"
else
./run_tests.sh \
-t ${TAG} \
-v ${VERSION} \
-p ${BENCHMARK_REPO} \
-e ${BENCHMARK_BRANCH} \
-o ${OUTPUT}/branch \
-m "${METADATA}" \
-- "$@"
fi
set +x
if [[ -z "${CI}" ]]; then
./analyze_tests.sh -o ${OUTPUT}
else
./analyze_tests.sh -o ${OUTPUT} --ci
fi