diff --git a/.travis.yml b/.travis.yml index 6a508919c72..6dd1adf6629 100644 --- a/.travis.yml +++ b/.travis.yml @@ -81,8 +81,7 @@ jobs: - distribution/bin/generate-license-dependency-reports.py . target --clean-maven-artifact-transfer --parallel 2 - distribution/bin/check-licenses.py licenses.yaml target/license-reports - - &compile_strict - name: "(openjdk8) strict compilation" + - name: "(openjdk8) strict compilation" install: skip # Strict compilation requires more than 2 GB script: > @@ -136,20 +135,52 @@ jobs: - &test_processing_module name: "(openjdk8) processing module test" - env: &processing_env + env: - MAVEN_PROJECTS='processing' - before_script: &setup_java_test + before_script: + - export DRUID_USE_DEFAULT_VALUE_FOR_NULL=true + script: - unset _JAVA_OPTIONS - script: &run_java_test # Set MAVEN_OPTS for Surefire launcher. Skip remoteresources to avoid intermittent connection timeouts when # resolving the SIGAR dependency. - > MAVEN_OPTS='-Xmx800m' ${MVN} test -pl ${MAVEN_PROJECTS} - ${MAVEN_SKIP} -Dremoteresources.skip=true + ${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 - after_success: &upload_java_unit_test_coverage - ${MVN} -pl ${MAVEN_PROJECTS} jacoco:report + # Add merge target branch to determine diff (see https://github.com/travis-ci/travis-ci/issues/6069) + - echo "TRAVIS_BRANCH=${TRAVIS_BRANCH}" # for debugging + - git remote set-branches --add origin ${TRAVIS_BRANCH} && git fetch + # 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. + - 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) + - > + 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 65 + --branch-coverage 65 + --function-coverage 80 + -- + || { printf "\nDiff code coverage check failed. To view coverage report, run 'mvn clean test jacoco:report' and open 'target/site/jacoco/index.html'\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 @@ -159,89 +190,69 @@ jobs: jdk: openjdk11 - &test_processing_module_sqlcompat + <<: *test_processing_module name: "(openjdk8) processing module test (SQL Compatibility)" - env: *processing_env - before_script: *setup_java_test - script: &run_java_sql_compat_test - # Set MAVEN_OPTS for Surefire launcher. Skip remoteresources to avoid intermittent connection timeouts when - # resolving the SIGAR dependency. - - > - MAVEN_OPTS='-Xmx800m' ${MVN} test -pl ${MAVEN_PROJECTS} -Ddruid.generic.useDefaultValueForNull=false - ${MAVEN_SKIP} -Dremoteresources.skip=true - - sh -c "dmesg | egrep -i '(oom|out of memory|kill process|killed).*' -C 1 || exit 0" - - free -m - after_success: *upload_java_unit_test_coverage + before_script: &setup_sqlcompat + - export DRUID_USE_DEFAULT_VALUE_FOR_NULL=false - <<: *test_processing_module_sqlcompat name: "(openjdk11) processing module test (SQL Compatibility)" jdk: openjdk11 - &test_indexing_module + <<: *test_processing_module name: "(openjdk8) indexing modules test" - env: &indexing_env + env: - MAVEN_PROJECTS='indexing-hadoop,indexing-service,extensions-core/kafka-indexing-service,extensions-core/kinesis-indexing-service' - before_script: *setup_java_test - script: *run_java_test - after_success: *upload_java_unit_test_coverage - <<: *test_indexing_module name: "(openjdk11) indexing modules test" jdk: openjdk11 - &test_indexing_module_sqlcompat + <<: *test_indexing_module name: "(openjdk8) indexing modules test (SQL Compatibility)" - env: *indexing_env - before_script: *setup_java_test - script: *run_java_sql_compat_test - after_success: *upload_java_unit_test_coverage + before_script: *setup_sqlcompat - <<: *test_indexing_module_sqlcompat name: "(openjdk11) indexing modules test (SQL Compatibility)" jdk: openjdk11 - &test_server_module + <<: *test_processing_module name: "(openjdk8) server module test" - env: &server_env + env: - MAVEN_PROJECTS='server' - before_script: *setup_java_test - script: *run_java_test - after_success: *upload_java_unit_test_coverage - <<: *test_server_module name: "(openjdk11) server module test" jdk: openjdk11 - &test_server_module_sqlcompat + <<: *test_server_module name: "(openjdk8) server module test (SQL Compatibility)" - env: *server_env - before_script: *setup_java_test - script: *run_java_sql_compat_test - after_success: *upload_java_unit_test_coverage + before_script: *setup_sqlcompat - <<: *test_server_module_sqlcompat name: "(openjdk11) server module test (SQL Compatibility)" jdk: openjdk11 - - &test_modules + - &test_other_modules + <<: *test_processing_module name: "(openjdk8) other modules test" - env: &other_env + env: - MAVEN_PROJECTS='!processing,!indexing-hadoop,!indexing-service,!extensions-core/kafka-indexing-service,!extensions-core/kinesis-indexing-service,!server,!web-console' - before_script: *setup_java_test - script: *run_java_test - after_success: *upload_java_unit_test_coverage - - <<: *test_modules + - <<: *test_other_modules name: "(openjdk11) other modules test" jdk: openjdk11 - - &test_modules_sqlcompat + - &test_other_modules_sqlcompat + <<: *test_other_modules name: "(openjdk8) other modules test (SQL Compatibility)" - env: *other_env - before_script: *setup_java_test - script: *run_java_sql_compat_test - after_success: *upload_java_unit_test_coverage + before_script: *setup_sqlcompat - - <<: *test_modules_sqlcompat + - <<: *test_other_modules_sqlcompat name: "(openjdk11) other modules test (SQL Compatibility)" jdk: openjdk11 diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 15628ec3039..4c640a62fe1 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -220,6 +220,13 @@ true + + org.jacoco + jacoco-maven-plugin + + true + + diff --git a/pom.xml b/pom.xml index 5c4cf156d10..aeffceb8a5c 100644 --- a/pom.xml +++ b/pom.xml @@ -1251,7 +1251,7 @@ org.jacoco jacoco-maven-plugin - 0.8.4 + 0.8.5