Commit b9dee2cac272651f85b7bc56f0bc8f2368290a12

Authored by Etienne Pallier
1 parent e5ded94f
Exists in master and in 1 other branch dev

bugfix test date en cours...

CHANGES.txt
... ... @@ -74,6 +74,11 @@ Outre ces changements, voici d'autres changements importants :
74 74 ======= CHANGES =======
75 75  
76 76 -------
  77 +30/07/2020 v3.7.9.78 (EP)
  78 + - (i) Meilleur résilience (reprise après crash) du script UPDATE avec fichier ftpf (files_to_process.txt file)
  79 + => permet de s'assurer que les script sql non exécutés (à cause crash ou stop script) le seront à l'itération suivante
  80 +
  81 +-------
77 82 29/07/2020 v3.7.9.77 (EP)
78 83 - Bugfix Page "Statistiques"
79 84 - (e) Nouveau champ recherche générale des matériels sur page liste des matériels (/materiels/index) : plus intuitif, plus pratique, plus efficace
... ...
README.md
... ... @@ -42,8 +42,8 @@ Logiciel testé et validé sur les configurations suivantes :
42 42  
43 43 --------------------------------------------------------------------------------------------
44 44  
45   -Date: 29/07/2020
46   -Version: 3.7.9.77
  45 +Date: 30/07/2020
  46 +Version: 3.7.9.78
47 47  
48 48  
49 49 HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes)
... ...
install/update.sh
... ... @@ -48,7 +48,11 @@ echo
48 48  
49 49 # TEST only
50 50 #[[ $TEST == 1 ]] && (rm ../database/update/test.txt ; rm ../database/update/db-update-2014-*.sh ; touch ../database/update/db-update-2014-08-23.sh)
51   -[[ $TEST == 1 ]] && (rm $db_update_scripts_folder/test.txt ; rm $db_update_scripts_folder/db-update-2014-*.sql ; touch $db_update_scripts_folder/db-update-2014-08-23.sql)
  51 +if [[ $TEST == 1 ]] ; then
  52 + echo "(TEST MODE)"
  53 + echo "Suppression des fichiers de test créés précédemment (si besoin)"
  54 + (rm $db_update_scripts_folder/test.txt ; rm $db_update_scripts_folder/db-update-2014-*.sql ; touch $db_update_scripts_folder/db-update-2014-08-23.sql)
  55 +fi
