diff --git a/.github/workflows/build-and-test-pr.yml b/.github/workflows/build-and-test-pr.yml
index 4b9e933bb45a..16574f8d8860 100644
--- a/.github/workflows/build-and-test-pr.yml
+++ b/.github/workflows/build-and-test-pr.yml
@@ -37,7 +37,7 @@ jobs:
name: "Check if code needs formatting"
runs-on: ubuntu-latest
steps:
- - name: "Checkout"
+ - name: "Checkout code"
uses: actions/checkout@v4
- name: "Setup maven"
uses: actions/setup-java@v4
@@ -46,10 +46,10 @@ jobs:
distribution: zulu
- name: "Check if code aligns with code style"
id: check
- run: mvn --log-file mvn.log spotless:check
+ run: mvn ${{ env.MAVEN_ARGS }} --log-file mvn.log spotless:check
continue-on-error: true
- name: "Upload checkstyle result"
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v3
with:
name: checkstyle-result
path: mvn.log
@@ -73,18 +73,19 @@ jobs:
script: |
core.setFailed("Formatting issues found!")
- license:
+ check-license:
name: "Check License"
needs: check-format
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - name: "Checkout code"
+ uses: actions/checkout@v4
- name: "Check License"
uses: apache/skywalking-eyes@e1a02359b239bd28de3f6d35fdc870250fa513d5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: "Set up JDK 21"
- uses: actions/setup-java@v3
+ uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 21
@@ -107,11 +108,11 @@ jobs:
version: ${{ steps.dubbo-version.outputs.version }}
steps:
- name: "Checkout code"
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
path: dubbo
- name: "Set up JDK"
- uses: actions/setup-java@v3
+ uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 21
@@ -176,28 +177,30 @@ jobs:
echo "dubbo version: $REVISION"
unit-test-prepare:
- name: "Preparation for Unit Test"
+ name: "Prepare for Unit Test"
needs: check-format
runs-on: ubuntu-latest
- strategy:
- fail-fast: false
env:
- ZOOKEEPER_VERSION: 3.6.3
+ JOB_COUNT: 3
+ ZOOKEEPER_VERSION: 3.6.4
steps:
- - name: "Cache zookeeper binary archive"
- uses: actions/cache@v3
- id: "cache-zookeeper"
+ - name: "Checkout code"
+ uses: actions/checkout@v4
+ - name: "Prepare test list"
+ run: bash ./dubbo-test/scripts/split-modules.sh 3 '${{ github.workspace }}'
+ - name: "Upload test list"
+ uses: actions/upload-artifact@v3
+ with:
+ name: unit-test-list
+ path: test/jobs
+ - name: "Restore local zookeeper cache"
+ uses: actions/cache/restore@v4
+ id: cache-zookeeper
with:
path: ${{ github.workspace }}/.tmp/zookeeper
key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
- restore-keys: |
- zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
- - name: "Set up msys2 if necessary"
- uses: msys2/setup-msys2@v2
- if: ${{ startsWith( matrix.os, 'windows') && steps.cache-zookeeper.outputs.cache-hit != 'true' }}
- with:
- release: false # support cache, see https://github.com/msys2/setup-msys2#context
- name: "Download zookeeper binary archive in Linux OS"
+ if: steps.cache-zookeeper.outputs.cache-hit != 'true'
run: |
mkdir -p ${{ github.workspace }}/.tmp/zookeeper
wget -c https://archive.apache.org/dist/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz ||
@@ -208,30 +211,34 @@ jobs:
wget -c http://mirror.apache-kr.org/apache/zookeeper/zookeeper-${{ env.ZOOKEEPER_VERSION }}/apache-zookeeper-${{ env.ZOOKEEPER_VERSION }}-bin.tar.gz -O ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
echo "list the downloaded zookeeper binary archive"
ls -al ${{ github.workspace }}/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
-
- unit-test:
- needs: [check-format, build-source, unit-test-prepare]
- name: "Unit Test On ubuntu-latest"
+ - name: "Save local zookeeper cache"
+ uses: actions/cache/save@v4
+ if: steps.cache-zookeeper.outputs.cache-hit != 'true'
+ with:
+ path: ${{ github.workspace }}/.tmp/zookeeper
+ key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
+ unit-test-job:
+ name: "Unit Test on ubuntu-latest (JobId: ${{matrix.job_id}})"
+ needs: [ check-format, build-source, unit-test-prepare ]
runs-on: ubuntu-latest
+ timeout-minutes: 60
+ env:
+ ZOOKEEPER_VERSION: 3.6.4
strategy:
fail-fast: false
- env:
- DISABLE_FILE_SYSTEM_TEST: true
- CURRENT_ROLE: ${{ matrix.case-role }}
- ZOOKEEPER_VERSION: 3.6.3
+ matrix:
+ job_id: [ 1, 2, 3 ]
steps:
- name: "Checkout code"
- uses: actions/checkout@v3
- with:
- fetch-depth: 0
- - name: "Set up JDK ${{ matrix.jdk }}"
- uses: actions/setup-java@v3
+ uses: actions/checkout@v4
+ - name: "Set up JDK"
+ uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 21
- name: "Set current date as env variable"
run: echo "TODAY=$(date +'%Y%m%d')" >> $GITHUB_ENV
- - name: "Cache local maven repository"
+ - name: "Restore local maven repository"
uses: actions/cache/restore@v4
with:
path: ~/.m2/repository
@@ -239,35 +246,48 @@ jobs:
restore-keys: |
${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
${{ runner.os }}-maven-
+ - name: "Restore Dubbo cache"
+ uses: actions/cache/restore@v4
+ with:
+ path: ~/.m2/repository/org/apache/dubbo
+ key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
- name: "Cache zookeeper binary archive"
- uses: actions/cache@v3
+ uses: actions/cache@v4
id: "cache-zookeeper"
with:
path: ${{ github.workspace }}/.tmp/zookeeper
key: zookeeper-${{ runner.os }}-${{ env.ZOOKEEPER_VERSION }}
restore-keys: |
zookeeper-${{ runner.os }}-
+ - name: "Download test list"
+ uses: actions/download-artifact@v3
+ with:
+ name: unit-test-list
+ path: test/jobs/
- name: "Test with maven"
- timeout-minutes: 90
+ timeout-minutes: 60
run: |
set -o pipefail
- ./mvnw ${{ env.MAVEN_ARGS }} clean test verify -Pjacoco,jdk15ge-simple,'!jdk15ge','!demo',skip-spotless,jacoco089 -DtrimStackTrace=false -Dmaven.test.skip=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper 2>&1 | tee >(grep -n -B 1 -A 200 "FAILURE! -- in" > test_errors.log)
+ modules=$(cat test/jobs/test_modules_${{ matrix.job_id }}.txt)
+ ./mvnw ${{ env.MAVEN_ARGS }} clean test verify -Pjacoco,jdk15ge-simple,'!jdk15ge','!demo',skip-spotless,jacoco089 -pl "$modules" -DtrimStackTrace=false -Dmaven.test.skip=false -Dcheckstyle.skip=false -Dcheckstyle_unix.skip=false -Drat.skip=false -Dflatten.skip=true -DembeddedZookeeperPath=${{ github.workspace }}/.tmp/zookeeper 2>&1 | tee >(grep -n -B 1 -A 200 "FAILURE! -- in" > test_errors.log)
- name: "Print test error log"
if: failure()
run: cat test_errors.log
- name: "Upload coverage result"
uses: actions/upload-artifact@v3
with:
- name: coverage-result
+ name: unit-jacoco-result
path: "**/target/site/**/jacoco.xml"
samples-test-prepare:
+ name: "Prepare for Sample Test"
needs: check-format
runs-on: ubuntu-latest
env:
JOB_COUNT: 3
steps:
- - uses: actions/checkout@v3
+ - name: "Checkout code"
+ uses: actions/checkout@v4
with:
repository: 'apache/dubbo-samples'
ref: master
@@ -279,19 +299,20 @@ jobs:
name: samples-test-list
path: test/jobs
samples-test-job:
- needs: [check-format, build-source, samples-test-prepare]
name: "Samples Test on ubuntu-latest (JobId: ${{matrix.job_id}})"
+ needs: [ check-format, build-source, samples-test-prepare ]
runs-on: ubuntu-latest
- timeout-minutes: 90
+ timeout-minutes: 60
env:
JAVA_VER: 8
TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
strategy:
fail-fast: false
matrix:
- job_id: [1, 2, 3]
+ job_id: [ 1, 2, 3 ]
steps:
- - uses: actions/checkout@v3
+ - name: "Checkout code"
+ uses: actions/checkout@v4
with:
repository: 'apache/dubbo-samples'
ref: master
@@ -310,16 +331,13 @@ jobs:
with:
path: ~/.m2/repository/org/apache/dubbo
key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
- restore-keys: |
- ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}
- ${{ runner.os }}-dubbo-snapshot-
- name: "Download test list"
uses: actions/download-artifact@v3
with:
name: samples-test-list
path: test/jobs/
- name: "Set up JDK 8"
- uses: actions/setup-java@v3
+ uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 8
@@ -333,26 +351,25 @@ jobs:
- name: "Run tests"
run: cd test && bash ./run-tests.sh
- name: "merge jacoco result"
- run: cd test/dubbo-test-jacoco-merger && mvn clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoMerge" -Dexec.args="${{github.workspace}}"
+ run: cd test/dubbo-test-jacoco-merger && mvn ${{ env.MAVEN_ARGS }} clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoMerge" -Dexec.args="${{github.workspace}}"
- name: "Upload jacoco"
uses: actions/upload-artifact@v3
with:
name: samples-jacoco-result
path: target/jacoco*.exec
- name: "Upload test result"
- if: always()
uses: actions/upload-artifact@v3
with:
name: samples-test-result
path: test/jobs/*-result*
samples-test-result:
- needs: [check-format, samples-test-job]
- if: always()
+ needs: [ check-format, samples-test-job ]
runs-on: ubuntu-latest
env:
JAVA_VER: 8
steps:
- - uses: actions/checkout@v3
+ - name: "Checkout samples code"
+ uses: actions/checkout@v4
with:
repository: 'apache/dubbo-samples'
ref: master
@@ -365,12 +382,14 @@ jobs:
run: ./test/scripts/merge-test-results.sh
integration-test-prepare:
+ name: "Prepare for Integration Test"
needs: check-format
runs-on: ubuntu-latest
env:
JOB_COUNT: 3
steps:
- - uses: actions/checkout@v3
+ - name: "Checkout integration code"
+ uses: actions/checkout@v4
with:
repository: 'apache/dubbo-integration-cases'
ref: main
@@ -379,22 +398,23 @@ jobs:
- name: "Upload test list"
uses: actions/upload-artifact@v3
with:
- name: test-list
+ name: integration-test-list
path: test/jobs
integration-test-job:
- needs: [check-format, build-source, integration-test-prepare]
name: "Integration Test on ubuntu-latest (JobId: ${{matrix.job_id}})"
+ needs: [ check-format, build-source, integration-test-prepare ]
runs-on: ubuntu-latest
- timeout-minutes: 90
+ timeout-minutes: 60
env:
JAVA_VER: 8
TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt
strategy:
fail-fast: false
matrix:
- job_id: [1, 2, 3]
+ job_id: [ 1, 2, 3 ]
steps:
- - uses: actions/checkout@v3
+ - name: "Checkout integration code"
+ uses: actions/checkout@v4
with:
repository: 'apache/dubbo-integration-cases'
ref: main
@@ -413,16 +433,13 @@ jobs:
with:
path: ~/.m2/repository/org/apache/dubbo
key: ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}-${{ github.run_id }}
- restore-keys: |
- ${{ runner.os }}-dubbo-snapshot-${{ github.sha }}
- ${{ runner.os }}-dubbo-snapshot-
- name: "Download test list"
uses: actions/download-artifact@v3
with:
- name: test-list
+ name: integration-test-list
path: test/jobs/
- name: "Set up JDK 8"
- uses: actions/setup-java@v3
+ uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 8
@@ -436,54 +453,56 @@ jobs:
- name: "Run tests"
run: cd test && bash ./run-tests.sh
- name: "merge jacoco result"
- run: cd test/dubbo-test-jacoco-merger && mvn clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoMerge" -Dexec.args="${{github.workspace}}"
+ run: cd test/dubbo-test-jacoco-merger && mvn ${{ env.MAVEN_ARGS }} clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoMerge" -Dexec.args="${{github.workspace}}"
- name: "Upload jacoco"
uses: actions/upload-artifact@v3
with:
- name: jacoco-result
+ name: integration-jacoco-result
path: target/jacoco*.exec
- name: "Upload test result"
- if: always()
uses: actions/upload-artifact@v3
with:
- name: test-result
+ name: integration-test-result
path: test/jobs/*-result*
integration-test-result:
- needs: [check-format, integration-test-job]
- if: always()
+ needs: [ check-format, integration-test-job ]
runs-on: ubuntu-latest
env:
JAVA_VER: 8
steps:
- - uses: actions/checkout@v3
+ - name: "Checkout integration code"
+ uses: actions/checkout@v4
with:
repository: 'apache/dubbo-integration-cases'
ref: main
- name: "Download test result"
uses: actions/download-artifact@v3
with:
- name: test-result
+ name: integration-test-result
path: test/jobs/
- name: "Merge test result"
run: ./test/scripts/merge-test-results.sh
jacoco-result-merge:
runs-on: ubuntu-latest
- needs: [check-format, integration-test-result, samples-test-result, unit-test]
+ needs: [ check-format, unit-test-job, samples-test-result, integration-test-result ]
steps:
- - uses: actions/checkout@v3
+ - name: "Checkout code"
+ uses: actions/checkout@v4
with:
path: "./dubbo"
- - uses: actions/checkout@v3
+ - name: "Checkout code"
+ uses: actions/checkout@v4
with:
repository: 'apache/dubbo-samples'
path: "./dubbo-samples"
- - uses: actions/checkout@v3
+ - name: "Checkout code"
+ uses: actions/checkout@v4
with:
repository: 'apache/dubbo-integration-cases'
path: "./dubbo-integration-cases"
- name: "Set up JDK 21"
- uses: actions/setup-java@v3
+ uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 21
@@ -496,7 +515,7 @@ jobs:
run: |
cd ${{ github.workspace }}/dubbo
unzip -o ${{ github.workspace }}/class.zip
- - name: "Restore jacoco exec"
+ - name: "Restore samples jacoco exec"
uses: actions/download-artifact@v3
with:
name: samples-jacoco-result
@@ -504,23 +523,23 @@ jobs:
- name: "Restore integration jacoco exec"
uses: actions/download-artifact@v3
with:
- name: jacoco-result
+ name: integration-jacoco-result
path: dubbo-integration-cases/target/
- - name: "Merge jacoco result"
+ - name: "Merge samples jacoco result"
run: |
cd ${{ github.workspace }}/dubbo-samples/test/dubbo-test-jacoco-merger
- mvn clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoReport" -Dexec.args="${{github.workspace}}/dubbo-samples ${{github.workspace}}/dubbo"
- - name: "Merge samples jacoco result"
+ mvn ${{ env.MAVEN_ARGS }} clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoReport" -Dexec.args="${{github.workspace}}/dubbo-samples ${{github.workspace}}/dubbo"
+ - name: "Merge integration jacoco result"
run: |
cd ${{ github.workspace }}/dubbo-integration-cases/test/dubbo-test-jacoco-merger
- mvn clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoReport" -Dexec.args="${{github.workspace}}/dubbo-integration-cases ${{github.workspace}}/dubbo"
+ mvn ${{ env.MAVEN_ARGS }} clean compile exec:java -Dexec.mainClass="org.apache.dubbo.test.JacocoReport" -Dexec.args="${{github.workspace}}/dubbo-integration-cases ${{github.workspace}}/dubbo"
- name: "Restore coverage result"
uses: actions/download-artifact@v3
with:
- name: coverage-result
+ name: unit-jacoco-result
path: dubbo/
- name: "Upload coverage to Codecov"
- uses: codecov/codecov-action@v3
+ uses: codecov/codecov-action@v4
with:
verbose: true
@@ -528,16 +547,18 @@ jobs:
needs: check-format
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - name: "Checkout code"
+ uses: actions/checkout@v4
with:
path: "./dubbo"
- - uses: actions/checkout@v3
+ - name: "Checkout code"
+ uses: actions/checkout@v4
with:
repository: 'apache/dubbo-test-tools'
ref: main
path: "./dubbo-test-tools"
- name: "Set up JDK 21"
- uses: actions/setup-java@v3
+ uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 21
@@ -572,7 +593,8 @@ jobs:
needs: check-format
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - name: "Checkout code"
+ uses: actions/checkout@v4
with:
path: "./dubbo"
- name: "Setup GraalVM environment"
diff --git a/dubbo-common/src/test/resources/log4j2-test.xml b/dubbo-common/src/test/resources/log4j2-test.xml
index ba99f52cc2d2..a90449b61945 100644
--- a/dubbo-common/src/test/resources/log4j2-test.xml
+++ b/dubbo-common/src/test/resources/log4j2-test.xml
@@ -25,5 +25,6 @@
+
diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/stream/StreamUtils.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/stream/StreamUtils.java
index 5f726a723a5e..060b8dbe0f8d 100644
--- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/stream/StreamUtils.java
+++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/stream/StreamUtils.java
@@ -140,7 +140,7 @@ private static void putHeader(BiConsumer consumer, String
String str = encodeBase64ASCII((byte[]) value);
consumer.accept(key + TripleConstants.HEADER_BIN_SUFFIX, str);
} else {
- LOGGER.warn(
+ LOGGER.info(
PROTOCOL_UNSUPPORTED,
"",
"",
diff --git a/dubbo-test/scripts/split-modules.sh b/dubbo-test/scripts/split-modules.sh
new file mode 100644
index 000000000000..1bc1fe47de05
--- /dev/null
+++ b/dubbo-test/scripts/split-modules.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+#
+# 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.
+#
+
+readarray -t modules < <(find . -name "pom.xml" | while read -r pom; do
+ module_dir=$(dirname "$pom")
+ if [ -d "$module_dir/src/test" ]; then
+ echo "${module_dir#./}"
+ fi
+done)
+
+readarray -t modules < <(printf '%s\n' "${modules[@]}" | shuf --random-source=/dev/zero)
+
+jobs=$1
+jobs_dir=$2/test/jobs
+
+total=${#modules[@]}
+size=$((total / jobs))
+remainder=$((total % jobs))
+
+mkdir -p "$jobs_dir"
+
+IFS=','
+for ((i=0; i "$jobs_dir/test_modules_$((i+1)).txt"
+done