diff --git a/basice2e/ud-stress.sh b/basice2e/ud-stress.sh new file mode 100755 index 0000000000000000000000000000000000000000..821680d3c89e90cf42304d28a98913063a7a724d --- /dev/null +++ b/basice2e/ud-stress.sh @@ -0,0 +1,105 @@ +#!/bin/bash + +set -e + +NETWORKENTRYPOINT=$1 + +DEBUGLEVEL=${DEBUGLEVEL-1} + +RESULTSFOLDER="udresults" +CLIENTOPTS="--password hello --ndf results/ndf.json --verify-sends --sendDelay 100 --waitTimeout 360 --unsafe-channel-creation -v $DEBUGLEVEL" +CLIENTUDOPTS="--password hello --ndf results/ndf.json -v $DEBUGLEVEL" +CLIENTOUT=$RESULTSFOLDER + +rm -fr "$RESULTSFOLDER.bak" || true +cp -ra "$RESULTSFOLDER" "$RESULTSFOLDER.bak" || true +mkdir -p "$RESULTSFOLDER" || true + +if [ "$NETWORKENTRYPOINT" == "betanet" ] +then + NETWORKENTRYPOINT=$(sort -R betanet.txt | head -1) +elif [ "$NETWORKENTRYPOINT" == "mainnet" ] +then + NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1) +elif [ "$NETWORKENTRYPOINT" == "release" ] +then + NETWORKENTRYPOINT=$(sort -R release.txt | head -1) +elif [ "$NETWORKENTRYPOINT" == "devnet" ] +then + NETWORKENTRYPOINT=$(sort -R devnet.txt | head -1) +elif [ "$NETWORKENTRYPOINT" == "" ] +then + echo "NO NETWORK SPECIFIED, USING mainnet" + NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1) +fi + +echo "NETWORK: $NETWORKENTRYPOINT" + +echo "Connecting to network defined at $NETWORKENTRYPOINT" +echo $NETWORKENTRYPOINT > "$RESULTSFOLDER/startgwserver.txt" + +echo "DOWNLOADING TLS Cert..." +CMD="openssl s_client -showcerts -connect $(cat $RESULTSFOLDER/startgwserver.txt)" +echo $CMD +eval $CMD < /dev/null 2>&1 > "$RESULTSFOLDER/startgwcert.bin" +CMD="cat $RESULTSFOLDER/startgwcert.bin | openssl x509 -outform PEM" +echo $CMD +eval $CMD > "$RESULTSFOLDER/startgwcert.pem" +head "$RESULTSFOLDER/startgwcert.pem" + +echo "DOWNLOADING NDF..." +CLIENTCMD="../bin/client getndf --gwhost $(cat $RESULTSFOLDER/startgwserver.txt) --cert $RESULTSFOLDER/startgwcert.pem" +eval $CLIENTCMD >> $RESULTSFOLDER/ndf.json 2>&1 & +PIDVAL=$! +echo "$CLIENTCMD -- $PIDVAL" +wait $PIDVAL + +cat $RESULTSFOLDER/ndf.json | jq . | head -5 + +file $RESULTSFOLDER/ndf.json + +if [ ! -s $RESULTSFOLDER/ndf.json ] +then + echo "$RESULTSFOLDER/ndf.json is empty, cannot proceed" + exit -1 +fi + +# Create session +if [ ! -s $RESULTSFOLDER/blob13 ]; then + echo "CREATING NEW CLIENT..." + CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client13.log -s $CLIENTOUT/blob13 --writeContact $CLIENTOUT/client13-contact.bin --unsafe -m \"Hello from Client13 to myself, without E2E Encryption\"" + eval $CLIENTCMD >> $CLIENTOUT/client13.txt & + PIDVAL=$! + echo "$CLIENTCMD -- $PIDVAL" + wait $PIDVAL + echo "DONE!" +else + echo "REUSING EXISTING CLIENT..." + mv $RESULTSFOLDER/client13.txt $RESULTSFOLDER/client13.txt.bak + mv $RESULTSFOLDER/client13.log $RESULTSFOLDER/client13.log.bak + CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client13.log -s $CLIENTOUT/blob13 --writeContact $CLIENTOUT/client13-contact.bin --unsafe -m \"Hello from Client13 to myself, without E2E Encryption\"" + eval $CLIENTCMD >> $CLIENTOUT/client13.txt & + PIDVAL=$! + echo "$CLIENTCMD -- $PIDVAL" + wait $PIDVAL + echo "DONE!" +fi + +# The following attempts to register a username, not normally needed to be tested... +# CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s $CLIENTOUT/blob13 --register josh13" +# eval $CLIENTCMD >> $CLIENTOUT/client13.txt & +# PIDVAL=$! +# echo "$CLIENTCMD -- $PIDVAL" +# wait $PIDVAL + + +# Test forever +while [ true ]; do + echo "SEARCHING..." + CLIENTCMD="timeout 240s ../bin/client ud $CLIENTUDOPTS -l $CLIENTOUT/client13.log -s $CLIENTOUT/blob13 --searchusername Jake" + eval $CLIENTCMD > $CLIENTOUT/josh31.bin & + PIDVAL1=$! + echo "$CLIENTCMD -- $PIDVAL1" + wait $PIDVAL1 + echo "SUCCESS!" +done