swapd daemon setup/start decoupled from CLI parsing (#354)

This commit is contained in:
Dmitry Holodov
2023-03-25 19:18:51 -05:00
committed by GitHub
parent 58d94723e1
commit 528715b602
48 changed files with 1347 additions and 932 deletions

View File

@@ -38,22 +38,43 @@ ALICE_MULTIADDR=/ip4/127.0.0.1/tcp/9933/p2p/12D3KooWAAxG7eTEHr2uBVw3BDMxYsxyqfKv
ALICE_LIBP2PKEY=./tests/alice-libp2p.key
LOG_LEVEL=debug
ALICE_RPC_PORT=5000
BOB_RPC_PORT=5001
CHARLIE_RPC_PORT=5002
start-swapd() {
local swapd_user="${1:?}"
local swapd_flags=("${@:2}")
local rpc_port="${2:?}"
local swapd_flags=("${@:3}" "--rpc-port=${rpc_port}")
local log_file="${SWAP_TEST_DATA_DIR}/${swapd_user}-swapd.log"
echo "Starting ${swapd_user^}'s swapd, logs in ${SWAP_TEST_DATA_DIR}/${swapd_user}-swapd.log"
./bin/swapd "${swapd_flags[@]}" &>"${log_file}" &
local swapd_pid="${!}"
echo "${swapd_pid}" >"${SWAP_TEST_DATA_DIR}/${swapd_user}-swapd.pid"
sleep 1
if ! kill -0 "${swapd_pid}" 2>/dev/null; then
echo "Failed to start ${swapd_user^}'s swapd"
echo "=============== Failed logs ==============="
cat "${log_file}"
echo "============================================"
exit 1
fi
# Wait up to 60 seconds for the daemon's port to be listening
for i in {1..60}; do
sleep 1
# Test if pid is still alive, leave loop if it is not
if ! kill -0 "${swapd_pid}" 2>/dev/null; then
break
fi
# Test if RPC port is listening, exit success if it is
if is-port-open "${rpc_port}"; then
echo "${swapd_user^}'s swapd instance is listening after ${i} seconds"
return
fi
done
echo "Failed to start ${swapd_user^}'s swapd"
echo "=============== Failed logs ==============="
cat "${log_file}"
echo "============================================"
stop-daemons
exit 1
}
stop-swapd() {
@@ -61,27 +82,30 @@ stop-swapd() {
stop-program "${swapd_user}-swapd"
}
wait-rpc-started() {
local swapd_user="${1}"
local rpc_port="${1}"
}
start-daemons() {
start-monerod-regtest
start-ganache
start-swapd alice \
start-swapd alice "${ALICE_RPC_PORT}" \
--dev-xmrtaker \
"--log-level=${LOG_LEVEL}" \
"--data-dir=${SWAP_TEST_DATA_DIR}/alice" \
"--libp2p-key=${ALICE_LIBP2PKEY}" \
--deploy
#
# Wait up to 60 seconds for Alice's swapd instance to start and deploy the swap contract
#
CONTRACT_ADDR_FILE="${SWAP_TEST_DATA_DIR}/alice/contract-addresses.json"
for _ in {1..60}; do
if [[ -f "${CONTRACT_ADDR_FILE}" ]]; then
break
fi
sleep 1
done
if [[ ! -f "${CONTRACT_ADDR_FILE}" ]]; then
echo "Failed to get Alice's deployed contract address file"
stop-daemons
exit 1
fi
SWAP_FACTORY_ADDR="$(jq -r .swapFactory "${CONTRACT_ADDR_FILE}")"
FORWARDER_ADDR="$(jq -r .forwarder "${CONTRACT_ADDR_FILE}")"
if [[ -z "${SWAP_FACTORY_ADDR}" ]] || [[ -z "${FORWARDER_ADDR}" ]]; then
@@ -90,7 +114,7 @@ start-daemons() {
exit 1
fi
start-swapd bob \
start-swapd bob "${BOB_RPC_PORT}" \
--dev-xmrmaker \
"--log-level=${LOG_LEVEL}" \
"--data-dir=${SWAP_TEST_DATA_DIR}/bob" \
@@ -98,17 +122,13 @@ start-daemons() {
"--bootnodes=${ALICE_MULTIADDR}" \
"--contract-address=${SWAP_FACTORY_ADDR}"
start-swapd charlie \
start-swapd charlie "${CHARLIE_RPC_PORT}" \
"--log-level=${LOG_LEVEL}" \
--data-dir "${SWAP_TEST_DATA_DIR}/charlie" \
--libp2p-port=9955 \
--rpc-port 5002 \
"--bootnodes=${ALICE_MULTIADDR}" \
"--contract-address=${SWAP_FACTORY_ADDR}" \
"--relayer"
# Give time for Bob and Charlie's swapd instances to fully start
sleep 5
}
stop-daemons() {