52 56 #mv ../database/update/db-update-2019-01-12.sh /tmp/
53 57  
54 58 # ----------------------------------------
... ... @@ -61,7 +65,6 @@ cp -fp ../composer.json /tmp/ || abort
61 65 ######[[ $TEST == 1 ]] && cp ../composer.lock /tmp/composer.json
62 66 composer_json_prev=/tmp/composer.json
63 67  
64   -# b) Sauvegarde du dossier database/update/
65 68 # b) Sauvegarde du dossier database/update/script_sql/
66 69 #db_update_scripts_before=( "key1" "key2" "key3" "key4" "key5" "key6" "key7" "key8" "key9" "key10" )
67 70 rm -rf $db_update_scripts_folder_tmp/ || abort
... ... @@ -176,7 +179,52 @@ db_update_scripts_new=$( echo ${db_update_scripts_before[@]} ${db_update_scripts
176 179 #echo ${#db_update_scripts_new[@]} ; echo ${db_update_scripts_new[@]}
177 180 # Pas de nouveau script de mise à jour BD à exécuter => exit
178 181 #[[ $db_update_scripts_new == '' ]] && echo "==> PAS NÉCESSAIRE" ; exit 0
  182 +
  183 +# On ajoute les anciens fichiers (de l'itération précédente) restant à traiter
  184 +echo "- (a) Fichiers restant à traiter de l'itération précédente"
  185 +#cat $ftpf
  186 +if [[ $TEST == 1 ]] ; then
  187 + echo "db-update-2014-08-23.sql" > $ftpf
  188 + echo "db-update-2014-08-24.sql" >> $ftpf
  189 + echo "db-update-2014-08-26.sql" >> $ftpf
  190 + db_update_scripts_new+=("db-update-2014-08-10.sql")
  191 +fi
  192 +db_update_scripts_old=$(cat $ftpf)
  193 +#echo $db_update_scripts_old
  194 +echo ${db_update_scripts_old[*]}
  195 +
  196 +echo "- (b) Nouveaux fichiers à traiter (pour cette itération)"
  197 +#echo ${db_update_scripts_new[@]}
  198 +echo ${db_update_scripts_new[*]}
  199 +
  200 +# Ensemble des fichiers à traiter (anciens || nouveaux) : anciens UNION nouveaux (fusion sans doublon)"
  201 +echo "- (c) Ensemble des fichiers à traiter (a + b)"
  202 +declare -a db_update_scripts
  203 +#[[ " ${a[@]} " =~ " ${val} " ]] && echo "true" || echo "false
  204 +# foreach old script, add it to array db_update_scripts (only if not duplicate)
  205 +for db_update_script_old in ${db_update_scripts_old[*]} ; do
  206 + if [[ ! "${db_update_scripts_new[*]}" =~ "${db_update_script_old}" ]] ; then
  207 + db_update_scripts_new+=($db_update_script_old) || abort
  208 + fi
  209 +done
  210 +db_update_scripts_new_tmp=$( echo ${db_update_scripts_new[*]} | tr ' ' '\n' | sort ) || abort
  211 +db_update_scripts_new=(${db_update_scripts_new_tmp[*]})
  212 +#echo ${db_update_scripts_new[*]}
  213 +
  214 +
  215 +# On sauve les noms des nouveaux fichiers à traiter dans le fichier ftpf (MERGE)
  216 +# D'abord, on le vide
  217 +cat /dev/null > $ftpf
  218 +# Puis, on le remplit
  219 +for db_update_script_new in ${db_update_scripts_new[*]} ; do
  220 + ###echo $db_update_script_new >> $ftpf
  221 + echo ""
  222 +done
  223 +
  224 +# Si ftpf est vide, rien à faire, on stoppe
179 225 if [[ $db_update_scripts_new == '' ]] ; then
  226 +#if [ ! -s $ftpf ] ; then
  227 + #echo "Le fichier ftpf est vide"
180 228 echo "==> PAS NÉCESSAIRE"
181 229 echo
182 230 exit 0
... ... @@ -187,8 +235,10 @@ fi
187 235  
188 236 # b) Mise a jour de la BD
189 237  
190   -echo "Voici le(s) script(s) à exécuter :"
191   -echo ${db_update_scripts_new[@]}
  238 +#echo "Voici le(s) script(s) à exécuter :"
  239 +#cat $ftpf
  240 +#echo $db_update_scripts_new
  241 +echo ${db_update_scripts_new[*]}
192 242 # Remove files that were DELETED by "git pull"
193 243 for db_update_script_new in ${db_update_scripts_new[@]} ; do
194 244 # [[ ! -f ../database/update/$db_update_script_new ]] && echo "$db_update_script_new sera ignoré car supprimé par le 'git pull'" # TODO: supprimer cet element du tableau
... ... @@ -196,20 +246,32 @@ for db_update_script_new in ${db_update_scripts_new[@]} ; do
196 246 done
197 247 # On va dans le dossier database/update/ :
198 248 #cd $db_update_scripts_folder/ || abort
  249 +#echo "* Exécuter ces scripts SQL (o/n) ? [o]"
  250 +#read do_it ; [[ -z $do_it ]] && do_it="o"
  251 +#echo $do_it
  252 +#[[ $do_it != "o" ]] && exit 0
  253 +
  254 +#echo "go on"
  255 +#exit
  256 +
199 257 cd $db_update_scripts_folder/../ || abort
200 258 for db_update_script_new in ${db_update_scripts_new[@]} ; do
201 259 # Ignorer les fichiers supprimés par le "git pull"
202 260 #[[ ! -f $db_update_script_new ]] && continue
203   - [[ ! -f script_sql/$db_update_script_new ]] && continue
204   - echo ; echo
205   - #echo "- Execution du script de mise à jour de la BD $db_update_scripts_folder/$db_update_script_new (o/n) ? [o]"
206   - echo "- Execution du script de mise à jour de la BD $db_update_scripts_folder/$db_update_script_new"
207   - #read do_it ; [[ -z $do_it ]] && do_it="o" ; echo $do_it
208   - #if [[ $do_it == "o" ]] ; then
209   - #ls -l ./$db_update_script_new_ || abort
210   - #./$db_update_script_new || abort
211   - ./db-update.sh script_sql/$db_update_script_new || abort
212   - #fi
  261 + #[[ ! -f script_sql/$db_update_script_new ]] && continue
  262 + if [[ -f script_sql/$db_update_script_new ]] ; then
  263 + echo ; echo
  264 + #echo "- Execution du script de mise à jour de la BD $db_update_scripts_folder/$db_update_script_new (o/n) ? [o]"
  265 + echo "- Execution du script de mise à jour de la BD $db_update_scripts_folder/$db_update_script_new"
  266 + #read do_it ; [[ -z $do_it ]] && do_it="o" ; echo $do_it
  267 + #if [[ $do_it == "o" ]] ; then
  268 + #ls -l ./$db_update_script_new_ || abort
  269 + #./$db_update_script_new || abort
  270 + ./db-update.sh script_sql/$db_update_script_new || abort
  271 + #fi
  272 + fi
  273 + # On supprime le fichier traité de $ftpf
  274 + # TODO:
213 275 done
214 276 #[[ $TEST == 1 ]] && (rm test.txt ; rm db-update-2014-*.sh)
215 277 [[ $TEST == 1 ]] && (rm script_sql/test.txt ; rm script_sql/db-update-2014-*.sql)
... ...
tests/TestCase/Controller/MaterielsControllerTest.php
... ... @@ -2566,7 +2566,11 @@ class MaterielsControllerTest extends General {
2566 2566 //debug($_SESSION['Flash']);
2567 2567 $flash_message = isset($_SESSION['Flash']['flash']) ? $_SESSION['Flash']['flash'][0]['message'] : [];
2568 2568 //debug($flash_message);
2569   - if ($SUCCESS && $expected_flash_message) $this->assertTrue($flash_message != [], "Pas de message flash alors qu'il devrait y en avoir un !");
  2569 + if ($SUCCESS && $expected_flash_message) {
  2570 + debug($expected_flash_message);
  2571 + debug($flash_message);
  2572 + $this->assertTrue($flash_message != [], "Pas de message flash alors qu'il devrait y en avoir un !");
  2573 + }
2570 2574 if ($flash_message) {
2571 2575 // Assert a flash message in the 'flash' key.
2572 2576 // Test message partiel
... ... @@ -2596,7 +2600,7 @@ class MaterielsControllerTest extends General {
2596 2600 //$full_action = "/materiels/$action_link";
2597 2601 $full_action = "/$controller/$action_link";
2598 2602 if ($id) $full_action .= "/$id";
2599   - //debug($full_action);
  2603 + debug($full_action);
2600 2604 //debug($data);
2601 2605 $this->post($full_action, $data);
2602 2606 //if ($action =='statusValidated') return;
... ... @@ -2759,6 +2763,7 @@ class MaterielsControllerTest extends General {
2759 2763 //$d2 = 'date_reception';
2760 2764 $d1 = $d[0];
2761 2765 $d2 = $d[1];
  2766 +
2762 2767 // - date (reception) < date acq => KO
2763 2768 $date = $yesterday = new \DateTime('-1 days',$tz);
2764 2769 /*
... ... @@ -2771,6 +2776,7 @@ class MaterielsControllerTest extends General {
2771 2776 ];
2772 2777 $i++; debug("- test $i.a");
2773 2778 $this->_doActionAndCheckResult($action, $id, FALSE, $new_data);
  2779 +
2774 2780 // - date (reception) = date acq => OK
2775 2781 $date = $today;
2776 2782 $new_data = [
... ... @@ -2779,6 +2785,7 @@ class MaterielsControllerTest extends General {
2779 2785 ];
2780 2786 $i++; debug("- test $i.b");
2781 2787 $this->_doActionAndCheckResult($action, $id, TRUE, $new_data);
  2788 +
2782 2789 // - date (reception) > date_acq (jqa MAX_DIFF - 1 jour) => OK...
2783 2790 /*
2784 2791 $far = new \DateTime('now',$tz);
... ... @@ -2791,8 +2798,10 @@ class MaterielsControllerTest extends General {
2791 2798 $d1 => $today->format($format),
2792 2799 $d2 => $date->format($format)
2793 2800 ];
  2801 + debug($new_data);
2794 2802 $i++; debug("- test $i.c");
2795 2803 $this->_doActionAndCheckResult($action, $id, TRUE, $new_data);
  2804 +
2796 2805 // - ...mais pas trop loin dans le futur (MAX_DIFF) => KO
2797 2806 $date = $far->add(new \DateInterval('P1D'));
2798 2807 //debug($date);
... ... @@ -2800,6 +2809,7 @@ class MaterielsControllerTest extends General {
2800 2809 $d1 => $today->format($format),
2801 2810 $d2 => $date->format($format)
2802 2811 ];
  2812 + debug($new_data);
2803 2813 $i++; debug("- test $i.d");
2804 2814 $this->_doActionAndCheckResult($action, $id, FALSE, $new_data);
2805 2815 } // foreach $dates
... ...