Salome HOME
Ajout d'un test de non régression pour blocFissure
[modules/smesh.git] / src / Tools / blocFissure / CasTests / execution_Cas.py
index 4c4e961e374980bbcc6d3fb983ed18f736cbccf5..2213dbce75d8edcb75207a400cb018eb3263474b 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2014-2020  EDF R&D
+# Copyright (C) 2014-2021  EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+"""Lancement des cas-tests de blocFissure"""
 
-import sys, traceback
 import logging
-from blocFissure import gmu
+import os
+import tempfile
+import traceback
+
 from blocFissure.gmu import initLog
+from blocFissure.gmu.casStandard import casStandard
 
 # -----------------------------------------------------------------------------------------------
-#initLog.setDebug()
-#initLog.setVerbose()
-#initLog.setRelease()
-#initLog.setPerfTests()
+LOGFILE = os.path.join(tempfile.gettempdir(),"blocFissure.log")
+#initLog.setDebug(LOGFILE)     # debug = 10
+#initLog.setVerbose(LOGFILE)   # info = 20
+#initLog.setRelease(LOGFILE)   # warning = 30
+#initLog.setPerfTests(LOGFILE) # critical = 50
+#initLog.setAlways(LOGFILE)    # critical = 50
 
 # ---tous les cas en séquence, ou les cas sélectionnés ...
