blob: 4e36170f36f30f185cacef7b8660eda58b8afb05 [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.
SPARK_PROFILE=$1
SCALA_PROFILE=$2
JAVA_RUNTIME_VERSION=openjdk17
DEFAULT_JAVA_HOME=${JAVA_HOME}
WORKDIR=/opt/bundle-validation
JARS_DIR=${WORKDIR}/jars
DOCKER_TEST_DIR=${WORKDIR}/docker-test
##
# Function to change Java runtime version by changing JAVA_HOME
##
change_java_runtime_version () {
if [[ ${JAVA_RUNTIME_VERSION} == 'openjdk11' ]]; then
echo "Change JAVA_HOME to /usr/lib/jvm/java-11-openjdk"
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
elif [[ ${JAVA_RUNTIME_VERSION} == 'openjdk17' ]]; then
echo "Change JAVA_HOME to /usr/lib/jvm/java-17-openjdk"
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
fi
}
##
# Function to change Java runtime version to default Java 8
##
use_default_java_runtime () {
echo "Use default java runtime under ${DEFAULT_JAVA_HOME}"
export JAVA_HOME=${DEFAULT_JAVA_HOME}
}
start_datanode () {
DN=$1
echo "::warning::docker_test_java17.sh starting datanode:"$DN
cat $HADOOP_HOME/hadoop/etc/hdfs-site.xml
cat $HADOOP_HOME/hadoop/etc/core-site.xml
DN_DIR_PREFIX=$DOCKER_TEST_DIR/additional_datanode/
PID_DIR=$DOCKER_TEST_DIR/pid/$1
if [ -z $DN_DIR_PREFIX ]; then
mkdir -p $DN_DIR_PREFIX
fi
if [ -z $PID_DIR ]; then
mkdir -p $PID_DIR
fi
export HADOOP_PID_DIR=$PID_PREFIX
DN_CONF_OPTS="\
-Dhadoop.tmp.dir=$DN_DIR_PREFIX$DN\
-Ddfs.datanode.address=localhost:5001$DN \
-Ddfs.datanode.http.address=localhost:5008$DN \
-Ddfs.datanode.ipc.address=localhost:5002$DN"
$HADOOP_HOME/bin/hdfs --daemon start datanode $DN_CONF_OPTS
$HADOOP_HOME/bin/hdfs dfsadmin -report
}
setup_hdfs () {
echo "::warning::docker_test_java17.sh copying hadoop conf"
mv /opt/bundle-validation/tmp-conf-dir/hdfs-site.xml $HADOOP_HOME/etc/hadoop/hdfs-site.xml
mv /opt/bundle-validation/tmp-conf-dir/core-site.xml $HADOOP_HOME/etc/hadoop/core-site.xml
$HADOOP_HOME/bin/hdfs namenode -format
$HADOOP_HOME/bin/hdfs --daemon start namenode
echo "::warning::docker_test_java17.sh starting hadoop hdfs"
$HADOOP_HOME/sbin/start-dfs.sh
# start datanodes
for i in $(seq 1 3)
do
start_datanode $i
done
echo "::warning::docker_test_java17.sh starting hadoop hdfs, hdfs report"
$HADOOP_HOME/bin/hdfs dfs -mkdir -p /user/root
$HADOOP_HOME/bin/hdfs dfs -ls /user/
if [ "$?" -ne 0 ]; then
echo "::error::docker_test_java17.sh Failed setting up HDFS!"
exit 1
fi
}
stop_hdfs() {
use_default_java_runtime
echo "::warning::docker_test_java17.sh stopping hadoop hdfs"
$HADOOP_HOME/sbin/stop-dfs.sh
}
build_hudi () {
change_java_runtime_version
mvn clean install -D"$SCALA_PROFILE" -D"$SPARK_PROFILE" -DskipTests=true \
-e -ntp -B -V -Dgpg.skip -Djacoco.skip -Pwarn-log \
-Dorg.slf4j.simpleLogger.log.org.apache.maven.plugins.shade=warn \
-Dorg.slf4j.simpleLogger.log.org.apache.maven.plugins.dependency=warn \
-pl packaging/hudi-spark-bundle -am
if [ "$?" -ne 0 ]; then
echo "::error::docker_test_java17.sh Failed building Hudi!"
exit 1
fi
if [ ! -d $JARS_DIR ]; then
mkdir -p $JARS_DIR
fi
cp ./packaging/hudi-spark-bundle/target/hudi-spark*.jar $JARS_DIR/spark.jar
}
run_docker_tests() {
echo "::warning::docker_test_java17.sh run_docker_tests Running Hudi maven tests on Docker"
change_java_runtime_version
mvn -e test -D$SPARK_PROFILE -D$SCALA_PROFILE -Djava17 -Duse.external.hdfs=true \
-Dtest=org.apache.hudi.common.functional.TestHoodieLogFormat,org.apache.hudi.common.util.TestDFSPropertiesConfiguration,org.apache.hudi.common.fs.TestHoodieWrapperFileSystem \
-Dsurefire.failIfNoSpecifiedTests=false -pl hudi-common -Pwarn-log
if [ "$?" -ne 0 ]; then
echo "::error::docker_test_java17.sh Hudi maven tests failed"
exit 1
fi
echo "::warning::docker_test_java17.sh Hudi maven tests passed!"
echo "::warning::docker_test_java17.sh run_docker_tests Running Hudi Scala script tests on Docker"
$SPARK_HOME/bin/spark-shell --jars $JARS_DIR/spark.jar < $WORKDIR/docker_java17/TestHiveClientUtils.scala
if [ $? -ne 0 ]; then
echo "::error::docker_test_java17.sh HiveClientUtils failed"
exit 1
fi
echo "::warning::docker_test_java17.sh run_docker_tests Hudi Scala script tests passed!"
echo "::warning::docker_test_java17.sh All Docker tests passed!"
use_default_java_runtime
}
############################
# Execute tests
############################
cd $DOCKER_TEST_DIR
echo "yxchang: $(PATH)"
export PATH=/usr/bin:$PATH
whoami
which ssh
whoami
echo "::warning::docker_test_java17.sh Building Hudi"
build_hudi
echo "::warning::docker_test_java17.sh Done building Hudi"
setup_hdfs
echo "::warning::docker_test_java17.sh Running tests with Java 17"
run_docker_tests
if [ "$?" -ne 0 ]; then
exit 1
fi
echo "::warning::docker_test_java17.sh Done running tests with Java 17"
stop_hdfs