From df00b746b52215f16f6cb0bb50ea9a1b85d594f0 Mon Sep 17 00:00:00 2001 From: Xiang Fu Date: Fri, 13 Oct 2023 15:32:17 -0700 Subject: [PATCH] separate pr test scripts and codecov --- .github/workflows/pinot_tests.yml | 59 ++++++++++++- .github/workflows/scripts/.pinot_test.sh | 84 ------------------- .../scripts/pr-tests/.pinot_tests_build.sh | 62 ++++++++++++++ .../.pinot_tests_custom_integration.sh | 33 ++++++++ .../pr-tests/.pinot_tests_integration.sh | 37 ++++++++ .../scripts/pr-tests/.pinot_tests_unit.sh | 52 ++++++++++++ 6 files changed, 241 insertions(+), 86 deletions(-) delete mode 100755 .github/workflows/scripts/.pinot_test.sh create mode 100755 .github/workflows/scripts/pr-tests/.pinot_tests_build.sh create mode 100755 .github/workflows/scripts/pr-tests/.pinot_tests_custom_integration.sh create mode 100755 .github/workflows/scripts/pr-tests/.pinot_tests_integration.sh create mode 100755 .github/workflows/scripts/pr-tests/.pinot_tests_unit.sh diff --git a/.github/workflows/pinot_tests.yml b/.github/workflows/pinot_tests.yml index 07750f239b80..727280bd2e3d 100644 --- a/.github/workflows/pinot_tests.yml +++ b/.github/workflows/pinot_tests.yml @@ -97,6 +97,21 @@ jobs: key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven- + - name: Build Project + env: + RUN_INTEGRATION_TESTS: false + RUN_TEST_SET: ${{ matrix.testset }} + GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }} + MAVEN_OPTS: > + -Xmx2G -DskipShade -DfailIfNoTests=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=25 + -Dmaven.wagon.http.retryHandler.count=30 -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false + -XX:+IgnoreUnrecognizedVMOptions + --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED + --add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED + --add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED + --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED + --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED + run: .github/workflows/scripts/pr-tests/.pinot_tests_build.sh - name: Unit Test env: RUN_INTEGRATION_TESTS: false @@ -111,7 +126,7 @@ jobs: --add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED - run: .github/workflows/scripts/.pinot_test.sh + run: .github/workflows/scripts/pr-tests/.pinot_tests_unit.sh - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 continue-on-error: true @@ -150,6 +165,20 @@ jobs: key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven- + - name: Build Project + env: + RUN_INTEGRATION_TESTS: true + GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }} + MAVEN_OPTS: > + -Xmx2G -DskipShade -DfailIfNoTests=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=25 + -Dmaven.wagon.http.retryHandler.count=30 -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false + -XX:+IgnoreUnrecognizedVMOptions + --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED + --add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED + --add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED + --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED + --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED + run: .github/workflows/scripts/pr-tests/.pinot_tests_build.sh - name: Integration Test env: RUN_INTEGRATION_TESTS: true @@ -164,7 +193,7 @@ jobs: --add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED - run: .github/workflows/scripts/.pinot_test.sh + run: .github/workflows/scripts/pr-tests/.pinot_tests_integration.sh - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 continue-on-error: true @@ -174,6 +203,32 @@ jobs: name: codecov-integration-tests fail_ci_if_error: false verbose: true + - name: Custom Integration Test + if : ${{ matrix.testset == 1 }} + env: + RUN_INTEGRATION_TESTS: true + RUN_TEST_SET: ${{ matrix.testset }} + GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }} + MAVEN_OPTS: > + -Xmx2G -DskipShade -DfailIfNoTests=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=25 + -Dmaven.wagon.http.retryHandler.count=30 -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false + -XX:+IgnoreUnrecognizedVMOptions + --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED + --add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED + --add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED + --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED + --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED + run: .github/workflows/scripts/pr-tests/.pinot_tests_custom_integration.sh + - name: Upload coverage to Codecov + if : ${{ matrix.testset == 1 }} + uses: codecov/codecov-action@v3 + continue-on-error: true + timeout-minutes: 5 + with: + flags: integration,custom-integration${{ matrix.testset }},${{matrix.distribution}},java-${{matrix.java}} + name: codecov-custom-integration-tests + fail_ci_if_error: false + verbose: true compatibility-verifier: if: github.repository == 'apache/pinot' diff --git a/.github/workflows/scripts/.pinot_test.sh b/.github/workflows/scripts/.pinot_test.sh deleted file mode 100755 index 7179fa91a0b0..000000000000 --- a/.github/workflows/scripts/.pinot_test.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/bash -x -# -# 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. -# - -# Java version -java -version - -# Check network -ifconfig -netstat -i - -if [ "$RUN_INTEGRATION_TESTS" != false ]; then - # Integration Tests - mvn clean install -DskipTests -Dcheckstyle.skip -Dspotless.skip -Denforcer.skip -Dlicense.skip -am -B \ - -pl 'pinot-integration-tests' -T 16 || exit 1 - cd pinot-integration-tests || exit 1 - if [ "$RUN_TEST_SET" == "1" ]; then - mvn test \ - -P github-actions,custom-cluster-integration-test-suite || exit 1 - mvn test \ - -P github-actions,integration-tests-set-1 && exit 0 || exit 1 - fi - if [ "$RUN_TEST_SET" == "2" ]; then - mvn test \ - -P github-actions,integration-tests-set-2 && exit 0 || exit 1 - fi -else - # Unit Tests - # - TEST_SET#1 runs install and test together so the module list must ensure no additional modules were tested - # due to the -am flag (include dependency modules) - if [ "$RUN_TEST_SET" == "1" ]; then - mvn clean install -DskipTests -am -B -T 16 \ - -pl 'pinot-spi' \ - -pl 'pinot-segment-spi' \ - -pl 'pinot-common' \ - -pl 'pinot-segment-local' \ - -pl 'pinot-core' \ - -pl 'pinot-query-planner' \ - -pl 'pinot-query-runtime' \ - -P github-actions,no-integration-tests \ - -Dcheckstyle.skip -Dspotless.skip -Denforcer.skip -Dlicense.skip || exit 1 - mvn test -T 16 \ - -pl 'pinot-spi' \ - -pl 'pinot-segment-spi' \ - -pl 'pinot-common' \ - -pl 'pinot-segment-local' \ - -pl 'pinot-core' \ - -pl 'pinot-query-planner' \ - -pl 'pinot-query-runtime' \ - -P github-actions,no-integration-tests && exit 0 || exit 1 - fi - if [ "$RUN_TEST_SET" == "2" ]; then - mvn clean install -DskipTests -Dcheckstyle.skip -Dspotless.skip -Denforcer.skip -Dlicense.skip -T 16 || exit 1 - mvn test -am -B \ - -pl '!pinot-spi' \ - -pl '!pinot-segment-spi' \ - -pl '!pinot-common' \ - -pl '!pinot-segment-local' \ - -pl '!pinot-core' \ - -pl '!pinot-query-planner' \ - -pl '!pinot-query-runtime' \ - -P github-actions,no-integration-tests \ - -Dspotless.skip -Dcheckstyle.skip -Denforcer.skip -Dlicense.skip \ - && exit 0 || exit 1 - fi -fi - -mvn clean > /dev/null diff --git a/.github/workflows/scripts/pr-tests/.pinot_tests_build.sh b/.github/workflows/scripts/pr-tests/.pinot_tests_build.sh new file mode 100755 index 000000000000..05080fd963d4 --- /dev/null +++ b/.github/workflows/scripts/pr-tests/.pinot_tests_build.sh @@ -0,0 +1,62 @@ +#!/bin/bash -x +# +# 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. +# + +# Java version +java -version + +# Check network +ifconfig +netstat -i + +if [ "$RUN_INTEGRATION_TESTS" != false ]; then + # Integration Tests + mvn clean install \ + -DskipTests -Dcheckstyle.skip -Dspotless.skip -Denforcer.skip -Dlicense.skip -Dmaven.plugin.appassembler.skip=true \ + -am -B -T 16 \ + -P github-actions,integration-tests \ + -pl 'pinot-integration-tests' || exit 1 +else + # Unit Tests + # - TEST_SET#1 runs install and test together so the module list must ensure no additional modules were tested + # due to the -am flag (include dependency modules) + if [ "$RUN_TEST_SET" == "1" ]; then + mvn clean install \ + -DskipTests -Dcheckstyle.skip -Dspotless.skip -Denforcer.skip -Dlicense.skip -Dmaven.plugin.appassembler.skip=true \ + -am -B -T 16 \ + -P github-actions,no-integration-tests \ + -pl 'pinot-spi' \ + -pl 'pinot-segment-spi' \ + -pl 'pinot-common' \ + -pl 'pinot-segment-local' \ + -pl 'pinot-core' \ + -pl 'pinot-query-planner' \ + -pl 'pinot-query-runtime' || exit 1 + fi + if [ "$RUN_TEST_SET" == "2" ]; then + mvn clean install \ + -DskipTests -Dcheckstyle.skip -Dspotless.skip -Denforcer.skip -Dlicense.skip -Dmaven.plugin.appassembler.skip=true \ + -am -B -T 16 \ + -P github-actions,no-integration-tests \ + -pl '!pinot-integration-test-base' \ + -pl '!pinot-integration-tests' \ + -pl '!pinot-perf' \ + -pl '!pinot-distribution' || exit 1 + fi +fi diff --git a/.github/workflows/scripts/pr-tests/.pinot_tests_custom_integration.sh b/.github/workflows/scripts/pr-tests/.pinot_tests_custom_integration.sh new file mode 100755 index 000000000000..cd99615ce4d6 --- /dev/null +++ b/.github/workflows/scripts/pr-tests/.pinot_tests_custom_integration.sh @@ -0,0 +1,33 @@ +#!/bin/bash -x +# +# 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. +# + +# Java version +java -version + +# Check network +ifconfig +netstat -i + +# Custom Integration Tests +cd pinot-integration-tests || exit 1 +if [ "$RUN_TEST_SET" == "1" ]; then + mvn test \ + -P github-actions,custom-cluster-integration-test-suite || exit 1 +fi diff --git a/.github/workflows/scripts/pr-tests/.pinot_tests_integration.sh b/.github/workflows/scripts/pr-tests/.pinot_tests_integration.sh new file mode 100755 index 000000000000..a6f671c2181d --- /dev/null +++ b/.github/workflows/scripts/pr-tests/.pinot_tests_integration.sh @@ -0,0 +1,37 @@ +#!/bin/bash -x +# +# 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. +# + +# Java version +java -version + +# Check network +ifconfig +netstat -i + +# Integration Tests +cd pinot-integration-tests || exit 1 +if [ "$RUN_TEST_SET" == "1" ]; then + mvn test \ + -P github-actions,integration-tests-set-1 && exit 0 || exit 1 +fi +if [ "$RUN_TEST_SET" == "2" ]; then + mvn test \ + -P github-actions,integration-tests-set-2 && exit 0 || exit 1 +fi diff --git a/.github/workflows/scripts/pr-tests/.pinot_tests_unit.sh b/.github/workflows/scripts/pr-tests/.pinot_tests_unit.sh new file mode 100755 index 000000000000..3a68ff722c9f --- /dev/null +++ b/.github/workflows/scripts/pr-tests/.pinot_tests_unit.sh @@ -0,0 +1,52 @@ +#!/bin/bash -x +# +# 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. +# + +# Java version +java -version + +# Check network +ifconfig +netstat -i + +# Unit Tests +# - TEST_SET#1 runs install and test together so the module list must ensure no additional modules were tested +# due to the -am flag (include dependency modules) +if [ "$RUN_TEST_SET" == "1" ]; then + mvn test -T 16 \ + -pl 'pinot-spi' \ + -pl 'pinot-segment-spi' \ + -pl 'pinot-common' \ + -pl 'pinot-segment-local' \ + -pl 'pinot-core' \ + -pl 'pinot-query-planner' \ + -pl 'pinot-query-runtime' \ + -P github-actions,no-integration-tests || exit 1 +fi +if [ "$RUN_TEST_SET" == "2" ]; then + mvn test \ + -pl '!pinot-spi' \ + -pl '!pinot-segment-spi' \ + -pl '!pinot-common' \ + -pl '!pinot-segment-local' \ + -pl '!pinot-core' \ + -pl '!pinot-query-planner' \ + -pl '!pinot-query-runtime' \ + -P github-actions,no-integration-tests || exit 1 +fi