| #!/usr/bin/env bash |
| # |
| # vim:et:ft=sh:sts=2:sw=2 |
| # |
| #/** |
| # * 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. |
| # */ |
| |
| # load test helpers |
| . ./bk_test_helpers |
| |
| #------------------------------------------------------------------------------ |
| # suite tests |
| # |
| |
| testDefaultVariables() { |
| source ${BK_BINDIR}/common.sh |
| assertEquals "BINDIR is not set correctly" "${BK_BINDIR}" "${BINDIR}" |
| assertEquals "BK_HOME is not set correctly" "${BK_HOMEDIR}" "${BK_HOME}" |
| assertEquals "DEFAULT_LOG_CONF is not set correctly" "${BK_CONFDIR}/log4j.properties" "${DEFAULT_LOG_CONF}" |
| assertEquals "NETTY_LEAK_DETECTION_LEVEL is not set correctly" "disabled" "${NETTY_LEAK_DETECTION_LEVEL}" |
| assertEquals "NETTY_RECYCLER_MAXCAPACITY is not set correctly" "1000" "${NETTY_RECYCLER_MAXCAPACITY}" |
| assertEquals "NETTY_RECYCLER_LINKCAPACITY is not set correctly" "1024" "${NETTY_RECYCLER_LINKCAPACITY}" |
| assertEquals "BOOKIE_MAX_HEAP_MEMORY is not set correctly" "1g" "${BOOKIE_MAX_HEAP_MEMORY}" |
| assertEquals "BOOKIE_MIN_HEAP_MEMORY is not set correctly" "1g" "${BOOKIE_MIN_HEAP_MEMORY}" |
| assertEquals "BOOKIE_MAX_DIRECT_MEMORY is not set correctly" "2g" "${BOOKIE_MAX_DIRECT_MEMORY}" |
| assertEquals "BOOKIE_MEM_OPTS is not set correctly" "-Xms1g -Xmx1g -XX:MaxDirectMemorySize=2g" "${BOOKIE_MEM_OPTS}" |
| assertEquals "BOOKIE_GC_OPTS is not set correctly" "${DEFAULT_BOOKIE_GC_OPTS}" "${BOOKIE_GC_OPTS}" |
| assertEquals "BOOKIE_GC_LOGGING_OPTS is not set correctly" "${DEFAULT_BOOKIE_GC_LOGGING_OPTS}" "${BOOKIE_GC_LOGGING_OPTS}" |
| assertEquals "CLI_MAX_HEAP_MEMORY is not set correctly" "512M" "${CLI_MAX_HEAP_MEMORY}" |
| assertEquals "CLI_MIN_HEAP_MEMORY is not set correctly" "256M" "${CLI_MIN_HEAP_MEMORY}" |
| assertEquals "CLI_MEM_OPTS is not set correctly" "-Xms256M -Xmx512M" "${CLI_MEM_OPTS}" |
| assertEquals "CLI_GC_OPTS is not set correctly" "${DEFAULT_CLI_GC_OPTS}" "${CLI_GC_OPTS}" |
| assertEquals "CLI_GC_LOGGING_OPTS is not set correctly" "${DEFAULT_CLI_GC_LOGGING_OPTS}" "${CLI_GC_LOGGING_OPTS}" |
| } |
| |
| testFindModuleJarAt() { |
| source ${BK_BINDIR}/common.sh |
| |
| MODULE="test-module" |
| |
| # case 1: empty dir |
| TEST_DIR1=${BK_TMPDIR}/testdir1 |
| mkdir -p ${TEST_DIR1} |
| MODULE_JAR1=$(find_module_jar_at ${TEST_DIR1} ${MODULE}) |
| assertEquals "No module jar should be found at empty dir" "" "${MODULE_JAR1}" |
| |
| # case 2: SNAPSHOT jar |
| TEST_FILES=( |
| "invalid-${MODULE}.jar" |
| "invalid-${MODULE}-4.8.0.jar" |
| "invalid-${MODULE}-4.8.0-SNAPSHOT.jar" |
| "${MODULE}.jar.invalid" |
| "${MODULE}-4.8.0.jar.invalid" |
| "${MODULE}-4.8.0-SNAPSHOT.jar.invalid" |
| "${MODULE}.jar" |
| "${MODULE}-4.8.0-SNAPSHOT.jar" |
| ) |
| |
| TEST_DIR2=${BK_TMPDIR}/testdir2 |
| mkdir -p ${TEST_DIR2} |
| count=0 |
| while [ "x${TEST_FILES[count]}" != "x" ] |
| do |
| touch ${TEST_DIR2}/${TEST_FILES[count]} |
| count=$(( $count + 1 )) |
| done |
| MODULE_JAR2=$(find_module_jar_at ${TEST_DIR2} ${MODULE}) |
| assertEquals "${MODULE}-4.8.0-SNAPSHOT.jar is not found" "${TEST_DIR2}/${MODULE}-4.8.0-SNAPSHOT.jar" "${MODULE_JAR2}" |
| |
| # case 3: release jar |
| TEST_FILES=( |
| "invalid-${MODULE}.jar" |
| "invalid-${MODULE}-4.8.0.jar" |
| "invalid-${MODULE}-4.8.0-SNAPSHOT.jar" |
| "${MODULE}.jar.invalid" |
| "${MODULE}-4.8.0.jar.invalid" |
| "${MODULE}-4.8.0-SNAPSHOT.jar.invalid" |
| "${MODULE}.jar" |
| "${MODULE}-4.8.0.jar" |
| ) |
| |
| TEST_DIR3=${BK_TMPDIR}/testdir3 |
| mkdir -p ${TEST_DIR3} |
| count=0 |
| while [ "x${TEST_FILES[count]}" != "x" ] |
| do |
| touch ${TEST_DIR3}/${TEST_FILES[count]} |
| count=$(( $count + 1 )) |
| done |
| MODULE_JAR3=$(find_module_jar_at ${TEST_DIR3} ${MODULE}) |
| assertEquals "${MODULE}-4.8.0.jar is not found" "${TEST_DIR3}/${MODULE}-4.8.0.jar" "${MODULE_JAR3}" |
| } |
| |
| testFindModuleJar() { |
| BK_HOME=${BK_TMPDIR} |
| # prepare the env files |
| mkdir -p ${BK_HOME}/conf |
| echo "" > ${BK_HOME}/conf/nettyenv.sh |
| echo "" > ${BK_HOME}/conf/bkenv.sh |
| echo "" > ${BK_HOME}/conf/bk_cli_env.sh |
| |
| source ${BK_BINDIR}/common.sh |
| |
| MODULE="test-module" |
| MODULE_PATH="testmodule" |
| VERSION="4.8.0" |
| |
| TEST_FILES=( |
| "${MODULE}-${VERSION}.jar" |
| "lib/${MODULE}-${VERSION}.jar" |
| "${MODULE_PATH}/target/${MODULE}-${VERSION}.jar" |
| ) |
| count=0 |
| while [ "x${TEST_FILES[count]}" != "x" ] |
| do |
| DIR=`dirname ${BK_TMPDIR}/${TEST_FILES[count]}` |
| mkdir -p ${DIR} |
| touch ${BK_TMPDIR}/${TEST_FILES[count]} |
| count=$(( $count + 1 )) |
| done |
| |
| count=0 |
| while [ "x${TEST_FILES[count]}" != "x" ] |
| do |
| FILE="${BK_TMPDIR}/${TEST_FILES[count]}" |
| ACTUAL_FILE=$(find_module_jar ${MODULE_PATH} ${MODULE}) |
| |
| assertEquals "Module file is not found" "${FILE}" "${ACTUAL_FILE}" |
| |
| # delete the file |
| rm ${FILE} |
| count=$(( $count + 1 )) |
| done |
| |
| unset BK_HOME |
| } |
| |
| testLoadEnvfiles() { |
| BK_HOME=${BK_TMPDIR} |
| |
| # prepare the env files |
| mkdir -p ${BK_HOME}/conf |
| echo "NETTY_LEAK_DETECTION_LEVEL=enabled" > ${BK_HOME}/conf/nettyenv.sh |
| echo "BOOKIE_MAX_HEAP_MEMORY=2048M" > ${BK_HOME}/conf/bkenv.sh |
| echo "CLI_MAX_HEAP_MEMORY=2048M" > ${BK_HOME}/conf/bk_cli_env.sh |
| |
| # load the common.sh |
| source ${BK_BINDIR}/common.sh |
| |
| assertEquals "NETTY_LEAK_DETECTION_LEVEL is not set correctly" "enabled" "${NETTY_LEAK_DETECTION_LEVEL}" |
| assertEquals "BOOKIE_MAX_HEAP_MEMORY is not set correctly" "2048M" "${BOOKIE_MAX_HEAP_MEMORY}" |
| assertEquals "CLI_MAX_HEAP_MEMORY is not set correctly" "2048M" "${CLI_MAX_HEAP_MEMORY}" |
| |
| unset NETTY_LEAK_DETECTION_LEVEL |
| unset BOOKIE_MAX_HEAP_MEMORY |
| unset CLI_MAX_HEAP_MEMORY |
| unset BK_HOME |
| } |
| |
| testSetModuleClasspath() { |
| TEST_DIR=${BK_TMPDIR}/test_set_module_classpath |
| mkdir -p ${TEST_DIR} |
| BK_HOME=${TEST_DIR} |
| |
| # prepare the env files |
| mkdir -p ${BK_HOME}/conf |
| echo "" > ${BK_HOME}/conf/nettyenv.sh |
| echo "" > ${BK_HOME}/conf/bkenv.sh |
| echo "" > ${BK_HOME}/conf/bk_cli_env.sh |
| |
| source ${BK_BINDIR}/common.sh |
| |
| MODULE_PATH="testmodule" |
| |
| mkdir -p ${BK_HOME}/${MODULE_PATH}/target |
| echo "test-classpath" > ${BK_HOME}/${MODULE_PATH}/target/cached_classpath.txt |
| |
| local result=$(set_module_classpath ${MODULE_PATH}) |
| assertEquals "test-classpath" ${result} |
| } |
| |
| testBuildBookieJVMOpts() { |
| source ${BK_BINDIR}/common.sh |
| |
| TEST_LOG_DIR=${BK_TMPDIR}/logdir |
| TEST_GC_LOG_FILENAME="test-gc.log" |
| ACTUAL_JVM_OPTS=$(build_bookie_jvm_opts ${TEST_LOG_DIR} ${TEST_GC_LOG_FILENAME}) |
| USEJDK8=$(detect_jdk8) |
| if [ "$USING_JDK8" -ne "1" ]; then |
| EXPECTED_JVM_OPTS="-Xms1g -Xmx1g -XX:MaxDirectMemorySize=2g ${DEFAULT_BOOKIE_GC_OPTS} ${DEFAULT_BOOKIE_GC_LOGGING_OPTS} -Xlog:gc=info:file=${TEST_LOG_DIR}/${TEST_GC_LOG_FILENAME}::filecount=5,filesize=64m" |
| else |
| EXPECTED_JVM_OPTS="-Xms1g -Xmx1g -XX:MaxDirectMemorySize=2g ${DEFAULT_BOOKIE_GC_OPTS} ${DEFAULT_BOOKIE_GC_LOGGING_OPTS} -Xloggc:${TEST_LOG_DIR}/${TEST_GC_LOG_FILENAME}" |
| fi |
| assertEquals "JVM OPTS is not set correctly" "${EXPECTED_JVM_OPTS}" "${ACTUAL_JVM_OPTS}" |
| } |
| |
| testBuildCLIJVMOpts() { |
| source ${BK_BINDIR}/common.sh |
| |
| TEST_LOG_DIR=${BK_TMPDIR}/logdir |
| TEST_GC_LOG_FILENAME="test-gc.log" |
| ACTUAL_JVM_OPTS=$(build_cli_jvm_opts ${TEST_LOG_DIR} ${TEST_GC_LOG_FILENAME}) |
| USEJDK8=$(detect_jdk8) |
| if [ "$USING_JDK8" -ne "1" ]; then |
| EXPECTED_JVM_OPTS="-Xms256M -Xmx512M ${DEFAULT_CLI_GC_OPTS} ${DEFAULT_CLI_GC_LOGGING_OPTS} -Xlog:gc=info:file=${TEST_LOG_DIR}/${TEST_GC_LOG_FILENAME}::filecount=5,filesize=64m" |
| else |
| EXPECTED_JVM_OPTS="-Xms256M -Xmx512M ${DEFAULT_CLI_GC_OPTS} ${DEFAULT_CLI_GC_LOGGING_OPTS} -Xloggc:${TEST_LOG_DIR}/${TEST_GC_LOG_FILENAME}" |
| fi |
| assertEquals "JVM OPTS is not set correctly" "${EXPECTED_JVM_OPTS}" "${ACTUAL_JVM_OPTS}" |
| } |
| |
| testBuildNettyOpts() { |
| source ${BK_BINDIR}/common.sh |
| |
| ACTUAL_NETTY_OPTS=$(build_netty_opts) |
| EXPECTED_NETTY_OPTS="-Dio.netty.leakDetectionLevel=disabled \ |
| -Dio.netty.recycler.maxCapacity.default=1000 \ |
| -Dio.netty.recycler.linkCapacity=1024" |
| |
| assertEquals "Netty OPTS is not set correctly" "${EXPECTED_NETTY_OPTS}" "${ACTUAL_NETTY_OPTS}" |
| } |
| |
| testBuildBookieOpts() { |
| source ${BK_BINDIR}/common.sh |
| |
| ACTUAL_OPTS=$(build_bookie_opts) |
| EXPECTED_OPTS="-Djava.net.preferIPv4Stack=true" |
| |
| assertEquals "Bookie OPTS is not set correctly" "${EXPECTED_OPTS}" "${ACTUAL_OPTS}" |
| } |
| |
| testBuildLoggingOpts() { |
| TEST_CONF_FILE="test.conf" |
| TEST_LOG_DIR="test_log_dir" |
| TEST_LOG_FILE="test_log_file" |
| TEST_LOGGER="INFO,TEST" |
| |
| EXPECTED_OPTS="-Dlog4j.configuration=${TEST_CONF_FILE} \ |
| -Dbookkeeper.root.logger=${TEST_LOGGER} \ |
| -Dbookkeeper.log.dir=${TEST_LOG_DIR} \ |
| -Dbookkeeper.log.file=${TEST_LOG_FILE}" |
| ACTUAL_OPTS=$(build_logging_opts ${TEST_CONF_FILE} ${TEST_LOG_DIR} ${TEST_LOG_FILE} ${TEST_LOGGER}) |
| |
| assertEquals "Logging OPTS is not set correctly" "${EXPECTED_OPTS}" "${ACTUAL_OPTS}" |
| } |
| |
| testBuildCLILoggingOpts() { |
| TEST_CONF_FILE="test.conf" |
| TEST_LOG_DIR="test_log_dir" |
| TEST_LOG_FILE="test_log_file" |
| TEST_LOGGER="INFO,TEST" |
| |
| EXPECTED_OPTS="-Dlog4j.configuration=${TEST_CONF_FILE} \ |
| -Dbookkeeper.cli.root.logger=${TEST_LOGGER} \ |
| -Dbookkeeper.cli.log.dir=${TEST_LOG_DIR} \ |
| -Dbookkeeper.cli.log.file=${TEST_LOG_FILE}" |
| ACTUAL_OPTS=$(build_cli_logging_opts ${TEST_CONF_FILE} ${TEST_LOG_DIR} ${TEST_LOG_FILE} ${TEST_LOGGER}) |
| |
| assertEquals "Logging OPTS is not set correctly" "${EXPECTED_OPTS}" "${ACTUAL_OPTS}" |
| } |
| |
| #------------------------------------------------------------------------------ |
| # suite functions |
| # |
| |
| oneTimeSetUp() { |
| bk_oneTimeSetUp |
| } |
| |
| # load and run shUnit2 |
| . ${BK_SHUNIT} |