hacker-challenge-sgx-general/scripts/testnet.sh
Valentyn Faychuk fc933c0647
connections refactoring
Signed-off-by: Valentyn Faychuk <valy@detee.ltd>
2024-12-24 01:09:06 +02:00

84 lines
3.2 KiB
Bash
Executable File

#!/bin/bash
set -e
num_nodes=${1:-4}
script_dir=$(dirname "$0")
cd "${script_dir}/.."
function build_mint_sol() {
command -v cargo >/dev/null 2>&1 || { echo >&2 "cargo not found, run 'curl https://sh.rustup.rs -sSf | sh'"; exit 1; }
command -v gcc >/dev/null 2>&1 || { echo >&2 "cc not found, run 'apt update && apt install build-essential'"; exit 1; }
command -v protoc >/dev/null 2>&1 || { echo >&2 "protoc not found, run 'apt update && apt install protobuf-compiler'"; exit 1; }
echo "Building the mint_sol tool for testing"
cd mint_sol && cargo build --release && cd ..
cp mint_sol/target/release/mint_sol "${script_dir}/mint_sol"
}
eval "sudo rm -rf /tmp/dthc{0..$num_nodes}"
TEST=1 ./${script_dir}/build-container.sh
[ -e "${script_dir}/mint_sol" ] || build_mint_sol
# Cleanup old containers and the network
echo "Creating the network and the root node"
eval "docker rm -f dthc{0..$num_nodes}" 2>&1 /dev/null
docker network inspect dthc >/dev/null 2>&1 \
|| docker network create --subnet=172.18.0.0/24 dthc \
|| true
echo "Waiting for the root node to start"
# 172.18.0.1 is for the network gateway
docker run --name dthc0 \
--network dthc -d \
--ip 172.18.0.2 \
--env NODE_IP="172.18.0.2" \
--volume /tmp/dthc0:/challenge/main \
--publish 31300:31372 \
--device /dev/sgx/provision \
--device /dev/sgx/enclave \
detee/hacker-challenge:test
while true; do
echo -n "." && sleep 1
docker logs dthc0 | grep -q "SOL" && echo && break
done
echo "Sending SOL to the root and waiting for the mint"
address=$(docker logs dthc0 | grep 'SOL' | awk '{ print $NF }')
"${script_dir}"/mint_sol "${address}"
while true; do
echo -n "." && sleep 1
docker logs dthc0 | grep -q "Mint created" && echo && break
done
echo "Creating a cluster with ${num_nodes} nodes"
for n in $(seq 1 $num_nodes); do
#init_nodes=$(docker inspect dthc0 --format '{{ .NetworkSettings.Networks.dthc.IPAddress }}')
node_ip="172.18.0.$((2 + n))"
node_port=$((31300 + n))
node_volume="/tmp/dthc${n}"
docker run --name dthc${n} \
--network dthc -d \
--ip ${node_ip} \
--env NODE_IP="${node_ip}" \
--env INIT_NODES="172.18.0.2 172.18.0.3 172.18.0.4" \
--volume ${node_volume}:/challenge/main \
--publish ${node_port}:31372 \
--device /dev/sgx/provision \
--device /dev/sgx/enclave \
detee/hacker-challenge:test
done
echo "Running the test mint"
for n in {1..20}; do
node_port=$((31300 + n))
curl -X POST "127.0.0.1:${node_port}/mint" \
--json '{"wallet": "EZT16iP1SQVUFf1AJN6oiE5BZPnyBUqaKDkZ4oZRsvhR"}' \
--connect-timeout 5 2> /dev/null
echo ""
done
# curl 127.0.0.1:31303/metrics
# curl -X POST 127.0.0.1:31303/mint -d '{"wallet": "EZT16iP1SQVUFf1AJN6oiE5BZPnyBUqaKDkZ4oZRsvhR"}' -H 'Content-Type: application/json'
# docker run --name dthc0 --network dthc -d --ip 172.18.0.2 --env NODE_IP="172.18.0.2" --env INIT_NODES="172.18.0.5 172.18.0.3 172.18.0.4" --volume /tmp/dthc0:/challenge/main --publish 31300:31372 --device /dev/sgx/provision --device /dev/sgx/enclave detee/hacker-challenge:test