Skip to content

Commit

Permalink
reworked docker local tesnet.
Browse files Browse the repository at this point in the history
  • Loading branch information
cristure committed Mar 1, 2024
1 parent 9660fb6 commit fb33b26
Show file tree
Hide file tree
Showing 6 changed files with 202 additions and 182 deletions.
30 changes: 15 additions & 15 deletions .github/workflows/build_local_tesnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,19 @@ jobs:
uses: actions/checkout@v4
with:
repository: multiversx/mx-chain-deploy-go
path: mx-chain-deploy-go
path: ../mx-chain-deploy-go

- name: Generate config
id: generate-config
run: |
cd ${GITHUB_WORKSPACE}/scripts/docker-testnet
export TESTNETDIR=${GITHUB_WORKSPACE}/docker-testnet
./prepare.sh
- name: Deploy local testnet
run: |
export TESTNETDIR=${GITHUB_WORKSPACE}/docker-testnet
echo ${TESTNETDIR}
docker compose up -d
docker ps -a
docker logs seednode
# - name: Generate config
# id: generate-config
# run: |
# cd ${GITHUB_WORKSPACE}/scripts/docker-testnet
# export TESTNETDIR=${GITHUB_WORKSPACE}/docker-testnet
# ./prepare.sh
#
# - name: Deploy local testnet
# run: |
# export TESTNETDIR=${GITHUB_WORKSPACE}/docker-testnet
# echo ${TESTNETDIR}
# docker compose up -d
# docker ps -a
# docker logs seednode
162 changes: 0 additions & 162 deletions docker-compose.yml

This file was deleted.

16 changes: 16 additions & 0 deletions scripts/docker-testnet/clean.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/env bash

# Delete the entire testnet folder, which includes configuration, executables and logs.

export MULTIVERSXTESTNETSCRIPTSDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"

source "$MULTIVERSXTESTNETSCRIPTSDIR/variables.sh"

echo "Stopping all containers"
docker stop $(docker ps -a -q)

echo "Removing all containers"
docker container prune

echo "Removing $TESTNETDIR..."
rm -rf $TESTNETDIR
153 changes: 153 additions & 0 deletions scripts/docker-testnet/helpers.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
#!/usr/bin/env bash

startSeedNode() {
docker run -d --name seednode -v ${TESTNETDIR}/seednode/config:/go/mx-chain-go/cmd/seednode/config seednode:dev \
--rest-api-interface=0.0.0.0:10000
}

startObservers() {
local observerIdx=0
# Example for loop with injected variables in Bash
for ((i = 0; i < SHARDCOUNT; i++)); do
for ((j = 0; j < SHARD_OBSERVERCOUNT; j++)); do
# Your commands or code to be executed in each iteration
KEY_INDEX=$((TOTAL_NODECOUNT - observerIdx - 1))

docker run -d --name "observer${observerIdx}" \
-v $TESTNETDIR/node/config:/go/mx-chain-go/cmd/node/config \
node:dev \
--destination-shard-as-observer $i \
--rest-api-interface=0.0.0.0:10200 \
--config ./config/config_observer.toml \
--sk-index=${KEY_INDEX} \

((observerIdx++)) || true
done
done

for ((i = 0; i < META_OBSERVERCOUNT; i++)); do
KEY_INDEX=$((TOTAL_NODECOUNT - observerIdx - 1))

docker run -d --name "observer${observerIdx}" \
-v $TESTNETDIR/node/config:/go/mx-chain-go/cmd/node/config \
node:dev \
--destination-shard-as-observer "metachain" \
--rest-api-interface=0.0.0.0:10200 \
--config ./config/config_observer.toml \
--sk-index=${KEY_INDEX} \

((observerIdx++)) || true
done
}

startValidators() {
validatorIdx=0
# Example for loop with injected variables in Bash
for ((i = 0; i < SHARDCOUNT; i++)); do
for ((j = 0; j < SHARD_VALIDATORCOUNT; j++)); do

docker run -d --name "validator${validatorIdx}" \
-v $TESTNETDIR/node/config:/go/mx-chain-go/cmd/node/config \
node:dev \
--rest-api-interface=0.0.0.0:10200 \
--config ./config/config_validator.toml \
--sk-index=${validatorIdx} \

((validatorIdx++)) || true
done
done

for ((i = 0; i < META_VALIDATORCOUNT; i++)); do
docker run -d --name "validator${validatorIdx}" \
-v $TESTNETDIR/node/config:/go/mx-chain-go/cmd/node/config \
node:dev \
--rest-api-interface=0.0.0.0:10200 \
--config ./config/config_observer.toml \
--sk-index=${validatorIdx} \

((validatorIdx++)) || true
done
}

