Skip to content
Snippets Groups Projects
Commit 5944879e authored by Jonah Husson's avatar Jonah Husson
Browse files

Add run & parse scripts for delayed pickup test

parent 27221099
No related branches found
No related tags found
3 merge requests!68Master merge,!13Add run & parse scripts for delayed pickup test,!11Release
#!/usr/bin/env python3
from datetime import datetime
pwd = "/Users/jonahhusson/gitlab.com/elixxir/integration/delayedpickup"
def main():
# SENDER LOGS
client42_log = get_file_contents(pwd+"/results/clients/client42-wv.log")
client42_text = get_file_contents(pwd+"/results/clients/client42-wv.txt")
# RECEIVER LOGS
client43_log = get_file_contents(pwd+"/results/clients/client43-wv.log")
client43_text = get_file_contents(pwd+"/results/clients/client43-wv.txt")
messages = {}
failedrounds = {}
sendcnt = 0
for ind, l in enumerate(client42_log):
try:
temp = l.split(' ', 3)
level = temp[0]
date = temp[1]
time = temp[2]
rest = temp[3]
if level == "INFO" and "Successfully sent to EphID" in rest:
digest = rest[rest.rfind("(")+1:rest.rfind(")")].split(" ")[1]
source = rest[rest.find("(")+1:rest.find(")")].split(" ")[1]
to_round = rest[rest.find("round"):].split()[1]
if not to_round.isnumeric():
print(f"WARNING: Parsed round id {to_round} is not numeric")
to_round = -1
messages[digest] = {"sent": (date, time), "receiverID": source, "sentRound": int(to_round)}
sendcnt += 1
elif "Result of sending message" in rest:
statusmsgs = [l for l in client42_log[ind+1:ind+3] if "Round" in l and ("failed" in l or "timed" in l)]
for msg in statusmsgs:
for part in msg.split():
if part.isnumeric():
failedrounds[int(part)] = True
except Exception as e:
pass
recvcnt = 0
for ind, l in enumerate(client43_log):
try:
temp = l.split(' ', 3)
level = temp[0]
date = temp[1]
time = temp[2]
rest = temp[3]
if level == "INFO" and "Received message of type E2E" in rest:
digest = rest.split(" ")[-1].strip()
sender_id = rest[rest.find("from"):].split()[1]
messages[digest]['received'] = (date, time)
messages[digest]['senderID'] = sender_id
recvcnt += 1
except Exception as e:
pass
for key, val in messages.items():
round = val['sentRound']
if round in failedrounds.keys():
del messages[key]
sent = val['sent']
sent_parsed = datetime.strptime(sent[0] + " " + sent[1], "%Y/%m/%d %H:%M:%S.%f")
received = val['received']
received_parsed = datetime.strptime(received[0] + " " + received[1], "%Y/%m/%d %H:%M:%S.%f")
print(f"Message [{key}]: sent {sent_parsed}, received {received_parsed}, delta: {received_parsed - sent_parsed}")
def get_file_contents(path):
with open(path, "r") as f:
return f.readlines()
if __name__ == "__main__":
main()
#!/bin/bash
set -e
rm -fr results.bak || true
mv results results.bak || rm -fr results || true
rm -fr blob* || true
rm *-contact.json || true
if [ $# -gt 3 ]
then
echo "usage: $0 [gatewayip:port] [sleepTime] [numSends]"
exit
fi
NETWORKENTRYPOINT=$1
SLEEPTIME=$2
NUMSENDS=$3
DEBUGLEVEL=${DEBUGLEVEL-1}
SERVERLOGS=results/servers
GATEWAYLOGS=results/gateways
CLIENTOUT=results/clients
UDBOUT=results/udb-console.txt
CLIENTCLEAN=results/clients-cleaned
CLIENTOPTS="--password hello --ndf results/ndf.json --waitTimeout 240 --unsafe-channel-creation -v $DEBUGLEVEL"
CLIENTUDOPTS="--password hello --ndf results/ndf.json -v $DEBUGLEVEL"
CLIENTSINGLEOPTS="--password hello --ndf results/ndf.json -v $DEBUGLEVEL"
CLIENTGROUPOPTS="--password hello --ndf results/ndf.json -v $DEBUGLEVEL"
CLIENTFILETRANSFEROPTS="--password hello --ndf results/ndf.json -v $DEBUGLEVEL"
mkdir -p $SERVERLOGS
mkdir -p $GATEWAYLOGS
mkdir -p $CLIENTOUT
mkdir -p $CLIENTCLEAN
echo "Connecting to network defined at $NETWORKENTRYPOINT"
echo $NETWORKENTRYPOINT > results/startgwserver.txt
echo "Sleep time $SLEEPTIME"
echo "Num sends $NUMSENDS"
echo "DOWNLOADING TLS Cert..."
CMD="openssl s_client -showcerts -connect $(cat results/startgwserver.txt)"
echo $CMD
eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin"
CMD="cat results/startgwcert.bin | openssl x509 -outform PEM"
echo $CMD
eval $CMD > "results/startgwcert.pem"
head "results/startgwcert.pem"
echo "DOWNLOADING NDF..."
CLIENTCMD="../bin/client getndf --gwhost $(cat results/startgwserver.txt) --cert results/startgwcert.pem"
eval $CLIENTCMD >> results/ndf.json 2>&1 &
PIDVAL=$!
echo "$CLIENTCMD -- $PIDVAL"
wait $PIDVAL
cat results/ndf.json | jq . | head -5
file results/ndf.json
if [ ! -s results/ndf.json ]
then
echo "results/ndf.json is empty, cannot proceed"
exit -1
fi
#export GRPC_GO_LOG_VERBOSITY_LEVEL=99
#export GRPC_GO_LOG_SEVERITY_LEVEL=info
# Non-precanned E2E user messaging
echo "SENDING E2E MESSAGES TO NEW USERS..."
CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --writeContact $CLIENTOUT/rick42-contact.bin --unsafe -m \"Hello from Rick42 to myself, without E2E Encryption\""
eval $CLIENTCMD >> $CLIENTOUT/client42.txt || true &
PIDVAL=$!
echo "$CLIENTCMD -- $PIDVAL"
wait $PIDVAL
CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43.log -s blob43 --writeContact $CLIENTOUT/ben43-contact.bin --destfile $CLIENTOUT/rick42-contact.bin --send-auth-request --sendCount 0 --receiveCount 0"
eval $CLIENTCMD >> $CLIENTOUT/client43.txt || true &
PIDVAL2=$!
echo "$CLIENTCMD -- $PIDVAL"
while [ ! -s $CLIENTOUT/ben43-contact.bin ]; do
sleep 1
echo -n "."
done
TMPID=$(cat $CLIENTOUT/client42.log | grep -a "User\:" | awk -F' ' '{print $5}')
RICKID=${TMPID}
echo "RICK ID: $RICKID"
TMPID=$(cat $CLIENTOUT/client43.log | grep -a "User\:" | awk -F' ' '{print $5}')
BENID=${TMPID}
echo "BEN ID: $BENID"
# Client 42 will now wait for client 43's E2E Auth channel request and confirm
CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42.log -s blob42 --destfile $CLIENTOUT/ben43-contact.bin --sendCount 0 --receiveCount 0"
eval $CLIENTCMD >> $CLIENTOUT/client42.txt || true &
PIDVAL=$!
echo "$CLIENTCMD -- $PIDVAL"
wait $PIDVAL
wait $PIDVAL2
# Do some basic e2e sending to make sure everything is set up properly
CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS --verify-sends -l $CLIENTOUT/client42.log -s blob42 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\""
eval $CLIENTCMD >> $CLIENTOUT/client42.txt || true &
PIDVAL=$!
echo "$CLIENTCMD -- $PIDVAL"
CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS --verify-sends -l $CLIENTOUT/client43.log -s blob43 --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\""
eval $CLIENTCMD >> $CLIENTOUT/client43.txt || true &
PIDVAL2=$!
echo "$CLIENTCMD -- $PIDVAL"
wait $PIDVAL
wait $PIDVAL2
CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS --verify-sends -l $CLIENTOUT/client42.log -s blob42 --destid b64:$BENID --sendCount 5 --receiveCount 5 -m \"Hello from Rick42, with E2E Encryption\""
eval $CLIENTCMD >> $CLIENTOUT/client42.txt || true &
PIDVAL=$!
echo "$CLIENTCMD -- $PIDVAL"
CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS --verify-sends -l $CLIENTOUT/client43.log -s blob43 --destid b64:$RICKID --sendCount 5 --receiveCount 5 -m \"Hello from Ben43, with E2E Encryption\""
eval $CLIENTCMD >> $CLIENTOUT/client43.txt || true &
PIDVAL2=$!
echo "$CLIENTCMD -- $PIDVAL"
wait $PIDVAL
wait $PIDVAL2
sleep 15
# Client 42 sends to client 43 with verified-sends on
CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client42-wv.log -s blob42 --destid b64:$BENID --sendCount $NUMSENDS --receiveCount 0 --verify-sends -m \"Hello from Rick42, but verified this time\""
eval $CLIENTCMD >> $CLIENTOUT/client42-wv.txt || true &
PIDVAL=$!
echo "$CLIENTCMD -- $PIDVAL"
wait $PIDVAL
# Wait the specified duration
sleep $SLEEPTIME
# Client 43 runs and looks for the messages from client 42
CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client43-wv.log -s blob43 --destid b64:$RICKID --sendCount 0 --receiveCount $NUMSENDS"
eval $CLIENTCMD >> $CLIENTOUT/client43-wv.txt || true &
PIDVAL=$!
echo "$CLIENTCMD -- $PIDVAL"
wait $PIDVAL
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment