2018-11-13 12:38:37 -05:00
# 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.
2021-06-08 19:34:17 -04:00
branches :
only :
- master
- /^\d+\.\d+\.\d+(-\S*)?$/ # release branches
2014-12-19 18:53:19 -05:00
language : java
2019-07-08 15:24:51 -04:00
dist : xenial
2017-07-19 02:19:33 -04:00
2014-12-19 18:53:19 -05:00
jdk :
2019-05-10 20:09:55 -04:00
- openjdk8
2015-01-07 18:07:14 -05:00
2015-08-07 21:05:25 -04:00
cache :
directories :
2017-05-20 14:42:44 -04:00
- $HOME/.m2
2018-07-31 15:56:57 -04:00
2019-08-07 12:52:42 -04:00
env :
global :
- DOCKER_IP=127.0.0.1 # for integration tests
- MVN="mvn -B"
- > # Various options to make execution of maven goals faster (e.g., mvn install)
2022-09-19 18:02:17 -04:00
MAVEN_SKIP="-P skip-static-checks -Dweb.console.skip=true -Dmaven.javadoc.skip=true"
2022-06-23 13:49:50 -04:00
- MAVEN_SKIP_TESTS="-P skip-tests"
2019-08-07 12:52:42 -04:00
2020-11-16 10:38:43 -05:00
addons :
apt :
packages :
- maven
2021-05-27 08:40:40 -04:00
- python3
2022-09-19 18:02:17 -04:00
# Add various options to make 'mvn install' fast and skip javascript compile (-Dweb.console.skip=true) since it is not
2019-08-08 21:13:18 -04:00
# needed. Depending on network speeds, "mvn -q install" may take longer than the default 10 minute timeout to print any
# output. To compensate, use travis_wait to extend the timeout.
2022-08-30 03:18:07 -04:00
install : ./check_test_suite.py && travis_terminate 0 || echo 'Running Maven install...' && MAVEN_OPTS='-Xmx3000m' travis_wait 15 ${MVN} clean install -q -ff -pl '!distribution,!:druid-it-image,!:druid-it-cases' ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS} -T1C && ${MVN} install -q -ff -pl 'distribution' ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS}
2019-08-07 12:52:42 -04:00
2021-02-05 20:50:29 -05:00
# There are 3 stages of tests
# 1. Tests - phase 1
# 2. Tests - phase 2
# 3. cron
#
2022-09-20 12:18:52 -04:00
# The cron type only runs jobs that are marked with stage cron. The cron stage also runs alongside
# phase 1 and phase 2 for commit builds on release branches.
2021-02-05 20:50:29 -05:00
# The test type is split into 2 stages. This is done so that more PRs can run their validation
# in parallel. The first phase is meant to include sanity test jobs. The jobs in this phase are
2022-09-20 12:18:52 -04:00
# meant to be fast. The second phase is meant to run all other tests. Cron stage does not run on pull requests.
2021-02-05 20:50:29 -05:00
# Jobs with known flaky tests should be put in the second phase since the second phase will not
# start if there are any failures in the second stage.
2020-02-11 16:43:08 -05:00
stages :
2021-02-05 20:50:29 -05:00
- name : Tests - phase 1
2020-02-11 16:43:08 -05:00
if : type != cron
2021-02-05 20:50:29 -05:00
- name : Tests - phase 2
2021-01-28 23:11:36 -05:00
if : type != cron
2020-02-11 16:43:08 -05:00
- name : cron
2022-09-20 12:18:52 -04:00
if : type = cron OR (type != pull_request AND branch != master)
2020-02-11 16:43:08 -05:00
2019-08-28 13:29:13 -04:00
jobs :
2017-05-31 21:27:34 -04:00
include :
2019-08-28 13:29:13 -04:00
- &test_processing_module
name : "(openjdk8) processing module test"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 1
2020-05-20 12:31:37 -04:00
env :
2019-08-07 12:52:42 -04:00
- MAVEN_PROJECTS='processing'
2020-05-20 12:31:37 -04:00
before_script :
- export DRUID_USE_DEFAULT_VALUE_FOR_NULL=true
script :
2019-08-07 12:52:42 -04:00
- unset _JAVA_OPTIONS
# Set MAVEN_OPTS for Surefire launcher. Skip remoteresources to avoid intermittent connection timeouts when
# resolving the SIGAR dependency.
- >
2022-04-05 02:56:15 -04:00
MAVEN_OPTS='-Xmx2048m' ${MVN} test -pl ${MAVEN_PROJECTS}
2020-05-20 12:31:37 -04:00
${MAVEN_SKIP} -Dremoteresources.skip=true -Ddruid.generic.useDefaultValueForNull=${DRUID_USE_DEFAULT_VALUE_FOR_NULL}
2018-08-11 01:03:36 -04:00
- sh -c "dmesg | egrep -i '(oom|out of memory|kill process|killed).*' -C 1 || exit 0"
- free -m
2019-08-28 11:49:30 -04:00
- ${MVN} -pl ${MAVEN_PROJECTS} jacoco:report
2020-09-14 22:46:33 -04:00
# Add merge target branch to determine diff (see https://github.com/travis-ci/travis-ci/issues/6069).
# This is not needed for build triggered by tags, since there will be no code diff.
2020-05-20 12:31:37 -04:00
- echo "TRAVIS_BRANCH=${TRAVIS_BRANCH}" # for debugging
2020-09-14 22:46:33 -04:00
- if [[ -z "${TRAVIS_TAG}" ]]; then git remote set-branches --add origin ${TRAVIS_BRANCH} && git fetch; fi
2020-05-20 12:31:37 -04:00
# Determine the modified files that match the maven projects being tested. We use maven project lists that
# either exclude (starts with "!") or include (does not start with "!"), so both cases need to be handled.
2020-09-14 22:46:33 -04:00
# If the build is triggered by a tag, an error will be printed, but `all_files` will be correctly set to empty
# so that the coverage check is skipped.
2020-05-20 12:31:37 -04:00
- all_files="$(git diff --name-only origin/${TRAVIS_BRANCH}...HEAD | grep "\.java$" || [[ $? == 1 ]])"
- for f in ${all_files}; do echo $f; done # for debugging
- >
if [[ "${MAVEN_PROJECTS}" = \!* ]]; then
regex="${MAVEN_PROJECTS:1}";
regex="^${regex//,\!/\\|^}";
project_files="$(echo "${all_files}" | grep -v "${regex}" || [[ $? == 1 ]])";
else
regex="^${MAVEN_PROJECTS//,/\\|^}";
project_files="$(echo "${all_files}" | grep "${regex}" || [[ $? == 1 ]])";
fi
- for f in ${project_files}; do echo $f; done # for debugging
2020-05-26 23:13:08 -04:00
# Check diff code coverage for the maven projects being tested (retry install in case of network error).
# Currently, the function coverage check is not reliable, so it is disabled.
2020-05-20 12:31:37 -04:00
- >
if [ -n "${project_files}" ]; then
travis_retry npm install @connectis/diff-test-coverage@1.5.3
&& git diff origin/${TRAVIS_BRANCH}...HEAD -- ${project_files}
| node_modules/.bin/diff-test-coverage
--coverage "**/target/site/jacoco/jacoco.xml"
--type jacoco
2020-10-22 01:38:11 -04:00
--line-coverage 50
2020-06-02 18:34:58 -04:00
--branch-coverage 50
2020-05-26 23:13:08 -04:00
--function-coverage 0
2020-06-02 18:34:58 -04:00
--log-template "coverage-lines-complete"
--log-template "coverage-files-complete"
--log-template "totals-complete"
--log-template "errors"
2020-05-20 12:31:37 -04:00
--
2020-06-25 22:48:30 -04:00
|| { printf "\n\n****FAILED****\nDiff code coverage check failed. To view coverage report, run 'mvn clean test jacoco:report' and open 'target/site/jacoco/index.html'\nFor more details on how to run code coverage locally, follow instructions here - https://github.com/apache/druid/blob/master/dev/code-review/code-coverage.md#running-code-coverage-locally\n\n" && false; }
2020-05-20 12:31:37 -04:00
fi
after_success :
2019-08-28 11:49:30 -04:00
# retry in case of network error
- travis_retry curl -o codecov.sh -s https://codecov.io/bash
- travis_retry bash codecov.sh -X gcov
2017-06-26 21:51:48 -04:00
2019-08-28 13:29:13 -04:00
- << : *test_processing_module
name : "(openjdk11) processing module test"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2019-08-28 13:29:13 -04:00
jdk : openjdk11
2021-05-25 15:49:49 -04:00
- << : *test_processing_module
2022-08-04 02:16:05 -04:00
name : "(openjdk17) processing module test"
2021-05-25 15:49:49 -04:00
stage : Tests - phase 2
2022-08-04 02:16:05 -04:00
jdk : openjdk17
2021-05-25 15:49:49 -04:00
2019-08-28 13:29:13 -04:00
- &test_processing_module_sqlcompat
2020-05-20 12:31:37 -04:00
<< : *test_processing_module
2019-08-28 13:29:13 -04:00
name : "(openjdk8) processing module test (SQL Compatibility)"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 1
2020-05-20 12:31:37 -04:00
before_script : &setup_sqlcompat
2021-05-27 08:40:40 -04:00
- export DRUID_USE_DEFAULT_VALUE_FOR_NULL=false
2018-08-02 11:20:25 -04:00
2019-08-28 13:29:13 -04:00
- << : *test_processing_module_sqlcompat
name : "(openjdk11) processing module test (SQL Compatibility)"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2019-08-28 13:29:13 -04:00
jdk : openjdk11
2021-05-25 15:49:49 -04:00
- << : *test_processing_module_sqlcompat
2022-08-04 02:16:05 -04:00
name : "(openjdk17) processing module test (SQL Compatibility)"
2021-05-25 15:49:49 -04:00
stage : Tests - phase 2
2022-08-04 02:16:05 -04:00
jdk : openjdk17
2021-05-25 15:49:49 -04:00
2019-08-28 13:29:13 -04:00
- &test_indexing_module
2020-05-20 12:31:37 -04:00
<< : *test_processing_module
2019-08-28 13:29:13 -04:00
name : "(openjdk8) indexing modules test"
2020-05-20 12:31:37 -04:00
env :
2021-05-27 08:40:40 -04:00
- MAVEN_PROJECTS='indexing-hadoop,indexing-service,extensions-core/kafka-indexing-service,extensions-core/kinesis-indexing-service'
2019-08-07 12:52:42 -04:00
2019-08-28 13:29:13 -04:00
- << : *test_indexing_module
name : "(openjdk11) indexing modules test"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2019-08-28 13:29:13 -04:00
jdk : openjdk11
2021-05-25 15:49:49 -04:00
- << : *test_indexing_module
2022-08-04 02:16:05 -04:00
name : "(openjdk17) indexing modules test"
2021-05-25 15:49:49 -04:00
stage : Tests - phase 2
2022-08-04 02:16:05 -04:00
jdk : openjdk17
2021-05-25 15:49:49 -04:00
2019-08-28 13:29:13 -04:00
- &test_indexing_module_sqlcompat
2020-05-20 12:31:37 -04:00
<< : *test_indexing_module
2019-08-28 13:29:13 -04:00
name : "(openjdk8) indexing modules test (SQL Compatibility)"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 1
2020-05-20 12:31:37 -04:00
before_script : *setup_sqlcompat
2019-08-07 12:52:42 -04:00
2019-08-28 13:29:13 -04:00
- << : *test_indexing_module_sqlcompat
name : "(openjdk11) indexing modules test (SQL Compatibility)"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2019-08-28 13:29:13 -04:00
jdk : openjdk11
2021-05-25 15:49:49 -04:00
- << : *test_indexing_module_sqlcompat
2022-08-04 02:16:05 -04:00
name : "(openjdk17) indexing modules test (SQL Compatibility)"
2021-05-25 15:49:49 -04:00
stage : Tests - phase 2
2022-08-04 02:16:05 -04:00
jdk : openjdk17
2021-05-25 15:49:49 -04:00
2019-08-28 13:29:13 -04:00
- &test_server_module
2020-05-20 12:31:37 -04:00
<< : *test_processing_module
2019-08-28 13:29:13 -04:00
name : "(openjdk8) server module test"
2020-05-20 12:31:37 -04:00
env :
2019-08-07 12:52:42 -04:00
- MAVEN_PROJECTS='server'
2019-08-28 13:29:13 -04:00
- << : *test_server_module
name : "(openjdk11) server module test"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2019-08-28 13:29:13 -04:00
jdk : openjdk11
2021-05-25 15:49:49 -04:00
- << : *test_server_module
2022-08-04 02:16:05 -04:00
name : "(openjdk17) server module test"
2021-05-25 15:49:49 -04:00
stage : Tests - phase 2
2022-08-04 02:16:05 -04:00
jdk : openjdk17
2021-05-25 15:49:49 -04:00
2019-08-28 13:29:13 -04:00
- &test_server_module_sqlcompat
2020-05-20 12:31:37 -04:00
<< : *test_server_module
2019-08-28 13:29:13 -04:00
name : "(openjdk8) server module test (SQL Compatibility)"
2020-05-20 12:31:37 -04:00
before_script : *setup_sqlcompat
2019-08-07 12:52:42 -04:00
2019-08-28 13:29:13 -04:00
- << : *test_server_module_sqlcompat
name : "(openjdk11) server module test (SQL Compatibility)"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2019-08-28 13:29:13 -04:00
jdk : openjdk11
2021-05-25 15:49:49 -04:00
- << : *test_server_module_sqlcompat
2022-08-04 02:16:05 -04:00
name : "(openjdk17) server module test (SQL Compatibility)"
2021-05-25 15:49:49 -04:00
stage : Tests - phase 2
2022-08-04 02:16:05 -04:00
jdk : openjdk17
2021-05-25 15:49:49 -04:00
2020-05-20 12:31:37 -04:00
- &test_other_modules
<< : *test_processing_module
2019-08-28 13:29:13 -04:00
name : "(openjdk8) other modules test"
2020-05-20 12:31:37 -04:00
env :
2022-08-24 07:33:23 -04:00
- MAVEN_PROJECTS='!processing,!indexing-hadoop,!indexing-service,!extensions-core/kafka-indexing-service,!extensions-core/kinesis-indexing-service,!server,!web-console,!integration-tests,!:druid-it-tools,!:druid-it-image,!:druid-it-cases'
2019-08-07 12:52:42 -04:00
2020-05-20 12:31:37 -04:00
- << : *test_other_modules
2019-08-28 13:29:13 -04:00
name : "(openjdk11) other modules test"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2019-08-28 13:29:13 -04:00
jdk : openjdk11
2021-05-25 15:49:49 -04:00
- << : *test_other_modules
2022-08-04 02:16:05 -04:00
name : "(openjdk17) other modules test"
2021-05-25 15:49:49 -04:00
stage : Tests - phase 2
2022-08-04 02:16:05 -04:00
jdk : openjdk17
2021-05-25 15:49:49 -04:00
2020-05-20 12:31:37 -04:00
- &test_other_modules_sqlcompat
<< : *test_other_modules
2019-08-28 13:29:13 -04:00
name : "(openjdk8) other modules test (SQL Compatibility)"
2020-05-20 12:31:37 -04:00
before_script : *setup_sqlcompat
2019-08-07 12:52:42 -04:00
2020-05-20 12:31:37 -04:00
- << : *test_other_modules_sqlcompat
2019-08-28 13:29:13 -04:00
name : "(openjdk11) other modules test (SQL Compatibility)"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2019-08-28 13:29:13 -04:00
jdk : openjdk11
2021-05-25 15:49:49 -04:00
- << : *test_other_modules_sqlcompat
2022-08-04 02:16:05 -04:00
name : "(openjdk17) other modules test (SQL Compatibility)"
2021-05-25 15:49:49 -04:00
stage : Tests - phase 2
2022-08-04 02:16:05 -04:00
jdk : openjdk17
2021-05-25 15:49:49 -04:00
2022-07-13 19:12:57 -04:00
- name : "Build and test on ARM64 CPU architecture (1)"
stage : Tests - phase 2
arch : arm64-graviton2
dist : focal
virt : vm
group : edge
jdk : openjdk11
env :
- MAVEN_PROJECTS='core,indexing-hadoop,indexing-service,processing'
2022-09-19 18:02:17 -04:00
script : ${MVN} test -B -pl ${MAVEN_PROJECTS} -Dweb.console.skip=true -DargLine=-Xmx3000m
2022-07-13 19:12:57 -04:00
- name : "Build and test on ARM64 CPU architecture (2)"
stage : Tests - phase 2
arch : arm64-graviton2
dist : focal
virt : vm
group : edge
jdk : openjdk11
env :
- MAVEN_PROJECTS='core,sql,server,services'
2022-09-19 18:02:17 -04:00
script : ${MVN} test -B -pl ${MAVEN_PROJECTS} -Dweb.console.skip=true -DargLine=-Xmx3000m
2022-07-13 19:12:57 -04:00
2020-02-12 19:36:31 -05:00
# Integration tests Java Compile version is set by the machine environment jdk (set by the jdk key)
# Integration tests Java Runtime version is set by the JVM_RUNTIME env property (set env key to -Djvm.runtime=<JVM_RUNTIME_VERSION>)
2020-12-08 19:02:26 -05:00
# Integration tests will either use MiddleManagers or Indexers
2020-02-12 19:36:31 -05:00
# (Currently integration tests only support running with jvm runtime 8 and 11)
# START - Integration tests for Compile with Java 8 and Run with Java 8
2019-08-28 13:29:13 -04:00
- &integration_batch_index
2020-02-12 19:36:31 -05:00
name : "(Compile=openjdk8, Run=openjdk8) batch index integration test"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2020-02-12 19:36:31 -05:00
jdk : openjdk8
2019-08-07 12:52:42 -04:00
services : &integration_test_services
2017-05-31 21:27:34 -04:00
- docker
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=batch-index' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
2019-08-07 12:52:42 -04:00
script : &run_integration_test
2022-01-06 02:33:04 -05:00
- ${MVN} verify -pl integration-tests -P integration-tests ${TESTNG_GROUPS} ${JVM_RUNTIME} -Dit.indexer=${USE_INDEXER} ${MAVEN_SKIP} -Doverride.config.path=${OVERRIDE_CONFIG_PATH}
2019-08-07 12:52:42 -04:00
after_failure : &integration_test_diags
2017-11-10 17:07:37 -05:00
- for v in ~/shared/logs/*.log ; do
echo $v logtail ======================== ; tail -100 $v ;
done
- for v in broker middlemanager overlord router coordinator historical ; do
echo $v dmesg ======================== ;
docker exec -it druid-$v sh -c 'dmesg | tail -3' ;
done
2018-09-19 12:56:15 -04:00
2020-07-08 15:50:29 -04:00
- &integration_input_format
name : "(Compile=openjdk8, Run=openjdk8) input format integration test"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2020-07-08 15:50:29 -04:00
jdk : openjdk8
services : *integration_test_services
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=input-format' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
2020-07-08 15:50:29 -04:00
script : *run_integration_test
after_failure : *integration_test_diags
2020-12-08 19:02:26 -05:00
- << : *integration_input_format
name : "(Compile=openjdk8, Run=openjdk8) input format integration test with Indexer"
env : TESTNG_GROUPS='-Dgroups=input-format' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'
2020-07-21 12:52:13 -04:00
- &integration_input_source
name : "(Compile=openjdk8, Run=openjdk8) input source integration test"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2020-07-21 12:52:13 -04:00
jdk : openjdk8
services : *integration_test_services
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=input-source' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
2020-07-21 12:52:13 -04:00
script : *run_integration_test
after_failure : *integration_test_diags
2020-12-08 19:02:26 -05:00
- << : *integration_input_source
name : "(Compile=openjdk8, Run=openjdk8) input source integration test with Indexer"
env : TESTNG_GROUPS='-Dgroups=input-source' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'
Parallel indexing single dim partitions (#8925)
* Parallel indexing single dim partitions
Implements single dimension range partitioning for native parallel batch
indexing as described in #8769. This initial version requires the
druid-datasketches extension to be loaded.
The algorithm has 5 phases that are orchestrated by the supervisor in
`ParallelIndexSupervisorTask#runRangePartitionMultiPhaseParallel()`.
These phases and the main classes involved are described below:
1) In parallel, determine the distribution of dimension values for each
input source split.
`PartialDimensionDistributionTask` uses `StringSketch` to generate
the approximate distribution of dimension values for each input
source split. If the rows are ungrouped,
`PartialDimensionDistributionTask.UngroupedRowDimensionValueFilter`
uses a Bloom filter to skip rows that would be grouped. The final
distribution is sent back to the supervisor via
`DimensionDistributionReport`.
2) The range partitions are determined.
In `ParallelIndexSupervisorTask#determineAllRangePartitions()`, the
supervisor uses `StringSketchMerger` to merge the individual
`StringSketch`es created in the preceding phase. The merged sketch is
then used to create the range partitions.
3) In parallel, generate partial range-partitioned segments.
`PartialRangeSegmentGenerateTask` uses the range partitions
determined in the preceding phase and
`RangePartitionCachingLocalSegmentAllocator` to generate
`SingleDimensionShardSpec`s. The partition information is sent back
to the supervisor via `GeneratedGenericPartitionsReport`.
4) The partial range segments are grouped.
In `ParallelIndexSupervisorTask#groupGenericPartitionLocationsPerPartition()`,
the supervisor creates the `PartialGenericSegmentMergeIOConfig`s
necessary for the next phase.
5) In parallel, merge partial range-partitioned segments.
`PartialGenericSegmentMergeTask` uses `GenericPartitionLocation` to
retrieve the partial range-partitioned segments generated earlier and
then merges and publishes them.
* Fix dependencies & forbidden apis
* Fixes for integration test
* Address review comments
* Fix docs, strict compile, sketch check, rollup check
* Fix first shard spec, partition serde, single subtask
* Fix first partition check in test
* Misc rewording/refactoring to address code review
* Fix doc link
* Split batch index integration test
* Do not run parallel-batch-index twice
* Adjust last partition
* Split ITParallelIndexTest to reduce runtime
* Rename test class
* Allow null values in range partitions
* Indicate which phase failed
* Improve asserts in tests
2019-12-10 02:05:49 -05:00
- &integration_perfect_rollup_parallel_batch_index
2020-02-12 19:36:31 -05:00
name : "(Compile=openjdk8, Run=openjdk8) perfect rollup parallel batch index integration test"
jdk : openjdk8
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
Parallel indexing single dim partitions (#8925)
* Parallel indexing single dim partitions
Implements single dimension range partitioning for native parallel batch
indexing as described in #8769. This initial version requires the
druid-datasketches extension to be loaded.
The algorithm has 5 phases that are orchestrated by the supervisor in
`ParallelIndexSupervisorTask#runRangePartitionMultiPhaseParallel()`.
These phases and the main classes involved are described below:
1) In parallel, determine the distribution of dimension values for each
input source split.
`PartialDimensionDistributionTask` uses `StringSketch` to generate
the approximate distribution of dimension values for each input
source split. If the rows are ungrouped,
`PartialDimensionDistributionTask.UngroupedRowDimensionValueFilter`
uses a Bloom filter to skip rows that would be grouped. The final
distribution is sent back to the supervisor via
`DimensionDistributionReport`.
2) The range partitions are determined.
In `ParallelIndexSupervisorTask#determineAllRangePartitions()`, the
supervisor uses `StringSketchMerger` to merge the individual
`StringSketch`es created in the preceding phase. The merged sketch is
then used to create the range partitions.
3) In parallel, generate partial range-partitioned segments.
`PartialRangeSegmentGenerateTask` uses the range partitions
determined in the preceding phase and
`RangePartitionCachingLocalSegmentAllocator` to generate
`SingleDimensionShardSpec`s. The partition information is sent back
to the supervisor via `GeneratedGenericPartitionsReport`.
4) The partial range segments are grouped.
In `ParallelIndexSupervisorTask#groupGenericPartitionLocationsPerPartition()`,
the supervisor creates the `PartialGenericSegmentMergeIOConfig`s
necessary for the next phase.
5) In parallel, merge partial range-partitioned segments.
`PartialGenericSegmentMergeTask` uses `GenericPartitionLocation` to
retrieve the partial range-partitioned segments generated earlier and
then merges and publishes them.
* Fix dependencies & forbidden apis
* Fixes for integration test
* Address review comments
* Fix docs, strict compile, sketch check, rollup check
* Fix first shard spec, partition serde, single subtask
* Fix first partition check in test
* Misc rewording/refactoring to address code review
* Fix doc link
* Split batch index integration test
* Do not run parallel-batch-index twice
* Adjust last partition
* Split ITParallelIndexTest to reduce runtime
* Rename test class
* Allow null values in range partitions
* Indicate which phase failed
* Improve asserts in tests
2019-12-10 02:05:49 -05:00
services : *integration_test_services
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=perfect-rollup-parallel-batch-index' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
Parallel indexing single dim partitions (#8925)
* Parallel indexing single dim partitions
Implements single dimension range partitioning for native parallel batch
indexing as described in #8769. This initial version requires the
druid-datasketches extension to be loaded.
The algorithm has 5 phases that are orchestrated by the supervisor in
`ParallelIndexSupervisorTask#runRangePartitionMultiPhaseParallel()`.
These phases and the main classes involved are described below:
1) In parallel, determine the distribution of dimension values for each
input source split.
`PartialDimensionDistributionTask` uses `StringSketch` to generate
the approximate distribution of dimension values for each input
source split. If the rows are ungrouped,
`PartialDimensionDistributionTask.UngroupedRowDimensionValueFilter`
uses a Bloom filter to skip rows that would be grouped. The final
distribution is sent back to the supervisor via
`DimensionDistributionReport`.
2) The range partitions are determined.
In `ParallelIndexSupervisorTask#determineAllRangePartitions()`, the
supervisor uses `StringSketchMerger` to merge the individual
`StringSketch`es created in the preceding phase. The merged sketch is
then used to create the range partitions.
3) In parallel, generate partial range-partitioned segments.
`PartialRangeSegmentGenerateTask` uses the range partitions
determined in the preceding phase and
`RangePartitionCachingLocalSegmentAllocator` to generate
`SingleDimensionShardSpec`s. The partition information is sent back
to the supervisor via `GeneratedGenericPartitionsReport`.
4) The partial range segments are grouped.
In `ParallelIndexSupervisorTask#groupGenericPartitionLocationsPerPartition()`,
the supervisor creates the `PartialGenericSegmentMergeIOConfig`s
necessary for the next phase.
5) In parallel, merge partial range-partitioned segments.
`PartialGenericSegmentMergeTask` uses `GenericPartitionLocation` to
retrieve the partial range-partitioned segments generated earlier and
then merges and publishes them.
* Fix dependencies & forbidden apis
* Fixes for integration test
* Address review comments
* Fix docs, strict compile, sketch check, rollup check
* Fix first shard spec, partition serde, single subtask
* Fix first partition check in test
* Misc rewording/refactoring to address code review
* Fix doc link
* Split batch index integration test
* Do not run parallel-batch-index twice
* Adjust last partition
* Split ITParallelIndexTest to reduce runtime
* Rename test class
* Allow null values in range partitions
* Indicate which phase failed
* Improve asserts in tests
2019-12-10 02:05:49 -05:00
script : *run_integration_test
after_failure : *integration_test_diags
2020-12-08 19:02:26 -05:00
- << : *integration_perfect_rollup_parallel_batch_index
name : "(Compile=openjdk8, Run=openjdk8) perfect rollup parallel batch index integration test with Indexer"
env : TESTNG_GROUPS='-Dgroups=perfect-rollup-parallel-batch-index' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'
2021-08-13 16:40:25 -04:00
- << : *integration_perfect_rollup_parallel_batch_index
name : "(Compile=openjdk8, Run=openjdk8) perfect rollup parallel batch index integration test with deep storage as intermediate store"
2022-01-06 02:33:04 -05:00
env : TESTNG_GROUPS='-Dgroups=shuffle-deep-store' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/shuffle-deep-store'
2021-08-13 16:40:25 -04:00
- << : *integration_perfect_rollup_parallel_batch_index
name : "(Compile=openjdk8, Run=openjdk8) perfect rollup parallel batch index integration test with deep storage as intermediate store with indexer"
2022-01-06 02:33:04 -05:00
env : TESTNG_GROUPS='-Dgroups=shuffle-deep-store' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/shuffle-deep-store'
2021-08-13 16:40:25 -04:00
2019-08-28 13:29:13 -04:00
- &integration_kafka_index
2020-02-12 19:36:31 -05:00
name : "(Compile=openjdk8, Run=openjdk8) kafka index integration test"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2020-02-12 19:36:31 -05:00
jdk : openjdk8
2019-08-07 12:52:42 -04:00
services : *integration_test_services
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=kafka-index' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
2019-08-07 12:52:42 -04:00
script : *run_integration_test
after_failure : *integration_test_diags
2020-12-08 19:02:26 -05:00
- << : *integration_kafka_index
name : "(Compile=openjdk8, Run=openjdk8) kafka index, transactional kafka index integration test with Indexer"
env : TESTNG_GROUPS='-Dgroups=kafka-index,kafka-transactional-index' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'
2021-08-19 00:54:11 -04:00
- << : *integration_kafka_index
name : "(Compile=openjdk8, Run=openjdk8) custom coordinator duties integration test"
2022-01-06 02:33:04 -05:00
env : TESTNG_GROUPS='-Dgroups=custom-coordinator-duties' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/custom-coordinator-duties'
2021-08-19 00:54:11 -04:00
2020-04-22 13:43:34 -04:00
- &integration_kafka_index_slow
name : "(Compile=openjdk8, Run=openjdk8) kafka index integration test slow"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2020-04-22 13:43:34 -04:00
jdk : openjdk8
services : *integration_test_services
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=kafka-index-slow' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
2020-04-22 13:43:34 -04:00
script : *run_integration_test
after_failure : *integration_test_diags
2020-12-08 19:02:26 -05:00
- << : *integration_kafka_index_slow
name : "(Compile=openjdk8, Run=openjdk8) kafka index integration test slow with Indexer"
env : TESTNG_GROUPS='-Dgroups=kafka-index-slow' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'
2020-04-22 13:43:34 -04:00
- &integration_kafka_transactional_index
name : "(Compile=openjdk8, Run=openjdk8) transactional kafka index integration test"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2020-04-22 13:43:34 -04:00
jdk : openjdk8
services : *integration_test_services
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=kafka-transactional-index' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
2020-04-22 13:43:34 -04:00
script : *run_integration_test
after_failure : *integration_test_diags
- &integration_kafka_transactional_index_slow
name : "(Compile=openjdk8, Run=openjdk8) transactional kafka index integration test slow"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2020-04-22 13:43:34 -04:00
jdk : openjdk8
services : *integration_test_services
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=kafka-transactional-index-slow' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
2020-04-22 13:43:34 -04:00
script : *run_integration_test
after_failure : *integration_test_diags
2020-12-08 19:02:26 -05:00
- << : *integration_kafka_transactional_index_slow
name : "(Compile=openjdk8, Run=openjdk8) transactional kafka index integration test slow with Indexer"
env : TESTNG_GROUPS='-Dgroups=kafka-transactional-index-slow' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'
2020-04-29 16:18:01 -04:00
- &integration_kafka_format_tests
2020-12-08 19:02:26 -05:00
name : "(Compile=openjdk8, Run=openjdk8) Kafka index integration test with various formats"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2020-12-08 19:02:26 -05:00
jdk : openjdk8
services : *integration_test_services
env : TESTNG_GROUPS='-Dgroups=kafka-data-format' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
script : *run_integration_test
after_failure : *integration_test_diags
- << : *integration_kafka_format_tests
name : "(Compile=openjdk8, Run=openjdk8) Kafka index integration test with various formats with Indexer"
env : TESTNG_GROUPS='-Dgroups=kafka-data-format' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'
2020-04-29 16:18:01 -04:00
2019-08-28 13:29:13 -04:00
- &integration_query
2020-02-12 19:36:31 -05:00
name : "(Compile=openjdk8, Run=openjdk8) query integration test"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2020-02-12 19:36:31 -05:00
jdk : openjdk8
2019-08-07 12:52:42 -04:00
services : *integration_test_services
2022-01-06 02:33:04 -05:00
env : TESTNG_GROUPS='-Dgroups=query' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/prepopulated-data'
2019-08-07 12:52:42 -04:00
script : *run_integration_test
after_failure : *integration_test_diags
2020-07-23 01:30:35 -04:00
- &integration_query_retry
name : "(Compile=openjdk8, Run=openjdk8) query retry integration test for missing segments"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2020-07-23 01:30:35 -04:00
jdk : openjdk8
services : *integration_test_services
2022-01-06 02:33:04 -05:00
env : TESTNG_GROUPS='-Dgroups=query-retry' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/prepopulated-data'
2020-07-23 01:30:35 -04:00
script : *run_integration_test
after_failure : *integration_test_diags
2021-04-12 18:08:50 -04:00
- &integration_query_error
name : "(Compile=openjdk8, Run=openjdk8) query error integration test"
stage : Tests - phase 2
jdk : openjdk8
services : *integration_test_services
2022-01-06 02:33:04 -05:00
env : TESTNG_GROUPS='-Dgroups=query-error' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/prepopulated-data'
2021-04-12 18:08:50 -04:00
script : *run_integration_test
after_failure : *integration_test_diags
2020-03-17 06:08:44 -04:00
- &integration_security
name : "(Compile=openjdk8, Run=openjdk8) security integration test"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2020-03-17 06:08:44 -04:00
jdk : openjdk8
services : *integration_test_services
2022-01-06 02:33:04 -05:00
env : TESTNG_GROUPS='-Dgroups=security' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/prepopulated-data'
2020-03-17 06:08:44 -04:00
script : *run_integration_test
after_failure : *integration_test_diags
2021-02-23 16:29:57 -05:00
- &integration_ldap_security
name : "(Compile=openjdk8, Run=openjdk8) ldap security integration test"
stage : Tests - phase 2
jdk : openjdk8
services : *integration_test_services
env : TESTNG_GROUPS='-Dgroups=ldap-security' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
script : *run_integration_test
after_failure : *integration_test_diags
2019-08-28 13:29:13 -04:00
- &integration_realtime_index
2020-02-12 19:36:31 -05:00
name : "(Compile=openjdk8, Run=openjdk8) realtime index integration test"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2020-02-12 19:36:31 -05:00
jdk : openjdk8
2019-08-07 12:52:42 -04:00
services : *integration_test_services
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=realtime-index' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
2019-08-07 12:52:42 -04:00
script : *run_integration_test
after_failure : *integration_test_diags
2020-07-20 16:43:13 -04:00
- &integration_append_ingestion
name : "(Compile=openjdk8, Run=openjdk8) append ingestion integration test"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2020-07-20 16:43:13 -04:00
jdk : openjdk8
services : *integration_test_services
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=append-ingestion' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
2020-07-20 16:43:13 -04:00
script : *run_integration_test
after_failure : *integration_test_diags
2020-12-08 19:02:26 -05:00
- << : *integration_append_ingestion
name : "(Compile=openjdk8, Run=openjdk8) append ingestion integration test with Indexer"
env : TESTNG_GROUPS='-Dgroups=append-ingestion' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'
2020-09-15 14:28:09 -04:00
- &integration_compaction_tests
name : "(Compile=openjdk8, Run=openjdk8) compaction integration test"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2020-09-15 14:28:09 -04:00
jdk : openjdk8
services : *integration_test_services
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=compaction' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
2020-09-15 14:28:09 -04:00
script : *run_integration_test
after_failure : *integration_test_diags
2020-12-08 19:02:26 -05:00
- << : *integration_compaction_tests
name : "(Compile=openjdk8, Run=openjdk8) compaction integration test with Indexer"
env : TESTNG_GROUPS='-Dgroups=compaction' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'
2019-08-28 13:29:13 -04:00
- &integration_tests
2020-12-08 19:02:26 -05:00
name : "(Compile=openjdk8, Run=openjdk8) other integration tests"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2020-02-12 19:36:31 -05:00
jdk : openjdk8
2019-08-07 12:52:42 -04:00
services : *integration_test_services
2021-08-19 00:54:11 -04:00
env : TESTNG_GROUPS='-DexcludedGroups=batch-index,input-format,input-source,perfect-rollup-parallel-batch-index,kafka-index,query,query-retry,query-error,realtime-index,security,ldap-security,s3-deep-storage,gcs-deep-storage,azure-deep-storage,hdfs-deep-storage,s3-ingestion,kinesis-index,kinesis-data-format,kafka-transactional-index,kafka-index-slow,kafka-transactional-index-slow,kafka-data-format,hadoop-s3-to-s3-deep-storage,hadoop-s3-to-hdfs-deep-storage,hadoop-azure-to-azure-deep-storage,hadoop-azure-to-hdfs-deep-storage,hadoop-gcs-to-gcs-deep-storage,hadoop-gcs-to-hdfs-deep-storage,aliyun-oss-deep-storage,append-ingestion,compaction,high-availability,upgrade,shuffle-deep-store,custom-coordinator-duties' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
2019-08-07 12:52:42 -04:00
script : *run_integration_test
after_failure : *integration_test_diags
2020-12-08 19:02:26 -05:00
- << : *integration_tests
name : "(Compile=openjdk8, Run=openjdk8) other integration tests with Indexer"
2021-08-19 00:54:11 -04:00
env : TESTNG_GROUPS='-DexcludedGroups=batch-index,input-format,input-source,perfect-rollup-parallel-batch-index,kafka-index,query,query-retry,query-error,realtime-index,security,ldap-security,s3-deep-storage,gcs-deep-storage,azure-deep-storage,hdfs-deep-storage,s3-ingestion,kinesis-index,kinesis-data-format,kafka-transactional-index,kafka-index-slow,kafka-transactional-index-slow,kafka-data-format,hadoop-s3-to-s3-deep-storage,hadoop-s3-to-hdfs-deep-storage,hadoop-azure-to-azure-deep-storage,hadoop-azure-to-hdfs-deep-storage,hadoop-gcs-to-gcs-deep-storage,hadoop-gcs-to-hdfs-deep-storage,aliyun-oss-deep-storage,append-ingestion,compaction,high-availability,upgrade,shuffle-deep-store,custom-coordinator-duties' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'
2020-12-18 01:50:12 -05:00
2022-08-24 07:33:23 -04:00
#- <<: *integration_tests
# name: "(Compile=openjdk8, Run=openjdk8) leadership and high availability integration tests"
# jdk: openjdk8
# env: TESTNG_GROUPS='-Dgroups=high-availability' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/prepopulated-data'
2020-12-18 01:50:12 -05:00
2021-07-08 15:25:37 -04:00
- << : *integration_query
name : "(Compile=openjdk8, Run=openjdk8) query integration test (mariaDB)"
jdk : openjdk8
2022-01-06 02:33:04 -05:00
env : TESTNG_GROUPS='-Dgroups=query' USE_INDEXER='middleManager' MYSQL_DRIVER_CLASSNAME='org.mariadb.jdbc.Driver' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/prepopulated-data'
2021-07-08 15:25:37 -04:00
2022-08-24 07:33:23 -04:00
# Revised ITs.
- &integration_tests_ex
name : "(Compile=openjdk8, Run=openjdk8) leadership and high availability integration tests (new)"
stage : Tests - phase 2
jdk : openjdk8
services : *integration_test_services
env : JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
2022-08-30 03:18:07 -04:00
# Uses the installation defined above. Then, builds the test tools and docker image,
2022-08-24 07:33:23 -04:00
# and runs one IT. If tests fail, echos log lines of any of
# the Druid services that did not exit normally.
script : ./it.sh travis HighAvailability
2022-08-30 03:18:07 -04:00
2022-09-22 06:39:47 -04:00
- &integration_tests_ex
name : "(Compile=openjdk8, Run=openjdk8) multi stage query tests"
stage : Tests - phase 2
jdk : openjdk8
services : *integration_test_services
env : JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
script : ./it.sh travis MultiStageQuery
2022-11-12 18:30:22 -05:00
- &integration_tests_ex
name : "(Compile=openjdk8, Run=openjdk8) catalog integration tests"
stage : Tests - phase 2
jdk : openjdk8
services : *integration_test_services
env : JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
script : ./it.sh travis Catalog
2022-11-20 22:42:02 -05:00
- &integration_tests_ex
name : "(Compile=openjdk8, Run=openjdk8) batch index integration test with Indexer (new)"
stage : Tests - phase 2
jdk : openjdk8
services : *integration_test_services
env : JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'
script : ./it.sh travis BatchIndex
2022-08-24 07:33:23 -04:00
2020-02-12 19:36:31 -05:00
# END - Integration tests for Compile with Java 8 and Run with Java 8
2020-02-11 16:43:08 -05:00
2020-03-11 12:22:27 -04:00
# START - Integration tests for Compile with Java 8 and Run with Java 11
2020-02-12 19:36:31 -05:00
- << : *integration_batch_index
2020-03-11 12:22:27 -04:00
name : "(Compile=openjdk8, Run=openjdk11) batch index integration test"
jdk : openjdk8
2022-09-20 12:18:52 -04:00
stage : cron
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=batch-index' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'
2020-02-12 19:36:31 -05:00
2020-07-08 15:50:29 -04:00
- << : *integration_input_format
name : "(Compile=openjdk8, Run=openjdk11) input format integration test"
jdk : openjdk8
2022-09-20 12:18:52 -04:00
stage : cron
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=input-format' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'
2020-07-08 15:50:29 -04:00
2020-07-21 12:52:13 -04:00
- << : *integration_input_source
name : "(Compile=openjdk8, Run=openjdk11) input source integration test"
jdk : openjdk8
2022-09-20 12:18:52 -04:00
stage : cron
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=input-source' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'
2020-07-21 12:52:13 -04:00
2020-02-12 19:36:31 -05:00
- << : *integration_perfect_rollup_parallel_batch_index
2020-03-11 12:22:27 -04:00
name : "(Compile=openjdk8, Run=openjdk11) perfect rollup parallel batch index integration test"
jdk : openjdk8
2022-09-20 12:18:52 -04:00
stage : cron
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=perfect-rollup-parallel-batch-index' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'
2020-02-12 19:36:31 -05:00
- << : *integration_query
2020-03-11 12:22:27 -04:00
name : "(Compile=openjdk8, Run=openjdk11) query integration test"
jdk : openjdk8
2022-01-06 02:33:04 -05:00
env : TESTNG_GROUPS='-Dgroups=query' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/prepopulated-data'
2020-02-12 19:36:31 -05:00
2020-07-23 01:30:35 -04:00
- << : *integration_query_retry
name : "(Compile=openjdk8, Run=openjdk11) query retry integration test for missing segments"
jdk : openjdk8
2022-09-20 12:18:52 -04:00
stage : cron
2022-01-06 02:33:04 -05:00
env : TESTNG_GROUPS='-Dgroups=query-retry' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/prepopulated-data'
2020-07-23 01:30:35 -04:00
2021-04-12 18:08:50 -04:00
- << : *integration_query_error
name : "(Compile=openjdk8, Run=openjdk11) query error integration test for missing segments"
jdk : openjdk8
2022-09-20 12:18:52 -04:00
stage : cron
2022-01-06 02:33:04 -05:00
env : TESTNG_GROUPS='-Dgroups=query-error' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/prepopulated-data'
2021-04-12 18:08:50 -04:00
2020-03-17 06:08:44 -04:00
- << : *integration_security
name : "(Compile=openjdk8, Run=openjdk11) security integration test"
jdk : openjdk8
2022-01-06 02:33:04 -05:00
env : TESTNG_GROUPS='-Dgroups=security' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/prepopulated-data'
2020-03-17 06:08:44 -04:00
2021-02-23 16:29:57 -05:00
- << : *integration_ldap_security
name : "(Compile=openjdk8, Run=openjdk11) ldap security integration test"
jdk : openjdk8
env : TESTNG_GROUPS='-Dgroups=ldap-security' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'
2020-02-12 19:36:31 -05:00
- << : *integration_realtime_index
2020-03-11 12:22:27 -04:00
name : "(Compile=openjdk8, Run=openjdk11) realtime index integration test"
jdk : openjdk8
2022-09-20 12:18:52 -04:00
stage : cron
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=realtime-index' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'
2020-02-12 19:36:31 -05:00
2020-07-20 16:43:13 -04:00
- << : *integration_append_ingestion
name : "(Compile=openjdk8, Run=openjdk11) append ingestion integration test"
jdk : openjdk8
2022-09-20 12:18:52 -04:00
stage : cron
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=append-ingestion' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'
2020-07-20 16:43:13 -04:00
2020-09-15 14:28:09 -04:00
- << : *integration_compaction_tests
name : "(Compile=openjdk8, Run=openjdk11) compaction integration test"
jdk : openjdk8
2022-09-20 12:18:52 -04:00
stage : cron
2020-12-08 19:02:26 -05:00
env : TESTNG_GROUPS='-Dgroups=compaction' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'
2020-09-15 14:28:09 -04:00
2020-02-12 19:36:31 -05:00
- << : *integration_tests
2020-03-11 12:22:27 -04:00
name : "(Compile=openjdk8, Run=openjdk11) other integration test"
jdk : openjdk8
2022-09-20 12:18:52 -04:00
stage : cron
2021-08-19 00:54:11 -04:00
env : TESTNG_GROUPS='-DexcludedGroups=batch-index,input-format,input-source,perfect-rollup-parallel-batch-index,kafka-index,query,query-retry,query-error,realtime-index,security,ldap-security,s3-deep-storage,gcs-deep-storage,azure-deep-storage,hdfs-deep-storage,s3-ingestion,kinesis-index,kinesis-data-format,kafka-transactional-index,kafka-index-slow,kafka-transactional-index-slow,kafka-data-format,hadoop-s3-to-s3-deep-storage,hadoop-s3-to-hdfs-deep-storage,hadoop-azure-to-azure-deep-storage,hadoop-azure-to-hdfs-deep-storage,hadoop-gcs-to-gcs-deep-storage,hadoop-gcs-to-hdfs-deep-storage,aliyun-oss-deep-storage,append-ingestion,compaction,high-availability,upgrade,shuffle-deep-store,custom-coordinator-duties' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'
2020-12-18 01:50:12 -05:00
- << : *integration_tests
name : "(Compile=openjdk8, Run=openjdk11) leadership and high availability integration tests"
jdk : openjdk8
2022-01-06 02:33:04 -05:00
env : TESTNG_GROUPS='-Dgroups=high-availability' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/prepopulated-data'
2021-01-31 11:35:39 -05:00
2021-07-08 15:25:37 -04:00
- << : *integration_query
name : "(Compile=openjdk8, Run=openjdk11) query integration test (mariaDB)"
jdk : openjdk8
2022-01-06 02:33:04 -05:00
env : TESTNG_GROUPS='-Dgroups=query' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager' MYSQL_DRIVER_CLASSNAME='org.mariadb.jdbc.Driver' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/prepopulated-data'
2021-07-08 15:25:37 -04:00
2020-03-11 12:22:27 -04:00
# END - Integration tests for Compile with Java 8 and Run with Java 11
2022-08-10 04:47:33 -04:00
2020-12-16 19:00:42 -05:00
- &integration_batch_index_k8s
name : "(Compile=openjdk8, Run=openjdk8, Cluster Build On K8s) ITNestedQueryPushDownTest integration test"
2021-02-05 20:50:29 -05:00
stage : Tests - phase 2
2020-12-16 19:00:42 -05:00
jdk : openjdk8
services : &integration_test_services_k8s
- docker
2021-02-01 18:48:42 -05:00
env : CONFIG_FILE='k8s_run_config_file.json' IT_TEST='-Dit.test=ITNestedQueryPushDownTest' POD_NAME=int-test POD_NAMESPACE=default BUILD_DRUID_CLSUTER=true
2020-12-16 19:00:42 -05:00
script : &run_integration_test_k8s
2021-02-01 18:48:42 -05:00
- ${MVN} verify -pl integration-tests -P int-tests-config-file ${IT_TEST} ${MAVEN_SKIP} -Dpod.name=${POD_NAME} -Dpod.namespace=${POD_NAMESPACE} -Dbuild.druid.cluster=${BUILD_DRUID_CLSUTER}
2020-12-16 19:00:42 -05:00
after_failure : &integration_test_diags_k8s
- for v in broker middlemanager router coordinator historical ; do
echo "------------------------druid-tiny-cluster-"$v"s-0-------------------------";
sudo /usr/local/bin/kubectl logs --tail 1000 druid-tiny-cluster-"$v"s-0;
done
2022-11-09 04:20:31 -05:00
- &security_vulnerabilities
name : "security vulnerabilities"
2020-02-11 16:43:08 -05:00
stage : cron
install : skip
script : |-
2022-11-09 04:20:31 -05:00
${MVN} dependency-check:purge dependency-check:check ${HADOOP_PROFILE} || { echo "
2020-02-11 16:43:08 -05:00
The OWASP dependency check has found security vulnerabilities. Please use a newer version
2021-02-16 22:22:04 -05:00
of the dependency that does not have vulnerabilities. To see a report run
`mvn dependency-check:check`
If the analysis has false positives,
2020-02-11 16:43:08 -05:00
they can be suppressed by adding entries to owasp-dependency-check-suppressions.xml (for more
information, see https://jeremylong.github.io/DependencyCheck/general/suppression.html).
" && false; }
2022-11-09 04:20:31 -05:00
- << : *security_vulnerabilities
name : "security vulnerabilities with Hadoop3"
env :
- HADOOP_PROFILE='-Phadoop3'
2020-02-11 16:43:08 -05:00
# Travis CI only supports per build (and not per-job notifications): https://github.com/travis-ci/travis-ci/issues/9888
notifications :
email :
if : type = cron
recipients :
# This is the string "dev@druid.apache.org" encrypted against the apache/druid repo so that forks are unable to
# use this notification:
# https://github.com/travis-ci/travis-ci/issues/1094#issuecomment-215019909
# https://github.com/travis-ci/travis-ci/issues/2711
- secure : "MupjX/0jLwh3XzHPl74BTk2/Kp5r+8TrEewfRhpQdWKFMBXLKNqu0k2VXf5C/NIg3uvPianq3REk+qeTHI8dL2ShjiWS/eIRkJOHLfObdNNBuos5fo4TxAuBQcXyT4VjAq5jnAkH84Pxf2Nl0rkisWoIhvwSX7+kNrjW1qdu7K0="
on_success : change
2022-11-21 04:08:15 -05:00
on_failure : always