blob: 0a7e362052f7be504722d1de9f7fd9b8f6f6f176 [file] [log] [blame]
#!/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.
#
# PLEASE BE NOTICED
#
# This tool will test some main functionality of kylin binary package, such as metadata, cubing and query with rest APIs.
# And this tool will use default port(7070) and default metastore name(kylin_metastore) in hdp sandbox. So those resources
# will be overridden in the test.
#
# This tool accepts two parameters, the first is tar package of kylin, the second is target path for decompress, which
# will contain KYLIN_HOME.
#
# Usage: bash smoke-test.sh ../dist/apache-kylin-1.5.0-bin.tar.gz ../dist/apache-kylin-1.5.0-bin
#
# The process of smoke test is based on sample metadata & data.
# 1. run sample.sh to load sample data
# 2. use rest API to build cube
# 3. use rest API to execute some SQL statements, which locates under sql directory
# 4. compare query result with result file under sql directory
PKG_PATH=$1
TARGET_PATH=$2
cd $(dirname ${0})/..
dir=`pwd`
mkdir -p ${TARGET_PATH}
# Setup stage
KYLIN_PID=`cat "${TARGET_PATH}/*kylin*/pid"`
if [ -n "${KYLIN_PID}" ]; then
if ps -p ${KYLIN_PID} > /dev/null; then
echo "Kylin is running, will be killed. (pid=${KYILN_PID})"
kill -9 ${KYLIN_PID}
fi
fi
rm -rf ${TARGET_PATH}/*kylin*
tar -zxvf $PKG_PATH -C ${TARGET_PATH}
cd ${TARGET_PATH}/*kylin*/
export KYLIN_HOME=`pwd`
cd -
${KYLIN_HOME}/bin/metastore.sh reset
# Test stage
${KYLIN_HOME}/bin/sample.sh
${KYLIN_HOME}/bin/kylin.sh org.apache.kylin.tool.AclTableMigrationCLI MIGRATE
# Enable query push down
cd ${KYLIN_HOME}
sed -i 's/#*\(kylin.query.pushdown.runner-class-name*\)/\1/' conf/kylin.properties
sed -i 's/#*\(kylin.query.pushdown.jdbc.url*\)/\1/' conf/kylin.properties
sed -i 's/#*\(kylin.query.pushdown.jdbc.driver*\)/\1/' conf/kylin.properties
sed -i 's/#*\(kylin.query.pushdown.jdbc.username*\)/\1/' conf/kylin.properties
${KYLIN_HOME}/bin/kylin.sh start
echo "Wait 3 minutes for service start."
sleep 3m
cd $dir/smoke-test
python testBuildCube.py || { exit 1; }
python testQuery.py || { exit 1; }
python testDiag.py || { exit 1; }
cd -
# Tear down stage
${KYLIN_HOME}/bin/metastore.sh clean --delete true
${KYLIN_HOME}/bin/kylin.sh org.apache.kylin.tool.StorageCleanupJob --delete true
${KYLIN_HOME}/bin/metastore.sh reset
${KYLIN_HOME}/bin/kylin.sh stop