diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 000000000000..0bff01cd7bbd --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,31 @@ +# 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. + + +# Documentation for Codecov yaml: https://docs.codecov.io/docs/codecov-yaml +# +# Validate changes with: +# curl --data-binary @.codecov.yml https://codecov.io/validate + +# Documentation for pull request comments: https://docs.codecov.io/docs/pull-request-comments +# Consider enabling pull request comments after codecov reports look reliable. +comment: off + +coverage: + # Documentation for commit status: https://docs.codecov.io/docs/commit-status + # Consider enabling commit status to enforce minimum coverage thresholds after codecov reports look reliable. + status: + project: off + patch: off diff --git a/.travis.yml b/.travis.yml index 90ceae2cd75a..11149d275478 100644 --- a/.travis.yml +++ b/.travis.yml @@ -115,6 +115,11 @@ matrix: ${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 + - ${MVN} -pl ${MAVEN_PROJECTS} jacoco:report + # retry in case of network error + - travis_retry curl -o codecov.sh -s https://codecov.io/bash + - travis_retry bash codecov.sh -X gcov - name: "processing module test (SQL Compatibility)" env: *processing_env @@ -127,43 +132,53 @@ matrix: ${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 - name: "indexing modules test" env: &indexing_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 - name: "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 - name: "server module test" env: &server_env - MAVEN_PROJECTS='server' before_script: *setup_java_test script: *run_java_test + after_success: *upload_java_unit_test_coverage - name: "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 - name: "other modules test" env: &other_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 - name: "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 - name: "web console" install: skip - script: ${MVN} test -pl 'web-console' + script: + - ${MVN} test -pl 'web-console' + after_success: + - (cd web-console && travis_retry npm run codecov) # retry in case of network error - name: "docs" install: (cd website && npm install) diff --git a/README.md b/README.md index a967d6514dba..4e660d6199e4 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,9 @@ [![Slack](https://img.shields.io/badge/slack-%23druid-72eff8?logo=slack)](https://druid.apache.org/community/join-slack) [![Build Status](https://travis-ci.org/apache/incubator-druid.svg?branch=master)](https://travis-ci.org/apache/incubator-druid) [![Language grade: Java](https://img.shields.io/lgtm/grade/java/g/apache/incubator-druid.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/apache/incubator-druid/context:java) +[![Coverage Status](https://img.shields.io/codecov/c/gh/apache/incubator-druid)](https://codecov.io/gh/apache/incubator-druid) [![Docker](https://img.shields.io/badge/container-docker-blue.svg)](https://hub.docker.com/r/apache/incubator-druid) - ## Apache Druid (incubating) diff --git a/pom.xml b/pom.xml index ebcbd963d000..14d1feb287c1 100644 --- a/pom.xml +++ b/pom.xml @@ -984,7 +984,8 @@ org/apache/druid/data/input/influx/InfluxLineProtocol* - org/apache/druid/**/*Benchmark.* + org/apache/druid/benchmark/**/* + org/apache/druid/**/*Benchmark* org/testng/DruidTestRunnerFactory* org/apache/druid/testing/**/* diff --git a/web-console/package-lock.json b/web-console/package-lock.json index a4ae431dacc2..ef9d39d00aac 100644 --- a/web-console/package-lock.json +++ b/web-console/package-lock.json @@ -1960,6 +1960,15 @@ "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", "dev": true }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, "airbnb-prop-types": { "version": "2.14.0", "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.14.0.tgz", @@ -2125,6 +2134,12 @@ "sprintf-js": "~1.0.2" } }, + "argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", + "dev": true + }, "aria-query": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", @@ -3203,6 +3218,19 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, + "codecov": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.5.0.tgz", + "integrity": "sha512-/OsWOfIHaQIr7aeZ4pY0UC1PZT6kimoKFOFYFNb6wxo3iw12nRrh+mNGH72rnXxNsq6SGfesVPizm/6Q3XqcFQ==", + "dev": true, + "requires": { + "argv": "^0.0.2", + "ignore-walk": "^3.0.1", + "js-yaml": "^3.13.1", + "teeny-request": "^3.11.3", + "urlgrey": "^0.4.4" + } + }, "collapse-white-space": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.5.tgz", @@ -4691,6 +4719,21 @@ "is-symbol": "^1.0.2" } }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -5501,8 +5544,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -5523,14 +5565,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5545,20 +5585,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -5675,8 +5712,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -5688,7 +5724,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -5703,7 +5738,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -5711,14 +5745,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -5737,7 +5769,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -5818,8 +5849,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -5831,7 +5861,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -5917,8 +5946,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -5954,7 +5982,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -5974,7 +6001,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6018,14 +6044,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -6684,6 +6708,16 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, + "https-proxy-agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz", + "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -6734,6 +6768,15 @@ "integrity": "sha1-tJ7yJ0va/NikiAqWa/440aC/RnE=", "dev": true }, + "ignore-walk": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, "import-cwd": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", @@ -13302,6 +13345,25 @@ "inherits": "2" } }, + "teeny-request": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-3.11.3.tgz", + "integrity": "sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1", + "node-fetch": "^2.2.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "dev": true + } + } + }, "terser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/terser/-/terser-4.2.0.tgz", @@ -14120,6 +14182,12 @@ "requires-port": "^1.0.0" } }, + "urlgrey": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", + "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=", + "dev": true + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", diff --git a/web-console/package.json b/web-console/package.json index 553938f52e74..1cb954cdc93b 100644 --- a/web-console/package.json +++ b/web-console/package.json @@ -36,6 +36,8 @@ "compile": "./script/build", "pretest": "./script/build", "test": "npm run tslint && npm run sasslint && jest --silent 2>&1", + "test-ci": "npm run tslint && npm run sasslint && jest --coverage", + "codecov": "codecov --disable=gcov -p ..", "coverage": "jest --coverage", "update-snapshots": "jest -u", "tslint": "./node_modules/.bin/tslint -c tslint.json --project tsconfig.json --formatters-dir ./node_modules/awesome-code-style/formatter 'src/**/*.ts?(x)'", @@ -104,6 +106,7 @@ "autoprefixer": "^9.6.1", "awesome-code-style": "^1.4.3", "babel-loader": "^8.0.6", + "codecov": "^3.5.0", "css-loader": "^3.2.0", "enzyme": "^3.10.0", "enzyme-adapter-react-16": "^1.14.0", diff --git a/web-console/pom.xml b/web-console/pom.xml index bad17b8d72af..7046efc75bd1 100644 --- a/web-console/pom.xml +++ b/web-console/pom.xml @@ -84,7 +84,7 @@ test - test + run test-ci ${project.build.directory}