wip tester
This commit is contained in:
151
grademe.sh
Normal file
151
grademe.sh
Normal file
@@ -0,0 +1,151 @@
|
||||
#!/bin/bash
|
||||
|
||||
ARGS="Wrong number of arguments"
|
||||
FATAL="Fatal error"
|
||||
err=0
|
||||
port=0
|
||||
while [ $port -lt 1024 -o $port -gt 10000 ]; do
|
||||
port=$RANDOM
|
||||
done
|
||||
echo "Running tests on port $port..."
|
||||
|
||||
check()
|
||||
{
|
||||
# check exit status of most recently executed command
|
||||
# [ $? -eq 1 ] && echo -e "✅\c" || { echo -e "❌\c"; err=$(( $err + 1 )); }
|
||||
if [ $? -eq 1 ]
|
||||
then
|
||||
echo -e "✅\c";
|
||||
else
|
||||
echo -e "❌\c";
|
||||
err=$(( $err + 1 ));
|
||||
fi
|
||||
|
||||
# compare output of cat with first argument
|
||||
# [ "$(cat log.txt)" = "$1" ] && echo -e "\033[70G✅" || { echo -e "\033[70G❌"; err=$(( $err + 1 )); }
|
||||
if [ "$(cat log.txt)" = "$1" ]
|
||||
then
|
||||
echo -e "\033[70G✅";
|
||||
else
|
||||
echo -e "\033[70G❌";
|
||||
err=$(( $err + 1 ));
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
check_diff()
|
||||
{
|
||||
INDENT=50
|
||||
echo "coucou"
|
||||
|
||||
case "$1" in
|
||||
5 | 7)
|
||||
INDENT=55
|
||||
;;
|
||||
esac
|
||||
|
||||
diff "log$1.txt" "assets/test$1" &> /dev/null
|
||||
[ $? -eq 0 ] && echo -e "\033[${INDENT}G✅\c" || { echo -e "\033[${INDENT}G❌\c"; err=$(( $err + 1 )); }
|
||||
}
|
||||
|
||||
|
||||
### COMPIL
|
||||
echo -e "\033[36m[+] Checking compilation...\033[0m\033[50G\c"
|
||||
clang -Wall -Wextra -Werror mini_serv.c -o mini_serv &> log.txt
|
||||
[ "$(cat log.txt)" = "" ] && echo "✅"|| { echo -e "\033[31mCompilation error...\033[0m"; cat log.txt; rm log.txt; exit 1; }
|
||||
|
||||
|
||||
### HANDLE ERRORS
|
||||
echo -e "\n\033[36m[+] Checking errors\033[0m\033[50GExit status\033[70GDiff Output"
|
||||
echo -e "\033[33m[+] Checking no arguments output...\033[0m\033[50G\c"
|
||||
./mini_serv &> log.txt
|
||||
check "$ARGS"
|
||||
|
||||
echo -e "\033[33m[+] Checking two many arguments output...\033[0m\033[50G\c"
|
||||
./mini_serv 1 2 &> log.txt
|
||||
check "$ARGS"
|
||||
|
||||
echo -e "\033[33m[+] Checking syscall error output...\033[0m\033[50G\c"
|
||||
./mini_serv "$port" & > log.txt
|
||||
./mini_serv "$port" &> log.txt
|
||||
check "$FATAL"
|
||||
echo "[+] Killing mini_serv..."
|
||||
killall -q mini_serv
|
||||
|
||||
|
||||
### DIFF OUTPUT
|
||||
echo -e "\n\033[36m[+] Checking output...\033[0m\033[50G"
|
||||
echo -e "\033[33m[+] 1 client and 1 message...\033[0m\033[50G\c"
|
||||
./mini_serv "$port" & > log1.txt
|
||||
r=$(nc localhost "$port" > log1.txt) &
|
||||
echo "coucou" | nc localhost "$port"
|
||||
check_diff 1
|
||||
echo -e "\n[+] Killing mini_serv..."
|
||||
killall -q mini_serv
|
||||
|
||||
|
||||
echo -e "\n\033[33m[+] 1 client and many messages...\033[0m\033[50G\c"
|
||||
port=$(( $port - 5 ))
|
||||
./mini_serv "$port" & > log2.txt
|
||||
r=$(nc localhost "$port" > log2.txt) &
|
||||
sleep 1
|
||||
echo "coucou" | nc localhost "$port"
|
||||
echo "good morning" | nc localhost "$port"
|
||||
echo "holà que tal?" | nc localhost "$port"
|
||||
echo -e "\033[32mGREEN\n\t\033[31mRED" | nc localhost "$port"
|
||||
echo "" | nc localhost "$port"
|
||||
echo -e "\033[0mhello\t\tbonjour" | nc localhost "$port"
|
||||
echo "last one" | nc localhost "$port"
|
||||
echo "✅" | nc localhost "$port"
|
||||
check_diff 2
|
||||
echo -e "\n[+] Killing mini_serv..."
|
||||
killall -q mini_serv
|
||||
|
||||
|
||||
echo -e "\n\033[33m[+] 1 client and multi lines...\033[0m\033[50G\c"
|
||||
./mini_serv "$(( $port + 1 ))" & > log3.txt
|
||||
r=$(nc localhost "$(( $port + 1 ))" > log3.txt) &
|
||||
sleep 1
|
||||
cat assets/lorem | nc localhost "$(( $port + 1 ))"
|
||||
check_diff 3
|
||||
echo -e "\n[+] Killing mini_serv..."
|
||||
killall -q mini_serv
|
||||
|
||||
|
||||
echo -e "\n\033[33m[+] 2 clients and a simple message...\033[0m\033[50G\c"
|
||||
./mini_serv "$(( $port + 2 ))" & > log4.txt
|
||||
r=$(nc localhost "$(( $port + 2 ))" > log4.txt) &
|
||||
sleep 1
|
||||
r2=$(nc localhost "$(( $port + 2 ))" > log5.txt) &
|
||||
sleep 1
|
||||
echo "hello" | nc localhost "$(( $port + 2 ))"
|
||||
check_diff 4
|
||||
check_diff 5
|
||||
echo -e "\n[+] Killing mini_serv..."
|
||||
killall -q mini_serv
|
||||
|
||||
|
||||
echo -e "\n\033[33m[+] 2 clients and multi ligne message...\033[0m\033[50G\c"
|
||||
./mini_serv "$(( $port - 1 ))" & > log6.txt
|
||||
r=$(nc localhost "$(( $port - 1 ))" > log6.txt) &
|
||||
sleep 1
|
||||
r2=$(nc localhost "$(( $port - 1 ))" > log7.txt) &
|
||||
sleep 1
|
||||
cat assets/lorem | nc localhost "$(( $port - 1 ))"
|
||||
check_diff 6
|
||||
check_diff 7
|
||||
echo -e "\n[+] Killing mini_serv..."
|
||||
killall -q mini_serv
|
||||
|
||||
|
||||
|
||||
### SUMMARY
|
||||
[ $err -eq 0 ] && echo -e "\n\033[32mAll tests passed :)\033[0m" || echo -e "\033[31m$err test(s) failed :(\033[0m"
|
||||
|
||||
|
||||
### CLEAN
|
||||
|
||||
rm -rf mini_serv log*.txt
|
||||
|
||||
exit $err
|
||||
|
||||
Reference in New Issue
Block a user