# 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.

branches:
  only:
  - master
  - /^\d+\.\d+\.\d+(-\S*)?$/ # release branches
  - spark_druid_connector

language: java

dist: xenial

jdk:
  - openjdk8

cache:
  directories:
    - $HOME/.m2

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)
      MAVEN_SKIP="-Pskip-static-checks -Ddruid.console.skip=true -Dmaven.javadoc.skip=true"
    - MAVEN_SKIP_TESTS="-Pskip-tests"

addons:
  apt:
    packages:
      - maven
      - python3

# Add various options to make 'mvn install' fast and skip javascript compile (-Ddruid.console.skip=true) since it is not
# 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.
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' ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS} -T1C && ${MVN} install -q -ff -pl 'distribution' ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS}

# There are 3 stages of tests
# 1. Tests - phase 1
# 2. Tests - phase 2
# 3. cron
#
# The cron type only runs jobs that are marked with stage cron.
# 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
# meant to be fast. The second phase is meant to run all other tests.
# 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.
stages:
  - name: Tests - phase 1
    if: type != cron
  - name: Tests - phase 2
    if: type != cron
  - name: cron
    if: type = cron

jobs:
  include:
    - name: "animal sniffer checks"
      stage: Tests - phase 1
      script: ${MVN} animal-sniffer:check --fail-at-end

    - name: "checkstyle"
      script: ${MVN} checkstyle:checkstyle --fail-at-end -pl '!spark' && ${MVN} scalastyle:check --fail-at-end -pl 'spark'

    - name: "enforcer checks"
      script: ${MVN} enforcer:enforce --fail-at-end

    - name: "forbidden api checks"
      script: ${MVN} forbiddenapis:check forbiddenapis:testCheck --fail-at-end

    - name: "pmd checks"
      script: ${MVN} pmd:check --fail-at-end  # TODO: consider adding pmd:cpd-check

    - name: "spotbugs checks"
      script: ${MVN} spotbugs:check --fail-at-end -pl '!benchmarks'

    - name: "license checks"
      install: skip
      before_script: &setup_generate_license
        - sudo apt-get update && sudo apt-get install python3 python3-pip python3-setuptools -y
        - ./check_test_suite.py && travis_terminate 0 || echo 'Continuing setup'
        - pip3 install wheel  # install wheel first explicitly
        - pip3 install pyyaml==5.4.1
      script:
        - >
          ${MVN} apache-rat:check -Prat --fail-at-end
          -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
          -Drat.consoleOutput=true
        # Generate dependency reports and checks they are valid. When running on Travis CI, 2 cores are available
        # (https://docs.travis-ci.com/user/reference/overview/#virtualisation-environment-vs-operating-system).
        - mkdir -p target
        - distribution/bin/generate-license-dependency-reports.py . target --clean-maven-artifact-transfer --parallel 2
        - distribution/bin/check-licenses.py licenses.yaml target/license-reports
    - name: "script checks"
      install: skip
      # who watches the watchers?
      script: ./check_test_suite_test.py

    - name: "(openjdk8) strict compilation"
      install: skip
      # Strict compilation requires more than 2 GB
      script: >
        ./check_test_suite.py && travis_terminate 0 || MAVEN_OPTS='-Xmx3000m' ${MVN} clean -DstrictCompile compile test-compile --fail-at-end
        ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS}

    - name: "analyze dependencies"
      script: |-
        MAVEN_OPTS='-Xmx3000m' ${MVN} ${MAVEN_SKIP} dependency:analyze -DoutputXML=true -DignoreNonCompile=true -DfailOnWarning=true || { echo "

        The dependency analysis has found a dependency that is either:

        1) Used and undeclared: These are available as a transitive dependency but should be explicitly
        added to the POM to ensure the dependency version. The XML to add the dependencies to the POM is
        shown above.

        2) Unused and declared: These are not needed and removing them from the POM will speed up the build
        and reduce the artifact size. The dependencies to remove are shown above.

        If there are false positive dependency analysis warnings, they can be suppressed:
        https://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html#usedDependencies
        https://maven.apache.org/plugins/maven-dependency-plugin/examples/exclude-dependencies-from-dependency-analysis.html

        For more information, refer to:
        https://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html

        " && false; }

    - name: "intellij inspections"
      script: >
        ./check_test_suite.py && travis_terminate 0 || docker run --rm
        -v $(pwd):/project
        -v ~/.m2:/home/inspect/.m2
        ccaominh/intellij-inspect:1.0.0
        /project/pom.xml
        /project/.idea/inspectionProfiles/Druid.xml
        --levels ERROR
        --scope JavaInspectionsScope

    - &package
      name: "(openjdk8) packaging check"
      install: skip
      before_script: *setup_generate_license
      script: >
        MAVEN_OPTS='-Xmx3000m' ${MVN} clean install -Prat -Pdist -Pbundle-contrib-exts --fail-at-end
        -pl '!benchmarks' ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS} -Ddruid.console.skip=false -T1C

    - <<: *package
      name: "(openjdk11) packaging check"
      stage: Tests - phase 2
      jdk: openjdk11
    
    - <<: *package
      name: "(openjdk15) packaging check"
      stage: Tests - phase 2
      jdk: openjdk15

    - &test_processing_module
      name: "(openjdk8) processing module test"
      stage: Tests - phase 1
      env:
      - MAVEN_PROJECTS='processing'
      before_script:
        - export DRUID_USE_DEFAULT_VALUE_FOR_NULL=true
      script:
        - unset _JAVA_OPTIONS
        # Set MAVEN_OPTS for Surefire launcher. Skip remoteresources to avoid intermittent connection timeouts when
        # resolving the SIGAR dependency.
        - >
          MAVEN_OPTS='-Xmx1100m' ${MVN} test -pl ${MAVEN_PROJECTS}
          ${MAVEN_SKIP} -Dremoteresources.skip=true -Ddruid.generic.useDefaultValueForNull=${DRUID_USE_DEFAULT_VALUE_FOR_NULL}
        - sh -c "dmesg | egrep -i '(oom|out of memory|kill process|killed).*' -C 1 || exit 0"
        - free -m
        - ${MVN} -pl ${MAVEN_PROJECTS} jacoco:report
        # 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.
        - echo "TRAVIS_BRANCH=${TRAVIS_BRANCH}"  # for debugging
        - if [[ -z "${TRAVIS_TAG}" ]]; then git remote set-branches --add origin ${TRAVIS_BRANCH} && git fetch; fi
        # 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.
        # 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.
        - 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
        # 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.
        - >
          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
          --line-coverage 50
          --branch-coverage 50
          --function-coverage 0
          --log-template "coverage-lines-complete"
          --log-template "coverage-files-complete"
          --log-template "totals-complete"
          --log-template "errors"
          --
          || { 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; }
          fi
      after_success:
        # retry in case of network error
        - travis_retry curl -o codecov.sh -s https://codecov.io/bash
        - travis_retry bash codecov.sh -X gcov

    - <<: *test_processing_module
      name: "(openjdk11) processing module test"
      stage: Tests - phase 2
      jdk: openjdk11

    - <<: *test_processing_module
      name: "(openjdk15) processing module test"
      stage: Tests - phase 2
      jdk: openjdk15

    - &test_processing_module_sqlcompat
      <<: *test_processing_module
      name: "(openjdk8) processing module test (SQL Compatibility)"
      stage: Tests - phase 1
      before_script: &setup_sqlcompat
        - export DRUID_USE_DEFAULT_VALUE_FOR_NULL=false

    - <<: *test_processing_module_sqlcompat
      name: "(openjdk11) processing module test (SQL Compatibility)"
      stage: Tests - phase 2
      jdk: openjdk11

    - <<: *test_processing_module_sqlcompat
      name: "(openjdk15) processing module test (SQL Compatibility)"
      stage: Tests - phase 2
      jdk: openjdk15

    - &test_indexing_module
      <<: *test_processing_module
      name: "(openjdk8) indexing modules test"
      env:
        - MAVEN_PROJECTS='indexing-hadoop,indexing-service,extensions-core/kafka-indexing-service,extensions-core/kinesis-indexing-service'

    - <<: *test_indexing_module
      name: "(openjdk11) indexing modules test"
      stage: Tests - phase 2
      jdk: openjdk11

    - <<: *test_indexing_module
      name: "(openjdk15) indexing modules test"
      stage: Tests - phase 2
      jdk: openjdk15

    - &test_indexing_module_sqlcompat
      <<: *test_indexing_module
      name: "(openjdk8) indexing modules test (SQL Compatibility)"
      stage: Tests - phase 1
      before_script: *setup_sqlcompat

    - <<: *test_indexing_module_sqlcompat
      name: "(openjdk11) indexing modules test (SQL Compatibility)"
      stage: Tests - phase 2
      jdk: openjdk11

    - <<: *test_indexing_module_sqlcompat
      name: "(openjdk15) indexing modules test (SQL Compatibility)"
      stage: Tests - phase 2
      jdk: openjdk15

    - &test_server_module
      <<: *test_processing_module
      name: "(openjdk8) server module test"
      env:
        - MAVEN_PROJECTS='server'

    - <<: *test_server_module
      name: "(openjdk11) server module test"
      stage: Tests - phase 2
      jdk: openjdk11

    - <<: *test_server_module
      name: "(openjdk15) server module test"
      stage: Tests - phase 2
      jdk: openjdk15

    - &test_server_module_sqlcompat
      <<: *test_server_module
      name: "(openjdk8) server module test (SQL Compatibility)"
      before_script: *setup_sqlcompat

    - <<: *test_server_module_sqlcompat
      name: "(openjdk11) server module test (SQL Compatibility)"
      stage: Tests - phase 2
      jdk: openjdk11

    - <<: *test_server_module_sqlcompat
      name: "(openjdk15) server module test (SQL Compatibility)"
      stage: Tests - phase 2
      jdk: openjdk15

    - &test_other_modules
      <<: *test_processing_module
      name: "(openjdk8) other modules test"
      env:
        - MAVEN_PROJECTS='!processing,!indexing-hadoop,!indexing-service,!extensions-core/kafka-indexing-service,!extensions-core/kinesis-indexing-service,!server,!web-console,!integration-tests,!spark'
      after_failure:
        - ls -alh
        - ls -alh /home/travis/build/apache/druid/extensions-core/kafka-extraction-namespace/target/
        - ls -alh /home/travis/build/apache/druid/extensions-core/kafka-extraction-namespace/target/surefire-reports/
        - for d in /home/travis/build/apache/druid/extensions-core/kafka-extraction-namespace/target/surefire-reports/*.txt; do echo $d; cat $d; done

    - <<: *test_other_modules
      name: "(openjdk11) other modules test"
      stage: Tests - phase 2
      jdk: openjdk11

    - <<: *test_other_modules
      name: "(openjdk15) other modules test"
      stage: Tests - phase 2
      jdk: openjdk15

    - &test_other_modules_sqlcompat
      <<: *test_other_modules
      name: "(openjdk8) other modules test (SQL Compatibility)"
      before_script: *setup_sqlcompat

    - <<: *test_other_modules_sqlcompat
      name: "(openjdk11) other modules test (SQL Compatibility)"
      stage: Tests - phase 2
      jdk: openjdk11

    - <<: *test_other_modules_sqlcompat
      name: "(openjdk15) other modules test (SQL Compatibility)"
      stage: Tests - phase 2
      jdk: openjdk15

    # There's no need for separate sql compatibility tests since null handling isn't controlled by a command-line flag
    # Instead, the spark module unit tests test both variations of null handling themselves.
    - &test_spark_module
      <<: *test_processing_module # Using the processing module settings for now
      name: "(openjdk8) spark module test"
      env:
        - MAVEN_PROJECTS='spark'

    - <<: *test_spark_module
      name: "(openjdk11) spark module test"
      stage: Tests - phase 2
      jdk: openjdk11

    - <<: *test_spark_module
      name: "(openjdk15) spark module test"
      stage: Tests - phase 2
      jdk: openjdk15

    - name: "web console"
      install: skip
      stage: Tests - phase 1
      script:
        - ./check_test_suite.py && travis_terminate 0 || ${MVN} test -pl 'web-console'
      after_success:
        - (cd web-console && travis_retry npm run codecov)  # retry in case of network error

    - name: "web console end-to-end test"
      before_install: *setup_generate_license
      install: web-console/script/druid build
      before_script:
        - ./check_test_suite.py && travis_terminate 0 || echo 'Starting nvm install...'
        - nvm install 10.24.0
        - web-console/script/druid start
      script: (cd web-console && npm run test-e2e)
      after_script: web-console/script/druid stop

    - name: "docs"
      install: ./check_test_suite.py && travis_terminate 0 || (cd website && npm install)
      script: |-
        (cd website && npm run lint && npm run spellcheck) || { echo "

        If there are spell check errors:

        1) Suppressing False Positives: Edit website/.spelling to add suppressions. Instructions
        are at the top of the file and explain how to suppress false positives either globally or
        within a particular file.

        2) Running Spell Check Locally: cd website && npm install && npm run spellcheck

        For more information, refer to: https://www.npmjs.com/package/markdown-spellcheck

        " && false; }

    # 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>)
    # Integration tests will either use MiddleManagers or Indexers
    # (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
    - &integration_batch_index
      name: "(Compile=openjdk8, Run=openjdk8) batch index integration test"
      stage: Tests - phase 2
      jdk: openjdk8
      services: &integration_test_services
        - docker
      env: TESTNG_GROUPS='-Dgroups=batch-index' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
      script: &run_integration_test
        - ${MVN} verify -pl integration-tests -P integration-tests ${TESTNG_GROUPS} ${JVM_RUNTIME} -Dit.indexer=${USE_INDEXER} ${MAVEN_SKIP}
      after_failure: &integration_test_diags
        - 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

    - <<: *integration_batch_index
      name: "(Compile=openjdk8, Run=openjdk8) batch index integration test with Indexer"
      env: TESTNG_GROUPS='-Dgroups=batch-index' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'

    - &integration_input_format
      name: "(Compile=openjdk8, Run=openjdk8) input format integration test"
      stage: Tests - phase 2
      jdk: openjdk8
      services: *integration_test_services
      env: TESTNG_GROUPS='-Dgroups=input-format' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
      script: *run_integration_test
      after_failure: *integration_test_diags

    - <<: *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'

    - &integration_input_source
      name: "(Compile=openjdk8, Run=openjdk8) input source integration test"
      stage: Tests - phase 2
      jdk: openjdk8
      services: *integration_test_services
      env: TESTNG_GROUPS='-Dgroups=input-source' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
      script: *run_integration_test
      after_failure: *integration_test_diags

    - <<: *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'

    - &integration_perfect_rollup_parallel_batch_index
      name: "(Compile=openjdk8, Run=openjdk8) perfect rollup parallel batch index integration test"
      jdk: openjdk8
      stage: Tests - phase 2
      services: *integration_test_services
      env: TESTNG_GROUPS='-Dgroups=perfect-rollup-parallel-batch-index' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
      script: *run_integration_test
      after_failure: *integration_test_diags

    - <<: *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'

    - &integration_kafka_index
      name: "(Compile=openjdk8, Run=openjdk8) kafka index integration test"
      stage: Tests - phase 2
      jdk: openjdk8
      services: *integration_test_services
      env: TESTNG_GROUPS='-Dgroups=kafka-index' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
      script: *run_integration_test
      after_failure: *integration_test_diags

    - <<: *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'

    - &integration_kafka_index_slow
      name: "(Compile=openjdk8, Run=openjdk8) kafka index integration test slow"
      stage: Tests - phase 2
      jdk: openjdk8
      services: *integration_test_services
      env: TESTNG_GROUPS='-Dgroups=kafka-index-slow' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
      script: *run_integration_test
      after_failure: *integration_test_diags

    - <<: *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'

    - &integration_kafka_transactional_index
      name: "(Compile=openjdk8, Run=openjdk8) transactional kafka index integration test"
      stage: Tests - phase 2
      jdk: openjdk8
      services: *integration_test_services
      env: TESTNG_GROUPS='-Dgroups=kafka-transactional-index' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
      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"
      stage: Tests - phase 2
      jdk: openjdk8
      services: *integration_test_services
      env: TESTNG_GROUPS='-Dgroups=kafka-transactional-index-slow' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
      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 with Indexer"
      env: TESTNG_GROUPS='-Dgroups=kafka-transactional-index-slow' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'

    - &integration_kafka_format_tests
      name: "(Compile=openjdk8, Run=openjdk8) Kafka index integration test with various formats"
      stage: Tests - phase 2
      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'

    - &integration_query
      name: "(Compile=openjdk8, Run=openjdk8) query integration test"
      stage: Tests - phase 2
      jdk: openjdk8
      services: *integration_test_services
      env: TESTNG_GROUPS='-Dgroups=query' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
      script: *run_integration_test
      after_failure: *integration_test_diags

    - &integration_query_retry
      name: "(Compile=openjdk8, Run=openjdk8) query retry integration test for missing segments"
      stage: Tests - phase 2
      jdk: openjdk8
      services: *integration_test_services
      env: TESTNG_GROUPS='-Dgroups=query-retry' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
      script: *run_integration_test
      after_failure: *integration_test_diags

    - &integration_query_error
      name: "(Compile=openjdk8, Run=openjdk8) query error integration test"
      stage: Tests - phase 2
      jdk: openjdk8
      services: *integration_test_services
      env: TESTNG_GROUPS='-Dgroups=query-error' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
      script: *run_integration_test
      after_failure: *integration_test_diags

    - &integration_security
      name: "(Compile=openjdk8, Run=openjdk8) security integration test"
      stage: Tests - phase 2
      jdk: openjdk8
      services: *integration_test_services
      env: TESTNG_GROUPS='-Dgroups=security' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
      script: *run_integration_test
      after_failure: *integration_test_diags

    - &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

    - &integration_realtime_index
      name: "(Compile=openjdk8, Run=openjdk8) realtime index integration test"
      stage: Tests - phase 2
      jdk: openjdk8
      services: *integration_test_services
      env: TESTNG_GROUPS='-Dgroups=realtime-index' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
      script: *run_integration_test
      after_failure: *integration_test_diags

    - &integration_append_ingestion
      name: "(Compile=openjdk8, Run=openjdk8) append ingestion integration test"
      stage: Tests - phase 2
      jdk: openjdk8
      services: *integration_test_services
      env: TESTNG_GROUPS='-Dgroups=append-ingestion' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
      script: *run_integration_test
      after_failure: *integration_test_diags

    - <<: *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'

    - &integration_compaction_tests
      name: "(Compile=openjdk8, Run=openjdk8) compaction integration test"
      stage: Tests - phase 2
      jdk: openjdk8
      services: *integration_test_services
      env: TESTNG_GROUPS='-Dgroups=compaction' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
      script: *run_integration_test
      after_failure: *integration_test_diags

    - <<: *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'

    - &integration_tests
      name: "(Compile=openjdk8, Run=openjdk8) other integration tests"
      stage: Tests - phase 2
      jdk: openjdk8
      services: *integration_test_services
      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' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
      script: *run_integration_test
      after_failure: *integration_test_diags

    - <<: *integration_tests
      name: "(Compile=openjdk8, Run=openjdk8) other integration tests with Indexer"
      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' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'

    - <<: *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'

    - <<: *integration_query
      name: "(Compile=openjdk8, Run=openjdk8) query integration test (mariaDB)"
      jdk: openjdk8
      env: TESTNG_GROUPS='-Dgroups=query' USE_INDEXER='middleManager' MYSQL_DRIVER_CLASSNAME='org.mariadb.jdbc.Driver'

    # 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
    - <<: *integration_batch_index
      name: "(Compile=openjdk8, Run=openjdk11) batch index integration test"
      jdk: openjdk8
      env: TESTNG_GROUPS='-Dgroups=batch-index' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'

    - <<: *integration_input_format
      name: "(Compile=openjdk8, Run=openjdk11) input format integration test"
      jdk: openjdk8
      env: TESTNG_GROUPS='-Dgroups=input-format' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'

    - <<: *integration_input_source
      name: "(Compile=openjdk8, Run=openjdk11) input source integration test"
      jdk: openjdk8
      env: TESTNG_GROUPS='-Dgroups=input-source' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'

    - <<: *integration_perfect_rollup_parallel_batch_index
      name: "(Compile=openjdk8, Run=openjdk11) perfect rollup parallel batch index integration test"
      jdk: openjdk8
      env: TESTNG_GROUPS='-Dgroups=perfect-rollup-parallel-batch-index' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'

    - <<: *integration_query
      name: "(Compile=openjdk8, Run=openjdk11) query integration test"
      jdk: openjdk8
      env: TESTNG_GROUPS='-Dgroups=query' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'

    - <<: *integration_query_retry
      name: "(Compile=openjdk8, Run=openjdk11) query retry integration test for missing segments"
      jdk: openjdk8
      env: TESTNG_GROUPS='-Dgroups=query-retry' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'

    - <<: *integration_query_error
      name: "(Compile=openjdk8, Run=openjdk11) query error integration test for missing segments"
      jdk: openjdk8
      env: TESTNG_GROUPS='-Dgroups=query-error' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'

    - <<: *integration_security
      name: "(Compile=openjdk8, Run=openjdk11) security integration test"
      jdk: openjdk8
      env: TESTNG_GROUPS='-Dgroups=security' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'

    - <<: *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'

    - <<: *integration_realtime_index
      name: "(Compile=openjdk8, Run=openjdk11) realtime index integration test"
      jdk: openjdk8
      env: TESTNG_GROUPS='-Dgroups=realtime-index' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'

    - <<: *integration_append_ingestion
      name: "(Compile=openjdk8, Run=openjdk11) append ingestion integration test"
      jdk: openjdk8
      env: TESTNG_GROUPS='-Dgroups=append-ingestion' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'

    - <<: *integration_compaction_tests
      name: "(Compile=openjdk8, Run=openjdk11) compaction integration test"
      jdk: openjdk8
      env: TESTNG_GROUPS='-Dgroups=compaction' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'

    - <<: *integration_tests
      name: "(Compile=openjdk8, Run=openjdk11) other integration test"
      jdk: openjdk8
      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' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'

    - <<: *integration_tests
      name: "(Compile=openjdk8, Run=openjdk11) leadership and high availability integration tests"
      jdk: openjdk8
      env: TESTNG_GROUPS='-Dgroups=high-availability' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager'

    - <<: *integration_query
      name: "(Compile=openjdk8, Run=openjdk11) query integration test (mariaDB)"
      jdk: openjdk8
      env: TESTNG_GROUPS='-Dgroups=query' JVM_RUNTIME='-Djvm.runtime=11' USE_INDEXER='middleManager' MYSQL_DRIVER_CLASSNAME='org.mariadb.jdbc.Driver'

    # END - Integration tests for Compile with Java 8 and Run with Java 11

    - &integration_batch_index_k8s
      name: "(Compile=openjdk8, Run=openjdk8, Cluster Build On K8s) ITNestedQueryPushDownTest integration test"
      stage: Tests - phase 2
      jdk: openjdk8
      services: &integration_test_services_k8s
        - docker
      env: CONFIG_FILE='k8s_run_config_file.json' IT_TEST='-Dit.test=ITNestedQueryPushDownTest' POD_NAME=int-test POD_NAMESPACE=default BUILD_DRUID_CLSUTER=true
      script: &run_integration_test_k8s
        - ${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}
      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
    - name: "security vulnerabilities"
      stage: cron
      install: skip
      script: |-
        ${MVN} dependency-check:purge dependency-check:aggregate -pl '!integration-tests' || { echo "

        The OWASP dependency check has found security vulnerabilities. Please use a newer version
        of the dependency that does not have vulnerabilities. To see a report run
        `mvn dependency-check:check`
        If the analysis has false positives,
        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; }

# 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
    on_failure: change
