net: Add ability to only start/stop client nodes (#6503)

* Add info --eval

* net: Add ability to start idle client nodes
This commit is contained in:
Michael Vines 2019-10-22 16:08:49 -07:00 committed by GitHub
parent 4c515d0ef1
commit e462a7d1d5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 9 deletions

View File

@ -8,6 +8,7 @@ zone=
bootstrapValidatorAddress=
bootstrapValidatorMachineType=
clientNodeCount=0
idleClients=false
additionalValidatorCount=10
publicNetwork=false
stopNetwork=false
@ -140,6 +141,9 @@ while [[ -n $1 ]]; do
elif [[ $1 = --limit-ledger-size ]]; then
maybeLimitLedgerSize=$1
shift 1
elif [[ $1 = --idle-clients ]]; then
idleClients=true
shift 1
else
usage "Unknown long option: $1"
fi
@ -394,6 +398,10 @@ if ! $skipStart; then
$maybeLimitLedgerSize
)
if $idleClients; then
args+=(-c "idle=$clientNodeCount=")
fi
time net/net.sh "${args[@]}"
) || ok=false

View File

@ -533,6 +533,7 @@ deploy() {
-t "$CHANNEL_OR_TAG" \
-n ${TDS_NODE_COUNT} \
-c ${TDS_CLIENT_COUNT} \
--idle-clients \
-P -u \
-a tds-solana-com --letsencrypt tds.solana.com \
${maybeHashesPerTick} \

View File

@ -79,6 +79,7 @@ validatorAdditionalDiskSizeInGb=
externalNodes=false
failOnValidatorBootupFailure=true
preemptible=true
evalInfo=false
publicNetwork=false
letsEncryptDomainName=
@ -159,6 +160,8 @@ Manage testnet instances
none
info-specific options:
--eval - Output in a form that can be eval-ed by a shell: eval $(gce.sh info)
none
EOF
@ -189,6 +192,9 @@ while [[ -n $1 ]]; do
elif [[ $1 == --dedicated ]]; then
preemptible=false
shift
elif [[ $1 == --eval ]]; then
evalInfo=true
shift
else
usage "Unknown long option: $1"
fi
@ -799,14 +805,21 @@ info)
printf " %-16s | %-15s | %-15s | %s\n" "$nodeType" "$ip" "$ipPrivate" "$zone"
}
printNode "Node Type" "Public IP" "Private IP" "Zone"
echo "-------------------+-----------------+-----------------+--------------"
if ! $evalInfo; then
printNode "Node Type" "Public IP" "Private IP" "Zone"
echo "-------------------+-----------------+-----------------+--------------"
fi
nodeType=bootstrap-leader
for i in $(seq 0 $(( ${#validatorIpList[@]} - 1)) ); do
ipAddress=${validatorIpList[$i]}
ipAddressPrivate=${validatorIpListPrivate[$i]}
zone=${validatorIpListZone[$i]}
printNode $nodeType "$ipAddress" "$ipAddressPrivate" "$zone"
if $evalInfo; then
echo "NET_VALIDATOR${i}_IP=$ipAddress"
else
printNode $nodeType "$ipAddress" "$ipAddressPrivate" "$zone"
fi
nodeType=validator
done
@ -814,21 +827,33 @@ info)
ipAddress=${clientIpList[$i]}
ipAddressPrivate=${clientIpListPrivate[$i]}
zone=${clientIpListZone[$i]}
printNode client "$ipAddress" "$ipAddressPrivate" "$zone"
if $evalInfo; then
echo "NET_CLIENT${i}_IP=$ipAddress"
else
printNode client "$ipAddress" "$ipAddressPrivate" "$zone"
fi
done
for i in $(seq 0 $(( ${#blockstreamerIpList[@]} - 1)) ); do
ipAddress=${blockstreamerIpList[$i]}
ipAddressPrivate=${blockstreamerIpListPrivate[$i]}
zone=${blockstreamerIpListZone[$i]}
printNode blockstreamer "$ipAddress" "$ipAddressPrivate" "$zone"
if $evalInfo; then
echo "NET_BLOCKSTREAMER${i}_IP=$ipAddress"
else
printNode blockstreamer "$ipAddress" "$ipAddressPrivate" "$zone"
fi
done
for i in $(seq 0 $(( ${#archiverIpList[@]} - 1)) ); do
ipAddress=${archiverIpList[$i]}
ipAddressPrivate=${archiverIpListPrivate[$i]}
zone=${archiverIpListZone[$i]}
printNode archiver "$ipAddress" "$ipAddressPrivate" "$zone"
if $evalInfo; then
echo "NET_ARCHIVER${i}_IP=$ipAddress"
else
printNode archiver "$ipAddress" "$ipAddressPrivate" "$zone"
fi
done
;;
status)

View File

@ -40,6 +40,7 @@ Operate a configured testnet
more than once. Defaults to bench-tps for all clients if not
specified.
Valid client types are:
idle
bench-tps
bench-exchange
User can optionally provide extraArgs that are transparently
@ -118,6 +119,7 @@ skipSetup=false
customPrograms=
updatePlatforms=
nodeAddress=
numIdleClients=0
numBenchTpsClients=0
numBenchExchangeClients=0
benchTpsExtraArgs=
@ -270,6 +272,10 @@ while getopts "h?T:t:o:f:rD:c:Fn:i:d" opt "${shortArgs[@]}"; do
exit 1
fi
case $clientType in
idle)
numIdleClients=$numClients
# $extraArgs ignored for 'idle'
;;
bench-tps)
numBenchTpsClients=$numClients
benchTpsExtraArgs=$extraArgs
@ -310,10 +316,10 @@ if [[ -n $numValidatorsRequested ]]; then
fi
numClients=${#clientIpList[@]}
numClientsRequested=$((numBenchTpsClients+numBenchExchangeClients))
numClientsRequested=$((numBenchTpsClients + numBenchExchangeClients + numIdleClients))
if [[ "$numClientsRequested" -eq 0 ]]; then
numBenchTpsClients=$numClients
numClientsRequested=$((numBenchTpsClients+numBenchExchangeClients))
numClientsRequested=$numClients
else
if [[ "$numClientsRequested" -gt "$numClients" ]]; then
echo "Error: More clients requested ($numClientsRequested) then available ($numClients)"
@ -740,7 +746,7 @@ deploy() {
# have caught up to the bootstrap leader yet
SECONDS=0
for ((i=0; i < "$numClients" && i < "$numClientsRequested"; i++)) do
for ((i=0; i < "$numClients" && i < $((numBenchTpsClients + numBenchExchangeClients)); i++)) do
if [[ $i -lt "$numBenchTpsClients" ]]; then
startClient "${clientIpList[$i]}" "solana-bench-tps" "$i"
else