mirror of https://github.com/apache/cassandra
150 lines
4.1 KiB
Bash
Executable File
150 lines
4.1 KiB
Bash
Executable File
#!/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 -o xtrace
|
|
set -o errexit
|
|
set -o pipefail
|
|
set -o nounset
|
|
|
|
bin="$(cd "$(dirname "$0")" > /dev/null; pwd)"
|
|
home="$(cd "$bin/../.." > /dev/null; pwd)" # this script lives in .build/sh
|
|
|
|
# Switch to the project root so all commands work properly
|
|
cd "$home"
|
|
|
|
error() {
|
|
echo "ERROR: $*" 1>&2
|
|
exit 1
|
|
}
|
|
|
|
usage() {
|
|
if [[ $# -gt 0 ]]; then
|
|
echo "$*" 1>&2
|
|
fi
|
|
cat <<EOF
|
|
Usage: $(basename "$0") [class name] (options)*
|
|
Options:
|
|
--cdc - runs with cdc enabled
|
|
--compression - run with compression enabled
|
|
--jvm-dtest-version|--dtest-version - which jvm-dtest version to use
|
|
--reuse - skip calling ant realclean
|
|
--tokens|--num-tokens - number of vnode tokens to use for jvm-dtest
|
|
-h|--help - this help page
|
|
EOF
|
|
exit 1
|
|
}
|
|
|
|
if [[ $# -eq 0 ]]; then
|
|
usage "Missing required arguments"
|
|
fi
|
|
|
|
class_name=""
|
|
task="testclasslist"
|
|
fresh_build=true
|
|
jvm_dtest_version=""
|
|
num_tokens=""
|
|
while [[ "$#" -gt 0 ]]; do
|
|
case "$1" in
|
|
--tokens|--num-tokens)
|
|
num_tokens="$2"
|
|
shift 2
|
|
;;
|
|
--cdc)
|
|
task="testclasslist-cdc"
|
|
shift
|
|
;;
|
|
--compression)
|
|
task="testclasslist-compression"
|
|
shift
|
|
;;
|
|
--reuse)
|
|
fresh_build=false
|
|
shift
|
|
;;
|
|
--jvm-dtest-version|--dtest-version)
|
|
jvm_dtest_version="$2"
|
|
shift 2
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
shift
|
|
;;
|
|
*)
|
|
if [[ -z "${class_name:-}" ]]; then
|
|
class_name="$1"
|
|
shift
|
|
else
|
|
usage "Unknown argument $1"
|
|
fi
|
|
;;
|
|
esac
|
|
done
|
|
if [[ -z "${class_name:-}" ]]; then
|
|
usage "No class provided"
|
|
fi
|
|
# Is the class name valid?
|
|
if [[ "$class_name" =~ [:#$] ]]; then
|
|
error "Unexpected class name: $class_name. Illegal characters were detected: ':', '#', and '\$' are not allowed! ci-test only supports class names, and not references to methods."
|
|
fi
|
|
path="$(echo "$class_name" | tr '.' '/' ).java"
|
|
prefix="$( find test | grep "$path" | awk -F/ '{print $2}' )"
|
|
|
|
JAVA_VERSION=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}' | awk -F. '{print $1}')
|
|
|
|
if [ "$JAVA_VERSION" -ge 11 ]; then
|
|
export CASSANDRA_USE_JDK11=true
|
|
fi
|
|
|
|
if [ -n "${num_tokens:-}" ]; then
|
|
export CASSANDRA_DTEST_NUM_TOKENS="$num_tokens"
|
|
fi
|
|
|
|
opts=(
|
|
-Dant.gen-doc.skip=true
|
|
-Dno-checkstyle=true
|
|
-Dant.gen-doc.skip=true
|
|
-Drat.skip=true
|
|
)
|
|
if [[ -n "${jvm_dtest_version:-}" ]]; then
|
|
opts+=( "-Ddtest-api.version=$jvm_dtest_version" )
|
|
fi
|
|
|
|
if [[ "$fresh_build" == true ]]; then
|
|
if [[ ! "$path" =~ distributed/upgrade ]]; then
|
|
ant "${opts[@]}" realclean
|
|
ant "${opts[@]}"
|
|
ant "${opts[@]}" generate-idea-files
|
|
fi
|
|
fi
|
|
|
|
# cleanup logs so w/e is around are for this run
|
|
rm -rf build/test/logs || true
|
|
|
|
test_timeout=$(grep "name=\"test.$prefix.timeout\"" build.xml | awk -F'"' '{print $4}' || true)
|
|
if [ -z "$test_timeout" ]; then
|
|
test_timeout=$(grep 'name="test.timeout"' build.xml | awk -F'"' '{print $4}')
|
|
fi
|
|
if [[ "$fresh_build" == false ]]; then
|
|
opts+=(-Dno-build-test=true)
|
|
fi
|
|
|
|
if [[ "$prefix" == "simulator" ]]; then
|
|
ant "${opts[@]}" test-simulator-dtest -Dtest.name="$(echo "$path" | awk -F'.' '{print $1}' | awk -F'/' '{print $NF}')"
|
|
else
|
|
ant "${opts[@]}" "$task" -Dtest.timeout="$test_timeout" -Dtest.classlistfile=<(echo "$path") -Dtest.classlistprefix="$prefix"
|
|
fi
|