2
0
Fork 0

modif script Perl/test.pl : execution du script .pretrait place avant la gestion du RESTART et modif de la possibilite de faire apparaitre des commentaires en cas d ECHEC des scripts .pretrait, .posttrait et .verif (voir doc_procedure_verification.pdf section 6.5 et section de suivi des modifs); modif du test Test_R_chargement_VOLUMIQUE_3D : modif du script chargement_VOLUMIQUE_3D.pretrait2 pour effacer le fichier .PI et eviter un RESTART lors du calcul .CVisu2

This commit is contained in:
troufflard 2017-01-04 17:52:58 +00:00
parent c34f378e65
commit e969bcb4fb
6 changed files with 1221 additions and 416 deletions

View file

@ -39,8 +39,10 @@ valeur initiale, soit 1 N.
-------------------------------------------------------------
Informations sur les fichiers facultatifs
-------------------------------------------------------------
but du script chargement_VOLUMIQUE_3D.pretrait2 :
activer l option "ATTRIBUT_ sur_volume_initial_" avant le lancement du calcul .CVisu2
buts du script chargement_VOLUMIQUE_3D.pretrait2 :
1) activer l option "ATTRIBUT_ sur_volume_initial_" avant le lancement du calcul .CVisu2
2) supprimer le fichier .PI créé suite au calcul .CVisu1 pour ne pas faire de RESTART
lors du calcul .CVisu2
-------------------------------------------------------------
Grandeurs de comparaison

View file

