2
0
Fork 0

correction bug d execution sur linux (voir details modif dans doc_procedure_verification.pdf section "Evolution des mises a jour"

This commit is contained in:
troufflard 2015-09-29 00:05:59 +00:00
parent 9c2e0c3647
commit bf4d9a3e02
6 changed files with 76 additions and 24 deletions

View file

@ -720,6 +720,12 @@ Actuellement, il n'y a pas d'exemple dans le r
\item[-] méthodologie pour ajouter un nouveau test : il n'y avait aucune section exposant clairement les étapes à suivre pour créer et ajouter un test, d'où la création de la section \ref{subsection_methodologie}\\
\end{itemize}%tiret
\item[$\bullet$] 2015-09-29 (Julien Troufflard) :
\begin{itemize}
\item[-] modif du script \verb|Perl/verifier_exeHZ.pl| : le package \verb|Term::ReadKey| n'est pas forcément installé sur toutes les machines. Pour éviter d'\^etre pénalisé par ce package, son existence est vérifiée via la subroutine \verb|check_install| du package \verb|Module::Load::Conditional| et, si il existe, l'appel à \verb|Term::ReadKey| est fait via \verb|require| au lieu de \verb|use|. Cette manière de faire pourra \^etre appliquée partout où il y a un doute sur l'existence d'un package et définir ainsi un moyen de contourner l'absence d'un package.\\
\item[-] modif du script \verb|Perl/test.pl| : il y avait une faille dans la subroutine \verb|lancement_commande|. Sur certaines machines, la redirection \verb|tee| ne se fait pas instantanément. Ceci conduisait à croire que le fichier de redirection n'était pas créé et donc renvoyait un problème lié à la redirection de l'affichage. Désormais, un délai est accordé pour attendre la création de ce fichier (environ 2 secondes maximum avec un check de l'existence du fichier de redirection toutes les millisecondes). De manière indirecte, ceci a conduit à créer un nouvel indicateur de status pour signaler si le calcul ne se lance pas (\verb|probleme lancement calcul|).\\
\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

@ -369,15 +369,17 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
my $incr_restart = 0;
# rq : si le fichier .PI n existe pas, $incr_restart restera egal a 0 (pas d activation du RESTART)
# sinon, $incr_restart sera egal au dernier increment lu dans le fichier .PI
open(FIC, "<$fichier_test.PI");
while(<FIC>) {
last if(/^\s*$/);
next if(not /^\s*incre_posi_\(nb_et_posi\):\s+(\d+)/);
$incr_restart = $1;
unless(not -e "$fichier_test.PI") {
open(FIC, "<$fichier_test.PI");
while(<FIC>) {
last if(/^\s*$/);
next if(not /^\s*incre_posi_\(nb_et_posi\):\s+(\d+)/);
$incr_restart = $1;
}
close(FIC);
#-reecriture du .info avec RESTART (si $incr_restart different de 0)
active_RESTART("$fichier_test.info", $incr_restart);
}
close(FIC);
#-reecriture du .info avec RESTART (si $incr_restart different de 0)
active_RESTART("$fichier_test.info", $incr_restart);
}
##############################################################
@ -422,7 +424,7 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
# 2- la commande Herezh construite precedemment
# 3- le nom du fichier de redirection de l affichage Herezh
# 4- le nom du fichier .commande
my $status_calcul = lancement_commande($hzchemin, $cmd_HZ, "$fichier_test.log", $fic_commande);
# - si le calcul a termine normalement (converge ou non) => $status_calcul = "ok"
@ -458,6 +460,13 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
last BOUCLE_TEST;
}
#---cas d un calcul qui ne se lance pas
elsif($status_calcul eq "probleme lancement calcul") {
printRapport(" -> ECHEC : le calcul ne se lance pas\n\n");
print "**Erreur Test $repertoire_test/.CVisu$no_test : le calcul ne se lance pas\n";
last BOUCLE_TEST;
}
#---cas d un arret a cause d une activite cpu nulle
elsif($status_calcul eq "activite cpu nulle") {
printRapport(" -> ECHEC : le calcul ne s arretait pas alors qu il avait une activite cpu nulle\n");
@ -895,18 +904,50 @@ sub lancement_commande {
##############################################################
#on s assure que le fichier de redirection a ete cree
# si ce n est pas le cas, on retourne un probleme lie a la redirection de l affichage
# on en profite pour verifier que le calcul a bien ete lance (on refait la liste @HZpid comme vu ci-dessus si elle est vide)
# car dans ce cas, le fichier de redirection ne se creera jamais
##############################################################
if(not -e $fredir_tee) {
#suppression des processus de calcul
kill("TERM", @HZpid);
#suppression lien symbolique
system("rm -f $lien_symbolique_HZ");
my $cpt_attente_lancement_commande = 0;
my $cpt_attente_creation_log = 0;
while(not -e $fredir_tee) {
#cas d un calcul pas encore lance
if($#HZpid == -1) {
select(undef, undef, undef, 0.001);#temps d attente d 1 milliseconde
@processus = qx(ps -U $ENV{USER} -o pid,%cpu,command | grep $lien_symbolique_HZ | grep -v grep);
foreach my $processus (@processus) {
next if(not $processus =~ /^\s*(\d+)/);
push(@HZpid, $1);
}
$cpt_attente_lancement_commande++;
return "probleme redirection affichage";
#on genere une erreur si la commande ne s est toujours pas lancee apres 2000 fois 1 milliseconde = 2 secondes
if($cpt_attente_lancement_commande == 2000) {
#suppression des processus de calcul
kill("TERM", @HZpid);
#suppression lien symbolique
system("rm -f $lien_symbolique_HZ");
return "probleme lancement calcul";
}
}
#cas d un calcul lance mais ou le fichier de redirection n existe pas encore
else {
select(undef, undef, undef, 0.001);#temps d attente d 1 milliseconde
$cpt_attente_creation_log++;
#on genere une erreur si le fichier de redirection n a toujours pas ete cree apres 2000 fois 1 milliseconde = 2 secondes
if($cpt_attente_creation_log == 2000) {
#suppression des processus de calcul
kill("TERM", @HZpid);
#suppression lien symbolique
system("rm -f $lien_symbolique_HZ");
return "probleme redirection affichage";
}
}
}
#
#...maintenant, on va lancer un processus fils pour surveiller le calcul. On provoque son arret force (kill -9) dans les cas suivants :
# 1) si la taille du fichier $fredir_tee depasse $TAILLE_MAX_FIC_REDIR octets

View file

@ -1,11 +1,11 @@
---------------------------------------
- RAPPORT DE TEST -
---------------------------------------
- version HZ++ : HZppfast 6.713
- version HZ++ : HZppfast 6.719
- Batterie de tests lancee
- le 31/07/2015
- a 16:55 (heure locale)
- le 29/09/2015
- a 1:44 (heure locale)
---------------------------------------
./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/CP_venant_du_3D/Test_L_tunnel_ISOELAS_CP/.CVisu1

View file

@ -1,11 +1,11 @@
---------------------------------------
- RAPPORT DE TEST -
---------------------------------------
- version HZ++ : HZppfast 6.713
- version HZ++ : HZppfast 6.719
- Batterie de tests lancee
- le 09/09/2015
- a 12:12 (heure locale)
- le 29/09/2015
- a 1:44 (heure locale)
---------------------------------------
./Batterie/FONCTION_UNIQUE/CONTACT/Test_R_contact_axi_non_dynamique/.CVisu1

Binary file not shown.

View file

@ -5,6 +5,7 @@ use warnings;
use English;
use File::Basename;
use File::Spec::Functions qw(splitpath rel2abs);#($volume, $rep, $fic) = splitpath($path); $absolute_path = rel2abs($relative_path)
use Module::Load::Conditional qw(check_install);#pour verifier existence d une librairie
my $NOM_PROG = basename $PROGRAM_NAME;
#pattern d un reel pour les regex (desormais redondant avec $RE{num}{real} de Regexp::Common)
my $format_reel = '[+-]?[\.]?\d+[\.]?\d*(?:[eE][+-]?\d*)?';
@ -354,8 +355,12 @@ unless($is_opt_R) {
# - print ou warn (suivant que l on souhaite afficher avec print (donc vers STDOUT) ou warn (donc vers STDERR)
#
sub afficher_ligne_tirets {
use Term::ReadKey;
my $nb_char_largeur_terminal = ( GetTerminalSize() )[0];#largeur du terminal en nombre de caracteres (via package Term::ReadKey)
#utilisation de Term::ReadKey seulement si la librairie existe
my $nb_char_largeur_terminal = 78;
if(check_install( module => 'Term::ReadKey')) {
require Term::ReadKey; Term::ReadKey->import(qw(GetTerminalSize));
$nb_char_largeur_terminal = ( GetTerminalSize() )[0];#largeur du terminal en nombre de caracteres (via package Term::ReadKey)
}
my $funct_disp = shift;