115 lines
2.2 KiB
Bash
115 lines
2.2 KiB
Bash
# Unset P2PRC
|
|
unset P2PRC
|
|
|
|
# Create P2PRC instances
|
|
# Parameters:
|
|
# 1. Number of nodes
|
|
P2PRC_instances() {
|
|
local rootPort=""
|
|
for (( counter=0; counter<$1; counter++ )); do
|
|
mkdir test-$counter/
|
|
cd test-$counter/
|
|
|
|
# Generate a new random port
|
|
NEW_PORT=$(shuf -i 2000-65000 -n 1)
|
|
|
|
# Initialize node
|
|
p2prc --dc
|
|
|
|
# Save rootPort from the first node
|
|
if [[ $counter -eq 0 ]]; then
|
|
rootPort=$NEW_PORT
|
|
fi
|
|
|
|
echo "Root port: $rootPort"
|
|
echo "This node's port: $NEW_PORT"
|
|
|
|
# Set root port
|
|
p2prc --arn --ip 0.0.0.0 -p "$rootPort"
|
|
|
|
# add current node
|
|
p2prc --as 0.0.0.0 -p "$NEW_PORT"
|
|
|
|
# Replace the ServerPort in config
|
|
sed -i.bak "s/\"ServerPort\": \"[0-9]*\"/\"ServerPort\": \"$NEW_PORT\"/" "./config.json"
|
|
sed -i.bak "s/\"Test\": false/\"Test\": true/" "./config.json"
|
|
sed -i.bak "s/\"BehindNAT\": true/\"BehindNAT\": false/" "./config.json"
|
|
|
|
cat config.json
|
|
|
|
# List services
|
|
p2prc --ls
|
|
|
|
cd ..
|
|
done
|
|
|
|
# remove all instances after testing (optional — might want to comment this during testing)
|
|
# rm -rf test-*
|
|
}
|
|
|
|
# Arrays of process IDs
|
|
pids=()
|
|
|
|
# Calls all the P2PRC instances created for testing
|
|
Start_all_instances() {
|
|
for (( counter=0; counter<$1; counter++ )); do
|
|
cd test-$counter/
|
|
# Start P2PRC as background process
|
|
p2prc -s &
|
|
pids+=($!)
|
|
sleep 3
|
|
cd ..
|
|
done
|
|
}
|
|
|
|
# Kills all P2PRC instances
|
|
Kill_all_instances() {
|
|
for pid in "${pids[@]}"; do
|
|
kill "$pid"
|
|
echo "Killed process $pid"
|
|
done
|
|
}
|
|
|
|
# Removes all test files created
|
|
Remove_all_test_files() {
|
|
rm -rf test-*
|
|
}
|
|
|
|
# List ip tables of all nodes started
|
|
IP_Tables_after_Started() {
|
|
for (( counter=0; counter<$1; counter++ )); do
|
|
cd test-$counter/
|
|
p2prc --ls
|
|
cd ..
|
|
done
|
|
}
|
|
|
|
Update_All_IP_Tables() {
|
|
for (( counter=0; counter<$1; counter++ )); do
|
|
cd test-$counter/
|
|
p2prc --us
|
|
cd ..
|
|
done
|
|
}
|
|
|
|
|
|
# ---------------- Work flow test ---------------
|
|
|
|
# Unset default P2PRC env path
|
|
unset P2PRC
|
|
|
|
# Run with 2 nodes
|
|
P2PRC_instances 3
|
|
|
|
## Start instances
|
|
Start_all_instances 3
|
|
|
|
## List ip tables of nodes started
|
|
IP_Tables_after_Started 3
|
|
#
|
|
## Remove test files created
|
|
Remove_all_test_files
|
|
|
|
## Kill all instances
|
|
Kill_all_instances
|