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

Reply via email to