This is an automated email from the ASF dual-hosted git repository.
xuetaoli pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/dubbo-go-samples.git
The following commit(s) were added to refs/heads/main by this push:
new 77cc7ed4 update: update health check mek (#1039)
77cc7ed4 is described below
commit 77cc7ed4f4081b01ebed2fd844406c9858326f93
Author: Xuetao Li <[email protected]>
AuthorDate: Wed Feb 25 11:33:54 2026 +0800
update: update health check mek (#1039)
* chore: squash update_health_check branch changes
---
Makefile | 62 -------
compatibility/generic/default/java-client/run.sh | 2 +-
compatibility/generic/default/java-server/run.sh | 2 +-
docker-compose.yml | 81 +++++++---
docker-health-check.sh | 53 ------
generic/java-client/java-client/run.sh | 2 +-
generic/java-server/java-server/run.sh | 2 +-
http3/java-client/run.sh | 2 +-
http3/java-server/run.sh | 2 +-
integrate_test.sh | 178 +++++++++++----------
java_interop/non-protobuf-dubbo/java-client/run.sh | 2 +-
java_interop/non-protobuf-dubbo/java-server/run.sh | 2 +-
.../non-protobuf-triple/java-client/run.sh | 2 +-
.../non-protobuf-triple/java-server/run.sh | 2 +-
java_interop/protobuf-triple/java-client/run.sh | 2 +-
java_interop/protobuf-triple/java-server/run.sh | 2 +-
.../service_discovery/interface/java-client/run.sh | 2 +-
.../service_discovery/interface/java-server/run.sh | 2 +-
.../service_discovery/service/java-client/run.sh | 2 +-
.../service_discovery/service/java-server/run.sh | 2 +-
start_integrate_test.sh | 6 +-
streaming/java-client/run.sh | 4 +-
streaming/java-server/run.sh | 4 +-
23 files changed, 169 insertions(+), 251 deletions(-)
diff --git a/Makefile b/Makefile
index 993ffee2..1ea0ebc4 100644
--- a/Makefile
+++ b/Makefile
@@ -17,24 +17,13 @@ PROJECT_DIR ?= $(CURDIR)
PROJECT_NAME ?= $(notdir $(abspath $(PROJECT_DIR)))
PID = /tmp/.$(PROJECT_NAME).pid
BASE_DIR := $(PROJECT_DIR)/go-server/dist
-DOCKER_DIR := ./integrate_test/dockercompose
SOURCES = $(wildcard $(PROJECT_DIR)/go-server/cmd/*.go)
GO ?= go
-GO_PATH = $(shell $(GO) env GOPATH)
-GO_OS = $(shell $(GO) env GOOS)
-ifeq ($(GO_OS), darwin)
- GO_OS = mac
-endif
# shell
SHELL = /bin/bash
-# license
-GO_LICENSE_CHECKER_DIR = license-header-checker-$(GO_OS)
-GO_LICENSE_CHECKER = $(GO_PATH)/bin/license-header-checker
-LICENSE_DIR = /tmp/tools/license
-
export GO111MODULE ?= on
export GOSUMDB ?= sum.golang.org
export GOARCH ?= amd64
@@ -65,24 +54,11 @@ else
LDFLAGS := "-s -w"
endif
-DOCKER_COMPOSE_CMD := docker-compose
-ifeq ($(shell docker compose version > /dev/null; echo $$?), 0)
- DOCKER_COMPOSE_CMD := docker compose
-endif
-
OUT_DIR := $(BASE_DIR)/$(GOOS)_$(GOARCH)/$(BUILD_TYPE)
LOG_FILE := $(OUT_DIR)/$(PROJECT_NAME).log
export APP_LOG_CONF_FILE ?= $(OUT_DIR)/conf/log.yml
-.PHONY: license
-license:
- rm -rf coverage.txt
- rm -rf license-header-checker*
- $(GO_LICENSE_CHECKER) -version || (wget
https://github.com/lsm-dev/license-header-checker/releases/download/v1.2.0/$(GO_LICENSE_CHECKER_DIR).zip
-O $(GO_LICENSE_CHECKER_DIR).zip && unzip -o $(GO_LICENSE_CHECKER_DIR).zip &&
mkdir -p $(GO_PATH)/bin/ && cp
$(GO_LICENSE_CHECKER_DIR)/64bit/license-header-checker $(GO_PATH)/bin/)
- ls /tmp/tools/license/license.txt || wget -P $(LICENSE_DIR)
https://github.com/dubbogo/resources/raw/master/tools/license/license.txt
- $(GO_LICENSE_CHECKER) -v -a -r -i vendor $(LICENSE_DIR)/license.txt .
go && [[ -z `git status -s` ]]
-
.PHONY: all
all: help
.DEFAULT_GOAL := help
@@ -102,31 +78,6 @@ $(OUT_DIR)/$(PROJECT_NAME)$(EXT_NAME): $(SOURCES)
@mkdir -p $(OUT_DIR)
@CGO_ENABLED=$(CGO) GOOS=$(GOOS) GOARCH=$(GOARCH) $(GO) build
$(GCFLAGS) -ldflags=$(LDFLAGS) -o $(OUT_DIR)/$(PROJECT_NAME)$(EXT_NAME)
$(SOURCES)
-## docker-health-check: check services health on docker
-.PHONY: docker-health-check
-docker-health-check:
- $(info > run docker health check)
- @-test -f $(PROJECT_DIR)/docker-health-check.sh && bash -f
$(PROJECT_DIR)/docker-health-check.sh
-
-## docker-up: Shutdown dependency services on docker
-.PHONY: docker-up
-docker-up:
- $(info > Starting dependency services with
$(DOCKER_DIR)/docker-compose.yml)
- @$(DOCKER_COMPOSE_CMD) -f $(DOCKER_DIR)/docker-compose.yml up -d
-
-## docker-down: Shutdown dependency services on docker
-.PHONY: docker-down
-docker-down:
- $(info > Stopping dependency services with
$(DOCKER_DIR)/docker-compose.yml)
- @$(DOCKER_COMPOSE_CMD) -f $(DOCKER_DIR)/docker-compose.yml down
-
-## clean: Clean up the output and the binary of the application
-.PHONY: clean
-clean: stop
- $(info > Cleaning up $(OUT_DIR))
- @-rm -rf $(OUT_DIR)
- @-rm -f $(PID)
-
## start: Start the application (for server)
.PHONY: start
start: export DUBBO_GO_CONFIG_PATH ?= $(PROJECT_DIR)/go-server/conf/dubbogo.yml
@@ -139,19 +90,6 @@ start: build
@-cd $(PROJECT_DIR) && $(OUT_DIR)/$(PROJECT_NAME)$(EXT_NAME) >
$(LOG_FILE) 2>&1 & echo $$! > $(PID)
@sed 's/^/ \> PID: /' $(PID)
-## print-server-log: print application log (for server)
-.PHONY: print-server-log
-print-server-log:
- $(info > print server log with $(LOG_FILE))
- @-test -f $(LOG_FILE) && cat $(LOG_FILE) || true
-
-## run: Run the application (for client)
-.PHONY: run
-run: build
- $(info > Running application $(PROJECT_NAME), output is redirected
to $(LOG_FILE))
- @mkdir -p $(OUT_DIR)
- @-cd $(PROJECT_DIR) && $(OUT_DIR)/$(PROJECT_NAME)$(EXT_NAME) 2>&1 | tee
$(LOG_FILE)
-
## stop: Stop running the application (for server)
.PHONY: stop
stop:
diff --git a/compatibility/generic/default/java-client/run.sh
b/compatibility/generic/default/java-client/run.sh
index 712bf57c..e3651a06 100755
--- a/compatibility/generic/default/java-client/run.sh
+++ b/compatibility/generic/default/java-client/run.sh
@@ -1 +1 @@
-mvn -e clean compile exec:java
-Dexec.mainClass="org.apache.dubbo.samples.ApiConsumer"
\ No newline at end of file
+mvn -q -e clean compile exec:java
-Dexec.mainClass="org.apache.dubbo.samples.ApiConsumer"
\ No newline at end of file
diff --git a/compatibility/generic/default/java-server/run.sh
b/compatibility/generic/default/java-server/run.sh
index e2b4e7e7..b96d7d84 100755
--- a/compatibility/generic/default/java-server/run.sh
+++ b/compatibility/generic/default/java-server/run.sh
@@ -1 +1 @@
-mvn -e clean compile exec:java
-Dexec.mainClass="org.apache.dubbo.samples.ApiProvider"
\ No newline at end of file
+mvn -q -e clean compile exec:java
-Dexec.mainClass="org.apache.dubbo.samples.ApiProvider"
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
index 11bbf48d..6cb37d78 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,52 +1,83 @@
# services config in one docker-compose file for integrate test
-# integrate test will start up services and samples test will depend on those
containers
services:
zookeeper:
- image: zookeeper:3.8.4
+ image: zookeeper:3.9.4
ports:
- "2181:2181"
- restart: on-failure
+ healthcheck:
+ test: ["CMD", "nc", "-z", "localhost", "2181"]
+ interval: 5s
+ timeout: 3s
+ retries: 10
+ start_period: 10s
+ restart: unless-stopped
+ networks: [itnet]
nacos:
- image: nacos/nacos-server:v2.1.2-slim
- container_name: nacos-standalone
+ image: nacos/nacos-server:v2.5.2
environment:
- - PREFER_HOST_MODE=hostname
- - MODE=standalone
+ PREFER_HOST_MODE: hostname
+ MODE: standalone
ports:
- "8848:8848"
- "9848:9848"
+ - "9849:9849"
healthcheck:
- test: "curl --fail
http://127.0.0.1:8848/nacos/v1/console/health/liveness || exit 1"
- interval: 5s
+ test: [ "CMD", "curl", "-fsS",
"http://localhost:8848/nacos/v1/console/health/liveness" ]
+ interval: 7s
+ timeout: 5s
+ retries: 10
+ start_period: 30s
+ restart: unless-stopped
+ networks: [itnet]
polaris:
- image: polarismesh/polaris-standalone:latest
- container_name: polaris-standalone
+ image: polarismesh/polaris-standalone:v1.17.2
privileged: true
ports:
- "8090:8090"
- "8091:8091"
- "8093:8093"
healthcheck:
- test: "curl --fail http://127.0.0.1:8090 || exit 1"
+ test: [ "CMD", "curl", "-fsS", "http://localhost:8090/" ]
interval: 5s
+ timeout: 3s
+ retries: 10
+ start_period: 20s
+ restart: unless-stopped
+ networks: [itnet]
etcd:
- image: "quay.io/coreos/etcd:v3.4.28"
- container_name: etcd
+ image: quay.io/coreos/etcd:v3.4.28
environment:
- - ETCDCTL_API=3
- command: [
- "etcd",
- "--name=etcd0",
- "--advertise-client-urls=http://127.0.0.1:2379",
- "--listen-client-urls=http://0.0.0.0:2379",
- "--initial-advertise-peer-urls=http://127.0.0.1:2380",
- "--listen-peer-urls=http://0.0.0.0:2380",
- "--initial-cluster=etcd0=http://127.0.0.1:2380",
- ]
+ ETCDCTL_API: "3"
+ command:
+ - etcd
+ - --name=etcd0
+ - --data-dir=/etcd-data
+ - --listen-client-urls=http://0.0.0.0:2379
+ - --advertise-client-urls=http://etcd:2379
+ - --listen-peer-urls=http://0.0.0.0:2380
+ - --initial-advertise-peer-urls=http://etcd:2380
+ - --initial-cluster=etcd0=http://etcd:2380
+ - --initial-cluster-state=new
ports:
- "2379:2379"
- "2380:2380"
- restart: always
+ volumes:
+ - etcd-data:/etcd-data
+ healthcheck:
+ test: [ "CMD", "etcdctl", "--endpoints=http://localhost:2379",
"endpoint", "health" ]
+ interval: 5s
+ timeout: 3s
+ retries: 10
+ start_period: 10s
+ restart: unless-stopped
+ networks: [itnet]
+
+networks:
+ itnet:
+ name: itnet
+
+volumes:
+ etcd-data:
diff --git a/docker-health-check.sh b/docker-health-check.sh
deleted file mode 100644
index b0671f99..00000000
--- a/docker-health-check.sh
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/bash
-
-set -euo pipefail
-
-retry() {
- local name="$1"
- local attempts="$2"
- local interval="$3"
- shift 3
-
- local i
- for ((i = 1; i <= attempts; i++)); do
- if "$@"; then
- echo "[health-check] $name is ready"
- return 0
- fi
- echo "[health-check] waiting for $name ($i/$attempts)..."
- sleep "$interval"
- done
-
- echo "[health-check] $name is not ready after $attempts attempts"
- return 1
-}
-
-check_zookeeper() {
- # zookeeper 2181 is not HTTP; "empty reply" also indicates port is open.
- curl -sS --max-time 2 127.0.0.1:2181 >/dev/null 2>&1
- local code=$?
- [ "$code" -eq 0 ] || [ "$code" -eq 52 ]
-}
-
-check_nacos() {
- curl -fsS --max-time 3
http://127.0.0.1:8848/nacos/v1/console/health/liveness >/dev/null
-}
-
-check_nacos_grpc() {
- # Nacos 2.x gRPC port.
- timeout 2 bash -c 'cat < /dev/null > /dev/tcp/127.0.0.1/9848' >/dev/null 2>&1
-}
-
-check_polaris() {
- curl -fsS --max-time 3 http://127.0.0.1:8090 >/dev/null
-}
-
-check_etcd() {
- curl -fsS --max-time 3 http://127.0.0.1:2379/health >/dev/null
-}
-
-retry "zookeeper" 24 5 check_zookeeper
-retry "nacos" 24 5 check_nacos
-retry "nacos-grpc-9848" 24 5 check_nacos_grpc
-retry "polaris" 24 5 check_polaris
-retry "etcd" 24 5 check_etcd
diff --git a/generic/java-client/java-client/run.sh
b/generic/java-client/java-client/run.sh
index 175f47b2..2884ca0c 100755
--- a/generic/java-client/java-client/run.sh
+++ b/generic/java-client/java-client/run.sh
@@ -1 +1 @@
-mvn -e clean package && java -jar
target/generic-dubbo-java-client-1.0-SNAPSHOT.jar
\ No newline at end of file
+mvn -q -e clean package && java -jar
target/generic-dubbo-java-client-1.0-SNAPSHOT.jar
\ No newline at end of file
diff --git a/generic/java-server/java-server/run.sh
b/generic/java-server/java-server/run.sh
index a50c1e5e..0fa16c68 100755
--- a/generic/java-server/java-server/run.sh
+++ b/generic/java-server/java-server/run.sh
@@ -1 +1 @@
-mvn -e clean package && java -jar
target/generic-dubbo-java-server-1.0-SNAPSHOT.jar
\ No newline at end of file
+mvn -q -e clean package && java -jar
target/generic-dubbo-java-server-1.0-SNAPSHOT.jar
\ No newline at end of file
diff --git a/http3/java-client/run.sh b/http3/java-client/run.sh
index 03dd6291..5853923b 100755
--- a/http3/java-client/run.sh
+++ b/http3/java-client/run.sh
@@ -1,4 +1,4 @@
#!/bin/bash
cd "$(dirname "$0")"
-mvn compile exec:java
-Dexec.mainClass="org.apache.dubbo.samples.h3.H3ClientApp"
+mvn -q compile exec:java
-Dexec.mainClass="org.apache.dubbo.samples.h3.H3ClientApp"
diff --git a/http3/java-server/run.sh b/http3/java-server/run.sh
index 09c95185..32db0c49 100755
--- a/http3/java-server/run.sh
+++ b/http3/java-server/run.sh
@@ -1,4 +1,4 @@
#!/bin/bash
cd "$(dirname "$0")"
-mvn compile exec:java
-Dexec.mainClass="org.apache.dubbo.samples.h3.H3ServerApp"
+mvn -q compile exec:java
-Dexec.mainClass="org.apache.dubbo.samples.h3.H3ServerApp"
diff --git a/integrate_test.sh b/integrate_test.sh
index 8462f87d..3a507488 100755
--- a/integrate_test.sh
+++ b/integrate_test.sh
@@ -28,47 +28,57 @@ P_DIR="$(pwd)/$SAMPLE"
PROJECT_NAME="$(basename "$P_DIR")"
GO_SERVER_LOG="/tmp/.${PROJECT_NAME}.go-server.log"
JAVA_SERVER_LOG="/tmp/.${PROJECT_NAME}.java-server.log"
+PID_FILE="/tmp/.${PROJECT_NAME}.pid"
+GO_CLIENT_TIMEOUT_SECONDS="${GO_CLIENT_TIMEOUT_SECONDS:-90}"
+JAVA_SERVER_READY_TIMEOUT_SECONDS="${JAVA_SERVER_READY_TIMEOUT_SECONDS:-60}"
+JAVA_SERVER_HOST="${JAVA_SERVER_HOST:-127.0.0.1}"
+JAVA_SERVER_PORT="${JAVA_SERVER_PORT:-20000}"
if [ ! -d "$P_DIR" ]; then
echo "Sample directory not found: $P_DIR"
exit 1
fi
+MAKE_CMD=(make PROJECT_DIR="$P_DIR" PROJECT_NAME="$PROJECT_NAME" -f Makefile)
JAVA_SERVER_RUN_SH="$(find "$P_DIR" -type f -path '*/java-server*/run.sh'
-print -quit || true)"
JAVA_CLIENT_RUN_SH="$(find "$P_DIR" -type f -path '*/java-client*/run.sh'
-print -quit || true)"
JAVA_SERVER_PID=""
GO_AUX_PIDS=()
+
JAVA_ENABLED=true
if { [ -n "$JAVA_SERVER_RUN_SH" ] || [ -n "$JAVA_CLIENT_RUN_SH" ]; } && !
command -v mvn >/dev/null 2>&1; then
JAVA_ENABLED=false
echo "Maven (mvn) is not available, all Java phases will be skipped for
sample: $SAMPLE"
fi
-cleanup() {
- local aux_pid
- if [ "${#GO_AUX_PIDS[@]}" -gt 0 ]; then
- for aux_pid in "${GO_AUX_PIDS[@]}"; do
- if [ -n "$aux_pid" ] && kill -0 "$aux_pid" 2>/dev/null; then
- kill "$aux_pid" 2>/dev/null || true
- sleep 1
- kill -9 "$aux_pid" 2>/dev/null || true
- fi
- done
- fi
+run_make_target() {
+ "${MAKE_CMD[@]}" "$1"
+}
- if [ -n "$JAVA_SERVER_PID" ] && kill -0 "$JAVA_SERVER_PID" 2>/dev/null; then
- kill "$JAVA_SERVER_PID" 2>/dev/null || true
+kill_if_running() {
+ local pid="$1"
+ if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then
+ kill "$pid" 2>/dev/null || true
sleep 1
- kill -9 "$JAVA_SERVER_PID" 2>/dev/null || true
+ kill -9 "$pid" 2>/dev/null || true
fi
+}
+
+cleanup() {
+ local aux_pid
+ for aux_pid in "${GO_AUX_PIDS[@]:-}"; do
+ kill_if_running "$aux_pid"
+ done
- make PROJECT_DIR="$P_DIR" PROJECT_NAME="$PROJECT_NAME" -f Makefile stop
>/dev/null 2>&1 || true
+ kill_if_running "$JAVA_SERVER_PID"
+ run_make_target stop >/dev/null 2>&1 || true
}
trap cleanup EXIT
resolve_config_path() {
local role="$1"
local conf_dir="$P_DIR/$role/conf"
+
if [ -f "$conf_dir/dubbogo.yml" ]; then
echo "$conf_dir/dubbogo.yml"
return 0
@@ -93,6 +103,7 @@ wait_for_tcp_port() {
sleep 1
elapsed=$((elapsed + 1))
done
+
return 1
}
@@ -102,8 +113,6 @@ run_go_client() {
return 1
fi
- local timeout_seconds="${GO_CLIENT_TIMEOUT_SECONDS:-90}"
-
local client_conf
client_conf="$(resolve_config_path "go-client" || true)"
@@ -119,11 +128,9 @@ run_go_client() {
local elapsed=0
while kill -0 "$go_client_pid" 2>/dev/null; do
- if [ "$elapsed" -ge "$timeout_seconds" ]; then
- echo "Go client timed out after ${timeout_seconds}s: $SAMPLE"
- kill "$go_client_pid" 2>/dev/null || true
- sleep 1
- kill -9 "$go_client_pid" 2>/dev/null || true
+ if [ "$elapsed" -ge "$GO_CLIENT_TIMEOUT_SECONDS" ]; then
+ echo "Go client timed out after ${GO_CLIENT_TIMEOUT_SECONDS}s: $SAMPLE"
+ kill_if_running "$go_client_pid"
wait "$go_client_pid" 2>/dev/null || true
return 124
fi
@@ -143,6 +150,7 @@ start_aux_go_servers() {
while IFS= read -r aux_server_dir; do
[ -z "$aux_server_dir" ] && continue
+
aux_name="$(basename "$(dirname "$aux_server_dir")")"
aux_log="/tmp/.${PROJECT_NAME}.${aux_name}.log"
@@ -151,6 +159,7 @@ start_aux_go_servers() {
cd "$P_DIR"
go run "./${aux_server_dir#"$P_DIR"/}"/*.go
) >"$aux_log" 2>&1 &
+
aux_pid="$!"
GO_AUX_PIDS+=("$aux_pid")
@@ -171,46 +180,28 @@ start_aux_go_servers() {
done < <(find "$P_DIR" -mindepth 1 -maxdepth 1 -type d -name '*-server' !
-name 'go-server' ! -name 'java-server' -exec sh -c 'test -d "$1/cmd" && ls
"$1"/cmd/*.go >/dev/null 2>&1 && echo "$1/cmd"' _ {} \;)
}
-run_java_client_if_present() {
- if [ "$JAVA_ENABLED" != "true" ]; then
- echo "Java phase disabled, skipping Java client run"
- return 0
- fi
-
- if [ -z "$JAVA_CLIENT_RUN_SH" ]; then
- echo "No Java client found, skipping Java client run"
- return 0
- fi
-
- local java_client_dir
- java_client_dir="$(dirname "$JAVA_CLIENT_RUN_SH")"
- echo "Running Java client: $JAVA_CLIENT_RUN_SH"
- (
- cd "$java_client_dir"
- bash ./run.sh
- )
-}
-
start_go_server() {
echo "Starting Go server..."
+
local server_conf
server_conf="$(resolve_config_path "go-server" || true)"
+
if [ -n "$server_conf" ]; then
- DUBBO_GO_CONFIG_PATH="$server_conf" make PROJECT_DIR="$P_DIR"
PROJECT_NAME="$PROJECT_NAME" -f Makefile start >"$GO_SERVER_LOG" 2>&1
+ DUBBO_GO_CONFIG_PATH="$server_conf" run_make_target start
>"$GO_SERVER_LOG" 2>&1
else
- make PROJECT_DIR="$P_DIR" PROJECT_NAME="$PROJECT_NAME" -f Makefile start
>"$GO_SERVER_LOG" 2>&1
+ run_make_target start >"$GO_SERVER_LOG" 2>&1
fi
+
sleep 5
- local pid_file="/tmp/.${PROJECT_NAME}.pid"
- if [ ! -f "$pid_file" ]; then
- echo "Go server pid file not found: $pid_file"
+ if [ ! -f "$PID_FILE" ]; then
+ echo "Go server pid file not found: $PID_FILE"
cat "$GO_SERVER_LOG" || true
return 1
fi
local server_pid
- server_pid="$(cat "$pid_file" 2>/dev/null || true)"
+ server_pid="$(cat "$PID_FILE" 2>/dev/null || true)"
if [ -z "$server_pid" ] || ! kill -0 "$server_pid" 2>/dev/null; then
echo "Go server is not running after startup: $SAMPLE"
cat "$GO_SERVER_LOG" || true
@@ -222,20 +213,41 @@ start_go_server() {
stop_go_server() {
echo "Stopping Go server..."
- make PROJECT_DIR="$P_DIR" PROJECT_NAME="$PROJECT_NAME" -f Makefile stop
>/dev/null 2>&1 || true
+ run_make_target stop >/dev/null 2>&1 || true
}
-start_java_server_if_present() {
+run_java_client_if_present() {
+ if [ -z "$JAVA_CLIENT_RUN_SH" ]; then
+ echo "No Java client found, skipping Java client run"
+ return 0
+ fi
+
if [ "$JAVA_ENABLED" != "true" ]; then
- echo "Java phase disabled, skipping Java server phase"
- return 1
+ echo "Java phase disabled, skipping Java client run"
+ return 0
fi
+ local java_client_dir
+ java_client_dir="$(dirname "$JAVA_CLIENT_RUN_SH")"
+
+ echo "Running Java client: $JAVA_CLIENT_RUN_SH"
+ (
+ cd "$java_client_dir"
+ bash ./run.sh
+ )
+}
+
+start_java_server_if_present() {
if [ -z "$JAVA_SERVER_RUN_SH" ]; then
echo "No Java server found, skipping Java server phase"
return 1
fi
+ if [ "$JAVA_ENABLED" != "true" ]; then
+ echo "Java phase disabled, skipping Java server phase"
+ return 1
+ fi
+
local java_server_dir
java_server_dir="$(dirname "$JAVA_SERVER_RUN_SH")"
@@ -254,11 +266,8 @@ start_java_server_if_present() {
return 1
fi
- local java_server_host="${JAVA_SERVER_HOST:-127.0.0.1}"
- local java_server_port="${JAVA_SERVER_PORT:-20000}"
- local java_server_wait_timeout="${JAVA_SERVER_READY_TIMEOUT_SECONDS:-60}"
- if ! wait_for_tcp_port "$java_server_host" "$java_server_port"
"$java_server_wait_timeout"; then
- echo "Java server is running but not ready on
${java_server_host}:${java_server_port} after ${java_server_wait_timeout}s"
+ if ! wait_for_tcp_port "$JAVA_SERVER_HOST" "$JAVA_SERVER_PORT"
"$JAVA_SERVER_READY_TIMEOUT_SECONDS"; then
+ echo "Java server is running but not ready on
${JAVA_SERVER_HOST}:${JAVA_SERVER_PORT} after
${JAVA_SERVER_READY_TIMEOUT_SECONDS}s"
cat "$JAVA_SERVER_LOG" || true
return 1
fi
@@ -266,40 +275,37 @@ start_java_server_if_present() {
return 0
}
-echo "=========================================="
-echo "Starting sample flow for: $SAMPLE"
-echo "Sample directory: $P_DIR"
-echo "=========================================="
+main() {
+ echo "=========================================="
+ echo "Starting sample flow for: $SAMPLE"
+ echo "Sample directory: $P_DIR"
+ echo "=========================================="
-# 1. go-server up
-start_go_server
-start_aux_go_servers
+ start_go_server
+ start_aux_go_servers
-# 2. go-client
-run_go_client
+ run_go_client
+ run_java_client_if_present
-# 3. java-client (if exists)
-run_java_client_if_present
+ stop_go_server
-# 4. go-server down
-stop_go_server
+ if start_java_server_if_present; then
+ run_java_client_if_present
-# 5. java-server (if exists)
-if start_java_server_if_present; then
- # 6. java-client
- run_java_client_if_present
+ if ! kill -0 "$JAVA_SERVER_PID" 2>/dev/null; then
+ echo "Java server exited before final Go client phase. Log:"
+ cat "$JAVA_SERVER_LOG" || true
+ exit 1
+ fi
- # 7. go-client
- if ! kill -0 "$JAVA_SERVER_PID" 2>/dev/null; then
- echo "Java server exited before final Go client phase. Log:"
- cat "$JAVA_SERVER_LOG" || true
- exit 1
+ run_go_client
+ else
+ echo "Java server phase skipped"
fi
- run_go_client
-else
- echo "Java server phase skipped"
-fi
-echo "=========================================="
-echo "Sample flow completed for: $SAMPLE"
-echo "=========================================="
+ echo "=========================================="
+ echo "Sample flow completed for: $SAMPLE"
+ echo "=========================================="
+}
+
+main
diff --git a/java_interop/non-protobuf-dubbo/java-client/run.sh
b/java_interop/non-protobuf-dubbo/java-client/run.sh
index f2841c84..611e2ca7 100644
--- a/java_interop/non-protobuf-dubbo/java-client/run.sh
+++ b/java_interop/non-protobuf-dubbo/java-client/run.sh
@@ -1,6 +1,6 @@
#!/bin/bash
set -euo pipefail
-mvn -B -ntp clean compile exec:java \
+mvn -q -B -ntp clean compile exec:java \
-Dexec.mainClass="org.apache.dubbo.hessian2.client.Application" \
-Dexec.cleanupDaemonThreads=false
diff --git a/java_interop/non-protobuf-dubbo/java-server/run.sh
b/java_interop/non-protobuf-dubbo/java-server/run.sh
index dc33303b..c7a74c21 100644
--- a/java_interop/non-protobuf-dubbo/java-server/run.sh
+++ b/java_interop/non-protobuf-dubbo/java-server/run.sh
@@ -1,6 +1,6 @@
#!/bin/bash
set -euo pipefail
-mvn -B -ntp clean compile exec:java \
+mvn -q -B -ntp clean compile exec:java \
-Dexec.mainClass="org.apache.dubbo.hessian2.provider.Application" \
-Dexec.cleanupDaemonThreads=false
diff --git a/java_interop/non-protobuf-triple/java-client/run.sh
b/java_interop/non-protobuf-triple/java-client/run.sh
index 40440dfe..b48a7019 100644
--- a/java_interop/non-protobuf-triple/java-client/run.sh
+++ b/java_interop/non-protobuf-triple/java-client/run.sh
@@ -1,6 +1,6 @@
#!/bin/bash
set -euo pipefail
-mvn -B -ntp clean compile exec:java \
+mvn -q -B -ntp clean compile exec:java \
-Dexec.mainClass="org.apache.dubbo.tri.hessian2.client.Application" \
-Dexec.cleanupDaemonThreads=false
diff --git a/java_interop/non-protobuf-triple/java-server/run.sh
b/java_interop/non-protobuf-triple/java-server/run.sh
index 2fe18deb..53216027 100644
--- a/java_interop/non-protobuf-triple/java-server/run.sh
+++ b/java_interop/non-protobuf-triple/java-server/run.sh
@@ -1,6 +1,6 @@
#!/bin/bash
set -euo pipefail
-mvn -B -ntp clean compile exec:java \
+mvn -q -B -ntp clean compile exec:java \
-Dexec.mainClass="org.apache.dubbo.tri.hessian2.provider.Application" \
-Dexec.cleanupDaemonThreads=false
diff --git a/java_interop/protobuf-triple/java-client/run.sh
b/java_interop/protobuf-triple/java-client/run.sh
index e67e60d5..6ab3de3b 100644
--- a/java_interop/protobuf-triple/java-client/run.sh
+++ b/java_interop/protobuf-triple/java-client/run.sh
@@ -1,6 +1,6 @@
#!/bin/bash
set -euo pipefail
-mvn -B -ntp clean compile exec:java \
+mvn -q -B -ntp clean compile exec:java \
-Dexec.mainClass="org.apache.dubbo.sample.Consumer" \
-Dexec.cleanupDaemonThreads=false
diff --git a/java_interop/protobuf-triple/java-server/run.sh
b/java_interop/protobuf-triple/java-server/run.sh
index c5d58c50..f83584cf 100644
--- a/java_interop/protobuf-triple/java-server/run.sh
+++ b/java_interop/protobuf-triple/java-server/run.sh
@@ -1,6 +1,6 @@
#!/bin/bash
set -euo pipefail
-mvn -B -ntp clean compile exec:java \
+mvn -q -B -ntp clean compile exec:java \
-Dexec.mainClass="org.apache.dubbo.sample.Provider" \
-Dexec.cleanupDaemonThreads=false
diff --git a/java_interop/service_discovery/interface/java-client/run.sh
b/java_interop/service_discovery/interface/java-client/run.sh
index ded11de9..0b66efad 100644
--- a/java_interop/service_discovery/interface/java-client/run.sh
+++ b/java_interop/service_discovery/interface/java-client/run.sh
@@ -1,4 +1,4 @@
-mvn -e clean compile exec:java \
+mvn -q -e clean compile exec:java \
-Dspotless.apply.skip=true \
-Dspotless.check.skip=true \
-Dexec.mainClass="org.apache.dubbo.samples.Main" \
diff --git a/java_interop/service_discovery/interface/java-server/run.sh
b/java_interop/service_discovery/interface/java-server/run.sh
index ded11de9..0b66efad 100644
--- a/java_interop/service_discovery/interface/java-server/run.sh
+++ b/java_interop/service_discovery/interface/java-server/run.sh
@@ -1,4 +1,4 @@
-mvn -e clean compile exec:java \
+mvn -q -e clean compile exec:java \
-Dspotless.apply.skip=true \
-Dspotless.check.skip=true \
-Dexec.mainClass="org.apache.dubbo.samples.Main" \
diff --git a/java_interop/service_discovery/service/java-client/run.sh
b/java_interop/service_discovery/service/java-client/run.sh
index 24a6dc86..347c3270 100644
--- a/java_interop/service_discovery/service/java-client/run.sh
+++ b/java_interop/service_discovery/service/java-client/run.sh
@@ -4,6 +4,6 @@ set -euo pipefail
JDK_OPENS="--add-opens=java.base/java.lang=ALL-UNNAMED"
export MAVEN_OPTS="${MAVEN_OPTS:-} ${JDK_OPENS}"
-mvn -B -ntp -e clean compile exec:java \
+mvn -q -B -ntp -e clean compile exec:java \
-Dexec.mainClass="org.apache.dubbo.samples.Main" \
-Dexec.cleanupDaemonThreads=false
diff --git a/java_interop/service_discovery/service/java-server/run.sh
b/java_interop/service_discovery/service/java-server/run.sh
index 24a6dc86..347c3270 100644
--- a/java_interop/service_discovery/service/java-server/run.sh
+++ b/java_interop/service_discovery/service/java-server/run.sh
@@ -4,6 +4,6 @@ set -euo pipefail
JDK_OPENS="--add-opens=java.base/java.lang=ALL-UNNAMED"
export MAVEN_OPTS="${MAVEN_OPTS:-} ${JDK_OPENS}"
-mvn -B -ntp -e clean compile exec:java \
+mvn -q -B -ntp -e clean compile exec:java \
-Dexec.mainClass="org.apache.dubbo.samples.Main" \
-Dexec.cleanupDaemonThreads=false
diff --git a/start_integrate_test.sh b/start_integrate_test.sh
index dc6d892d..e46dba82 100755
--- a/start_integrate_test.sh
+++ b/start_integrate_test.sh
@@ -103,11 +103,7 @@ cleanup() {
trap cleanup EXIT
echo "::group::> docker up"
-$DOCKER_COMPOSE_CMD -f "$DOCKER_DIR"/docker-compose.yml up -d
-echo "::endgroup::"
-
-echo "::group::> docker health-check"
-bash -f "$DOCKER_DIR"/docker-health-check.sh
+$DOCKER_COMPOSE_CMD -f "$DOCKER_DIR"/docker-compose.yml up -d --wait
echo "::endgroup::"
for t in "${array[@]}"; do
diff --git a/streaming/java-client/run.sh b/streaming/java-client/run.sh
index 8aa4c34e..6c1325ff 100644
--- a/streaming/java-client/run.sh
+++ b/streaming/java-client/run.sh
@@ -1,3 +1,3 @@
#!/bin/bash
-mvn clean compile
-mvn exec:java
-Dexec.mainClass="org.apache.dubbo.samples.tri.streaming.StreamingClient"
+mvn -q clean compile
+mvn -q exec:java
-Dexec.mainClass="org.apache.dubbo.samples.tri.streaming.StreamingClient"
diff --git a/streaming/java-server/run.sh b/streaming/java-server/run.sh
index cad7c4ed..159742a9 100644
--- a/streaming/java-server/run.sh
+++ b/streaming/java-server/run.sh
@@ -1,3 +1,3 @@
#!/bin/bash
-mvn clean compile
-mvn exec:java
-Dexec.mainClass="org.apache.dubbo.samples.tri.streaming.StreamingServer"
+mvn -q clean compile
+mvn -q exec:java
-Dexec.mainClass="org.apache.dubbo.samples.tri.streaming.StreamingServer"