fix(acceptance): 按实际节点聚合多 Worker 指标

同站点存在多个物理节点时,按每个 Ready Pod 的 nodeName 映射真实 SSH 主机采集 metrics,并隔离 ssh 标准输入,避免吞掉后续 Pod 目标。所有 Worker Pod 指标按容量最小/最大、连接池最小/最大和计数器总和聚合,不再随机漏采一个实例。\n\n运行时门禁根据已启用的第四节点计算 Ready 节点数,并跳过零副本站点,同时继续逐 Pod 校验 P24/P28/P32 容量、连接池和租约。\n\n验证:bash -n、ShellCheck、双节点 metrics 映射测试、生产只读双 Worker metrics 探针、manual-release-test。
This commit is contained in:
2026-08-01 15:14:39 +08:00
parent 53fc79691a
commit 3514c13b0d
2 changed files with 154 additions and 61 deletions
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
# shellcheck disable=SC2034 # Variables are consumed by dynamically sourced functions.
# shellcheck disable=SC2034,SC2329 # Symbols are consumed by dynamically sourced functions.
set -euo pipefail
root=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)
@@ -46,7 +46,11 @@ if is_release_ancestor invalid "$third"; then
fi
remote_kubectl() {
printf 0
if [[ $* == *'get pods'* ]]; then
printf '{"items":[]}'
else
printf 0
fi
}
cluster_ssh() {
@@ -63,6 +67,32 @@ else
fi
[[ $metrics_status == 2 ]]
remote_kubectl() {
printf '%s\n' '{"items":[
{"metadata":{},"spec":{"nodeName":"easyai-hongkong"},"status":{"podIP":"10.42.3.10","conditions":[{"type":"Ready","status":"True"}]}},
{"metadata":{},"spec":{"nodeName":"easyai-hongkong-worker-2"},"status":{"podIP":"10.42.5.10","conditions":[{"type":"Ready","status":"True"}]}}
]}'
}
cluster_ssh() {
while IFS= read -r _; do :; done
printf '# target_host %s\n' "$1"
printf 'test_metric 1\n'
}
CLUSTER_NINGBO_HOST=root@ningbo.invalid
CLUSTER_HONGKONG_HOST=root@hongkong.invalid
CLUSTER_LOS_ANGELES_HOST=root@losangeles.invalid
CLUSTER_WORKER_NODE_4_NAME=easyai-hongkong-worker-2
CLUSTER_WORKER_NODE_4_HOST=root@hongkong-worker-2.invalid
metrics=$(workload_metrics_for_site worker hongkong)
grep -Fq '# target_host root@hongkong.invalid' <<<"$metrics"
grep -Fq '# target_host root@hongkong-worker-2.invalid' <<<"$metrics"
[[ $(grep -c '^test_metric 1$' <<<"$metrics") == 2 ]]
[[ $(metric_min test_metric <<<"$metrics") == 1 ]]
[[ $(metric_max test_metric <<<"$metrics") == 1 ]]
[[ $(metric_sum test_metric <<<"$metrics") == 2 ]]
long_running_load() {
while :; do
sleep 1