mirror of
https://github.com/dromara/hertzbeat.git
synced 2026-09-17 18:19:02 +00:00
Co-authored-by: Duansg <siguoduan@gmail.com> Co-authored-by: aias00 <liuhongyu@apache.org>
93 lines
3.0 KiB
Bash
Executable File
93 lines
3.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
set -eu
|
|
|
|
repository_root=$(CDPATH= cd -- "$(dirname -- "$0")/../.." && pwd)
|
|
temporary_directory=$(mktemp -d)
|
|
trap 'rm -f "$temporary_directory"/*.json; rmdir "$temporary_directory"' EXIT HUP INT TERM
|
|
|
|
assert_binding() {
|
|
config_file=$1
|
|
service=$2
|
|
target=$3
|
|
published=$4
|
|
host_ip=$5
|
|
|
|
jq -e \
|
|
--arg service "$service" \
|
|
--argjson target "$target" \
|
|
--arg published "$published" \
|
|
--arg host_ip "$host_ip" \
|
|
'.services[$service].ports
|
|
| any(.target == $target
|
|
and .published == $published
|
|
and .host_ip == $host_ip)' \
|
|
"$config_file" > /dev/null
|
|
}
|
|
|
|
assert_all_bindings() {
|
|
config_file=$1
|
|
expected_host=$2
|
|
|
|
jq -e \
|
|
--arg expected_host "$expected_host" \
|
|
'[.services[]?.ports[]?] | length > 0 and all(.host_ip == $expected_host)' \
|
|
"$config_file" > /dev/null
|
|
}
|
|
|
|
assert_non_hertzbeat_bindings() {
|
|
config_file=$1
|
|
expected_host=$2
|
|
|
|
jq -e \
|
|
--arg expected_host "$expected_host" \
|
|
'[.services | to_entries[] | select(.key != "hertzbeat") | .value.ports[]?]
|
|
| all(.host_ip == $expected_host)' \
|
|
"$config_file" > /dev/null
|
|
}
|
|
|
|
for variant in \
|
|
hertzbeat-mysql-iotdb \
|
|
hertzbeat-mysql-tdengine \
|
|
hertzbeat-mysql-victoria-metrics \
|
|
hertzbeat-postgresql-greptimedb \
|
|
hertzbeat-postgresql-victoria-metrics
|
|
do
|
|
compose_file="${repository_root}/script/docker-compose/${variant}/docker-compose.yaml"
|
|
default_config="${temporary_directory}/${variant}-default.json"
|
|
override_config="${temporary_directory}/${variant}-override.json"
|
|
|
|
unset HERTZBEAT_BIND_ADDRESS HERTZBEAT_OTLP_BIND_ADDRESS
|
|
POSTGRES_PASSWORD=compose-config-test \
|
|
docker compose -f "$compose_file" config --format json > "$default_config"
|
|
HERTZBEAT_BIND_ADDRESS=192.0.2.10 \
|
|
HERTZBEAT_OTLP_BIND_ADDRESS=192.0.2.20 \
|
|
POSTGRES_PASSWORD=compose-config-test \
|
|
docker compose -f "$compose_file" config --format json > "$override_config"
|
|
|
|
assert_all_bindings "$default_config" 127.0.0.1
|
|
for service_port in 1157 1158; do
|
|
assert_binding "$override_config" hertzbeat "$service_port" "$service_port" 192.0.2.10
|
|
done
|
|
assert_binding "$override_config" hertzbeat 14317 14317 192.0.2.20
|
|
assert_non_hertzbeat_bindings "$override_config" 127.0.0.1
|
|
done
|
|
|
|
echo "Quick-start Compose listener bindings are valid."
|