Files
SignalChat/tester/minitalk_tester.sh
HexPloR 60eef6cebe ew
2024-06-23 23:59:58 +02:00

232 lines
8.3 KiB
Bash
Executable File

#!/bin/bash
###################################################
################# Minitalk Tester #################
echo -e "\n\033[1;34m========= MINITALK TESTER =========\033[0m\n"
# Correct paths if needed
minitalk_path="../"
results_path=results/
client_file=results/client.out.txt
server_file=results/server.out.txt
error_file=results/error.log
KO="[\033[31mKO\033[0m]"
OK="[\033[32mOK\033[0m]"
ERROR="[\033[33mERROR\033[0m]"
rm -rf $results_path 2> /dev/null
mkdir $results_path 2> /dev/null
###################################################
################### Compilation ###################
cd $minitalk_path
make re > /dev/null 2> /dev/null
# check if a program have been correctly creates
test_compile() {
ls $1 > /dev/null 2> /dev/null
if [ $? -eq 0 ]
then
echo -e "$1 \033[32m✔\033[0m"
else
echo -e "$1 \033[31mx\033[0m"
echo -e "Compilation $KO\n"
echo -e "\033[1mMinitalk failed ❌\033[0m\n"
make fclean > /dev/null 2> /dev/null
cd $tester_folder
exit 1
fi
}
test_compile client
test_compile server
echo ""
cd - > /dev/null 2> /dev/null
###################################################
#################### Execution ####################
# Execution of server
$minitalk_path/server > $server_file & server_pid=$!
sleep 1
# Check if the string has been received by the server
check_string(){
cat $server_file | grep "$@" > /dev/null 2> /dev/null
ret=$?
if [ $ret -eq 1 ]
then
test_ok=1
elif [ $ret -eq 2 ]
then
test_ok=2
else
test_ok=0
fi
}
# Execute client and check the transmission
tester_ok=0
test_transmission() {
# test_ok=0
$minitalk_path/client $server_pid "$@" > $client_file 2>> $client_file
check_string "$@"
if [ $test_ok -eq 0 ]
then
echo -en $OK
elif [ $test_ok -eq 1 ]
then
tester_ok=1
echo -en $KO
else
echo -en $ERROR
fi
}
###################################################
###################### Tests ######################
# Manual test
# Usage:./minitalk_tester.sh [string to pass]
if [ $# -ne 0 ]
then
echo -e "\t\033[2m## Client output ##\033[0m"
str="$@"
$minitalk_path/client $server_pid "$str"
kill $server_pid 2> /dev/null
wait $server_pid 2> /dev/null
echo -e "\n\t\033[2m## Server output ##\033[0m"
cat $server_file
len=${#str}
echo -e "\n____________________________________"
echo -e "\nstring size = $len\n"
rm -rf $results_path 2> /dev/null
cd $minitalk_path
make fclean > /dev/null 2> /dev/null
exit 0 2> /dev/null
fi
echo -e "\t\033[2m## Tests ##\033[0m\n"
# Tests of 10 characters
echo "10 characters:"
test_transmission "Hello World"
test_transmission "0123456789"
test_transmission "qwertyuiop"
test_transmission "zxcvbnm,./"
echo -e "\n"
# Tests of 100 characters
echo "100 characters:"
test_transmission "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, to"
test_transmission "The quick, brown fox jumps over a lazy dog. DJs flock by when MTV ax quiz prog. Junk MTV quiz graced"
test_transmission "Li Europan lingues es membres del sam familie. Lor separat existentie es un myth. Por scientie, musi"
test_transmission "A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring whi"
echo -e "\n"
# Tests of 1000 characters
echo "1000 characters:"
test_transmission "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. \
Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec \
quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec \
pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, \
venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. \
Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat \
vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra \
nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur \
ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, \
sem quam semper libero, sit amet adipiscing sem neque sed ipsum. N"
test_transmission "One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his \
bed into a horrible vermin. He lay on his armour-like back, and if he lifted his head a little he could see \
his brown belly, slightly domed and divided by arches into stiff sections. The bedding was hardly able to cover \
it and seemed ready to slide off any moment. His many legs, pitifully thin compared with the size of the rest \
of him, waved about helplessly as he looked. \"What's happened to me?\" he thought. It wasn't a dream. His room, \
a proper human room although a little too small, lay peacefully between its four familiar walls. A collection of \
textile samples lay spread out on the table - Samsa was a travelling salesman - and above it there hung a picture \
that he had recently cut out of an illustrated magazine and housed in a nice, gilded frame. It showed a lady fitted \
out with a fur hat and fur boa who sat upright, raising a heavy fur muff that covered the whole of her lower arm towards t"
test_transmission "But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and \
I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, \
the master-builder of human happiness. No one rejects, dislikes, or avoids pleasure itself, because it is pleasure, but \
because those who do not know how to pursue pleasure rationally encounter consequences that are extremely painful. Nor \
again is there anyone who loves or pursues or desires to obtain pain of itself, because it is pain, but because occasionally \
circumstances occur in which toil and pain can procure him some great pleasure. To take a trivial example, which of us \
ever undertakes laborious physical exercise, except to obtain some advantage from it? But who has any right to find fault \
with a man who chooses to enjoy a pleasure that has no annoying consequences, or one who avoids a pain that produces no \
resultant pleasure? On the other hand, we denounc"
test_transmission "The European languages are members of the same family. Their separate existence is a myth. For science, music, \
sport, etc, Europe uses the same vocabulary. The languages only differ in their grammar, their pronunciation and their \
most common words. Everyone realizes why a new common language would be desirable: one could refuse to pay expensive \
translators. To achieve this, it would be necessary to have uniform grammar, pronunciation and more common words. If \
several languages coalesce, the grammar of the resulting language is more simple and regular than that of the individual \
languages. The new common language will be more simple and regular than the existing European languages. It will be as \
simple as Occidental; in fact, it will be Occidental. To an English person, it will seem like simplified English, as a \
skeptical Cambridge friend of mine told me what Occidental is. The European languages are members of the same family. \
Their separate existence is a myth. For science, music, spo"
echo -e "\n"
# Test of a big string
bigstr=`cat bigTest.txt`
len=${#bigstr}
echo "$len characters:"
$minitalk_path/client $server_pid "$bigstr" > $client_file 2>> $client_file
check_string "$bigstr"
if [ $test_ok -eq 0 ]
then
echo -e $OK
elif [ $test_ok -eq 1 ]
then
echo -e $KO
tester_ok=1
else
echo -e $ERROR
fi
echo ""
###################################################
######################## END ######################
# Stop the server
kill $server_pid 2> /dev/null
wait $server_pid 2> /dev/null
# Display result ans clean up
if [ $tester_ok -ne 0 ]
then
echo -e "\033[1mMinitalk failed ❌\033[0m"
echo -e "Check \033[4m$server_file\033[0m\n"
else
echo -e "\033[1mMinitalk succeed ✅\033[0m\n"
rm -rf $results_path 2> /dev/null
cd $minitalk_path
make fclean > /dev/null 2> /dev/null
cd - > /dev/null 2> /dev/null
fi
exit 0