druid/it.sh

137 lines
3.2 KiB
Bash
Executable File

#! /bin/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.
#--------------------------------------------------------------------
# Utility script for running the new integration tests, since the Maven
# commands are unwieldy.
set -e
export DRUID_DEV=$(cd $(dirname $0) && pwd)
function usage
{
cat <<EOF
Usage: $0 cmd [category]
build
build Druid and the distribution
dist
build the Druid distribution (only)
tools
build druid-it-tools
image
build the test image
up <category>
start the cluster for category
down <category>
stop the cluster for category
test <category>
start the cluster, run the test for category, and stop the cluster
tail <category>
show the last 20 lines of each container log
travis <category>
run one IT in Travis (build dist, image, run test, tail logs)
prune
prune Docker volumes
EOF
}
function tail_logs
{
category=$1
cd integration-tests-ex/cases/target/$category/logs
ls *.log | while read log;
do
echo "----- $category/$log -----"
tail -20 $log
done
}
CMD=$1
shift
MAVEN_IGNORE="-P skip-static-checks,skip-tests -Dmaven.javadoc.skip=true"
case $CMD in
"help" )
usage
;;
"build" )
mvn clean package -P dist $MAVEN_IGNORE -T1.0C
;;
"dist" )
mvn package -P dist $MAVEN_IGNORE -pl :distribution
;;
"tools" )
mvn install -pl :druid-it-tools
;;
"image" )
cd $DRUID_DEV/integration-tests-ex/image
mvn install -P test-image $MAVEN_IGNORE
;;
"up" )
if [ -z "$1" ]; then
usage
exit 1
fi
cd $DRUID_DEV/integration-tests-ex/cases
./cluster.sh up $1
;;
"down" )
if [ -z "$1" ]; then
usage
exit 1
fi
cd $DRUID_DEV/integration-tests-ex/cases
./cluster.sh down $1
;;
"test" )
if [ -z "$1" ]; then
usage
exit 1
fi
cd $DRUID_DEV/integration-tests-ex/cases
mvn verify -P skip-static-checks,docker-tests,IT-$1 \
-Dmaven.javadoc.skip=true -DskipUTs=true \
-pl :druid-it-cases
;;
"tail" )
if [ -z "$1" ]; then
usage
exit 1
fi
tail_logs $1
;;
"travis" )
if [ -z "$1" ]; then
usage
exit 1
fi
$0 dist
$0 image
$0 test $1
$0 tail $1
;;
"prune" )
# Caution: this removes all volumes, which is generally what you
# want when testing.
docker system prune --volumes
;;
* )
usage
exit -1
;;
esac