mirror of
https://github.com/YunoHost/package_check.git
synced 2024-09-03 20:06:20 +02:00
Contournement bug #654 et loop de test
This commit is contained in:
parent
2670d2d4fb
commit
621e7d1784
4 changed files with 163 additions and 31 deletions
28
sub_scripts/loop_#654.sh
Executable file
28
sub_scripts/loop_#654.sh
Executable file
|
@ -0,0 +1,28 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Boucle de test pour partir à la chasse au bug #654 (https://dev.yunohost.org/issues/654)
|
||||
|
||||
# Donner en argument le package à tester
|
||||
# Un ctrl+C est nécessaire pour stopper la boucle!
|
||||
# Sur un second terminal, tail -f package_check/patch_#654.log pour récupérer les erreurs
|
||||
|
||||
if [ "$#" -eq 0 ]; then
|
||||
echo "Le script prend en argument le package à tester."
|
||||
exit 1
|
||||
fi
|
||||
if [ "$#" -gt 1 ]; then
|
||||
echo "Le script prend un seul argument."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Récupère le dossier du script
|
||||
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$(echo $PWD/$(dirname "$0" | cut -d '.' -f2) | sed 's@/$@@')"; fi
|
||||
|
||||
sudo rm "$script_dir/../pcheck.lock" # Retire le lock
|
||||
touch "$script_dir/../patch_#654.log"
|
||||
|
||||
while (true) # Boucle infinie...
|
||||
do
|
||||
"$script_dir/../package_check.sh" --bash-mode "$1"
|
||||
# "$script_dir/../package_check.sh" --bash-mode --no_lxc "$1"
|
||||
done
|
73
sub_scripts/loop_#654_pcheckless.sh
Executable file
73
sub_scripts/loop_#654_pcheckless.sh
Executable file
|
@ -0,0 +1,73 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Boucle de test pour partir à la chasse au bug #654 (https://dev.yunohost.org/issues/654)
|
||||
|
||||
# Un ctrl+C est nécessaire pour stopper la boucle!
|
||||
|
||||
# !!!!!! Attention, ce script doit tourner dans une VM exclusivement !!!!!!
|
||||
|
||||
APP="my_webapp_ynh"
|
||||
APPID=multi_webapp
|
||||
MANIFEST_ARGS_MOD="domain=crudelis-test4.fr&path=/site&admin=mcrudelis&sql=No&is_public=Yes"
|
||||
|
||||
# Récupère le dossier du script
|
||||
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$(echo $PWD/$(dirname "$0" | cut -d '.' -f2) | sed 's@/$@@')"; fi
|
||||
|
||||
patchlog="$script_dir/temppatchlog654"
|
||||
patch654="$script_dir/patch_#654_pcheckless.log"
|
||||
COMPLETE_LOG="/var/log/yunohost/yunohost-cli.log"
|
||||
|
||||
touch "$patch654"
|
||||
lprogress=$(sudo wc -l "$COMPLETE_LOG" | cut -d ' ' -f 1) # Compte le nombre de ligne du log complet
|
||||
|
||||
PATCH_654 () {
|
||||
sudo tail -n +$lprogress "$COMPLETE_LOG" > "$patchlog" # Copie le fichier de log à partir de la dernière ligne du log préexistant
|
||||
lprogress=$(sudo wc -l "$COMPLETE_LOG" | cut -d ' ' -f 1) # Compte le nombre de ligne du log complet
|
||||
lprogress=$(( $lprogress + 1 )) # Ignore la première ligne, reprise de l'ancien log.
|
||||
|
||||
bug=0
|
||||
|
||||
if grep -q "L'exécution du script .* ne s'est pas terminée" "$patchlog"; then
|
||||
bug=1
|
||||
elif grep -q "Script execution hasn’t terminated:" "$patchlog"; then
|
||||
bug=1
|
||||
elif grep -q "La ejecución del script no ha terminado:" "$patchlog"; then
|
||||
bug=1
|
||||
elif grep -q "Skriptausführung noch nicht beendet" "$patchlog"; then
|
||||
bug=1
|
||||
fi
|
||||
if [ "$bug" -eq 1 ]
|
||||
then
|
||||
echo -e "\e[91m\n!! Bug 654 détecté !!\n\e[0m"
|
||||
echo -e "$(date)\nBug 654\n" >> "$patch654" # Patch #654
|
||||
fi
|
||||
}
|
||||
|
||||
while (true) # Boucle infinie...
|
||||
do
|
||||
echo "Installation"
|
||||
sudo yunohost --debug app install "$APP" -a "$MANIFEST_ARGS_MOD" > /dev/null
|
||||
PATCH_654
|
||||
echo "Remove"
|
||||
sudo yunohost --debug app remove $APPID > /dev/null
|
||||
PATCH_654
|
||||
echo "Réinstallation"
|
||||
sudo yunohost --debug app install "$APP" -a "$MANIFEST_ARGS_MOD" > /dev/null
|
||||
PATCH_654
|
||||
echo "Upgrade"
|
||||
sudo yunohost --debug app upgrade $APPID -f "$APP" > /dev/null
|
||||
PATCH_654
|
||||
echo "Backup"
|
||||
sudo yunohost backup delete Backup_test
|
||||
sudo yunohost --debug backup create -n Backup_test --apps $APPID --hooks conf_ssowat data_home conf_ynh_firewall conf_cron > /dev/null
|
||||
PATCH_654
|
||||
echo "Remove"
|
||||
sudo yunohost --debug app remove $APPID > /dev/null
|
||||
PATCH_654
|
||||
echo "Restore"
|
||||
sudo yunohost --debug backup restore Backup_test --force --apps $APPID > /dev/null
|
||||
PATCH_654
|
||||
echo "Remove"
|
||||
sudo yunohost --debug app remove $APPID > /dev/null
|
||||
PATCH_654
|
||||
done
|
26
sub_scripts/patch_#654.sh
Executable file
26
sub_scripts/patch_#654.sh
Executable file
|
@ -0,0 +1,26 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Ce patch détecte l'erreur "L'exécution du script ne s'est pas terminée", Bug #654 (https://dev.yunohost.org/issues/654)
|
||||
# Il permet, en cas d'erreur, de relancer le test qui vient d'échouer.
|
||||
# En attendant de trouver la source de cette erreur, ce patch permet de soulager les tests de CI qui virent irrémédiablement au rouge en raison de la forte fréquence de ce bug.
|
||||
|
||||
patchlog="$script_dir/temppatchlog654"
|
||||
|
||||
export lprogress=0
|
||||
|
||||
PATCH_654 () {
|
||||
sudo tail -n +$lprogress "$COMPLETE_LOG" > "$patchlog" # Copie le fichier de log à partir de la dernière ligne du log préexistant
|
||||
lprogress=$(sudo wc -l "$COMPLETE_LOG" | cut -d ' ' -f 1) # Compte le nombre de ligne du log complet
|
||||
lprogress=$(( $lprogress + 1 )) # Ignore la première ligne, reprise de l'ancien log.
|
||||
|
||||
if grep -q "L'exécution du script .* ne s'est pas terminée" "$patchlog"; then
|
||||
return 1
|
||||
elif grep -q "Script execution hasn’t terminated:" "$patchlog"; then
|
||||
return 1
|
||||
elif grep -q "La ejecución del script no ha terminado:" "$patchlog"; then
|
||||
return 1
|
||||
elif grep -q "Skriptausführung noch nicht beendet" "$patchlog"; then
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
67
sub_scripts/testing_process.sh
Executable file → Normal file
67
sub_scripts/testing_process.sh
Executable file → Normal file
|
@ -429,8 +429,8 @@ CHECK_BACKUP_RESTORE () {
|
|||
REMOVE_APP # Suppression de l'app
|
||||
ECHO_FORMAT "\nRestauration de l'application après suppression de l'application...\n" "white" "bold"
|
||||
if [ "$no_lxc" -ne 0 ]; then # Si lxc n'est pas utilisé, impossible d'effectuer le 2e test
|
||||
j=1 # Ignore le 2e test
|
||||
echo "LXC n'est pas utilisé, impossible de tester la restauration sur un système vierge...\n"
|
||||
j=2 # Ignore le 2e test
|
||||
echo -e "LXC n'est pas utilisé, impossible de tester la restauration sur un système vierge...\n"
|
||||
fi
|
||||
elif [ "$j" -eq 1 ]
|
||||
then # Puis la restauration après restauration du conteneur (si LXC est utilisé)
|
||||
|
@ -846,7 +846,26 @@ echo -n "Non implémenté"
|
|||
# GLOBAL_CHECK_FINALPATH=0
|
||||
}
|
||||
|
||||
TEST_LAUNCHER () {
|
||||
# $1 prend le nom de la fonction à démarrer.
|
||||
# $2 prend l'argument de la fonction, le cas échéant
|
||||
# Ce launcher permet de factoriser le code autour du lancement des fonctions de test
|
||||
BUG654=1 # Patch #654
|
||||
while [ "$BUG654" -eq "1" ]; do # Patch #654
|
||||
$1 $2 # Exécute le test demandé, avec son éventuel argument
|
||||
LXC_STOP # Arrête le conteneur LXC
|
||||
PATCH_654 # Patch #654
|
||||
BUG654=$? # Patch #654
|
||||
if [ "$BUG654" -eq "1" ]; then # Patch #654
|
||||
ECHO_FORMAT "\n!! Bug 654 détecté !!\n" "red" clog # Patch #654
|
||||
echo -e "date\nBug 654 sur $1 $2\n\n" >> "$script_dir/patch_#654.log" # Patch #654
|
||||
cur_test=$((cur_test-1))
|
||||
fi # Patch #654
|
||||
done # Patch #654
|
||||
}
|
||||
|
||||
TESTING_PROCESS () {
|
||||
source "$script_dir/sub_scripts/patch_#654.sh" # Patch #654
|
||||
# Lancement des tests
|
||||
cur_test=1
|
||||
ECHO_FORMAT "\nScénario de test: $PROCESS_NAME\n" "white" "underlined"
|
||||
|
@ -854,62 +873,48 @@ TESTING_PROCESS () {
|
|||
PACKAGE_LINTER # Vérification du package avec package linter
|
||||
fi
|
||||
if [ "$setup_sub_dir" -eq 1 ]; then
|
||||
CHECK_SETUP_SUBDIR # Test d'installation en sous-dossier
|
||||
LXC_STOP
|
||||
TEST_LAUNCHER CHECK_SETUP_SUBDIR # Test d'installation en sous-dossier
|
||||
fi
|
||||
if [ "$setup_root" -eq 1 ]; then
|
||||
CHECK_SETUP_ROOT # Test d'installation à la racine du domaine
|
||||
LXC_STOP
|
||||
TEST_LAUNCHER CHECK_SETUP_ROOT # Test d'installation à la racine du domaine
|
||||
fi
|
||||
if [ "$setup_nourl" -eq 1 ]; then
|
||||
CHECK_SETUP_NO_URL # Test d'installation sans accès par url
|
||||
LXC_STOP
|
||||
TEST_LAUNCHER CHECK_SETUP_NO_URL # Test d'installation sans accès par url
|
||||
fi
|
||||
if [ "$upgrade" -eq 1 ]; then
|
||||
CHECK_UPGRADE # Test d'upgrade
|
||||
LXC_STOP
|
||||
TEST_LAUNCHER CHECK_UPGRADE # Test d'upgrade
|
||||
fi
|
||||
if [ "$setup_private" -eq 1 ]; then
|
||||
CHECK_PUBLIC_PRIVATE private # Test d'installation en privé
|
||||
LXC_STOP
|
||||
TEST_LAUNCHER CHECK_PUBLIC_PRIVATE private # Test d'installation en privé
|
||||
fi
|
||||
if [ "$setup_public" -eq 1 ]; then
|
||||
CHECK_PUBLIC_PRIVATE public # Test d'installation en public
|
||||
LXC_STOP
|
||||
TEST_LAUNCHER CHECK_PUBLIC_PRIVATE public # Test d'installation en public
|
||||
fi
|
||||
if [ "$multi_instance" -eq 1 ]; then
|
||||
CHECK_MULTI_INSTANCE # Test d'installation multiple
|
||||
LXC_STOP
|
||||
TEST_LAUNCHER CHECK_MULTI_INSTANCE # Test d'installation multiple
|
||||
fi
|
||||
if [ "$wrong_user" -eq 1 ]; then
|
||||
CHECK_COMMON_ERROR wrong_user # Test d'erreur d'utilisateur
|
||||
LXC_STOP
|
||||
TEST_LAUNCHER CHECK_COMMON_ERROR wrong_user # Test d'erreur d'utilisateur
|
||||
fi
|
||||
if [ "$wrong_path" -eq 1 ]; then
|
||||
CHECK_COMMON_ERROR wrong_path # Test d'erreur de path ou de domaine
|
||||
LXC_STOP
|
||||
TEST_LAUNCHER CHECK_COMMON_ERROR wrong_path # Test d'erreur de path ou de domaine
|
||||
fi
|
||||
if [ "$incorrect_path" -eq 1 ]; then
|
||||
CHECK_COMMON_ERROR incorrect_path # Test d'erreur de forme de path
|
||||
LXC_STOP
|
||||
TEST_LAUNCHER CHECK_COMMON_ERROR incorrect_path # Test d'erreur de forme de path
|
||||
fi
|
||||
if [ "$port_already_use" -eq 1 ]; then
|
||||
CHECK_COMMON_ERROR port_already_use # Test d'erreur de port
|
||||
LXC_STOP
|
||||
TEST_LAUNCHER CHECK_COMMON_ERROR port_already_use # Test d'erreur de port
|
||||
fi
|
||||
if [ "$corrupt_source" -eq 1 ]; then
|
||||
CHECK_CORRUPT # Test d'erreur sur source corrompue -> Comment je vais provoquer ça!?
|
||||
LXC_STOP
|
||||
TEST_LAUNCHER CHECK_CORRUPT # Test d'erreur sur source corrompue -> Comment je vais provoquer ça!?
|
||||
fi
|
||||
if [ "$fail_download_source" -eq 1 ]; then
|
||||
CHECK_DL # Test d'erreur de téléchargement de la source -> Comment!?
|
||||
LXC_STOP
|
||||
TEST_LAUNCHER CHECK_DL # Test d'erreur de téléchargement de la source -> Comment!?
|
||||
fi
|
||||
if [ "$final_path_already_use" -eq 1 ]; then
|
||||
CHECK_FINALPATH # Test sur final path déjà utilisé.
|
||||
LXC_STOP
|
||||
TEST_LAUNCHER CHECK_FINALPATH # Test sur final path déjà utilisé.
|
||||
fi
|
||||
if [ "$backup_restore" -eq 1 ]; then
|
||||
CHECK_BACKUP_RESTORE # Test de backup puis de Restauration
|
||||
TEST_LAUNCHER CHECK_BACKUP_RESTORE # Test de backup puis de Restauration
|
||||
fi
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue