From 65afb2b0354c4d8a495603c98e5902e4d1302a3b Mon Sep 17 00:00:00 2001 From: "Richard T. Carback III" <rick.carback@gmail.com> Date: Mon, 7 Jun 2021 23:03:04 +0000 Subject: [PATCH] WIP group chat integration test --- basice2e/clients.goldoutput/client80.txt | 10 ++ basice2e/clients.goldoutput/client81.txt | 11 ++ basice2e/clients.goldoutput/client82.txt | 11 ++ basice2e/run.sh | 197 +++++++++++++++++++++++ 4 files changed, 229 insertions(+) create mode 100644 basice2e/clients.goldoutput/client80.txt create mode 100644 basice2e/clients.goldoutput/client81.txt create mode 100644 basice2e/clients.goldoutput/client82.txt diff --git a/basice2e/clients.goldoutput/client80.txt b/basice2e/clients.goldoutput/client80.txt new file mode 100644 index 0000000..859ae7d --- /dev/null +++ b/basice2e/clients.goldoutput/client80.txt @@ -0,0 +1,10 @@ +Created new group with name "Group Name" and message "80 inviting 81 and 82 to new group" +Got group with name "Group Name" and message "80 inviting 81 and 82 to new group" +Printed list of 1 groups. +Received group message: "Hello 2 from 82" +Received group message: "Hello from 81" +Received group message: "Hello from 82" +Sent message "Hello 2 from 80" to group. +Sent message "Hello from 80" to group. +Waiting for 1 group message(s) to be received. +Waiting for 2 group message(s) to be received. diff --git a/basice2e/clients.goldoutput/client81.txt b/basice2e/clients.goldoutput/client81.txt new file mode 100644 index 0000000..e6a105d --- /dev/null +++ b/basice2e/clients.goldoutput/client81.txt @@ -0,0 +1,11 @@ +Got group with name "Group Name" and message "80 inviting 81 and 82 to new group" +Joined group with name "Group Name" and message "80 inviting 81 and 82 to new group" +Left group. +Printed list of 1 groups. +Received group message: "Hello from 80" +Received group message: "Hello from 82" +Sent message "Hello from 81" to group. +Timed out waiting for 1 group message(s). +Waiting for 1 group message(s) to be received. +Waiting for 2 group message(s) to be received. +Waiting for group request to be received. diff --git a/basice2e/clients.goldoutput/client82.txt b/basice2e/clients.goldoutput/client82.txt new file mode 100644 index 0000000..170f71e --- /dev/null +++ b/basice2e/clients.goldoutput/client82.txt @@ -0,0 +1,11 @@ +Got group with name "Group Name" and message "80 inviting 81 and 82 to new group" +Joined group with name "Group Name" and message "80 inviting 81 and 82 to new group" +Printed list of 1 groups. +Received group message: "Hello 2 from 80" +Received group message: "Hello from 80" +Received group message: "Hello from 81" +Sent message "Hello 2 from 82" to group. +Sent message "Hello from 82" to group. +Waiting for 1 group message(s) to be received. +Waiting for 2 group message(s) to be received. +Waiting for group request to be received. diff --git a/basice2e/run.sh b/basice2e/run.sh index 42408ed..a56c9b3 100755 --- a/basice2e/run.sh +++ b/basice2e/run.sh @@ -37,6 +37,7 @@ CLIENTCLEAN=results/clients-cleaned CLIENTOPTS="--password hello --ndf results/ndf.json --waitTimeout 90 --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" mkdir -p $SERVERLOGS mkdir -p $GATEWAYLOGS @@ -495,6 +496,202 @@ then wait $PIDVAL2 fi + + +echo "TESTING GROUP CHAT..." +# Create authenticated channel between client 80 and 81 +CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client80.log -s blob80 --writeContact $CLIENTOUT/client80-contact.bin --unsafe -m \"Hello from contact 80 to myself, without E2E Encryption\"" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt || true & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +wait $PIDVAL1 +CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client81.log -s blob81 --writeContact $CLIENTOUT/client81-contact.bin --destfile $CLIENTOUT/client80-contact.bin --send-auth-request --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client81.txt || true & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" + +while [ ! -s $CLIENTOUT/client81-contact.bin ]; do + sleep 1 + echo -n "." +done +echo + +TMPID=$(cat $CLIENTOUT/client80.log | grep "User\:" | awk -F' ' '{print $5}') +CLIENT80ID=${TMPID} +echo "CLIENT 80 ID: $CLIENT80ID" +TMPID=$(cat $CLIENTOUT/client81.log | grep "User\:" | awk -F' ' '{print $5}') +CLIENT81ID=${TMPID} +echo "CLIENT 81 ID: $CLIENT81ID" + +# Client 81 will now wait for client 81's E2E Auth channel request and confirm +CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client80.log -s blob80 --destfile $CLIENTOUT/client81-contact.bin --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt || true & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +wait $PIDVAL1 +wait $PIDVAL2 + + +# Create authenticated channel between client 80 and 82 +CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client82.log -s blob82 --writeContact $CLIENTOUT/client82-contact.bin --destfile $CLIENTOUT/client80-contact.bin --send-auth-request --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client82.txt || true & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" + +while [ ! -s $CLIENTOUT/client82-contact.bin ]; do + sleep 1 + echo -n "." +done +echo + +TMPID=$(cat $CLIENTOUT/client82.log | grep "User\:" | awk -F' ' '{print $5}') +CLIENT82ID=${TMPID} +echo "CLIENT 82 ID: $CLIENT82ID" + +# Client 82 will now wait for client 82's E2E Auth channel request and confirm +CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client80.log -s blob80 --destfile $CLIENTOUT/client82-contact.bin --sendCount 0 --receiveCount 0" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt || true & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +wait $PIDVAL1 +wait $PIDVAL3 + +# User 1 Creates Group +echo "Group User IDs: $CLIENT80ID $CLIENT81ID $CLIENT82ID" +echo "b64:$CLIENT81ID" > $CLIENTOUT/groupParticipants +echo "b64:$CLIENT82ID" >> $CLIENTOUT/groupParticipants +CLIENTCMD="timeout 60s ../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --create $CLIENTOUT/groupParticipants --message \"80 inviting 81 and 82 to new group\"" +eval $CLIENTCMD > $CLIENTOUT/client80.txt 2>&1 || true & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --join" +eval $CLIENTCMD > $CLIENTOUT/client81.txt 2>&1 || true & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --join" +eval $CLIENTCMD > $CLIENTOUT/client82.txt 2>&1 || true & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" +wait $PIDVAL1 +wait $PIDVAL2 +wait $PIDVAL3 + +# Extract group ID -- Note to Jono this probably needs to be fixed! +GROUPID=$(cat $CLIENTOUT/client80.log | grep -a "NewGroupID\:" | awk -F' ' '{print $5}') +echo "Group ID: $GROUPID" + +# Print the group list from all users +CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --list" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 || true & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --list" +eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 || true & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --list" +eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 || true & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" +wait $PIDVAL1 +wait $PIDVAL2 +wait $PIDVAL3 + +# Print group from all users +CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --show $GROUPID" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 || true & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --show $GROUPID" +eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 || true & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --show $GROUPID" +eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 || true & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" +wait $PIDVAL1 +wait $PIDVAL2 +wait $PIDVAL3 + +# Now everyone sends their message +CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello from 80\"" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 || true & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello from 81\"" +eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 || true & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello from 82\"" +eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 || true & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" +wait $PIDVAL1 +wait $PIDVAL2 +wait $PIDVAL3 + +# Everyone waits for their message +CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --wait 2" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 || true & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --wait 2" +eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 || true & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --wait 2" +eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 || true & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" +wait $PIDVAL1 +wait $PIDVAL2 +wait $PIDVAL3 + +# Member 2 leaves the group +CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --leave $GROUPID" +eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 || true & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +wait $PIDVAL2 + +# 1 and 3 send a message successfully now, 2 does not +CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello 2 from 80\"" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 || true & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL2" +CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --sendMessage $GROUPID --message \"Hello 2 from 82\"" +eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 || true & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" +wait $PIDVAL1 +wait $PIDVAL2 +wait $PIDVAL3 + +# All 3 wait again +CLIENTCMD="../bin/client group -s blob80 -l $CLIENTOUT/client80.log $CLIENTGROUPOPTS --wait 1" +eval $CLIENTCMD >> $CLIENTOUT/client80.txt 2>&1 || true & +PIDVAL1=$! +echo "$CLIENTCMD -- $PIDVAL1" +CLIENTCMD="../bin/client group -s blob81 -l $CLIENTOUT/client81.log $CLIENTGROUPOPTS --wait 1" +eval $CLIENTCMD >> $CLIENTOUT/client81.txt 2>&1 || true & +PIDVAL2=$! +echo "$CLIENTCMD -- $PIDVAL2" +CLIENTCMD="../bin/client group -s blob82 -l $CLIENTOUT/client82.log $CLIENTGROUPOPTS --wait 1" +eval $CLIENTCMD >> $CLIENTOUT/client82.txt 2>&1 || true & +PIDVAL3=$! +echo "$CLIENTCMD -- $PIDVAL3" +wait $PIDVAL1 +wait $PIDVAL2 +wait $PIDVAL3 + +sort -b -o "$CLIENTOUT/client80.txt" "$CLIENTOUT/client80.txt" +sort -b -o "$CLIENTOUT/client81.txt" "$CLIENTOUT/client81.txt" +sort -b -o "$CLIENTOUT/client82.txt" "$CLIENTOUT/client82.txt" + +echo "GROUP CHAT FINISHED!" + + cp $CLIENTOUT/*.txt $CLIENTCLEAN/ sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt -- GitLab