-runall = True
-if runall:
-  torun = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
-else: #prob 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27
-  torun = [ 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1] # pb
-  torun = [ 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0] # OK
+TORUNOK = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 ] # OK 19/04/2021
+#           0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
+#RUNALL = False
+RUNALL = True
+if RUNALL:
+  TORUN = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]
+#           0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
+  TORUN = TORUNOK
+else:
+  TORUNPB = list()
+  for IAUX in TORUNOK:
+    TORUNPB.append((IAUX+1)%2)
+  print ("TORUN = {} # OK".format(TORUNOK))
+  print ("TORUN = {} # PB".format(TORUNPB))
+#                                                                                                    genereMateriel
+  TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0] # aucun
+  TORUN = [ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # cubeAngle
+  TORUN = [ 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # cubeFin
+  TORUN = [ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # decoupeCylindre
+  TORUN = [ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # disque_perce + ellipse_disque
+  TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # ellipse + fissureGauche2
+  TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # ellipse_probleme + fissureGauche2
+  TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # eprouvetteCourbe
+  TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # eprouvetteDroite
+  TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # fissureGauche
+  TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # fissureGauche2
+  TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0] # vis
+  TORUN = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] # tube
+#           0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
+  TORUN = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0] #  OK
 # -----------------------------------------------------------------------------------------------
 
-from blocFissure.gmu import geomsmesh
-from blocFissure.gmu.casStandard import casStandard
-
-problemes = list()
-
-n_cas = 0
-from blocFissure.CasTests.cubeAngle import cubeAngle
-problemes.append(cubeAngle(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.cubeAngle2 import cubeAngle2
-problemes.append(cubeAngle2(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests import cubeCoin
-problemes.append(casStandard(cubeCoin.dicoParams, cubeCoin.referencesMaillageFissure, n_cas, "cubeCoin"))
-
-n_cas += 1
-from blocFissure.CasTests import cubeMilieu
-problemes.append(casStandard(cubeMilieu.dicoParams, cubeMilieu.referencesMaillageFissure, n_cas, "cubeMilieu"))
-
-n_cas += 1
-from blocFissure.CasTests import cubeTransverse
-problemes.append(casStandard(cubeTransverse.dicoParams, cubeTransverse.referencesMaillageFissure, n_cas, "cubeTransverse"))
-
-n_cas += 1
-from blocFissure.CasTests.cylindre import cylindre
-problemes.append(cylindre(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.cylindre_2 import cylindre_2
-problemes.append(cylindre_2(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests import disquePerce
-problemes.append(casStandard(disquePerce.dicoParams, disquePerce.referencesMaillageFissure, n_cas, "disquePerce"))
-
-n_cas += 1
-from blocFissure.CasTests.ellipse_1 import ellipse_1
-problemes.append(ellipse_1(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.ellipse_2 import ellipse_2
-problemes.append(ellipse_2(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.eprouvetteCourbe import eprouvetteCourbe
-problemes.append(eprouvetteCourbe(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.eprouvetteDroite import eprouvetteDroite
-problemes.append(eprouvetteDroite(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.eprouvetteDroite_2 import eprouvetteDroite_2
-problemes.append(eprouvetteDroite_2(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.faceGauche import faceGauche
-problemes.append(faceGauche(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.faceGauche_2 import faceGauche_2
-problemes.append(faceGauche_2(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.fissureCoude_1 import fissureCoude_1
-problemes.append(fissureCoude_1(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.fissureCoude_10 import fissureCoude_10
-problemes.append(fissureCoude_10(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.fissureCoude_2 import fissureCoude_2
-problemes.append(fissureCoude_2(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.fissureCoude_3 import fissureCoude_3
-problemes.append(fissureCoude_3(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.fissureCoude_4 import fissureCoude_4
-problemes.append(fissureCoude_4(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.fissureCoude_5 import fissureCoude_5
-problemes.append(fissureCoude_5(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.fissureCoude_6 import fissureCoude_6
-problemes.append(fissureCoude_6(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.fissureCoude_7 import fissureCoude_7
-problemes.append(fissureCoude_7(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.fissureCoude_8 import fissureCoude_8
-problemes.append(fissureCoude_8(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.fissureCoude_9 import fissureCoude_9
-problemes.append(fissureCoude_9(n_cas))
-
-n_cas += 1
-from blocFissure.CasTests.fissure_Coude import fissure_Coude
-problemes.append(fissure_Coude(n_cas))
+def caract_l_problemes ():
+  """Caractérisation des problèmes"""
+  d_aux = dict()
+  l_problemes = list()
+
+  n_cas = 0
+  # genereMateriel : cubeAngle
+  from blocFissure.CasTests.cubeAngle import cubeAngle
+  l_problemes.append(cubeAngle(n_cas))
+
+  n_cas = 1
+  # genereMateriel : cubeAngle
+  from blocFissure.CasTests.cubeAngle2 import cubeAngle2
+  l_problemes.append(cubeAngle2(n_cas))
+
+  n_cas = 2
+  # genereMateriel : cubeFin
+  from blocFissure.CasTests import cubeCoin
+  l_problemes.append(casStandard(cubeCoin.dicoParams, cubeCoin.referencesMaillageFissure, n_cas))
+  d_aux[n_cas] = "cubeCoin"
+
+  n_cas = 3
+  # genereMateriel : cubeFin
+  from blocFissure.CasTests import cubeMilieu
+  l_problemes.append(casStandard(cubeMilieu.dicoParams, cubeMilieu.referencesMaillageFissure, n_cas))
+  d_aux[n_cas] = "cubeMilieu"
+
+  n_cas = 4
+  # genereMateriel : cubeFin
+  from blocFissure.CasTests import cubeTransverse
+  l_problemes.append(casStandard(cubeTransverse.dicoParams, cubeTransverse.referencesMaillageFissure, n_cas))
+  d_aux[n_cas] = "cubeTransverse"
+
+  n_cas = 5
+  # genereMateriel : decoupeCylindre
+  from blocFissure.CasTests.cylindre import cylindre
+  l_problemes.append(cylindre(n_cas))
+
+  n_cas = 6
+  # genereMateriel : decoupeCylindre
+  from blocFissure.CasTests.cylindre_2 import cylindre_2
+  l_problemes.append(cylindre_2(n_cas))
+
+  n_cas = 7
+  # genereMateriel : disque_perce
+  # genereMateriel : ellipse_disque
+  from blocFissure.CasTests import disquePerce
+  l_problemes.append(casStandard(disquePerce.dicoParams, disquePerce.referencesMaillageFissure, n_cas))
+  d_aux[n_cas] = "disquePerce"
+
+  n_cas = 8
+  # genereMateriel: ellipse
+  # genereMateriel : fissureGauche2
+  from blocFissure.CasTests.ellipse_1 import ellipse_1
+  l_problemes.append(ellipse_1(n_cas))
+
+  n_cas = 9
+  # genereMateriel: ellipse_probleme
+  # genereMateriel : fissureGauche2
+  from blocFissure.CasTests.ellipse_2 import ellipse_2
+  l_problemes.append(ellipse_2(n_cas))
+
+  n_cas = 10
+  # genereMateriel : eprouvetteCourbe
+  from blocFissure.CasTests.eprouvetteCourbe import eprouvetteCourbe
+  l_problemes.append(eprouvetteCourbe(n_cas))
+
+  n_cas = 11
+  # genereMateriel : eprouvetteDroite
+  from blocFissure.CasTests.eprouvetteDroite import eprouvetteDroite
+  l_problemes.append(eprouvetteDroite(n_cas))
+
+  n_cas = 12
+  # genereMateriel : eprouvetteDroite
+  from blocFissure.CasTests.eprouvetteDroite_2 import eprouvetteDroite_2
+  l_problemes.append(eprouvetteDroite_2(n_cas))
+
+  n_cas = 13
+  # genereMateriel : fissureGauche
+  from blocFissure.CasTests.faceGauche import faceGauche
+  l_problemes.append(faceGauche(n_cas))
+
+  n_cas = 14
+  # genereMateriel : fissureGauche2
+  from blocFissure.CasTests.faceGauche_2 import faceGauche_2
+  l_problemes.append(faceGauche_2(n_cas))
+
+  n_cas = 15
+  # genereMateriel : aucun
+  from blocFissure.CasTests.fissureCoude_1 import fissureCoude_1
+  l_problemes.append(fissureCoude_1(n_cas))
+
+  n_cas = 16
+  # genereMateriel : aucun
+  from blocFissure.CasTests.fissureCoude_2 import fissureCoude_2
+  l_problemes.append(fissureCoude_2(n_cas))
+
+  n_cas = 17
+  # genereMateriel : aucun
+  from blocFissure.CasTests.fissureCoude_3 import fissureCoude_3
+  l_problemes.append(fissureCoude_3(n_cas))
+
+  n_cas = 18
+  # genereMateriel : aucun
+  from blocFissure.CasTests.fissureCoude_4 import fissureCoude_4
+  l_problemes.append(fissureCoude_4(n_cas))
+
+  n_cas = 19
+  # genereMateriel : aucun
+  from blocFissure.CasTests.fissureCoude_5 import fissureCoude_5
+  l_problemes.append(fissureCoude_5(n_cas))
+
+  n_cas = 20
+  # genereMateriel : aucun
+  from blocFissure.CasTests.fissureCoude_6 import fissureCoude_6
+  l_problemes.append(fissureCoude_6(n_cas))
+
+  n_cas = 21
+  # genereMateriel : aucun
+  from blocFissure.CasTests.fissureCoude_7 import fissureCoude_7
+  l_problemes.append(fissureCoude_7(n_cas))
+
+  n_cas = 22
+  # genereMateriel : aucun
+  from blocFissure.CasTests.fissureCoude_8 import fissureCoude_8
+  l_problemes.append(fissureCoude_8(n_cas))
+
+  n_cas = 23
+  # genereMateriel : aucun
+  from blocFissure.CasTests.fissureCoude_9 import fissureCoude_9
+  l_problemes.append(fissureCoude_9(n_cas))
+
+  n_cas = 24
+  # genereMateriel : aucun
+  from blocFissure.CasTests.fissureCoude_10 import fissureCoude_10
+  l_problemes.append(fissureCoude_10(n_cas))
+
+  n_cas = 25
+  # genereMateriel : aucun
+  from blocFissure.CasTests.fissure_Coude import fissure_Coude
+  l_problemes.append(fissure_Coude(n_cas))
+
+  n_cas = 26
+  # genereMateriel : aucun
+  from blocFissure.CasTests.fissure_Coude_4 import fissure_Coude_4
+  l_problemes.append(fissure_Coude_4(n_cas))
+
+  n_cas = 27
+  # genereMateriel : vis
+  from blocFissure.CasTests.vis_1 import vis_1
+  l_problemes.append(vis_1(n_cas))
+
+  n_cas = 28
+  # genereMateriel : tube
+  from blocFissure.CasTests.tube import tube
+  l_problemes.append(tube(n_cas))
+  #"Mesh_13" has not been computed:
+  #-  "algo2d_facePeau_0" failed on "FACE_12 to mesh". Error: Algorithm failed. NgException at Surface meshing: Problem in Surface mesh generation
+  #-  "algo1d_cercle1_0" failed on EDGE #20. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
+  #-  "algo1d_cercle1_0" failed on EDGE #17. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
+  #-  "algo1d_cercle1_0" failed on EDGE #15. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
+  #-  "algo1d_cercle1_0" failed on EDGE #12. Error: Algorithm failed. Source elements don't cover totally the geometrical edge
+
+  return l_problemes, d_aux
+#=============================================================
+def calcul_cas (n_cas, cas, d_aux, ligne):
+  """Calcul d'un cas"""
+  texte = ""
+  if n_cas in d_aux:
+    nom = d_aux[n_cas]
+  else:
+    nom = cas.nomProbleme
+  texte_a = "\n=== Exécution du cas n° {}, '{}'".format(n_cas,nom)
+  logging.critical(ligne+texte_a)
+
+  try:
+    ok_maillage = cas.executeProbleme()
+  except:
+    traceback.print_exc()
+    ok_maillage = False
+  if not ok_maillage:
+    texte = "Problème avec le cas n° {}, '{}'\n".format(n_cas,nom)
+  print(ligne)
+
+  return ok_maillage, texte
+#=============================================================
+def calcul_tout (l_problemes, d_aux):
+  """Calcul de tous les cas"""
 
-n_cas += 1
-from blocFissure.CasTests.fissure_Coude_4 import fissure_Coude_4
-problemes.append(fissure_Coude_4(n_cas))
+  ligne = "---------------------------------------------------------------------"
+  texte = "\n"
+  nb_cas_ok = 0
+  nb_cas_nook = 0
+  for n_cas, cas in enumerate(l_problemes):
+    #print ("Cas n° {}, '{}'".format(n_cas,cas.nomProbleme))
+    if TORUN[n_cas]:
+      ok_maillage, texte_a = calcul_cas (n_cas, cas, d_aux, ligne)
+      texte += texte_a
+      if ok_maillage:
+        nb_cas_ok += 1
+      else:
+        nb_cas_nook += 1
+      print(ligne)
 
-n_cas += 1
-from blocFissure.CasTests.vis_1 import vis_1
-problemes.append(vis_1(n_cas))
+  nb_cas = nb_cas_nook + nb_cas_ok
+  if ( nb_cas > 1):
+    if nb_cas_nook:
+      texte += ". Nombre de cas_tests OK   : {}\n".format(nb_cas_ok)
+      texte += ". Nombre de cas_tests NOOK : {}\n".format(nb_cas_nook)
+    else:
+      texte += "Les {} tests se sont bien passés.\n".format(nb_cas)
+  print (texte+ligne)
+  logging.critical(ligne+texte)
 
+  return
+#=============================================================
 #=============================================================
+
 while True:
 
-  if ( len(problemes) != len(torun) ):
-    texte  = "\nNombre de problèmes définis  : {}\n".format(len(problemes))
-    texte += "Longueur de la liste 'torun' : {}\n".format(len(torun))
-    texte += "\t==> Incohérence de programmation à corriger."
-    print (texte)
-    break
+  L_PROBLEMES, D_AUX = caract_l_problemes()
 
-  ligne = "---------------------------------------------------------------------"
-  texte = ""
-  for iaux, cas in enumerate(problemes):
-    #print ("Cas n° {}, '{}'".format(iaux,cas.nomProbleme))
-    if torun[iaux]:
-      texte_a = "\n=== Exécution du cas n° {}, '{}'".format(iaux,cas.nomProbleme)
-      logging.critical(ligne+texte_a)
-      try:
-        cas.executeProbleme()
-      except:
-        traceback.print_exc()
-        texte += "Problème avec le cas n° {}, '{}'\n".format(iaux,cas.nomProbleme)
-      print(ligne)
+  if ( len(L_PROBLEMES) != len(TORUN) ):
+    TEXTE  = "\nNombre de problèmes définis  : {}\n".format(len(L_PROBLEMES))
+    TEXTE += "Longueur de la liste 'TORUN' : {}\n".format(len(TORUN))
+    TEXTE += "\t==> Incohérence de programmation à corriger dans {}".format(__name__)
+    print (TEXTE)
+    break
 
-  if not texte:
-    texte = "Tous les tests se sont bien passés.\n"
-  print (texte+ligne)
+  calcul_tout (L_PROBLEMES, D_AUX)
 
   break
-