diff --git a/Makefile b/Makefile index c09c4cc7adbdf473f58c1f8c82b539f627e80760..c2888caca9f4ea9fb9606d5f217b98362dc07576 100644 --- a/Makefile +++ b/Makefile @@ -41,7 +41,7 @@ makelinksim: @make -C linksimulator/ # It is likely that you will need to update this -tests: all +tests: debug @./tests/run_tests.sh # By default, logs are disabled. But you can enable them with the debug target. diff --git a/tests/advanced_test.sh b/tests/advanced_test.sh index 540a1f6ac6da8d9004315edcca79f7cb5a4ec8f5..a8258bda72cbfe847a8426fed928e584cca8aa5f 100755 --- a/tests/advanced_test.sh +++ b/tests/advanced_test.sh @@ -7,26 +7,32 @@ fi FILENAME=$1 BASENAME=$(basename $FILENAME) +TEST_OUTPUT_FILES='unwanted_logs/advanced_tests' BSN_PRE="${BASENAME%.*}" BSN_EXT="${BASENAME##*.}" GREEN='\033[0;32m' NC='\033[0m' # Create the logs directory -mkdir unwanted_logs 2>/dev/null +mkdir ${TEST_OUTPUT_FILES}/ 2>/dev/null # cleanup d'un test précédent -rm -f ./unwanted_logs/adv_${BSN_PRE}_received_file.${BSN_EXT} ./unwanted_logs/adv_valgrind_${BSN_PRE}_receiver.log ./unwanted_logs/adv_valgrind_${BSN_PRE}_sender.log -touch ./unwanted_logs/adv_${BSN_PRE}_received_file.${BSN_EXT} ./unwanted_logs/adv_valgrind_${BSN_PRE}_receiver.log ./unwanted_logs/adv_valgrind_${BSN_PRE}_sender.log +rm -f ${TEST_OUTPUT_FILES}/adv_${BSN_PRE}_received_file.${BSN_EXT} \ + ${TEST_OUTPUT_FILES}/adv_valgrind_${BSN_PRE}_receiver.log \ + ${TEST_OUTPUT_FILES}/adv_valgrind_${BSN_PRE}_sender.log +touch ${TEST_OUTPUT_FILES}/adv_${BSN_PRE}_received_file.${BSN_EXT} \ + ${TEST_OUTPUT_FILES}/adv_valgrind_${BSN_PRE}_receiver.log \ + ${TEST_OUTPUT_FILES}/adv_valgrind_${BSN_PRE}_sender.log # We first launch the link simulator -./linksimulator/link_sim -p 65027 -P 65139 -l 70 -d 1500 -e 20 -c 10 -R &>./unwanted_logs/adv_${BSN_PRE}_link.log & +./linksimulator/link_sim -p 65027 -P 65139 -l 70 -d 1500 -e 20 -c 10 -R &>${TEST_OUTPUT_FILES}/adv_${BSN_PRE}_link.log & link_pid=$! # On lance le receiver et capture sa sortie standard -valgrind --leak-check=full --log-file=./unwanted_logs/adv_${BSN_PRE}_valgrind_receiver.log ./receiver ::1 65139 1> ./unwanted_logs/adv_${BSN_PRE}_received_file.${BSN_EXT} 2> ./unwanted_logs/adv_${BSN_PRE}_receiver.log & -receiver_pid=$! +valgrind --leak-check=full --log-file=${TEST_OUTPUT_FILES}/adv_${BSN_PRE}_valgrind_receiver.log \ + ./receiver ::1 65139 1> ${TEST_OUTPUT_FILES}/adv_${BSN_PRE}_received_file.${BSN_EXT} \ + 2> ${TEST_OUTPUT_FILES}/adv_${BSN_PRE}_receiver.log & receiver_pid=$! cleanup() { @@ -37,9 +43,10 @@ cleanup() trap cleanup SIGINT # Kill les process en arrière plan en cas de ^-C # On démarre le transfert -if ! valgrind --leak-check=full --log-file=./unwanted_logs/adv_valgrind_${BSN_PRE}_receiver.log ./sender -f ${FILENAME} ::1 65027 2> ./unwanted_logs/adv_${BSN_PRE}_sender.log ; then +if ! valgrind --leak-check=full --log-file=${TEST_OUTPUT_FILES}/adv_valgrind_${BSN_PRE}_receiver.log \ + ./sender -f ${FILENAME} ::1 65027 2> ${TEST_OUTPUT_FILES}/adv_${BSN_PRE}_sender.log ; then echo "Crash du sender!" - cat ./unwanted_logs/adv_${BSN_PRE}_sender.log + cat ${TEST_OUTPUT_FILES}/adv_${BSN_PRE}_sender.log err=1 # On enregistre l'erreur fi @@ -52,7 +59,7 @@ if kill -0 $receiver_pid &> /dev/null ; then else # On teste la valeur de retour du receiver if ! wait $receiver_pid ; then echo "Crash du receiver!" - cat ./unwanted_logs/adv_${BSN_PRE}_receiver.log + cat ${TEST_OUTPUT_FILES}/adv_${BSN_PRE}_receiver.log err=1 fi fi @@ -62,12 +69,12 @@ kill -9 $link_pid wait $link_pid 2>/dev/null # On vérifie que le transfert s'est bien déroulé -if [[ "$(md5sum ${FILENAME} | awk '{print $1}')" != "$(md5sum ./unwanted_logs/adv_${BSN_PRE}_received_file.${BSN_EXT} | awk '{print $1}')" ]]; then +if [[ "$(md5sum ${FILENAME} | awk '{print $1}')" != "$(md5sum ${TEST_OUTPUT_FILES}/adv_${BSN_PRE}_received_file.${BSN_EXT} | awk '{print $1}')" ]]; then echo "Le transfert a corrompu le fichier!" echo "Diff binaire des deux fichiers: (attendu vs produit)" - diff -C 9 <(od -Ax -t x1z ${FILENAME}) <(od -Ax -t x1z ./unwanted_logs/adv_${BSN_PRE}_received_file.${BSN_EXT}) + diff -C 9 <(od -Ax -t x1z ${FILENAME}) <(od -Ax -t x1z ${TEST_OUTPUT_FILES}/adv_${BSN_PRE}_received_file.${BSN_EXT}) exit 1 else - echo -e "${GREEN}Le transfert est réussi!${NC}" + echo -e "${GREEN}The transfer has succeeded!${NC}" exit ${err:-0} # En cas d'erreurs avant, on renvoie le code d'erreur fi \ No newline at end of file diff --git a/tests/run_tests.sh b/tests/run_tests.sh index 3eea596b7eb4c8c198174ad1da564715e103a5c4..38622cccac86a2e91b10889ad98d2b4d0e08a401 100755 --- a/tests/run_tests.sh +++ b/tests/run_tests.sh @@ -4,8 +4,10 @@ FILESIZE="" TEST_FILES_DIR=./test_files/ +rm -rf ./unwanted_logs/* + # We want our tests to always use valgrind -echo "Starting simple tests ..." +echo -e "\nStarting simple tests ...\n" for FILENAME in "$TEST_FILES_DIR"/* do FILESIZE=$(stat -c%s "$FILENAME") @@ -18,10 +20,10 @@ do fi done -echo "Finished Simple tests." +echo -e "Finished Simple tests." if [ -d linksimulator/ ]; then - echo "Starting ... advanced tests !" + echo -e "\nStarting ... advanced tests !\n" # Now we ran advnced tests for FILENAME in "$TEST_FILES_DIR"/* do diff --git a/tests/simple_test.sh b/tests/simple_test.sh index b70b30ff7fb5cb44838e539182304e75b8cc7f49..6f9210a0b6ea5ce7b353e0eab17d5c7c5008d822 100755 --- a/tests/simple_test.sh +++ b/tests/simple_test.sh @@ -7,23 +7,33 @@ fi FILENAME=$1 BASENAME=$(basename $FILENAME) +TEST_OUTPUT_FILES='unwanted_logs/simple_test' BSNM_PRE="${BASENAME%.*}" BSNM_EXT="${BASENAME##*.}" GREEN='\033[0;32m' NC='\033[0m' # Create the logs directory -mkdir unwanted_logs 2>/dev/null +mkdir ${TEST_OUTPUT_FILES}/ 2>/dev/null # Cleanup d'un test précédent -rm -f ./unwanted_logs/${BSNM_PRE}_received_file.${BSNM_EXT} ./unwanted_logs/valgrind_${BSNM_PRE}_receiver.log ./unwanted_logs/valgrind_${BSNM_PRE}_sender.log ./unwanted_logs/${BSNM_PRE}_sender.log ./unwanted_logs/${BSNM_PRE}_receiver.log -touch ./unwanted_logs/${BSNM_PRE}_received_file.${BSNM_EXT} ./unwanted_logs/valgrind_${BSNM_PRE}_receiver.log ./unwanted_logs/valgrind_${BSNM_PRE}_sender.log ./unwanted_logs/${BSNM_PRE}_sender.log ./unwanted_logs/${BSNM_PRE}_receiver.log +rm -f ${TEST_OUTPUT_FILES}/${BSNM_PRE}_received_file.${BSNM_EXT} \ + ${TEST_OUTPUT_FILES}/valgrind_${BSNM_PRE}_receiver.log \ + ${TEST_OUTPUT_FILES}/valgrind_${BSNM_PRE}_sender.log \ + ${TEST_OUTPUT_FILES}/${BSNM_PRE}_sender.log \ + ${TEST_OUTPUT_FILES}/${BSNM_PRE}_receiver.log +touch ${TEST_OUTPUT_FILES}/${BSNM_PRE}_received_file.${BSNM_EXT} \ + ${TEST_OUTPUT_FILES}/valgrind_${BSNM_PRE}_receiver.log \ + ${TEST_OUTPUT_FILES}/valgrind_${BSNM_PRE}_sender.log \ + ${TEST_OUTPUT_FILES}/${BSNM_PRE}_sender.log \ + ${TEST_OUTPUT_FILES}/${BSNM_PRE}_receiver.log # On lance le receiver et capture sa sortie standard -valgrind --leak-check=full --log-file=./unwanted_logs/valgrind_${BSNM_PRE}_receiver.log ./receiver ::1 65197 1> ./unwanted_logs/${BSNM_PRE}_received_file.${BSNM_EXT} 2> ./unwanted_logs/${BSNM_PRE}_receiver.log & -receiver_pid=$! +valgrind --leak-check=full --log-file=${TEST_OUTPUT_FILES}/valgrind_${BSNM_PRE}_receiver.log \ + ./receiver ::1 65197 1> ${TEST_OUTPUT_FILES}/${BSNM_PRE}_received_file.${BSNM_EXT} \ + 2> ${TEST_OUTPUT_FILES}/${BSNM_PRE}_receiver.log & receiver_pid=$! cleanup() { @@ -34,9 +44,10 @@ cleanup() trap cleanup SIGINT # Kill les process en arrière plan en cas de ^-C # We start the transfer -if ! valgrind --leak-check=full --log-file=./unwanted_logs/valgrind_${BSNM_PRE}_sender.log ./sender -f ${FILENAME} ::1 65197 2> ./unwanted_logs/${BSNM_PRE}_sender.log ; then +if ! valgrind --leak-check=full --log-file=${TEST_OUTPUT_FILES}/valgrind_${BSNM_PRE}_sender.log \ + ./sender -f ${FILENAME} ::1 65197 2> ${TEST_OUTPUT_FILES}/${BSNM_PRE}_sender.log ; then echo "The sender crashed!" - cat ./unwanted_logs/${BSNM_PRE}_sender.log + cat ${TEST_OUTPUT_FILES}/${BSNM_PRE}_sender.log err=1 # On enregistre l'erreur fi @@ -49,16 +60,16 @@ if kill -0 $receiver_pid &> /dev/null ; then else # We check the return value of the receiver if ! wait $receiver_pid ; then echo "The receiver crashed!" - cat ./unwanted_logs/${BSNM_PRE}_receiver.log + cat ${TEST_OUTPUT_FILES}/${BSNM_PRE}_receiver.log err=1 fi fi # We check that the transfer ran through properly -if [[ "$(md5sum ${FILENAME} | awk '{print $1}')" != "$(md5sum ./unwanted_logs/${BSNM_PRE}_received_file.${BSNM_EXT} | awk '{print $1}')" ]]; then +if [[ "$(md5sum ${FILENAME} | awk '{print $1}')" != "$(md5sum ${TEST_OUTPUT_FILES}/${BSNM_PRE}_received_file.${BSNM_EXT} | awk '{print $1}')" ]]; then echo "The transfer has corrupted the file!" echo "Diff binaire des deux fichiers: (attendu vs produit)" - diff -C 9 <(od -Ax -t x1z ${FILENAME}) <(od -Ax -t x1z ./unwanted_logs/${BSNM_PRE}_received_file.${BSNM_EXT}) + diff -C 9 <(od -Ax -t x1z ${FILENAME}) <(od -Ax -t x1z ${TEST_OUTPUT_FILES}/${BSNM_PRE}_received_file.${BSNM_EXT}) exit 1 else echo -e "${GREEN}The transfer has succeeded!${NC}"