updateProxyConfigDocker() {
pushd $TESTNETDIR/proxy/config
cp config.toml config_edit.toml

# Truncate config.toml before the [[Observers]] list
sed -i -n '/\[\[Observers\]\]/q;p' config_edit.toml

if [ "$SHARD_OBSERVERCOUNT" -le 0 ]; then
generateProxyValidatorListDocker config_edit.toml
else
generateProxyObserverListDocker config_edit.toml
fi

cp config_edit.toml config.toml
rm config_edit.toml

echo "Updated configuration for the Proxy."
popd
}

generateProxyObserverListDocker() {
IP_BIT=3
OUTPUTFILE=$!


for ((i = 0; i < SHARDCOUNT; i++)); do
for ((j = 0; j < SHARD_OBSERVERCOUNT; j++)); do

echo "[[Observers]]" >> config_edit.toml
echo " ShardId = $i" >> config_edit.toml
echo " Address = \"http://172.17.0.${IP_BIT}:10200\"" >> config_edit.toml
echo ""$'\n' >> config_edit.toml

(( IP_BIT++ ))
done
done

for META_OBSERVER in $(seq $META_OBSERVERCOUNT); do
echo "[[Observers]]" >> config_edit.toml
echo " ShardId = $METASHARD_ID" >> config_edit.toml
echo " Address = \"http://172.17.0.${IP_BIT}:10200\"" >> config_edit.toml
echo ""$'\n' >> config_edit.toml

(( IP_BIT++ ))
done
}

generateProxyValidatorListDocker() {
IP_BIT=3
OUTPUTFILE=$!


for ((i = 0; i < SHARDCOUNT; i++)); do
for ((j = 0; j < SHARD_VALIDATORCOUNT; j++)); do

echo "[[Observers]]" >> config_edit.toml
echo " ShardId = $i" >> config_edit.toml
echo " Address = \"http://172.17.0.${IP_BIT}:10200\"" >> config_edit.toml
echo " Type = \"Validator\"" >> config_edit.toml
echo ""$'\n' >> config_edit.toml

(( IP_BIT++ ))
done
done

for META_OBSERVER in $(seq $META_VALIDATORCOUNT); do
echo "[[Observers]]" >> config_edit.toml
echo " ShardId = $METASHARD_ID" >> config_edit.toml
echo " Address = \"http://172.17.0.${IP_BIT}:10200\"" >> config_edit.toml
echo " Type = \"Validator\"" >> config_edit.toml
echo ""$'\n' >> config_edit.toml

(( IP_BIT++ ))
done
}

startProxyDocker() {
docker run -d --name "proxy" \
-p $PORT_PROXY:8080 \
-v $TESTNETDIR/proxy/config:/mx-chain-proxy-go/cmd/proxy/config \
multiversx/chain-proxy:v1.1.45-sp4
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ export DOCKERTESTNETDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&
MULTIVERSXTESTNETSCRIPTSDIR="$(dirname "$DOCKERTESTNETDIR")/testnet"

source "$DOCKERTESTNETDIR/variables.sh"
source "$DOCKERTESTNETDIR/helpers.sh"
source "$MULTIVERSXTESTNETSCRIPTSDIR/include/config.sh"
source "$MULTIVERSXTESTNETSCRIPTSDIR/include/build.sh"

Expand All @@ -22,4 +23,16 @@ copySeednodeConfig
updateSeednodeConfig

copyNodeConfig
updateNodeConfig
updateNodeConfig

startSeedNode
startObservers
startValidators

if [ $USE_PROXY -eq 1 ]; then
prepareFolders_Proxy
copyProxyConfig
updateProxyConfigDocker
startProxyDocker
fi

Loading

0 comments on commit fb33b26

Please sign in to comment.