Merge pull request #11101 from zmstone/0620-make-possible-to-test-core-replica-cluster-locally

test: make possible to test core/replica locally
This commit is contained in:
Zaiming (Stone) Shi 2023-06-20 13:42:14 +02:00 committed by GitHub
commit e2cccf1bb0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 64 additions and 10 deletions

View File

@ -35,7 +35,7 @@
-define(EMQX_RELEASE_CE, "5.1.0-rc.1").
%% Enterprise edition
-define(EMQX_RELEASE_EE, "5.1.0-rc.1").
-define(EMQX_RELEASE_EE, "5.1.0-rc.2").
%% The HTTP API version
-define(EMQX_API_VERSION, "5.0").

View File

@ -132,10 +132,13 @@ parse_vsn(Vsn) ->
Suffix =
case Suffix0 of
"" ->
%% For the case like "5.1.0"
%% "5.1.0"
"";
[ReleaseStage, Number] ->
%% For the case like "5.1.0-rc.1"
["g" ++ _] ->
%% "5.1.0-g53ab85b1"
"";
[ReleaseStage, Number | _] ->
%% "5.1.0-rc.1" or "5.1.0-rc.1-g53ab85b1"
{ReleaseStage, list_to_integer(Number)}
end,
{{list_to_integer(V1), list_to_integer(V2), list_to_integer(V3)}, Suffix}

View File

@ -47,6 +47,10 @@ vsn_compre_test_() ->
?assertEqual(older, emqx_release:vsn_compare("1.1.1", "1.1.1-rc.1")),
?assertEqual(newer, emqx_release:vsn_compare("1.1.1-rc.1", "1.1.1"))
end},
{"git hash suffix is ignored", fun() ->
?assertEqual(older, emqx_release:vsn_compare("1.1.1-gabcd", "1.1.1-rc.1-g1234")),
?assertEqual(newer, emqx_release:vsn_compare("1.1.1-rc.1-gabcd", "1.1.1-g1234"))
end},
{"invalid version string will crash", fun() ->
?assertError({invalid_version_string, "1.1.a"}, emqx_release:vsn_compare("v1.1.a")),
?assertError(

View File

@ -223,7 +223,7 @@ sync_cluster_conf4(Ready) ->
msg => "sync_cluster_conf_success",
synced_from_node => Node,
has_deprecated_file => HasDeprecatedFile,
local_release => emqx_app:get_release(),
local_release => emqx_release:version_with_prefix(),
remote_release => maps:get(release, Info, "before_v5.0.24|e5.0.3"),
data_dir => emqx:data_dir(),
tnx_id => TnxId

View File

@ -12,10 +12,40 @@ set -euo pipefail
# ensure dir
cd -P -- "$(dirname -- "$0")/../../"
DEFAULT_BOOT='./_build/emqx/rel/emqx/bin/emqx'
help() {
echo
echo "-h|--help: To display this usage info"
echo "-b|--boots: boot scripts, comma separate if more than one"
echo " default is ./_build/emqx/rel/emqx/bin/emqx"
echo "-r|--roles: node (db) roles, comma separate"
}
BOOT1="${1:-$DEFAULT_BOOT}"
BOOT2="${2:-$BOOT1}"
BOOT='./_build/emqx/rel/emqx/bin/emqx'
ROLES='core,core'
while [ "$#" -gt 0 ]; do
case $1 in
-h|--help)
help
exit 0
;;
-b|--boots)
BOOT="$2"
shift 2
;;
-r|--roles)
ROLES="$2"
shift 2
;;
*)
echo "unknown option $1"
exit 1
;;
esac
done
BOOT1="$(echo "$BOOT" | cut -d ',' -f1)"
BOOT2="$(echo "$BOOT" | cut -d ',' -f2)"
[ -z "$BOOT2" ] && BOOT2="$BOOT1"
export IP1='127.0.0.1'
export IP2='127.0.0.2'
@ -24,6 +54,22 @@ export IP2='127.0.0.2'
NODE1="emqx1@$IP1"
NODE2="emqx2@$IP2"
ROLE1="$(echo "$ROLES" | cut -d ',' -f1)"
ROLE2="$(echo "$ROLES" | cut -d ',' -f2)"
export ROLE1 ROLE2
if [ "$ROLE1" = 'core' ] && [ "$ROLE2" = 'core' ]; then
SEEDS="$NODE1,$NODE2"
elif [ "$ROLE1" = 'core' ]; then
SEEDS="$NODE1"
elif [ "$ROLE2" = 'core' ]; then
SEEDS="$NODE2"
else
echo "missing 'core' role in -r|--roles option"
exit 1
fi
export SEEDS
start_cmd() {
local index="$1"
local nodehome
@ -33,11 +79,12 @@ start_cmd() {
mkdir -p "${nodehome}/data" "${nodehome}/log"
cat <<-EOF
env DEBUG="${DEBUG:-0}" \
EMQX_CLUSTER__STATIC__SEEDS="[\"$NODE1\",\"$NODE2\"]" \
EMQX_NODE_NAME="emqx${index}@\$IP${index}" \
EMQX_CLUSTER__STATIC__SEEDS="$SEEDS" \
EMQX_CLUSTER__DISCOVERY_STRATEGY=static \
EMQX_NODE__DB_ROLE="\$ROLE${index}" \
EMQX_LOG__FILE_HANDLERS__DEFAULT__LEVEL="${EMQX_LOG__FILE_HANDLERS__DEFAULT__LEVEL:-debug}" \
EMQX_LOG__FILE_HANDLERS__DEFAULT__FILE="${nodehome}/log/emqx.log" \
EMQX_NODE_NAME="emqx${index}@\$IP${index}" \
EMQX_NODE__COOKIE="${EMQX_NODE__COOKIE:-cookie1}" \
EMQX_LOG_DIR="${nodehome}/log" \
EMQX_NODE__DATA_DIR="${nodehome}/data" \