Commit b9dee2cac272651f85b7bc56f0bc8f2368290a12

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

bugfix test date en cours...

@@ -74,6 +74,11 @@ Outre ces changements, voici d'autres changements importants : @@ -74,6 +74,11 @@ Outre ces changements, voici d'autres changements importants :
74 ======= CHANGES ======= 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 29/07/2020 v3.7.9.77 (EP) 82 29/07/2020 v3.7.9.77 (EP)
78 - Bugfix Page "Statistiques" 83 - Bugfix Page "Statistiques"
79 - (e) Nouveau champ recherche générale des matériels sur page liste des matériels (/materiels/index) : plus intuitif, plus pratique, plus efficace 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
@@ -42,8 +42,8 @@ Logiciel testé et validé sur les configurations suivantes : @@ -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 HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes) 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,7 +48,11 @@ echo
48 48
49 # TEST only 49 # TEST only
50 #[[ $TEST == 1 ]] && (rm ../database/update/test.txt ; rm ../database/update/db-update-2014-*.sh ; touch ../database/update/db-update-2014-08-23.sh) 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 #mv ../database/update/db-update-2019-01-12.sh /tmp/ 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,7 +65,6 @@ cp -fp ../composer.json /tmp/ || abort
61 ######[[ $TEST == 1 ]] && cp ../composer.lock /tmp/composer.json 65 ######[[ $TEST == 1 ]] && cp ../composer.lock /tmp/composer.json
62 composer_json_prev=/tmp/composer.json 66 composer_json_prev=/tmp/composer.json
63 67
64 -# b) Sauvegarde du dossier database/update/  
65 # b) Sauvegarde du dossier database/update/script_sql/ 68 # b) Sauvegarde du dossier database/update/script_sql/
66 #db_update_scripts_before=( "key1" "key2" "key3" "key4" "key5" "key6" "key7" "key8" "key9" "key10" ) 69 #db_update_scripts_before=( "key1" "key2" "key3" "key4" "key5" "key6" "key7" "key8" "key9" "key10" )
67 rm -rf $db_update_scripts_folder_tmp/ || abort 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,7 +179,52 @@ db_update_scripts_new=$( echo ${db_update_scripts_before[@]} ${db_update_scripts
176 #echo ${#db_update_scripts_new[@]} ; echo ${db_update_scripts_new[@]} 179 #echo ${#db_update_scripts_new[@]} ; echo ${db_update_scripts_new[@]}
177 # Pas de nouveau script de mise à jour BD à exécuter => exit 180 # Pas de nouveau script de mise à jour BD à exécuter => exit
178 #[[ $db_update_scripts_new == '' ]] && echo "==> PAS NÉCESSAIRE" ; exit 0 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 if [[ $db_update_scripts_new == '' ]] ; then 225 if [[ $db_update_scripts_new == '' ]] ; then
  226 +#if [ ! -s $ftpf ] ; then
  227 + #echo "Le fichier ftpf est vide"
180 echo "==> PAS NÉCESSAIRE" 228 echo "==> PAS NÉCESSAIRE"
181 echo 229 echo
182 exit 0 230 exit 0
@@ -187,8 +235,10 @@ fi @@ -187,8 +235,10 @@ fi
187 235
188 # b) Mise a jour de la BD 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 # Remove files that were DELETED by "git pull" 242 # Remove files that were DELETED by "git pull"
193 for db_update_script_new in ${db_update_scripts_new[@]} ; do 243 for db_update_script_new in ${db_update_scripts_new[@]} ; do
194 # [[ ! -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 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,20 +246,32 @@ for db_update_script_new in ${db_update_scripts_new[@]} ; do
196 done 246 done
197 # On va dans le dossier database/update/ : 247 # On va dans le dossier database/update/ :
198 #cd $db_update_scripts_folder/ || abort 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 cd $db_update_scripts_folder/../ || abort 257 cd $db_update_scripts_folder/../ || abort
200 for db_update_script_new in ${db_update_scripts_new[@]} ; do 258 for db_update_script_new in ${db_update_scripts_new[@]} ; do
201 # Ignorer les fichiers supprimés par le "git pull" 259 # Ignorer les fichiers supprimés par le "git pull"
202 #[[ ! -f $db_update_script_new ]] && continue 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 done 275 done
214 #[[ $TEST == 1 ]] && (rm test.txt ; rm db-update-2014-*.sh) 276 #[[ $TEST == 1 ]] && (rm test.txt ; rm db-update-2014-*.sh)
215 [[ $TEST == 1 ]] && (rm script_sql/test.txt ; rm script_sql/db-update-2014-*.sql) 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,7 +2566,11 @@ class MaterielsControllerTest extends General {
2566 //debug($_SESSION['Flash']); 2566 //debug($_SESSION['Flash']);
2567 $flash_message = isset($_SESSION['Flash']['flash']) ? $_SESSION['Flash']['flash'][0]['message'] : []; 2567 $flash_message = isset($_SESSION['Flash']['flash']) ? $_SESSION['Flash']['flash'][0]['message'] : [];
2568 //debug($flash_message); 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 if ($flash_message) { 2574 if ($flash_message) {
2571 // Assert a flash message in the 'flash' key. 2575 // Assert a flash message in the 'flash' key.
2572 // Test message partiel 2576 // Test message partiel
@@ -2596,7 +2600,7 @@ class MaterielsControllerTest extends General { @@ -2596,7 +2600,7 @@ class MaterielsControllerTest extends General {
2596 //$full_action = "/materiels/$action_link"; 2600 //$full_action = "/materiels/$action_link";
2597 $full_action = "/$controller/$action_link"; 2601 $full_action = "/$controller/$action_link";
2598 if ($id) $full_action .= "/$id"; 2602 if ($id) $full_action .= "/$id";
2599 - //debug($full_action); 2603 + debug($full_action);
2600 //debug($data); 2604 //debug($data);
2601 $this->post($full_action, $data); 2605 $this->post($full_action, $data);
2602 //if ($action =='statusValidated') return; 2606 //if ($action =='statusValidated') return;
@@ -2759,6 +2763,7 @@ class MaterielsControllerTest extends General { @@ -2759,6 +2763,7 @@ class MaterielsControllerTest extends General {
2759 //$d2 = 'date_reception'; 2763 //$d2 = 'date_reception';
2760 $d1 = $d[0]; 2764 $d1 = $d[0];
2761 $d2 = $d[1]; 2765 $d2 = $d[1];
  2766 +
2762 // - date (reception) < date acq => KO 2767 // - date (reception) < date acq => KO
2763 $date = $yesterday = new \DateTime('-1 days',$tz); 2768 $date = $yesterday = new \DateTime('-1 days',$tz);
2764 /* 2769 /*
@@ -2771,6 +2776,7 @@ class MaterielsControllerTest extends General { @@ -2771,6 +2776,7 @@ class MaterielsControllerTest extends General {
2771 ]; 2776 ];
2772 $i++; debug("- test $i.a"); 2777 $i++; debug("- test $i.a");
2773 $this->_doActionAndCheckResult($action, $id, FALSE, $new_data); 2778 $this->_doActionAndCheckResult($action, $id, FALSE, $new_data);
  2779 +
2774 // - date (reception) = date acq => OK 2780 // - date (reception) = date acq => OK
2775 $date = $today; 2781 $date = $today;
2776 $new_data = [ 2782 $new_data = [
@@ -2779,6 +2785,7 @@ class MaterielsControllerTest extends General { @@ -2779,6 +2785,7 @@ class MaterielsControllerTest extends General {
2779 ]; 2785 ];
2780 $i++; debug("- test $i.b"); 2786 $i++; debug("- test $i.b");
2781 $this->_doActionAndCheckResult($action, $id, TRUE, $new_data); 2787 $this->_doActionAndCheckResult($action, $id, TRUE, $new_data);
  2788 +
2782 // - date (reception) > date_acq (jqa MAX_DIFF - 1 jour) => OK... 2789 // - date (reception) > date_acq (jqa MAX_DIFF - 1 jour) => OK...
2783 /* 2790 /*
2784 $far = new \DateTime('now',$tz); 2791 $far = new \DateTime('now',$tz);
@@ -2791,8 +2798,10 @@ class MaterielsControllerTest extends General { @@ -2791,8 +2798,10 @@ class MaterielsControllerTest extends General {
2791 $d1 => $today->format($format), 2798 $d1 => $today->format($format),
2792 $d2 => $date->format($format) 2799 $d2 => $date->format($format)
2793 ]; 2800 ];
  2801 + debug($new_data);
2794 $i++; debug("- test $i.c"); 2802 $i++; debug("- test $i.c");
2795 $this->_doActionAndCheckResult($action, $id, TRUE, $new_data); 2803 $this->_doActionAndCheckResult($action, $id, TRUE, $new_data);
  2804 +
2796 // - ...mais pas trop loin dans le futur (MAX_DIFF) => KO 2805 // - ...mais pas trop loin dans le futur (MAX_DIFF) => KO
2797 $date = $far->add(new \DateInterval('P1D')); 2806 $date = $far->add(new \DateInterval('P1D'));
2798 //debug($date); 2807 //debug($date);
@@ -2800,6 +2809,7 @@ class MaterielsControllerTest extends General { @@ -2800,6 +2809,7 @@ class MaterielsControllerTest extends General {
2800 $d1 => $today->format($format), 2809 $d1 => $today->format($format),
2801 $d2 => $date->format($format) 2810 $d2 => $date->format($format)
2802 ]; 2811 ];
  2812 + debug($new_data);
2803 $i++; debug("- test $i.d"); 2813 $i++; debug("- test $i.d");
2804 $this->_doActionAndCheckResult($action, $id, FALSE, $new_data); 2814 $this->_doActionAndCheckResult($action, $id, FALSE, $new_data);
2805 } // foreach $dates 2815 } // foreach $dates