mirror of
https://github.com/apache/druid.git
synced 2025-02-17 07:25:02 +00:00
move integration tests from ZooKeeper 3.4.x to 3.5.x (#10786)
* move integration tests from ZooKeeper 3.4.x to 3.5.x * run a subset of our integration tests with ZK 3.4 for backwards compatibility testing. * remove need to build separate docker-base image - use multi-stage build for the base image - use openjdk base image instead of building our own JDK base - workaround Debian not including MySQL by using MariaDB - download mysql connector directly instead of using distro version * fix incorrect openssl command failing on Debian * keep mysql connector version in sync with pom version
This commit is contained in:
parent
6c0c6e60b3
commit
c346ce64b1
18
.travis.yml
18
.travis.yml
@ -26,6 +26,7 @@ cache:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
|
- ZK_VERSION=3.5 # default ZK version for integration tests
|
||||||
- DOCKER_IP=127.0.0.1 # for integration tests
|
- DOCKER_IP=127.0.0.1 # for integration tests
|
||||||
- MVN="mvn -B"
|
- MVN="mvn -B"
|
||||||
- > # Various options to make execution of maven goals faster (e.g., mvn install)
|
- > # Various options to make execution of maven goals faster (e.g., mvn install)
|
||||||
@ -513,6 +514,16 @@ jobs:
|
|||||||
jdk: openjdk8
|
jdk: openjdk8
|
||||||
env: TESTNG_GROUPS='-Dgroups=high-availability' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
|
env: TESTNG_GROUPS='-Dgroups=high-availability' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
|
||||||
|
|
||||||
|
# Subset of integration tests to run with ZooKeeper 3.4.x for backwards compatibility
|
||||||
|
- <<: *integration_tests
|
||||||
|
name: "(Compile=openjdk8, Run=openjdk8, ZK=3.4) leadership and high availability integration tests"
|
||||||
|
jdk: openjdk8
|
||||||
|
env: TESTNG_GROUPS='-Dgroups=high-availability' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager' ZK_VERSION=3.4
|
||||||
|
|
||||||
|
- <<: *integration_kafka_format_tests
|
||||||
|
name: "(Compile=openjdk8, Run=openjdk8, ZK=3.4) Kafka index integration test with various formats"
|
||||||
|
env: TESTNG_GROUPS='-Dgroups=kafka-data-format' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager' ZK_VERSION=3.4
|
||||||
|
|
||||||
# END - Integration tests for Compile with Java 8 and Run with Java 8
|
# END - Integration tests for Compile with Java 8 and Run with Java 8
|
||||||
|
|
||||||
# START - Integration tests for Compile with Java 8 and Run with Java 11
|
# START - Integration tests for Compile with Java 8 and Run with Java 11
|
||||||
@ -575,6 +586,13 @@ jobs:
|
|||||||
name: "(Compile=openjdk8, Run=openjdk11) leadership and high availability integration tests"
|
name: "(Compile=openjdk8, Run=openjdk11) leadership and high availability integration tests"
|
||||||
jdk: openjdk8
|
jdk: openjdk8
|
||||||
env: TESTNG_GROUPS='-Dgroups=high-availability' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'
|
env: TESTNG_GROUPS='-Dgroups=high-availability' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'
|
||||||
|
|
||||||
|
# Subset of integration tests to run with ZooKeeper 3.4.x for backwards compatibility
|
||||||
|
- <<: *integration_tests
|
||||||
|
name: "(Compile=openjdk8, Run=openjdk11, ZK=3.4) leadership and high availability integration tests"
|
||||||
|
jdk: openjdk8
|
||||||
|
env: TESTNG_GROUPS='-Dgroups=high-availability' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager' ZK_VERSION=3.4
|
||||||
|
|
||||||
# END - Integration tests for Compile with Java 8 and Run with Java 11
|
# END - Integration tests for Compile with Java 8 and Run with Java 11
|
||||||
|
|
||||||
- &integration_batch_index_k8s
|
- &integration_batch_index_k8s
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
<!--
|
|
||||||
~ 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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
## Base Docker Image for Integration Tests
|
|
||||||
|
|
||||||
### Building Docker Image for Integration Tests
|
|
||||||
|
|
||||||
Run the following commands from <DRUIDS_REPO_DIR>/integration-tests/docker-base
|
|
||||||
|
|
||||||
To build docker image for Java JDK8:
|
|
||||||
- docker build -t druidbase:<NEW_TAG> -f jdk8/Dockerfile .
|
|
||||||
|
|
||||||
To build docker image for Java JDK11:
|
|
||||||
- docker build -t druidbase:<NEW_TAG> -f jdk11/Dockerfile .
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
|||||||
# Based on the following projects/files:
|
|
||||||
# - SequenceIQ hadoop-docker project hosted at https://github.com/sequenceiq/hadoop-docker
|
|
||||||
# - AdoptOpenJDK openjdk-docker project hosted at https://github.com/AdoptOpenJDK/openjdk-docker
|
|
||||||
# and modified at the Apache Software Foundation (ASF).
|
|
||||||
#
|
|
||||||
# Licensed 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.
|
|
||||||
|
|
||||||
FROM ubuntu:16.04
|
|
||||||
|
|
||||||
# Install Java JDK 11 (OpenJDK 11.0.5)
|
|
||||||
# Sourced from AdoptOpenJDK openjdk-docker project (https://github.com/AdoptOpenJDK/openjdk-docker)
|
|
||||||
RUN apt-get update \
|
|
||||||
&& apt-get install -y --no-install-recommends curl ca-certificates fontconfig locales \
|
|
||||||
&& echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
|
|
||||||
&& locale-gen en_US.UTF-8 \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
RUN set -eux; \
|
|
||||||
ARCH="$(dpkg --print-architecture)"; \
|
|
||||||
case "${ARCH}" in \
|
|
||||||
armhf) \
|
|
||||||
ESUM='c6b1fda3f8807028cbfcc34a4ded2e8a5a6b6239d2bcc1f06673ea6b1530df94'; \
|
|
||||||
BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.5%2B10/OpenJDK11U-jdk_arm_linux_hotspot_11.0.5_10.tar.gz'; \
|
|
||||||
;; \
|
|
||||||
ppc64el|ppc64le) \
|
|
||||||
ESUM='d763481ddc29ac0bdefb24216b3a0bf9afbb058552682567a075f9c0f7da5814'; \
|
|
||||||
BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.5%2B10/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.5_10.tar.gz'; \
|
|
||||||
;; \
|
|
||||||
amd64|x86_64) \
|
|
||||||
ESUM='6dd0c9c8a740e6c19149e98034fba8e368fd9aa16ab417aa636854d40db1a161'; \
|
|
||||||
BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.5%2B10/OpenJDK11U-jdk_x64_linux_hotspot_11.0.5_10.tar.gz'; \
|
|
||||||
;; \
|
|
||||||
*) \
|
|
||||||
echo "Unsupported arch: ${ARCH}"; \
|
|
||||||
exit 1; \
|
|
||||||
;; \
|
|
||||||
esac; \
|
|
||||||
curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
|
|
||||||
echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
|
|
||||||
mkdir -p /opt/java/openjdk; \
|
|
||||||
cd /opt/java/openjdk; \
|
|
||||||
tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
|
|
||||||
rm -rf /tmp/openjdk.tar.gz;
|
|
||||||
|
|
||||||
ENV JAVA_HOME=/opt/java/openjdk \
|
|
||||||
PATH="/opt/java/openjdk/bin:$PATH"
|
|
||||||
|
|
||||||
# Bundle everything into one script so cleanup can reduce image size.
|
|
||||||
# Otherwise docker's layered images mean that things are not actually deleted.
|
|
||||||
|
|
||||||
COPY setup.sh /root/setup.sh
|
|
||||||
RUN chmod 0755 /root/setup.sh && /root/setup.sh
|
|
@ -1,27 +0,0 @@
|
|||||||
# Based on the SequenceIQ hadoop-docker project hosted at
|
|
||||||
# https://github.com/sequenceiq/hadoop-docker, and modified at
|
|
||||||
# the Apache Software Foundation (ASF).
|
|
||||||
#
|
|
||||||
# Licensed 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.
|
|
||||||
|
|
||||||
FROM ubuntu:16.04
|
|
||||||
|
|
||||||
# Install Java JDK 8
|
|
||||||
RUN apt-get update \
|
|
||||||
&& apt-get install -y openjdk-8-jdk
|
|
||||||
|
|
||||||
# Bundle everything into one script so cleanup can reduce image size.
|
|
||||||
# Otherwise docker's layered images mean that things are not actually deleted.
|
|
||||||
|
|
||||||
COPY setup.sh /root/setup.sh
|
|
||||||
RUN chmod 0755 /root/setup.sh && /root/setup.sh
|
|
@ -13,16 +13,19 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
ARG JDK_VERSION=8-slim
|
||||||
|
FROM openjdk:$JDK_VERSION as druidbase
|
||||||
|
|
||||||
# This is default value for base image in case DOCKER_IMAGE is not given when building
|
# Bundle everything into one script so cleanup can reduce image size.
|
||||||
ARG DOCKER_IMAGE=imply/druiditbase:openjdk-1.8.0_191-1
|
# Otherwise docker's layered images mean that things are not actually deleted.
|
||||||
# Base image is built from integration-tests/docker-base in the Druid repo
|
|
||||||
FROM $DOCKER_IMAGE
|
COPY base-setup.sh /root/base-setup.sh
|
||||||
|
RUN /root/base-setup.sh && rm -f /root/base-setup.sh
|
||||||
|
|
||||||
|
FROM druidbase
|
||||||
|
ARG MYSQL_VERSION
|
||||||
|
|
||||||
# Verify Java version
|
# Verify Java version
|
||||||
ARG DOCKER_IMAGE
|
|
||||||
ENV DOCKER_IMAGE_USED=$DOCKER_IMAGE
|
|
||||||
RUN echo "Built using base docker image DOCKER_IMAGE_USED=$DOCKER_IMAGE_USED"
|
|
||||||
RUN java -version
|
RUN java -version
|
||||||
|
|
||||||
RUN echo "[mysqld]\ncharacter-set-server=utf8\ncollation-server=utf8_bin\n" >> /etc/mysql/my.cnf
|
RUN echo "[mysqld]\ncharacter-set-server=utf8\ncollation-server=utf8_bin\n" >> /etc/mysql/my.cnf
|
||||||
@ -37,9 +40,9 @@ RUN find /var/lib/mysql -type f -exec touch {} \; && /etc/init.d/mysql start \
|
|||||||
ADD lib/* /usr/local/druid/lib/
|
ADD lib/* /usr/local/druid/lib/
|
||||||
|
|
||||||
# Download the MySQL Java connector
|
# Download the MySQL Java connector
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
# target path must match the exact path referenced in environment-configs/common
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends apt-utils libmysql-java
|
RUN wget -q "https://repo1.maven.org/maven2/mysql/mysql-connector-java/$MYSQL_VERSION/mysql-connector-java-$MYSQL_VERSION.jar" \
|
||||||
RUN ln -sf /usr/share/java/mysql-connector-java.jar /usr/local/druid/lib/mysql-connector-java.jar
|
-O /usr/local/druid/lib/mysql-connector-java.jar
|
||||||
|
|
||||||
# Add sample data
|
# Add sample data
|
||||||
# touch is needed because OverlayFS's copy-up operation breaks POSIX standards. See https://github.com/docker/for-linux/issues/72.
|
# touch is needed because OverlayFS's copy-up operation breaks POSIX standards. See https://github.com/docker/for-linux/issues/72.
|
||||||
|
23
integration-tests/docker-base/setup.sh → integration-tests/docker/base-setup.sh
Normal file → Executable file
23
integration-tests/docker-base/setup.sh → integration-tests/docker/base-setup.sh
Normal file → Executable file
@ -25,24 +25,29 @@ apt-get update
|
|||||||
apt-get install -y wget
|
apt-get install -y wget
|
||||||
|
|
||||||
# MySQL (Metadata store)
|
# MySQL (Metadata store)
|
||||||
apt-get install -y mysql-server
|
apt-get install -y default-mysql-server
|
||||||
|
|
||||||
# Supervisor
|
# Supervisor
|
||||||
apt-get install -y supervisor
|
apt-get install -y supervisor
|
||||||
|
|
||||||
# Zookeeper
|
# Zookeeper
|
||||||
|
|
||||||
#ZK_VERSION=3.5.8
|
install_zk() {
|
||||||
#ZK_TAR=apache-zookeeper-$ZK_VERSION-bin
|
wget -q -O /tmp/$ZK_TAR.tar.gz "https://archive.apache.org/dist/zookeeper/zookeeper-$ZK_VERSION/$ZK_TAR.tar.gz"
|
||||||
|
tar -xzf /tmp/$ZK_TAR.tar.gz -C /usr/local
|
||||||
|
cp /usr/local/$ZK_TAR/conf/zoo_sample.cfg /usr/local/$ZK_TAR/conf/zoo.cfg
|
||||||
|
rm /tmp/$ZK_TAR.tar.gz
|
||||||
|
}
|
||||||
|
|
||||||
ZK_VERISON=3.4.14
|
ZK_VERSION=3.4.14
|
||||||
ZK_TAR=zookeeper-$ZK_VERSION
|
ZK_TAR=zookeeper-$ZK_VERSION
|
||||||
|
install_zk
|
||||||
|
ln -s /usr/local/$ZK_TAR /usr/local/zookeeper-3.4
|
||||||
|
|
||||||
wget -q -O /tmp/$ZK_TAR.tar.gz "https://apache.org/dist/zookeeper/zookeeper-$ZK_VERSION/$ZK_TAR.tar.gz"
|
ZK_VERSION=3.5.9
|
||||||
tar -xzf /tmp/$ZK_TAR.tar.gz -C /usr/local
|
ZK_TAR=apache-zookeeper-$ZK_VERSION-bin
|
||||||
cp /usr/local/$ZK_TAR/conf/zoo_sample.cfg /usr/local/$ZK_TAR/conf/zoo.cfg
|
install_zk
|
||||||
ln -s /usr/local/$ZK_TAR /usr/local/zookeeper
|
ln -s /usr/local/$ZK_TAR /usr/local/zookeeper-3.5
|
||||||
rm /tmp/$ZK_TAR.tar.gz
|
|
||||||
|
|
||||||
# Kafka
|
# Kafka
|
||||||
# Match the version to the Kafka client used by KafkaSupervisor
|
# Match the version to the Kafka client used by KafkaSupervisor
|
@ -53,6 +53,8 @@ services:
|
|||||||
- ./service-supervisords/kafka.conf:/usr/lib/druid/conf/kafka.conf
|
- ./service-supervisords/kafka.conf:/usr/lib/druid/conf/kafka.conf
|
||||||
env_file:
|
env_file:
|
||||||
- ./environment-configs/common
|
- ./environment-configs/common
|
||||||
|
environment:
|
||||||
|
- ZK_VERSION
|
||||||
|
|
||||||
druid-metadata-storage:
|
druid-metadata-storage:
|
||||||
image: druid/cluster
|
image: druid/cluster
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
[program:zookeeper]
|
[program:zookeeper]
|
||||||
command=/usr/local/zookeeper/bin/zkServer.sh start-foreground
|
command=/usr/local/zookeeper-%(ENV_ZK_VERSION)s/bin/zkServer.sh start-foreground
|
||||||
user=daemon
|
user=daemon
|
||||||
priority=0
|
priority=0
|
||||||
stdout_logfile=/shared/logs/zookeeper.log
|
stdout_logfile=/shared/logs/zookeeper.log
|
||||||
|
@ -61,7 +61,7 @@ DNS.2 = localhost
|
|||||||
EOT
|
EOT
|
||||||
|
|
||||||
# Generate a server certificate for this machine
|
# Generate a server certificate for this machine
|
||||||
openssl genrsa -out server.key 1024 -sha256
|
openssl genrsa -out server.key 1024
|
||||||
openssl req -new -out server.csr -key server.key -reqexts req_ext -config csr.conf
|
openssl req -new -out server.csr -key server.key -reqexts req_ext -config csr.conf
|
||||||
openssl x509 -req -days 3650 -in server.csr -CA root.pem -CAkey root.key -set_serial 0x22222222 -out server.pem -sha256 -extfile csr.conf -extensions req_ext
|
openssl x509 -req -days 3650 -in server.csr -CA root.pem -CAkey root.key -set_serial 0x22222222 -out server.pem -sha256 -extfile csr.conf -extensions req_ext
|
||||||
|
|
||||||
|
@ -416,6 +416,7 @@
|
|||||||
<DRUID_INTEGRATION_TEST_SKIP_BUILD_DOCKER>${docker.build.skip}</DRUID_INTEGRATION_TEST_SKIP_BUILD_DOCKER>
|
<DRUID_INTEGRATION_TEST_SKIP_BUILD_DOCKER>${docker.build.skip}</DRUID_INTEGRATION_TEST_SKIP_BUILD_DOCKER>
|
||||||
<DRUID_INTEGRATION_TEST_SKIP_RUN_DOCKER>${docker.run.skip}</DRUID_INTEGRATION_TEST_SKIP_RUN_DOCKER>
|
<DRUID_INTEGRATION_TEST_SKIP_RUN_DOCKER>${docker.run.skip}</DRUID_INTEGRATION_TEST_SKIP_RUN_DOCKER>
|
||||||
<DRUID_INTEGRATION_TEST_INDEXER>${it.indexer}</DRUID_INTEGRATION_TEST_INDEXER>
|
<DRUID_INTEGRATION_TEST_INDEXER>${it.indexer}</DRUID_INTEGRATION_TEST_INDEXER>
|
||||||
|
<MYSQL_VERSION>${mysql.version}</MYSQL_VERSION>
|
||||||
</environmentVariables>
|
</environmentVariables>
|
||||||
<executable>${project.basedir}/build_run_cluster.sh</executable>
|
<executable>${project.basedir}/build_run_cluster.sh</executable>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
@ -21,18 +21,18 @@ set -e
|
|||||||
|
|
||||||
if [ -z "$DRUID_INTEGRATION_TEST_JVM_RUNTIME" ]
|
if [ -z "$DRUID_INTEGRATION_TEST_JVM_RUNTIME" ]
|
||||||
then
|
then
|
||||||
echo "\$DRUID_INTEGRATION_TEST_JVM_RUNTIME is not set. Build druid-cluster with Java 8"
|
echo "\$DRUID_INTEGRATION_TEST_JVM_RUNTIME is not set. Building druid-cluster with default Java version"
|
||||||
docker build -t druid/cluster --build-arg DOCKER_IMAGE=imply/druiditbase:openjdk-1.8.0_191-1 $SHARED_DIR/docker
|
docker build -t druid/cluster --build-arg MYSQL_VERSION $SHARED_DIR/docker
|
||||||
else
|
else
|
||||||
echo "\$DRUID_INTEGRATION_TEST_JVM_RUNTIME is set with value ${DRUID_INTEGRATION_TEST_JVM_RUNTIME}"
|
echo "\$DRUID_INTEGRATION_TEST_JVM_RUNTIME is set with value ${DRUID_INTEGRATION_TEST_JVM_RUNTIME}"
|
||||||
case "${DRUID_INTEGRATION_TEST_JVM_RUNTIME}" in
|
case "${DRUID_INTEGRATION_TEST_JVM_RUNTIME}" in
|
||||||
8)
|
8)
|
||||||
echo "Build druid-cluster with Java 8"
|
echo "Build druid-cluster with Java 8"
|
||||||
docker build -t druid/cluster --build-arg DOCKER_IMAGE=imply/druiditbase:openjdk-1.8.0_191-1 $SHARED_DIR/docker
|
docker build -t druid/cluster --build-arg JDK_VERSION=8-slim --build-arg MYSQL_VERSION $SHARED_DIR/docker
|
||||||
;;
|
;;
|
||||||
11)
|
11)
|
||||||
echo "Build druid-cluster with Java 11"
|
echo "Build druid-cluster with Java 11"
|
||||||
docker build -t druid/cluster --build-arg DOCKER_IMAGE=imply/druiditbase:openjdk-11.0.5-1 $SHARED_DIR/docker
|
docker build -t druid/cluster --build-arg JDK_VERSION=11-slim --build-arg MYSQL_VERSION $SHARED_DIR/docker
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Invalid JVM Runtime given. Stopping"
|
echo "Invalid JVM Runtime given. Stopping"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user