From 2fc1e832fc5b99aa8a33d0d9c41377cd7d0d6952 Mon Sep 17 00:00:00 2001 From: BobSong-dev Date: Mon, 21 Sep 2026 10:58:16 +0800 Subject: [PATCH 1/8] fix(e2e): harden storage compose scripts (#6818) --- .../compose/script/e2e-h2-compose.sh | 17 ++++++----- .../compose/script/e2e-mysql-compose.sh | 17 ++++++----- .../compose/script/e2e-opengauss-compose.sh | 17 ++++++----- .../compose/script/e2e-postgres-compose.sh | 17 ++++++----- .../compose/script/e2e-storage-compose.sh | 30 +++++++++++-------- 5 files changed, 54 insertions(+), 44 deletions(-) diff --git a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-h2-compose.sh b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-h2-compose.sh index 191a68fc3ba4..21f159689c88 100644 --- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-h2-compose.sh +++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-h2-compose.sh @@ -16,24 +16,25 @@ # limitations under the License. # +set -euo pipefail + # init kubernetes for h2 SHENYU_TESTCASE_DIR=$(dirname "$(dirname "$(dirname "$(dirname "$0")")")") curPath=$(readlink -f "$(dirname "$0")") PRGDIR=$(dirname "$curPath") -docker compose -f "$SHENYU_TESTCASE_DIR"/compose/storage/shenyu-storage-h2.yml up -d --quiet-pull -sleep 30s +COMPOSE_FILE="$SHENYU_TESTCASE_DIR/compose/storage/shenyu-storage-h2.yml" -# execute healthcheck.sh -chmod +x "${curPath}"/healthcheck.sh -sh "${curPath}"/healthcheck.sh h2 http://localhost:31095/actuator/health http://localhost:31195/actuator/health +# Start services and wait for their healthchecks. +docker network create -d bridge shenyu || true +trap 'docker compose -f "$COMPOSE_FILE" down || true' EXIT +docker compose -f "$COMPOSE_FILE" up -d --quiet-pull --wait ## run e2e-test -sleep 60s ./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage -am test echo "shenyu-admin log:" echo "------------------" -docker compose -f "$SHENYU_TESTCASE_DIR"/compose/storage/shenyu-storage-h2.yml logs shenyu-admin +docker compose -f "$COMPOSE_FILE" logs shenyu-admin echo "shenyu-bootstrap log:" echo "------------------" -docker compose -f "$SHENYU_TESTCASE_DIR"/compose/storage/shenyu-storage-h2.yml logs shenyu-bootstrap +docker compose -f "$COMPOSE_FILE" logs shenyu-bootstrap diff --git a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-mysql-compose.sh b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-mysql-compose.sh index ec4af5917f54..9f65f3246d23 100644 --- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-mysql-compose.sh +++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-mysql-compose.sh @@ -16,25 +16,26 @@ # limitations under the License. # +set -euo pipefail + # init kubernetes for h2 SHENYU_TESTCASE_DIR=$(dirname "$(dirname "$(dirname "$(dirname "$0")")")") bash "${SHENYU_TESTCASE_DIR}"/k8s/script/storage/storage_init_mysql.sh curPath=$(readlink -f "$(dirname "$0")") PRGDIR=$(dirname "$curPath") -docker compose -f "$SHENYU_TESTCASE_DIR"/compose/storage/shenyu-storage-mysql.yml up -d --quiet-pull -sleep 30s +COMPOSE_FILE="$SHENYU_TESTCASE_DIR/compose/storage/shenyu-storage-mysql.yml" -# execute healthcheck.sh -chmod +x "${curPath}"/healthcheck.sh -sh "${curPath}"/healthcheck.sh h2 http://localhost:31095/actuator/health http://localhost:31195/actuator/health +# Start services and wait for their healthchecks. +docker network create -d bridge shenyu || true +trap 'docker compose -f "$COMPOSE_FILE" down || true' EXIT +docker compose -f "$COMPOSE_FILE" up -d --quiet-pull --wait ## run e2e-test -sleep 60s ./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage -am test echo "shenyu-admin log:" echo "------------------" -docker compose -f "$SHENYU_TESTCASE_DIR"/compose/storage/shenyu-storage-mysql.yml logs shenyu-admin +docker compose -f "$COMPOSE_FILE" logs shenyu-admin echo "shenyu-bootstrap log:" echo "------------------" -docker compose -f "$SHENYU_TESTCASE_DIR"/compose/storage/shenyu-storage-mysql.yml logs shenyu-bootstrap +docker compose -f "$COMPOSE_FILE" logs shenyu-bootstrap diff --git a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-opengauss-compose.sh b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-opengauss-compose.sh index e9447c1185a2..92893d1fb640 100644 --- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-opengauss-compose.sh +++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-opengauss-compose.sh @@ -16,25 +16,26 @@ # limitations under the License. # +set -euo pipefail + # init kubernetes for h2 SHENYU_TESTCASE_DIR=$(dirname "$(dirname "$(dirname "$(dirname "$0")")")") bash "${SHENYU_TESTCASE_DIR}"/k8s/script/storage/storage_init_opengauss.sh curPath=$(readlink -f "$(dirname "$0")") PRGDIR=$(dirname "$curPath") -docker compose -f "$SHENYU_TESTCASE_DIR"/compose/storage/shenyu-storage-opengauss.yml up -d --quiet-pull -sleep 30s +COMPOSE_FILE="$SHENYU_TESTCASE_DIR/compose/storage/shenyu-storage-opengauss.yml" -# execute healthcheck.sh -chmod +x "${curPath}"/healthcheck.sh -sh "${curPath}"/healthcheck.sh h2 http://localhost:31095/actuator/health http://localhost:31195/actuator/health +# Start services and wait for their healthchecks. +docker network create -d bridge shenyu || true +trap 'docker compose -f "$COMPOSE_FILE" down || true' EXIT +docker compose -f "$COMPOSE_FILE" up -d --quiet-pull --wait ## run e2e-test -sleep 60s ./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage -am test echo "shenyu-admin log:" echo "------------------" -docker compose -f "$SHENYU_TESTCASE_DIR"/compose/storage/shenyu-storage-opengauss.yml logs shenyu-admin +docker compose -f "$COMPOSE_FILE" logs shenyu-admin echo "shenyu-bootstrap log:" echo "------------------" -docker compose -f "$SHENYU_TESTCASE_DIR"/compose/storage/shenyu-storage-opengauss.yml logs shenyu-bootstrap +docker compose -f "$COMPOSE_FILE" logs shenyu-bootstrap diff --git a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-postgres-compose.sh b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-postgres-compose.sh index 38c7047f03cc..33cca899b3e0 100644 --- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-postgres-compose.sh +++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-postgres-compose.sh @@ -16,25 +16,26 @@ # limitations under the License. # +set -euo pipefail + # init kubernetes for h2 SHENYU_TESTCASE_DIR=$(dirname "$(dirname "$(dirname "$(dirname "$0")")")") bash "${SHENYU_TESTCASE_DIR}"/k8s/script/storage/storage_init_postgres.sh curPath=$(readlink -f "$(dirname "$0")") PRGDIR=$(dirname "$curPath") -docker compose -f "$SHENYU_TESTCASE_DIR"/compose/storage/shenyu-storage-postgres.yml up -d --quiet-pull -sleep 30s +COMPOSE_FILE="$SHENYU_TESTCASE_DIR/compose/storage/shenyu-storage-postgres.yml" -# execute healthcheck.sh -chmod +x "${curPath}"/healthcheck.sh -sh "${curPath}"/healthcheck.sh h2 http://localhost:31095/actuator/health http://localhost:31195/actuator/health +# Start services and wait for their healthchecks. +docker network create -d bridge shenyu || true +trap 'docker compose -f "$COMPOSE_FILE" down || true' EXIT +docker compose -f "$COMPOSE_FILE" up -d --quiet-pull --wait ## run e2e-test -sleep 60s ./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage -am test echo "shenyu-admin log:" echo "------------------" -docker compose -f "$SHENYU_TESTCASE_DIR"/compose/storage/shenyu-storage-postgres.yml logs shenyu-admin +docker compose -f "$COMPOSE_FILE" logs shenyu-admin echo "shenyu-bootstrap log:" echo "------------------" -docker compose -f "$SHENYU_TESTCASE_DIR"/compose/storage/shenyu-storage-postgres.yml logs shenyu-bootstrap +docker compose -f "$COMPOSE_FILE" logs shenyu-bootstrap diff --git a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-storage-compose.sh b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-storage-compose.sh index 4c1454427043..46fbf3d2d4dd 100644 --- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-storage-compose.sh +++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-storage-compose.sh @@ -16,12 +16,22 @@ # limitations under the License. # +set -euo pipefail + # init kubernetes for h2 SHENYU_TESTCASE_DIR=$(dirname "$(dirname "$(dirname "$(dirname "$0")")")") curPath=$(readlink -f "$(dirname "$0")") PRGDIR=$(dirname "$curPath") -docker network create -d bridge shenyu +docker network create -d bridge shenyu || true + +COMPOSE_FILE="" +cleanup() { + if [ -n "$COMPOSE_FILE" ]; then + docker compose -f "$COMPOSE_FILE" down || true + fi +} +trap cleanup EXIT STORAGE_ARRAY=("h2" "mysql" "opengauss" "postgres") for storage in "${STORAGE_ARRAY[@]}"; do @@ -29,21 +39,17 @@ for storage in "${STORAGE_ARRAY[@]}"; do bash "${SHENYU_TESTCASE_DIR}"/k8s/script/storage/storage_init_"${storage}".sh fi - docker compose -f "$SHENYU_TESTCASE_DIR"/compose/storage/shenyu-storage-"${storage}".yml up -d --quiet-pull - sleep 30s - - # execute healthcheck.sh - chmod +x "${curPath}"/healthcheck.sh - sh "${curPath}"/healthcheck.sh "${storage}" http://localhost:31095/actuator/health http://localhost:31195/actuator/health + COMPOSE_FILE="$SHENYU_TESTCASE_DIR/compose/storage/shenyu-storage-$storage.yml" + docker compose -f "$COMPOSE_FILE" up -d --quiet-pull --wait ## run e2e-test - sleep 60s - ./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage -am test - + echo "shenyu-admin log:" echo "------------------" - docker compose -f "$SHENYU_TESTCASE_DIR"/compose/storage/shenyu-storage-"${storage}".yml logs shenyu-admin + docker compose -f "$COMPOSE_FILE" logs shenyu-admin echo "shenyu-bootstrap log:" echo "------------------" - docker compose -f "$SHENYU_TESTCASE_DIR"/compose/storage/shenyu-storage-"${storage}".yml logs shenyu-bootstrap + docker compose -f "$COMPOSE_FILE" logs shenyu-bootstrap + docker compose -f "$COMPOSE_FILE" down + COMPOSE_FILE="" done From 8a32067c7eccbcae914383ac2e3301a96713f4d6 Mon Sep 17 00:00:00 2001 From: BobSong-dev Date: Mon, 21 Sep 2026 18:36:32 +0800 Subject: [PATCH 2/8] fix(e2e): preserve storage failure diagnostics (#6818) --- .../storage/shenyu-storage-opengauss.yml | 2 +- .../storage/shenyu-storage-postgres.yml | 2 +- .../compose/script/e2e-h2-compose.sh | 25 +++++++++++------ .../compose/script/e2e-mysql-compose.sh | 25 +++++++++++------ .../compose/script/e2e-opengauss-compose.sh | 25 +++++++++++------ .../compose/script/e2e-postgres-compose.sh | 25 +++++++++++------ .../compose/script/e2e-storage-compose.sh | 27 ++++++++++++------- 7 files changed, 88 insertions(+), 43 deletions(-) diff --git a/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml b/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml index 62c2318c1389..9f710f3642e7 100644 --- a/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml +++ b/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml @@ -26,7 +26,7 @@ services: ports: - "30432:5432" volumes: - - /tmp/shenyu-e2e/opengauss/schema/create-table.sql:/docker-entrypoint-initdb.d + - /tmp/shenyu-e2e/opengauss/schema/create-table.sql:/docker-entrypoint-initdb.d/create-table.sql deploy: resources: limits: diff --git a/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-postgres.yml b/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-postgres.yml index 357a7d884b6e..29e3e87acae0 100644 --- a/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-postgres.yml +++ b/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-postgres.yml @@ -27,7 +27,7 @@ services: ports: - "30432:5432" volumes: - - /tmp/shenyu-e2e/postgres/schema/create-table.sql:/docker-entrypoint-initdb.d + - /tmp/shenyu-e2e/postgres/schema/create-table.sql:/docker-entrypoint-initdb.d/create-table.sql healthcheck: test: [ "CMD-SHELL", "psql -U shenyue2e -h127.0.0.1 -p5432 -dshenyu -c \"SELECT 1\"" ] interval: 10s diff --git a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-h2-compose.sh b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-h2-compose.sh index 21f159689c88..6aabed43b1cc 100644 --- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-h2-compose.sh +++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-h2-compose.sh @@ -27,14 +27,23 @@ COMPOSE_FILE="$SHENYU_TESTCASE_DIR/compose/storage/shenyu-storage-h2.yml" # Start services and wait for their healthchecks. docker network create -d bridge shenyu || true trap 'docker compose -f "$COMPOSE_FILE" down || true' EXIT -docker compose -f "$COMPOSE_FILE" up -d --quiet-pull --wait +dump_logs() { + echo "shenyu-admin log:" + echo "------------------" + docker compose -f "$COMPOSE_FILE" logs shenyu-admin || true + echo "shenyu-bootstrap log:" + echo "------------------" + docker compose -f "$COMPOSE_FILE" logs shenyu-bootstrap || true +} +if ! docker compose -f "$COMPOSE_FILE" up -d --quiet-pull --wait --wait-timeout 300; then + dump_logs + exit 1 +fi ## run e2e-test -./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage -am test +if ! ./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage -am test; then + dump_logs + exit 1 +fi -echo "shenyu-admin log:" -echo "------------------" -docker compose -f "$COMPOSE_FILE" logs shenyu-admin -echo "shenyu-bootstrap log:" -echo "------------------" -docker compose -f "$COMPOSE_FILE" logs shenyu-bootstrap +dump_logs diff --git a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-mysql-compose.sh b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-mysql-compose.sh index 9f65f3246d23..cc736c5c8608 100644 --- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-mysql-compose.sh +++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-mysql-compose.sh @@ -28,14 +28,23 @@ COMPOSE_FILE="$SHENYU_TESTCASE_DIR/compose/storage/shenyu-storage-mysql.yml" # Start services and wait for their healthchecks. docker network create -d bridge shenyu || true trap 'docker compose -f "$COMPOSE_FILE" down || true' EXIT -docker compose -f "$COMPOSE_FILE" up -d --quiet-pull --wait +dump_logs() { + echo "shenyu-admin log:" + echo "------------------" + docker compose -f "$COMPOSE_FILE" logs shenyu-admin || true + echo "shenyu-bootstrap log:" + echo "------------------" + docker compose -f "$COMPOSE_FILE" logs shenyu-bootstrap || true +} +if ! docker compose -f "$COMPOSE_FILE" up -d --quiet-pull --wait --wait-timeout 300; then + dump_logs + exit 1 +fi ## run e2e-test -./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage -am test +if ! ./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage -am test; then + dump_logs + exit 1 +fi -echo "shenyu-admin log:" -echo "------------------" -docker compose -f "$COMPOSE_FILE" logs shenyu-admin -echo "shenyu-bootstrap log:" -echo "------------------" -docker compose -f "$COMPOSE_FILE" logs shenyu-bootstrap +dump_logs diff --git a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-opengauss-compose.sh b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-opengauss-compose.sh index 92893d1fb640..39c389deae7f 100644 --- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-opengauss-compose.sh +++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-opengauss-compose.sh @@ -28,14 +28,23 @@ COMPOSE_FILE="$SHENYU_TESTCASE_DIR/compose/storage/shenyu-storage-opengauss.yml" # Start services and wait for their healthchecks. docker network create -d bridge shenyu || true trap 'docker compose -f "$COMPOSE_FILE" down || true' EXIT -docker compose -f "$COMPOSE_FILE" up -d --quiet-pull --wait +dump_logs() { + echo "shenyu-admin log:" + echo "------------------" + docker compose -f "$COMPOSE_FILE" logs shenyu-admin || true + echo "shenyu-bootstrap log:" + echo "------------------" + docker compose -f "$COMPOSE_FILE" logs shenyu-bootstrap || true +} +if ! docker compose -f "$COMPOSE_FILE" up -d --quiet-pull --wait --wait-timeout 300; then + dump_logs + exit 1 +fi ## run e2e-test -./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage -am test +if ! ./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage -am test; then + dump_logs + exit 1 +fi -echo "shenyu-admin log:" -echo "------------------" -docker compose -f "$COMPOSE_FILE" logs shenyu-admin -echo "shenyu-bootstrap log:" -echo "------------------" -docker compose -f "$COMPOSE_FILE" logs shenyu-bootstrap +dump_logs diff --git a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-postgres-compose.sh b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-postgres-compose.sh index 33cca899b3e0..7bbb058152b5 100644 --- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-postgres-compose.sh +++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-postgres-compose.sh @@ -28,14 +28,23 @@ COMPOSE_FILE="$SHENYU_TESTCASE_DIR/compose/storage/shenyu-storage-postgres.yml" # Start services and wait for their healthchecks. docker network create -d bridge shenyu || true trap 'docker compose -f "$COMPOSE_FILE" down || true' EXIT -docker compose -f "$COMPOSE_FILE" up -d --quiet-pull --wait +dump_logs() { + echo "shenyu-admin log:" + echo "------------------" + docker compose -f "$COMPOSE_FILE" logs shenyu-admin || true + echo "shenyu-bootstrap log:" + echo "------------------" + docker compose -f "$COMPOSE_FILE" logs shenyu-bootstrap || true +} +if ! docker compose -f "$COMPOSE_FILE" up -d --quiet-pull --wait --wait-timeout 300; then + dump_logs + exit 1 +fi ## run e2e-test -./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage -am test +if ! ./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage -am test; then + dump_logs + exit 1 +fi -echo "shenyu-admin log:" -echo "------------------" -docker compose -f "$COMPOSE_FILE" logs shenyu-admin -echo "shenyu-bootstrap log:" -echo "------------------" -docker compose -f "$COMPOSE_FILE" logs shenyu-bootstrap +dump_logs diff --git a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-storage-compose.sh b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-storage-compose.sh index 46fbf3d2d4dd..20fa6e7c4309 100644 --- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-storage-compose.sh +++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-storage-compose.sh @@ -31,6 +31,14 @@ cleanup() { docker compose -f "$COMPOSE_FILE" down || true fi } +dump_logs() { + echo "shenyu-admin log:" + echo "------------------" + docker compose -f "$COMPOSE_FILE" logs shenyu-admin || true + echo "shenyu-bootstrap log:" + echo "------------------" + docker compose -f "$COMPOSE_FILE" logs shenyu-bootstrap || true +} trap cleanup EXIT STORAGE_ARRAY=("h2" "mysql" "opengauss" "postgres") @@ -40,16 +48,17 @@ for storage in "${STORAGE_ARRAY[@]}"; do fi COMPOSE_FILE="$SHENYU_TESTCASE_DIR/compose/storage/shenyu-storage-$storage.yml" - docker compose -f "$COMPOSE_FILE" up -d --quiet-pull --wait + if ! docker compose -f "$COMPOSE_FILE" up -d --quiet-pull --wait --wait-timeout 300; then + dump_logs + exit 1 + fi ## run e2e-test - ./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage -am test + if ! ./mvnw -B -f ./shenyu-e2e/pom.xml -pl shenyu-e2e-case/shenyu-e2e-case-storage -am test; then + dump_logs + exit 1 + fi - echo "shenyu-admin log:" - echo "------------------" - docker compose -f "$COMPOSE_FILE" logs shenyu-admin - echo "shenyu-bootstrap log:" - echo "------------------" - docker compose -f "$COMPOSE_FILE" logs shenyu-bootstrap - docker compose -f "$COMPOSE_FILE" down + dump_logs + docker compose -f "$COMPOSE_FILE" down || true COMPOSE_FILE="" done From b12e7dc197bea4d0a36d73c78a7d236d1d05ea27 Mon Sep 17 00:00:00 2001 From: BobSong-dev Date: Mon, 21 Sep 2026 19:21:47 +0800 Subject: [PATCH 3/8] fix(e2e): stabilize storage compose checks (#6818) --- .github/scripts/resolve-ci-modules.sh | 22 ++++++++++++++++++- .../storage/shenyu-storage-opengauss.yml | 2 +- .../compose/script/e2e-mysql-compose.sh | 3 +++ .../compose/script/e2e-opengauss-compose.sh | 3 +++ .../compose/script/e2e-postgres-compose.sh | 3 +++ .../compose/script/e2e-storage-compose.sh | 7 ++---- 6 files changed, 33 insertions(+), 7 deletions(-) diff --git a/.github/scripts/resolve-ci-modules.sh b/.github/scripts/resolve-ci-modules.sh index 5c505bc9b0c6..9b41d5ff4e5b 100644 --- a/.github/scripts/resolve-ci-modules.sh +++ b/.github/scripts/resolve-ci-modules.sh @@ -41,9 +41,24 @@ add_module() { modules+=("${module}") } +is_root_reactor_module() { + local module="$1" + local candidate="${module}" + + while [[ "${candidate}" == */* ]]; do + if grep -Fq "${candidate}" pom.xml; then + return 0 + fi + candidate="${candidate%/*}" + done + + grep -Fq "${candidate}" pom.xml +} + find_module() { local path="$1" local dir + local module if [[ -d "${path}" ]]; then dir="${path}" @@ -53,7 +68,10 @@ find_module() { while [[ "${dir}" != "." && "${dir}" != "/" ]]; do if [[ -f "${dir}/pom.xml" ]]; then - printf '%s\n' "${dir#./}" + module="${dir#./}" + if is_root_reactor_module "${module}"; then + printf '%s\n' "${module}" + fi return fi dir="$(dirname "${dir}")" @@ -95,6 +113,8 @@ while IFS= read -r file; do module="$(find_module "${file}")" if [[ -n "${module:-}" ]]; then add_module "${module}" + else + full_build_required=true fi fi done < <(printf '%s' "${changed_files_json}" | jq -r '.[]') diff --git a/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml b/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml index 9f710f3642e7..85bea1d38713 100644 --- a/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml +++ b/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml @@ -36,7 +36,7 @@ services: cpus: '0.5' memory: 512M healthcheck: - test: [ "CMD-SHELL", "gsql -U gaussdb -h127.0.0.1 -p5432 -dshenyu -WShenYuE2E@123 -c \"SELECT 1\"" ] + test: [ "CMD-SHELL", "gsql -U gaussdb -h 127.0.0.1 -p 5432 -d shenyu -c \"SELECT 1\"" ] interval: 10s timeout: 5s retries: 3 diff --git a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-mysql-compose.sh b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-mysql-compose.sh index cc736c5c8608..c1f95f952653 100644 --- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-mysql-compose.sh +++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-mysql-compose.sh @@ -29,6 +29,9 @@ COMPOSE_FILE="$SHENYU_TESTCASE_DIR/compose/storage/shenyu-storage-mysql.yml" docker network create -d bridge shenyu || true trap 'docker compose -f "$COMPOSE_FILE" down || true' EXIT dump_logs() { + echo "shenyu-mysql log:" + echo "------------------" + docker compose -f "$COMPOSE_FILE" logs shenyu-mysql || true echo "shenyu-admin log:" echo "------------------" docker compose -f "$COMPOSE_FILE" logs shenyu-admin || true diff --git a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-opengauss-compose.sh b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-opengauss-compose.sh index 39c389deae7f..f47b30ad1c8e 100644 --- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-opengauss-compose.sh +++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-opengauss-compose.sh @@ -29,6 +29,9 @@ COMPOSE_FILE="$SHENYU_TESTCASE_DIR/compose/storage/shenyu-storage-opengauss.yml" docker network create -d bridge shenyu || true trap 'docker compose -f "$COMPOSE_FILE" down || true' EXIT dump_logs() { + echo "shenyu-opengauss log:" + echo "------------------" + docker compose -f "$COMPOSE_FILE" logs shenyu-opengauss || true echo "shenyu-admin log:" echo "------------------" docker compose -f "$COMPOSE_FILE" logs shenyu-admin || true diff --git a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-postgres-compose.sh b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-postgres-compose.sh index 7bbb058152b5..a5fbdb49c9a5 100644 --- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-postgres-compose.sh +++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-postgres-compose.sh @@ -29,6 +29,9 @@ COMPOSE_FILE="$SHENYU_TESTCASE_DIR/compose/storage/shenyu-storage-postgres.yml" docker network create -d bridge shenyu || true trap 'docker compose -f "$COMPOSE_FILE" down || true' EXIT dump_logs() { + echo "shenyu-postgres log:" + echo "------------------" + docker compose -f "$COMPOSE_FILE" logs shenyu-postgres || true echo "shenyu-admin log:" echo "------------------" docker compose -f "$COMPOSE_FILE" logs shenyu-admin || true diff --git a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-storage-compose.sh b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-storage-compose.sh index 20fa6e7c4309..517a4f773614 100644 --- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-storage-compose.sh +++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-storage-compose.sh @@ -32,12 +32,9 @@ cleanup() { fi } dump_logs() { - echo "shenyu-admin log:" + echo "compose service logs:" echo "------------------" - docker compose -f "$COMPOSE_FILE" logs shenyu-admin || true - echo "shenyu-bootstrap log:" - echo "------------------" - docker compose -f "$COMPOSE_FILE" logs shenyu-bootstrap || true + docker compose -f "$COMPOSE_FILE" logs || true } trap cleanup EXIT From f0ac622498d4b9e3a2ba3d225d54e77e5ab2dcd7 Mon Sep 17 00:00:00 2001 From: BobSong-dev Date: Mon, 21 Sep 2026 19:53:37 +0800 Subject: [PATCH 4/8] fix(e2e): allocate enough memory for OpenGauss (#6818) --- .../compose/storage/shenyu-storage-opengauss.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml b/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml index 85bea1d38713..5670d1875508 100644 --- a/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml +++ b/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml @@ -31,10 +31,10 @@ services: resources: limits: cpus: '1' - memory: 768M + memory: 4G reservations: cpus: '0.5' - memory: 512M + memory: 2G healthcheck: test: [ "CMD-SHELL", "gsql -U gaussdb -h 127.0.0.1 -p 5432 -d shenyu -c \"SELECT 1\"" ] interval: 10s From b3f99aaa7717d091d29540f16bb1415013d54b69 Mon Sep 17 00:00:00 2001 From: BobSong-dev Date: Tue, 22 Sep 2026 09:26:30 +0800 Subject: [PATCH 5/8] fix(e2e): use OpenGauss Lite in storage tests (#6818) --- .../compose/storage/shenyu-storage-opengauss.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml b/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml index 5670d1875508..641e582e3597 100644 --- a/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml +++ b/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml @@ -18,7 +18,7 @@ version: '3.9' services: shenyu-opengauss: - image: enmotech/opengauss:5.0.0 + image: enmotech/opengauss-lite:5.0.1 container_name: shenyu-opengauss environment: - GS_PASSWORD=ShenYuE2E@123 @@ -31,10 +31,10 @@ services: resources: limits: cpus: '1' - memory: 4G + memory: 768M reservations: cpus: '0.5' - memory: 2G + memory: 512M healthcheck: test: [ "CMD-SHELL", "gsql -U gaussdb -h 127.0.0.1 -p 5432 -d shenyu -c \"SELECT 1\"" ] interval: 10s From 69007b1822489d0e62a47c8bc36d8847c6c18726 Mon Sep 17 00:00:00 2001 From: BobSong-dev Date: Tue, 22 Sep 2026 09:36:42 +0800 Subject: [PATCH 6/8] fix(e2e): authenticate OpenGauss health probe (#6818) --- .../compose/storage/shenyu-storage-opengauss.yml | 2 +- .../compose/script/e2e-opengauss-compose.sh | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml b/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml index 641e582e3597..25c1ef31cb7b 100644 --- a/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml +++ b/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml @@ -36,7 +36,7 @@ services: cpus: '0.5' memory: 512M healthcheck: - test: [ "CMD-SHELL", "gsql -U gaussdb -h 127.0.0.1 -p 5432 -d shenyu -c \"SELECT 1\"" ] + test: [ "CMD-SHELL", "PGPASSWORD=$$GS_PASSWORD gsql -U gaussdb -h 127.0.0.1 -p 5432 -d shenyu -c \"SELECT 1\"" ] interval: 10s timeout: 5s retries: 3 diff --git a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-opengauss-compose.sh b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-opengauss-compose.sh index f47b30ad1c8e..32d9c1a9ca9d 100644 --- a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-opengauss-compose.sh +++ b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-storage/compose/script/e2e-opengauss-compose.sh @@ -32,6 +32,7 @@ dump_logs() { echo "shenyu-opengauss log:" echo "------------------" docker compose -f "$COMPOSE_FILE" logs shenyu-opengauss || true + docker inspect --format '{{range .State.Health.Log}}{{println .ExitCode .Output}}{{end}}' shenyu-opengauss || true echo "shenyu-admin log:" echo "------------------" docker compose -f "$COMPOSE_FILE" logs shenyu-admin || true From 47a3b3bfff5db093d9ab6182911739f3b869b2e2 Mon Sep 17 00:00:00 2001 From: BobSong-dev Date: Tue, 22 Sep 2026 09:48:16 +0800 Subject: [PATCH 7/8] fix(e2e): resolve OpenGauss probe executable (#6818) --- .../compose/storage/shenyu-storage-opengauss.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml b/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml index 25c1ef31cb7b..e196cb1a7681 100644 --- a/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml +++ b/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml @@ -36,7 +36,7 @@ services: cpus: '0.5' memory: 512M healthcheck: - test: [ "CMD-SHELL", "PGPASSWORD=$$GS_PASSWORD gsql -U gaussdb -h 127.0.0.1 -p 5432 -d shenyu -c \"SELECT 1\"" ] + test: [ "CMD-SHELL", "LD_LIBRARY_PATH=/usr/local/opengauss/lib PGPASSWORD=$$GS_PASSWORD /usr/local/opengauss/bin/gsql -U gaussdb -h 127.0.0.1 -p 5432 -d shenyu -c \"SELECT 1\"" ] interval: 10s timeout: 5s retries: 3 From e42270f2981372d71ea4015022f506a2fe109c73 Mon Sep 17 00:00:00 2001 From: BobSong-dev Date: Tue, 22 Sep 2026 09:59:39 +0800 Subject: [PATCH 8/8] fix(e2e): pass OpenGauss probe password to gsql (#6818) --- .../compose/storage/shenyu-storage-opengauss.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml b/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml index e196cb1a7681..d0c3b6622836 100644 --- a/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml +++ b/shenyu-e2e/shenyu-e2e-case/compose/storage/shenyu-storage-opengauss.yml @@ -36,7 +36,7 @@ services: cpus: '0.5' memory: 512M healthcheck: - test: [ "CMD-SHELL", "LD_LIBRARY_PATH=/usr/local/opengauss/lib PGPASSWORD=$$GS_PASSWORD /usr/local/opengauss/bin/gsql -U gaussdb -h 127.0.0.1 -p 5432 -d shenyu -c \"SELECT 1\"" ] + test: [ "CMD-SHELL", "LD_LIBRARY_PATH=/usr/local/opengauss/lib /usr/local/opengauss/bin/gsql -U gaussdb --password $$GS_PASSWORD -h 127.0.0.1 -p 5432 -d shenyu -c \"SELECT 1\"" ] interval: 10s timeout: 5s retries: 3