@ -9,16 +9,9 @@ my $NOM_PROG = basename $PROGRAM_NAME;
#
#
# les buts de ce script sont :
# 1- creer les pipes nommes pour le dialogue Herezh-Herezh (mkfifo)
# 2- lancer le processus Herezh Umat_HZ.info (qui sert d UMAT pour le vrai calcul Herezh de ce test LOI_VIA_UMAT_1.info)
# 3- s assurer que le processus Umat_HZ.info fonctionne avant de quitter
#
# remarque1 : on lance le processus Herezh Umat_HZ.info via le lien symbolique $lien_symbolique_HZ
# dont le nom sera facile a reperer pour le script de post-traitement LOI_VIA_UMAT_1.posttrait1
# (car le script LOI_VIA_UMAT_1.posttrait1 aura pour but de tuer ce processus apres le calcul LOI_VIA_UMAT_1.info)
#
# remarque2 : le processus Herezh Umat_HZ.info est lance dans un processus fils (fork) pour pouvoir le laisser
# tourner en fond de tache et quitter ce script
# 1- activer l option "ATTRIBUT_ sur_volume_initial_" pour le chargement "VOLUMIQUE"
# 2- supprimer le fichier .PI du calcul precedent .CVisu1 afin d empecher un RESTART lors du calcul .CVisu2
# (car le but du calcul .CVisu2 est de faire un nouveau calcul avec l option "ATTRIBUT_ sur_volume_initial_")
#
@ -34,7 +27,6 @@ my $finfo = shift(@ARGV);
$| = 1;
#changement de parametre sur le chargement VOLUMIQUE
# => on active l option "ATTRIBUT_ sur_volume_initial_"
print "(prog:$NOM_PROG) activation \"ATTRIBUT_ sur_volume_initial_\"\n";
@ -53,10 +45,23 @@ close(FIC);
system("mv -f $finfo.tmp $finfo");
#suppression du .PI pour empecher un RESTART lors du calcul .CVisu2
my $suppression_PI_ok = 0;
(my $fPI = $finfo) =~ s/.info$/.PI/;
system("rm -f $fPI");
$suppression_PI_ok = 1 if(not (-e $fPI));
#reussite du script
if($changement_option_ok) {
if($changement_option_ok and $suppression_PI_ok) {
print "resultat pretrait : OK\n";
}
else {
print "resultat pretrait : ECHEC\n";
elsif(not $changement_option_ok) {
print "resultat pretrait : ECHEC l activation de l option \"ATTRIBUT_ sur_volume_initial_\" a echoue dans le fichier $finfo...\n";
die "\nErreur (prog:$NOM_PROG) : l activation de l option \"ATTRIBUT_ sur_volume_initial_\" a echoue dans le fichier $finfo...\n\n";
}
elsif(not $suppression_PI_ok) {
print "resultat pretrait : ECHEC la suppression du fichier .PI du calcul precedent a echoue...\n";
die "\nErreur (prog:$NOM_PROG) : la suppression du fichier .PI du calcul precedent a echoue...\n\n";
}

View file

@ -750,7 +750,15 @@ resultat verification : ECHEC
\end{verbatim}
\end{minipage}
En plus de cette ligne, cet exécutable peut tout à fait afficher d'autres informations à titre facultatif.\\
En plus de cette ligne, cet exécutable peut tout à fait afficher d'autres informations à titre facultatif. A noter également qu'il est possible de faire appara\^itre des commentaires dans le rapport de test dans le cas \verb|ECHEC|. Pour cela, on écrit au moins un espace blanc après \verb|ECHEC| puis ce que l'on veut sur la m\^eme ligne.\\
Exemple :\\
\hspace*{2cm}\begin{minipage}{\textwidth}
\begin{verbatim}
resultat verification : ECHEC fichier blabla.txt introuvable
\end{verbatim}
\end{minipage}
Il est important de noter que cet exécutable reçoit 3 arguments lorsqu'il est appelé. Le programmeur pourra donc utiliser s'il le souhaite les arguments suivants :
@ -800,6 +808,16 @@ resultat pretrait : ECHEC
\end{verbatim}
\end{minipage}
En plus de cette ligne, cet exécutable peut tout à fait afficher d'autres informations à titre facultatif. A noter également qu'il est possible de faire appara\^itre des commentaires dans le rapport de test dans le cas \verb|ECHEC|. Pour cela, on écrit au moins un espace blanc après \verb|ECHEC| puis ce que l'on veut sur la m\^eme ligne.\\
Exemple :\\
\hspace*{2cm}\begin{minipage}{\textwidth}
\begin{verbatim}
resultat verification : ECHEC fichier blabla.txt introuvable
\end{verbatim}
\end{minipage}
Ce script reçoit 2 arguments :\\
\noindent\rule{0.8\textwidth}{0.5pt}\\
\hspace*{2cm}\begin{minipage}{0.6\textwidth}
@ -824,6 +842,16 @@ resultat posttrait : ECHEC
\end{verbatim}
\end{minipage}
En plus de cette ligne, cet exécutable peut tout à fait afficher d'autres informations à titre facultatif. A noter également qu'il est possible de faire appara\^itre des commentaires dans le rapport de test dans le cas \verb|ECHEC|. Pour cela, on écrit au moins un espace blanc après \verb|ECHEC| puis ce que l'on veut sur la m\^eme ligne.\\
Exemple :\\
\hspace*{2cm}\begin{minipage}{\textwidth}
\begin{verbatim}
resultat verification : ECHEC fichier blabla.txt introuvable
\end{verbatim}
\end{minipage}
Ce script reçoit 3 arguments :\\
\noindent\rule{0.8\textwidth}{0.5pt}\\
\hspace*{2cm}\begin{minipage}{0.6\textwidth}
@ -1159,6 +1187,13 @@ pour ces 2 scripts, une gestion des signaux d'interruption \verb|INT| et \verb|T
\item[-] modif du script \verb|test.pl| : désormais, les vérifications ne sont plus mutuellement exclusives. Un m\^eme test peut très bien \^etre l'objet à la fois d'une vérification de \verb|.maple| et d'une vérification libre par script \verb|.verif|. Légère modif de l'affichage dans le rapport de tests de manière à rendre clair les cas où un test est l'objet de plusieurs vérifications.
\end{itemize}%tiret
~\\
\item[$\bullet$] 2018-01-04 (Julien Troufflard) :
\begin{itemize}
\item[-] modif du script \verb|test.pl| : désormais, l'exécution du script \verb|.pretrait| intervient avant la mise en place du \verb|RESTART| dans le cas d'un test avec plusieurs \verb|.CVisu|[i]. Désormais, il est possible d'emp\^echer le \verb|RESTART| lors d'un calcul i en supprimant le fichier \verb|.PI| dans le script \verb|.pretrait| associé (rq : à noter que c'était déjà possible en faisant ce traitement mais cette fois dans le script \verb|.posttrait| du calcul i-1 précédent);\\
autre modif : harmonisation des affichages des commentaires écrits dans le rapport de test en cas d'\verb|ECHEC| des scripts \verb|.pretrait|, \verb|.posttrait| et \verb|.verif| (voir doc associée à ces 3 fichiers en section \ref{section_fichiers_facultatifs})
\end{itemize}%tiret
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%template d ajout d une nouvelle mise à jour (composé d'une puce "bullet" avec Date et auteur de la modif, suivie d une série de puce "-"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View file

@ -378,6 +378,7 @@ foreach my $fic (@fichiers) {
print " Deplacement dans le repertoire temporaire de travail : $repertoire_de_travail\n";
chdir $repertoire_de_travail;
################################################
#(debut) boucle de test (sur les numeros de .CVisu)
################################################
@ -394,6 +395,8 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
printRapport("\n\n$repertoire_test/.CVisu$no_test\n");
#####################################################################################################
#----------------------------------------------------------------------------------------------------
# SAISIE DES EVENTUELS FICHIERS FACULTATIFS : - fichier de commande .commande
@ -413,6 +416,56 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
#####################################################################################################
#----------------------------------------------------------------------------------------------------
# EVENTUEL PRE-TRAITEMENT (si presence du fichier $script_pretrait)
#----------------------------------------------------------------------------------------------------
#####################################################################################################
if(-e $script_pretrait) {
#verification des droits du script (doit etre executable. si il n est pas executable, on le rend executable)
system("chmod +x $script_pretrait") if(not -x $script_pretrait);
#lancement du script : - 1er argument = chemin absolu vers l executable Herezh
# - 2eme argument = nom du fichier .info
system("$script_pretrait $hzchemin $fichier_test.info > $script_pretrait.log");
#affichage du contenu du fichier de redirection
system("cat $script_pretrait.log");
#verification du pretraitement (on s attend a trouver une chaine de la forme "resultat pretrait : STATUS [commentaires facultatifs]" dans le .log)
# rq : les [commentaires facultatifs] ne seront affiches que si le STATUS est ECHEC
my $resu_pretrait = '';
my $commentaire;
open(FIC, "<$script_pretrait.log");
while(<FIC>) {
next if(not /^\s*resultat\s+pretrait\s*:\s*(\S+)/i);#rq : recherche insensible a la casse
$resu_pretrait = $1;
(my $reste_chaine = $_) =~ s/^\s*resultat\s+pretrait\s*:\s*\S+\s*//;
chomp($reste_chaine);
$commentaire = "(cause : $reste_chaine)" if(length($reste_chaine) > 0);
last;
}
close(FIC);
#verif du resultat (doit etre ECHEC ou OK)
($resu_pretrait eq 'OK' or $resu_pretrait eq 'ECHEC') or do {
printRapport(" -> ECHEC : resultat non conforme via le script $script_pretrait. Cause possible : la chaine \"resultat pretrait : ...\" n a pas ete trouvee ou alors le resultat n etait ni OK, ni ECHEC)\n\n");
print "**Erreur Test $repertoire_test/.CVisu$no_test : resultat non conforme via le script $script_pretrait. Cause possible : la chaine \"resultat pretrait : ...\" n a pas ete trouvee ou alors le resultat n etait ni OK, ni ECHEC\n";
last BOUCLE_TEST;
};
if($resu_pretrait eq 'ECHEC') {
printRapport(" -> ECHEC : probleme dans l execution du script de pre-traitement (script : $script_pretrait)\n");
if(defined $commentaire) {
printRapport(" $commentaire\n\n");
}
last BOUCLE_TEST;
}
}#if(-e $script_pretrait)
#####################################################################################################
#----------------------------------------------------------------------------------------------------
# CONSTRUCTION DE LA COMMANDE HEREZH
@ -521,45 +574,6 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
#####################################################################################################
#----------------------------------------------------------------------------------------------------
# EVENTUEL PRE-TRAITEMENT (si presence du fichier $script_pretrait)
#----------------------------------------------------------------------------------------------------
#####################################################################################################
if(-e $script_pretrait) {
#verification des droits du script (doit etre executable. si il n est pas executable, on le rend executable)
system("chmod +x $script_pretrait") if(not -x $script_pretrait);
#lancement du script : - 1er argument = chemin absolu vers l executable Herezh
# - 2eme argument = nom du fichier .info
system("$script_pretrait $hzchemin $fichier_test.info > $script_pretrait.log");
#affichage du contenu du fichier de redirection
system("cat $script_pretrait.log");
#verification du pretraitement (l indicateur de reussite/echec est : "resultat pretrait : OK (ou ECHEC)" )
my $resultat_pretrait = '';
open(FIC, "<$script_pretrait.log");
while(<FIC>) {
if(/^\s*resultat\s+pretrait\s*:\s*OK/) {
$resultat_pretrait = 'OK';
}
elsif(/^\s*resultat\s+pretrait\s*:\s*ECHEC/) {
printRapport(" -> ECHEC : probleme dans l execution du script de pre-traitement (script : $script_pretrait)\n\n");
print "**Erreur Test $repertoire_test/.CVisu$no_test : probleme dans l execution du script de pre-traitement (script : $script_pretrait)\n\n";
last BOUCLE_TEST;
}
}
close(FIC);
($resultat_pretrait eq 'OK') or do {
printRapport(" -> ECHEC : le script de pre-traitement ($script_pretrait) n a pas affiche d indicateur de reussite\n\n");
print "**Erreur Test $repertoire_test/.CVisu$no_test : le script de pre-traitement ($script_pretrait) n a pas affiche d indicateur de reussite\n\n";
last BOUCLE_TEST;
};
}#if(-e $script_pretrait)
#####################################################################################################
#----------------------------------------------------------------------------------------------------
@ -662,26 +676,34 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
system("cat $script_posttrait.log");
#verification du post-traitement (l indicateur de reussite/echec est : "resultat posttrait : OK (ou ECHEC)" )
my $resultat_posttrait = '';
#verification du post-traitement (on s attend a trouver une chaine de la forme "resultat posttrait : STATUS [commentaires facultatifs]" dans le .log)
# rq : les [commentaires facultatifs] ne seront affiches que si le STATUS est ECHEC
my $resu_posttrait = '';
my $commentaire;
open(FIC, "<$script_posttrait.log");
while(<FIC>) {
if(/^\s*resultat\s+posttrait\s*:\s*OK/) {
$resultat_posttrait = 'OK';
}
elsif(/^\s*resultat\s+posttrait\s*:\s*ECHEC/) {
printRapport(" -> ECHEC : probleme dans l execution du script de post-traitement (script : $script_posttrait)\n\n");
print "**Erreur Test $repertoire_test/.CVisu$no_test : probleme dans l execution du script de post-traitement (script : $script_posttrait)\n\n";
last BOUCLE_TEST;
}
next if(not /^\s*resultat\s+posttrait\s*:\s*(\S+)/i);#rq : recherche insensible a la casse
$resu_posttrait = $1;
(my $reste_chaine = $_) =~ s/^\s*resultat\s+posttrait\s*:\s*\S+\s*//;
chomp($reste_chaine);
$commentaire = "(cause : $reste_chaine)" if(length($reste_chaine) > 0);
last;
}
close(FIC);
($resultat_posttrait eq 'OK') or do {
printRapport(" -> ECHEC : le script de post-traitement ($script_posttrait) n a pas affiche d indicateur de reussite\n\n");
print "**Erreur Test $repertoire_test/.CVisu$no_test : le script de post-traitement ($script_posttrait) n a pas affiche d indicateur de reussite\n\n";
last BOUCLE_TEST;
};
#verif du resultat (doit etre ECHEC ou OK)
($resu_posttrait eq 'OK' or $resu_posttrait eq 'ECHEC') or do {
printRapport(" -> ECHEC : resultat non conforme via le script $script_posttrait. Cause possible : la chaine \"resultat posttrait : ...\" n a pas ete trouvee ou alors le resultat n etait ni OK, ni ECHEC)\n\n");
print "**Erreur Test $repertoire_test/.CVisu$no_test : resultat non conforme via le script $script_posttrait. Cause possible : la chaine \"resultat posttrait : ...\" n a pas ete trouvee ou alors le resultat n etait ni OK, ni ECHEC\n";
last BOUCLE_TEST;
};
if($resu_posttrait eq 'ECHEC') {
printRapport(" -> ECHEC : probleme dans l execution du script de post-traitement (script : $script_posttrait)\n");
if(defined $commentaire) {
printRapport(" $commentaire\n\n");
}
last BOUCLE_TEST;
}
}#if(-e $script_posttrait)
@ -786,16 +808,17 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
print " \# Fin de l affichage produit par le script $script_verif\n";
print " \#----------------\n";
#saisie du resultat (on s attend a trouver une chaine de la forme "resultat verification : STATUS" dans le .log)
#saisie du resultat (on s attend a trouver une chaine de la forme "resultat verification : STATUS [commentaires facultatifs]" dans le .log)
# rq : les [commentaires facultatifs] ne seront affiches que si le STATUS est ECHEC
my $resu_verif = '';
my $commentaire = '';
my $commentaire;
open(FIC, "<$script_verif.log");
while(<FIC>) {
next if(not /^\s*resultat\s+verification\s*:\s*(\S+)/i);#rq : recherche insensible a la casse
$resu_verif = $1;
(my $reste_chaine = $_) =~ s/^\s*resultat\s+verification\s*:\s*\S+\s*//;
chomp($reste_chaine);
$commentaire = "cause : $reste_chaine" if(defined $reste_chaine);
$commentaire = "(cause : $reste_chaine)" if(length($reste_chaine) > 0);
last;
}
close(FIC);
@ -807,7 +830,11 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
last BOUCLE_TEST;
};
printRapport(" -> resultat .verif : $resu_verif ($commentaire) (resultat fourni par le script de verification $script_verif)\n\n");
printRapport(" -> resultat .verif : $resu_verif (resultat fourni par le script de verification $script_verif)\n");
if($resu_verif eq 'ECHEC' and defined $commentaire) {
printRapport(" $commentaire\n");
}
printRapport("\n");
}#if(-e $script_verif)
@ -900,6 +927,7 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
close(Fprec);
}
##############################################################
# boucle de comparaison des donnees (test entre chaque valeur des listes @donnees_temp_maple et @donnees_ref_maple)
##############################################################

View file

@ -1,10 +1,10 @@
---------------------------------------
- RAPPORT DE TEST -
---------------------------------------
- version HZ++ : HZppfast 6.743
- version HZ++ : HZppfast 6.782
- date : 24/03/2016
- heure : 14:41 (heure locale)
- date : 04/01/2017
- heure : 18:15 (heure locale)
- machine : hdom-1057.univ-ubs.fr
---------------------------------------
@ -12,32 +12,32 @@
./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/CP_venant_du_3D/Test_L_tunnel_ISOELAS_CP/.CVisu1
-------------------------------------------------------
| temps cpu : 00:01:02.586 (processeur : 99.8%)
| temps systeme : 00:00:00.111 (processeur : 99.8%)
| temps reel : 00:01:02.76
| temps cpu : 00:01:03.573 (processeur : 99.8%)
| temps systeme : 00:00:00.120 (processeur : 99.8%)
| temps reel : 00:01:03.76
-------------------------------------------------------
-> pour toutes les grandeurs testees : OK
-> comparaison .maple : OK (pour toutes les grandeurs testees)
./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/CP_venant_du_3D/Test_L_tunnel_isohyper3dorgeas1_CP/.CVisu1
-------------------------------------------------------
| temps cpu : 00:00:15.745 (processeur : 99.9%)
| temps systeme : 00:00:00.022 (processeur : 99.9%)
| temps reel : 00:00:15.77
| temps cpu : 00:00:15.589 (processeur : 99.8%)
| temps systeme : 00:00:00.029 (processeur : 99.8%)
| temps reel : 00:00:15.62
-------------------------------------------------------
-> pour toutes les grandeurs testees : OK
-> comparaison .maple : OK (pour toutes les grandeurs testees)
./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/ISOELAS2D_C/Test_L_tunnel_ISOELAS2D_C/.CVisu1
-------------------------------------------------------
| temps cpu : 00:01:14.348 (processeur : 99.6%)
| temps systeme : 00:00:00.840 (processeur : 99.6%)
| temps reel : 00:01:15.48
| temps cpu : 00:01:15.083 (processeur : 99.5%)
| temps systeme : 00:00:00.895 (processeur : 99.5%)
| temps reel : 00:01:16.28
-------------------------------------------------------
-> pour toutes les grandeurs testees : OK
-> comparaison .maple : OK (pour toutes les grandeurs testees)

File diff suppressed because it is too large Load diff