a propos dernier commit : le script Perl/test.pl a ete modifie de maniere a permettre plusieurs types de verification pour un meme test. Desormais, un test peut etre l objet a la fois d une verif de .maple et d une verif par script .verif; actualisation de la doc doc_procedure_verification.pdf pour mentionner ce fait (voir evolution des mises a jour)
This commit is contained in:
parent
8bd0e7c604
commit
85aa431472
3 changed files with 45 additions and 23 deletions
|
@ -332,11 +332,16 @@ L'ex
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\subsubsection{Vérification}\label{subsubsection_verification}
|
\subsubsection{Vérification}\label{subsubsection_verification}
|
||||||
|
|
||||||
Pour chaque calcul, une vérification est faite pour déterminer si le test est réussi ou non. Le rapport de test contient les indicateurs \verb|OK| ou \verb|ECHEC|. Il y a actuellement 3 types de vérification possible :
|
Pour chaque calcul, une vérification est faite pour déterminer si le test est réussi ou non. Le rapport de test contient les indicateurs \verb|OK| ou \verb|ECHEC|. Il y plusieurs types de vérification possibles. Plusieurs types de vérification peuvent \^etre faites pour un m\^eme test.
|
||||||
|
|
||||||
|
Liste des possibilités :
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item[$\bullet$] comparaison des données sorties au format maple :
|
\item[$\bullet$] comparaison des données sorties au format maple :
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item[] il s'agit du mode de vérification par défaut. Le fichier \verb|.CVisu|[i] définit les sorties au format maple. Le répertoire de test contient alors un fichier \verb|.maple.ref|[i] qui définit les valeurs de référence. Si l'écart absolu et relatif entre les données de référence et les données du calcul sont inférieures à une tolérance, alors le test est réussi. Les tolérances par défaut sont en absolu 1e-6 et en relatif 1e-3. Il est possible de choisir librement les tolérances dans un fichier \verb|.precision|[i]. Pour une grandeur $X$ générée à l'issue du calcul [i] et sa valeur de référence $X_{ref}$ contenue dans le fichier \verb|.maple.ref|[i], le test est réussi si les relations de comparaison suivantes sont respectées :
|
\item[] Ce mode de vérification est exécuté si il y a la présence d'un fichier \verb|.maple.ref|[i].
|
||||||
|
\vspace*{0.2cm}
|
||||||
|
|
||||||
|
Le fichier \verb|.CVisu|[i] définit les sorties au format maple. Le fichier \verb|.maple.ref|[i] définit les valeurs de référence. Si l'écart absolu et relatif entre les données de référence et les données du calcul sont inférieures à une tolérance, alors le test est réussi. Les tolérances par défaut sont en absolu 1e-6 et en relatif 1e-3. Il est possible de choisir librement les tolérances dans un fichier \verb|.precision|[i]. Pour une grandeur $X$ générée à l'issue du calcul [i] et sa valeur de référence $X_{ref}$ contenue dans le fichier \verb|.maple.ref|[i], le test est réussi si les relations de comparaison suivantes sont respectées :
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\begin{array}{rrcl}
|
\begin{array}{rrcl}
|
||||||
\text{comparaison absolue :} & |X - X_{ref}| & \leq & \varepsilon_{absolu}\\
|
\text{comparaison absolue :} & |X - X_{ref}| & \leq & \varepsilon_{absolu}\\
|
||||||
|
@ -346,13 +351,16 @@ Pour chaque calcul, une v
|
||||||
\\
|
\\
|
||||||
\bf IMPORTANT : \rm si les fichiers \verb|.maple| et \verb|.maple.ref| contiennent plusieurs lignes de données, seule la dernière ligne est traitée\\
|
\bf IMPORTANT : \rm si les fichiers \verb|.maple| et \verb|.maple.ref| contiennent plusieurs lignes de données, seule la dernière ligne est traitée\\
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\item[$\bullet$] comparaison libre définie par un script :
|
\item[$\bullet$] comparaison libre définie par un script \verb|.verif|:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item[] la vérification peut \^etre librement définie par un script qui a pour fonction de renvoyer \verb|OK| ou \verb|ECHEC|. Ce script est un fichier exécutable d'extension \verb|.verif|[i], signifiant que le calcul n°[i] sera vérifié par un script libre.\\
|
\item[] Ce mode de vérification est exécuté si il y a présence d'un fichier \verb|.verif|[i].
|
||||||
|
\vspace*{0.2cm}
|
||||||
|
|
||||||
|
Cette vérification est définie par un script qui a pour fonction de renvoyer \verb|OK| ou \verb|ECHEC|. Ce script est un fichier exécutable d'extension \verb|.verif|[i], signifiant que le calcul n°[i] sera l'objet d'une vérification par un script libre.\\
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\item[$\bullet$] vérification simple de l'exécution :
|
\item[$\bullet$] vérification simple de l'exécution :
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item[] en l'absence de fichier \verb|.maple.ref| ou de script \verb|.verif|, la vérification est considérée \verb|OK| si le calcul s'est lancé normalement et terminé normalement (que le calcul ait convergé ou non).
|
\item[] en l'absence de fichier \verb|.maple.ref| et de script \verb|.verif|, la vérification est considérée \verb|OK| si le calcul s'est lancé et a renvoyé la main au terminal (que le calcul ait convergé ou non). Il y a tout de m\^eme quelques vérifications de l'affichage pour y trouver des indicateurs d'erreur, ce qui provoquera le cas échéant un ECHEC.
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
@ -1145,6 +1153,12 @@ pour ces 2 scripts, une gestion des signaux d'interruption \verb|INT| et \verb|T
|
||||||
\item[-] modif du script \verb|test.pl| : ajout d'un nouveau message d'erreur fatal dans la liste des erreurs à repérer dans le fichier de redirection \verb|.log|. Désormais, si Herezh++ produit un message de la forme "\verb|erreur (...message...) detectee|", le test est considéré comme \verb|ECHEC|
|
\item[-] modif du script \verb|test.pl| : ajout d'un nouveau message d'erreur fatal dans la liste des erreurs à repérer dans le fichier de redirection \verb|.log|. Désormais, si Herezh++ produit un message de la forme "\verb|erreur (...message...) detectee|", le test est considéré comme \verb|ECHEC|
|
||||||
\end{itemize}%tiret
|
\end{itemize}%tiret
|
||||||
|
|
||||||
|
~\\
|
||||||
|
\item[$\bullet$] 2016-10-11 (Julien Troufflard) :
|
||||||
|
\begin{itemize}
|
||||||
|
\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
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
%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 "-"
|
%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 "-"
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
44
Perl/test.pl
44
Perl/test.pl
|
@ -788,29 +788,34 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
|
||||||
|
|
||||||
#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" dans le .log)
|
||||||
my $resu_verif = '';
|
my $resu_verif = '';
|
||||||
|
my $commentaire = '';
|
||||||
open(FIC, "<$script_verif.log");
|
open(FIC, "<$script_verif.log");
|
||||||
while(<FIC>) {
|
while(<FIC>) {
|
||||||
next if(not /^\s*resultat\s+verification\s*:\s*(\S+)/i);#rq : recherche insensible a la casse
|
next if(not /^\s*resultat\s+verification\s*:\s*(\S+)/i);#rq : recherche insensible a la casse
|
||||||
$resu_verif = $1;
|
$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);
|
||||||
last;
|
last;
|
||||||
}
|
}
|
||||||
close(FIC);
|
close(FIC);
|
||||||
|
|
||||||
#verif du resultat (doit etre ECHEC ou OK)
|
#verif du resultat (doit etre ECHEC ou OK)
|
||||||
($resu_verif eq 'OK' or $resu_verif eq 'ECHEC') or do {
|
($resu_verif eq 'OK' or $resu_verif eq 'ECHEC') or do {
|
||||||
printRapport(" -> ECHEC : resultat non conforme de la verification via le script $script_verif. Cause possible : la chaine \"resultat verification : ...\" n a pas ete trouvee ou alors le resultat n etait ni OK, ni ECHEC\n\n");
|
printRapport(" -> resultat .verif : ECHEC (resultat non conforme de la verification via le script $script_verif. Cause possible : la chaine \"resultat verification : ...\" 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 de la verification via le script $script_verif. Cause possible : la chaine \"resultat verification : ...\" n a pas ete trouvee ou alors le resultat n etait ni OK, ni ECHEC\n";
|
print "**Erreur Test $repertoire_test/.CVisu$no_test : resultat non conforme de la verification via le script $script_verif. Cause possible : la chaine \"resultat verification : ...\" n a pas ete trouvee ou alors le resultat n etait ni OK, ni ECHEC\n";
|
||||||
last BOUCLE_TEST;
|
last BOUCLE_TEST;
|
||||||
};
|
};
|
||||||
|
|
||||||
printRapport(" -> $resu_verif (resultat fourni par le script de verification $script_verif)\n\n");
|
printRapport(" -> resultat .verif : $resu_verif ($commentaire) (resultat fourni par le script de verification $script_verif)\n\n");
|
||||||
}#if(-e $script_verif)
|
}#if(-e $script_verif)
|
||||||
|
|
||||||
|
|
||||||
#################################################################################
|
#################################################################################
|
||||||
#cas d une verification classique (comparaison entre .maple et .maple.ref[$no_test])
|
#cas d une verification classique (comparaison entre .maple et .maple.ref[$no_test])
|
||||||
# rq : on suppose qu il s agit d une verification classique si il y a la presence d un fichier .maple.ref
|
# rq : on suppose qu il s agit d une verification classique si il y a la presence d un fichier .maple.ref
|
||||||
#################################################################################
|
#################################################################################
|
||||||
elsif(-e "$fichier_temp_maple.ref$no_test") {
|
if(-e "$fichier_temp_maple.ref$no_test") {
|
||||||
|
|
||||||
##############################################################
|
##############################################################
|
||||||
# pretraitement
|
# pretraitement
|
||||||
|
@ -939,22 +944,22 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
|
||||||
$diff_relative_pourcent = sprintf("%.${nb_decimales_prec_relative}f", 100.*($valeur_temp-$valeur_ref)/$valeur_ref);
|
$diff_relative_pourcent = sprintf("%.${nb_decimales_prec_relative}f", 100.*($valeur_temp-$valeur_ref)/$valeur_ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sortie_rapport .= " -> grandeur testee : colonne \[$no_colonne_maple\]\n";
|
$sortie_rapport .= " -> grandeur testee : colonne \[$no_colonne_maple\]\n";
|
||||||
|
|
||||||
#############################
|
#############################
|
||||||
#comparaison absolue };
|
#comparaison absolue };
|
||||||
#############################
|
#############################
|
||||||
#---OK
|
#---OK
|
||||||
if(abs($diff_absolue) <= $precision_absolue) {
|
if(abs($diff_absolue) <= $precision_absolue) {
|
||||||
$sortie_rapport .= " - comparaison absolue (precision : $precision_absolue) -> OK\n";
|
$sortie_rapport .= " - comparaison absolue (precision : $precision_absolue) -> OK\n";
|
||||||
}
|
}
|
||||||
#---ECHEC
|
#---ECHEC
|
||||||
else {
|
else {
|
||||||
$is_grandeur_ECHEC = 1;
|
$is_grandeur_ECHEC = 1;
|
||||||
$sortie_rapport .= " - comparaison absolue (precision : $precision_absolue) -> ECHEC\n";
|
$sortie_rapport .= " - comparaison absolue (precision : $precision_absolue) -> ECHEC\n";
|
||||||
$sortie_rapport .= " -> Valeur = $valeur_temp\n";
|
$sortie_rapport .= " -> Valeur = $valeur_temp\n";
|
||||||
$sortie_rapport .= " -> Valeur reference = $valeur_ref\n";
|
$sortie_rapport .= " -> Valeur reference = $valeur_ref\n";
|
||||||
$sortie_rapport .= " -> Difference = $diff_absolue\n";
|
$sortie_rapport .= " -> Difference = $diff_absolue\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
#############################
|
#############################
|
||||||
|
@ -962,19 +967,19 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
|
||||||
#############################
|
#############################
|
||||||
#---cas d une comparaison impossible => affichage d un message d erreur (mais pas du mot ECHEC : ce n est pas un echec car la valeur de reference est egale a 0)
|
#---cas d une comparaison impossible => affichage d un message d erreur (mais pas du mot ECHEC : ce n est pas un echec car la valeur de reference est egale a 0)
|
||||||
if($diff_relative_pourcent =~ /impossible/) {
|
if($diff_relative_pourcent =~ /impossible/) {
|
||||||
$sortie_rapport .= " - comparaison relative : impossible car valeur de reference egale a 0\n";
|
$sortie_rapport .= " - comparaison relative : impossible car valeur de reference egale a 0\n";
|
||||||
}
|
}
|
||||||
#---OK
|
#---OK
|
||||||
elsif(abs($diff_relative_pourcent) <= $precision_relative) {
|
elsif(abs($diff_relative_pourcent) <= $precision_relative) {
|
||||||
$sortie_rapport .= " - comparaison relative (precision : $precision_relative\%) -> OK\n";
|
$sortie_rapport .= " - comparaison relative (precision : $precision_relative\%) -> OK\n";
|
||||||
}
|
}
|
||||||
#---ECHEC
|
#---ECHEC
|
||||||
else {
|
else {
|
||||||
$is_grandeur_ECHEC = 1;
|
$is_grandeur_ECHEC = 1;
|
||||||
$sortie_rapport .= " - comparaison relative (precision : $precision_relative\%) -> ECHEC\n";
|
$sortie_rapport .= " - comparaison relative (precision : $precision_relative\%) -> ECHEC\n";
|
||||||
$sortie_rapport .= " -> Valeur = $valeur_temp\n";
|
$sortie_rapport .= " -> Valeur = $valeur_temp\n";
|
||||||
$sortie_rapport .= " -> Valeur reference = $valeur_ref\n";
|
$sortie_rapport .= " -> Valeur reference = $valeur_ref\n";
|
||||||
$sortie_rapport .= " -> Difference relative = $diff_relative_pourcent\%\n";
|
$sortie_rapport .= " -> Difference relative = $diff_relative_pourcent\%\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -983,11 +988,11 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
|
||||||
|
|
||||||
#si il y a au moins 1 ECHEC => ecriture de tout le contenu de $sortie_rapport
|
#si il y a au moins 1 ECHEC => ecriture de tout le contenu de $sortie_rapport
|
||||||
if($is_grandeur_ECHEC) {
|
if($is_grandeur_ECHEC) {
|
||||||
printRapport($sortie_rapport);
|
printRapport(" -> comparaison .maple : ECHEC\n\n$sortie_rapport");
|
||||||
}
|
}
|
||||||
#sinon, on signale que tout est OK
|
#sinon, on signale que tout est OK
|
||||||
else {
|
else {
|
||||||
printRapport(" -> pour toutes les grandeurs testees : OK\n\n");
|
printRapport(" -> comparaison .maple : OK (pour toutes les grandeurs testees)\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -999,7 +1004,10 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) {
|
||||||
#################################################################################
|
#################################################################################
|
||||||
#cas sans verification
|
#cas sans verification
|
||||||
#################################################################################
|
#################################################################################
|
||||||
else {
|
#pas de verification si les conditions suivantes sont TOUTES remplies :
|
||||||
|
# - pas de fichier .verif
|
||||||
|
# - pas de fichier .maple.ref
|
||||||
|
if(not (-e $script_verif) and not (-e "$fichier_temp_maple.ref$no_test")) {
|
||||||
printRapport(" -> OK (pas de verification pour ce test)\n\n");
|
printRapport(" -> OK (pas de verification pour ce test)\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
Loading…
Reference in a new issue