This is an automated email from the ASF dual-hosted git repository.
yuluo-yx pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new e3c397f2be ci: replace long E2E waits with readiness checks (#7341)
e3c397f2be is described below
commit e3c397f2bec6719c3192f0e7a8c741401611673b
Author: aias00 <[email protected]>
AuthorDate: Mon Sep 28 05:59:57 2026 -0700
ci: replace long E2E waits with readiness checks (#7341)
* ci: replace fixed E2E waits with readiness checks
* ci: accept one registered Spring Cloud application
* ci: retain E2E config stabilization window
---
.../compose/script/e2e-apache-dubbo-sync-compose.sh | 2 --
.../compose/script/e2e-grpc-sync-compose.sh | 2 --
.../compose/script/e2e-logging-rocketmq-compose.sh | 21 +++++++++++++++++++--
.../compose/script/e2e-springcloud-sync-compose.sh | 20 ++++++++++++--------
.../compose/script/e2e-websocket-sync-compose.sh | 2 --
5 files changed, 31 insertions(+), 16 deletions(-)
diff --git
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-apache-dubbo/compose/script/e2e-apache-dubbo-sync-compose.sh
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-apache-dubbo/compose/script/e2e-apache-dubbo-sync-compose.sh
index c11c86b16f..24315f02e4 100644
---
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-apache-dubbo/compose/script/e2e-apache-dubbo-sync-compose.sh
+++
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-apache-dubbo/compose/script/e2e-apache-dubbo-sync-compose.sh
@@ -34,11 +34,9 @@ for sync in "${SYNC_ARRAY[@]}"; do
echo -e "------------------\n"
echo "[Start ${sync} synchronous] create shenyu-admin-${sync}.yml
shenyu-bootstrap-${sync}.yml "
docker compose -f
"$SHENYU_TESTCASE_DIR"/compose/sync/shenyu-sync-"${sync}".yml up -d --quiet-pull
- sleep 30s
sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh
http://localhost:31095/actuator/health
sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh
http://localhost:31195/actuator/health
docker compose -f "${PRGDIR}"/shenyu-examples-dubbo-compose.yml up -d
--quiet-pull
- sleep 30s
sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh
http://localhost:31187/actuator/health
sleep 10s
docker ps -a
diff --git
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-grpc/compose/script/e2e-grpc-sync-compose.sh
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-grpc/compose/script/e2e-grpc-sync-compose.sh
index 4b0fde910e..c81fd62a4c 100644
---
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-grpc/compose/script/e2e-grpc-sync-compose.sh
+++
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-grpc/compose/script/e2e-grpc-sync-compose.sh
@@ -34,11 +34,9 @@ for sync in "${SYNC_ARRAY[@]}"; do
echo -e "------------------\n"
echo "[Start ${sync} synchronous] create shenyu-admin-${sync}.yml
shenyu-bootstrap-${sync}.yml "
docker compose -f
"$SHENYU_TESTCASE_DIR"/compose/sync/shenyu-sync-"${sync}".yml up -d --quiet-pull
- sleep 30s
sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh
http://localhost:31095/actuator/health
sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh
http://localhost:31195/actuator/health
docker compose -f "${PRGDIR}"/shenyu-examples-grpc-compose.yml up -d
--quiet-pull
- sleep 30s
sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh
http://localhost:30290/actuator/health
sleep 10s
docker ps -a
diff --git
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-logging-rocketmq/compose/script/e2e-logging-rocketmq-compose.sh
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-logging-rocketmq/compose/script/e2e-logging-rocketmq-compose.sh
index 1967c16f0d..4620d9b73f 100644
---
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-logging-rocketmq/compose/script/e2e-logging-rocketmq-compose.sh
+++
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-logging-rocketmq/compose/script/e2e-logging-rocketmq-compose.sh
@@ -28,6 +28,23 @@ SYNC_ARRAY=("websocket" "http" "zookeeper")
#SYNC_ARRAY=("websocket" "nacos")
#MIDDLEWARE_SYNC_ARRAY=("zookeeper" "etcd" "nacos")
+wait_for_port() {
+ local host="$1"
+ local port="$2"
+
+ for attempt in $(seq 1 30); do
+ if (echo >"/dev/tcp/${host}/${port}") 2>/dev/null; then
+ echo "${host}:${port} is ready"
+ return 0
+ fi
+ echo "${attempt} waiting for ${host}:${port}"
+ sleep 2
+ done
+
+ echo "Timed out waiting for ${host}:${port}"
+ return 1
+}
+
docker network create -d bridge shenyu
for sync in "${SYNC_ARRAY[@]}"; do
@@ -35,13 +52,13 @@ for sync in "${SYNC_ARRAY[@]}"; do
echo -e "------------------\n"
echo "[Start ${sync} synchronous] create shenyu-admin-${sync}.yml
shenyu-bootstrap-${sync}.yml "
docker compose -f "${sync_compose_file}" up -d --quiet-pull || true
- sleep 30s
sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh
http://localhost:31095/actuator/health || exit 1
docker compose -f "${sync_compose_file}" up -d shenyu-bootstrap
sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh
http://localhost:31195/actuator/health || exit 1
docker compose -f "${PRGDIR}"/shenyu-rocketmq-compose.yml up -d --quiet-pull
+ wait_for_port localhost 31876 || exit 1
+ wait_for_port localhost 10911 || exit 1
docker compose -f "${PRGDIR}"/shenyu-examples-http-compose.yml up -d
--quiet-pull
- sleep 30s
sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh
http://localhost:31189/actuator/health || exit 1
sleep 10s
docker ps -a
diff --git
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/compose/script/e2e-springcloud-sync-compose.sh
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/compose/script/e2e-springcloud-sync-compose.sh
index bfa5032fd6..7fc9332332 100644
---
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/compose/script/e2e-springcloud-sync-compose.sh
+++
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-spring-cloud/compose/script/e2e-springcloud-sync-compose.sh
@@ -39,22 +39,26 @@ for sync in "${SYNC_ARRAY[@]}"; do
docker compose -f "$SYNC_COMPOSE_FILE" up -d --quiet-pull shenyu-bootstrap
|| exit 1
sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh
http://localhost:31195/actuator/health || exit 1
docker compose -f "${PRGDIR}"/shenyu-examples-springcloud-compose.yml up -d
--quiet-pull || exit 1
- sleep 30s
sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh
http://localhost:30884/actuator/health || exit 1
- sleep 10s
docker ps -a
- for loop in `seq 1 30`
- do
- app_count=$(curl -s -X GET http://localhost:30761/eureka/apps | grep
"<application>" | wc -l | xargs)
+ registered=false
+ for _ in $(seq 1 30); do
+ app_count=$(curl -s http://localhost:30761/eureka/apps | grep -c
"<application>" || true)
echo "http://localhost:30761/eureka/apps app count ${app_count}"
- if [ $app_count -gt 1 ]; then
- break
+ if [[ "${app_count}" -gt 0 ]]; then
+ registered=true
+ break
fi
sleep 2
done
- sleep 30s
+ if [[ "${registered}" != "true" ]]; then
+ echo "Timed out waiting for applications to register with Eureka"
+ exit 1
+ fi
+
+ sleep 10s
## run e2e-test
./mvnw -B -f ./shenyu-e2e/pom.xml -pl
shenyu-e2e-case/shenyu-e2e-case-spring-cloud -am test
# shellcheck disable=SC2181
diff --git
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-websocket/compose/script/e2e-websocket-sync-compose.sh
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-websocket/compose/script/e2e-websocket-sync-compose.sh
index 0ec654ff3a..c62867814c 100644
---
a/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-websocket/compose/script/e2e-websocket-sync-compose.sh
+++
b/shenyu-e2e/shenyu-e2e-case/shenyu-e2e-case-websocket/compose/script/e2e-websocket-sync-compose.sh
@@ -34,11 +34,9 @@ for sync in "${SYNC_ARRAY[@]}"; do
echo -e "------------------\n"
echo "[Start ${sync} synchronous] create shenyu-admin-${sync}.yml
shenyu-bootstrap-${sync}.yml "
docker compose -f
"$SHENYU_TESTCASE_DIR"/compose/sync/shenyu-sync-"${sync}".yml up -d --quiet-pull
- sleep 30s
sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh
http://localhost:31095/actuator/health
sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh
http://localhost:31195/actuator/health
docker compose -f "${PRGDIR}"/shenyu-examples-websocket-compose.yml up -d
--quiet-pull
- sleep 30s
sh "$SHENYU_TESTCASE_DIR"/k8s/script/healthcheck.sh
http://localhost:31191/actuator/health
sleep 10s
docker ps -a