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:
parent
9c2e0c3647
commit
bf4d9a3e02
6 changed files with 76 additions and 24 deletions
|
@ -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 "-"
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
|
73
Perl/test.pl
73
Perl/test.pl
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue