Prepare the fix of padder plugin for the usecases defined by SpherePadder tests

This commit is contained in:
boulant 2012-11-23 17:45:33 +00:00
parent 431b3cc6de
commit a6bc2b5a1c
3 changed files with 135 additions and 23 deletions

View File

@ -270,14 +270,21 @@ CORBA::Long MeshJobManager_i::initialize(const MESHJOB::MeshJobParameterList & m
listSteelBarMesh.push_back(currentMesh); listSteelBarMesh.push_back(currentMesh);
break; break;
default: default:
LOG("The type of the file is not recognized"); _lastErrorMessage =
std::string("The type of the file ")+
std::string(currentMesh.file_name)+
std::string(" is not recognized");
LOG(_lastErrorMessage);
return JOBID_UNDEFINED; return JOBID_UNDEFINED;
} }
} }
if ( listConcreteMesh.size() != 1 ) { // It is not possible to specify more than one concrete
// file. Converselly, it is possible to specify no concrete file.
if ( listConcreteMesh.size() > 1 ) {
// Not consistent with the specification // Not consistent with the specification
LOG("You specify more than one concrete mesh"); _lastErrorMessage = std::string("You specify more than one concrete mesh (not authorized)");
LOG(_lastErrorMessage);
return JOBID_UNDEFINED; return JOBID_UNDEFINED;
} }

View File

@ -31,10 +31,24 @@ def getRootDir():
def getTestDataDir(): def getTestDataDir():
''' '''
This function gives the absolute path to the directory containing This function gives the absolute path to the SMESH directory
the data files for test (realistic med files). containing the data files for the padder plugin test (realistic
med files).
''' '''
datadir=os.path.join(getRootDir(),"share/salome/resources/smesh/padderexe") datadir = os.path.join(getRootDir(),"share/salome/resources/smesh/padderdata")
return datadir
def getTestPadderDataDir():
"""
This function gives the absolute path to the PADDER directory
containing the data files for the padder plugin test. WARNING:
this directory is a directory of the external program SpherePadder
that is wrapped by the padder plugin. We use the shell variable
PADDERHOME (defined by the SALOME environment) to localize this
folder.
"""
PADDERHOME = os.environ['PADDERHOME']
datadir = os.path.join(PADDERHOME,"tests")
return datadir return datadir
import MESHJOB # to get the enum constant values import MESHJOB # to get the enum constant values

View File

@ -23,11 +23,12 @@
# This script illustrates the standard use case of the component # This script illustrates the standard use case of the component
# MeshJobManager from within a SALOME script. # MeshJobManager from within a SALOME script.
# #
# Preparing the configuration parameters # Preparing the configuration parameters
# #
import sys
import os import os
import time
from salome.smesh.spadder.configreader import ConfigReader, printConfig from salome.smesh.spadder.configreader import ConfigReader, printConfig
configReader = ConfigReader() configReader = ConfigReader()
@ -35,15 +36,13 @@ defaultConfig = configReader.getDefaultConfig()
printConfig(defaultConfig) printConfig(defaultConfig)
from salome.smesh import spadder from salome.smesh import spadder
file_concrete=os.path.join(spadder.getTestDataDir(),"concrete.med")
file_steelbar=os.path.join(spadder.getTestDataDir(),"ferraill.med")
import salome import salome
import MESHJOB import MESHJOB
# #
# Setup the configuration in the component. When first have to load # Setup the configuration in the component. We first have to load the
# the catalog of SPADDER components, then load the component # catalog of SPADDER components, then load the component
# MeshJobManager, and finally configure this component. # MeshJobManager, and finally configure this component.
# #
spadder.loadSpadderCatalog() spadder.loadSpadderCatalog()
@ -53,11 +52,19 @@ component = salome.lcc.FindOrLoadComponent("FactoryServer","MeshJobManager")
config = MESHJOB.ConfigParameter(resname=defaultConfig.resname, config = MESHJOB.ConfigParameter(resname=defaultConfig.resname,
binpath=defaultConfig.binpath, binpath=defaultConfig.binpath,
envpath=defaultConfig.envpath) envpath=defaultConfig.envpath)
component.configure("localhost",config)
configId = "localhost"
component.configure(configId,config)
# #
# Prepare the job parameters and initialize the job # Prepare the job parameters and initialize the job
# #
def test00_parameters():
"""Test using a concrete mesh and a single steelbar mesh"""
file_concrete=os.path.join(spadder.getTestDataDir(),"concrete.med")
file_steelbar=os.path.join(spadder.getTestDataDir(),"ferraill.med")
meshJobParameterList = [] meshJobParameterList = []
param = MESHJOB.MeshJobParameter(file_name=file_concrete, param = MESHJOB.MeshJobParameter(file_name=file_concrete,
file_type=MESHJOB.MED_CONCRETE, file_type=MESHJOB.MED_CONCRETE,
@ -68,12 +75,95 @@ param = MESHJOB.MeshJobParameter(file_name=file_steelbar,
file_type=MESHJOB.MED_STEELBAR, file_type=MESHJOB.MED_STEELBAR,
group_name="steelbar") group_name="steelbar")
meshJobParameterList.append(param) meshJobParameterList.append(param)
jobid = component.initialize(meshJobParameterList, "localhost") return meshJobParameterList
def test01_parameters():
"""One concrete mesh and two steelbar meshes"""
datadir = os.path.join(spadder.getTestPadderDataDir(),"test01")
meshJobParameterList = []
medfile = os.path.join(datadir,"concrete.med")
param = MESHJOB.MeshJobParameter(file_name=medfile,
file_type=MESHJOB.MED_CONCRETE,
group_name="concrete")
meshJobParameterList.append(param)
medfile = os.path.join(datadir,"ferraill.med")
param = MESHJOB.MeshJobParameter(file_name=medfile,
file_type=MESHJOB.MED_STEELBAR,
group_name="ferraill")
meshJobParameterList.append(param)
medfile = os.path.join(datadir,"ferrtran.med")
param = MESHJOB.MeshJobParameter(file_name=medfile,
file_type=MESHJOB.MED_STEELBAR,
group_name="ferrtran")
meshJobParameterList.append(param)
return meshJobParameterList
def test02_parameters():
"""One steelbar mesh only, without a concrete mesh"""
datadir = os.path.join(spadder.getTestPadderDataDir(),"test02")
meshJobParameterList = []
medfile = os.path.join(datadir,"cadreef.med")
param = MESHJOB.MeshJobParameter(file_name=medfile,
file_type=MESHJOB.MED_STEELBAR,
group_name="cadre")
meshJobParameterList.append(param)
return meshJobParameterList
def test03_parameters():
"""One concrete mesh only, without a steelbar mesh"""
datadir = os.path.join(spadder.getTestPadderDataDir(),"test03")
meshJobParameterList = []
medfile = os.path.join(datadir,"concrete.med")
param = MESHJOB.MeshJobParameter(file_name=medfile,
file_type=MESHJOB.MED_CONCRETE,
group_name="concrete")
meshJobParameterList.append(param)
return meshJobParameterList
#
# Choose here the use case
#
#meshJobParameterList = test00_parameters()
#meshJobParameterList = test01_parameters()
meshJobParameterList = test02_parameters()
#meshJobParameterList = test03_parameters()
#
# Prepare, start and follow-up the job
#
jobid = component.initialize(meshJobParameterList, configId)
if jobid<0:
msg = component.getLastErrorMessage()
print "ERR: %s"%msg
sys.exit(1)
created = False
nbiter = 0
while not created:
state = component.getState(jobid)
print "MeshJobManager ["+str(nbiter)+"] : state = "+str(state)
if state == "CREATED":
created = True
time.sleep(0.5)
nbiter+=1
# #
# Start the execution of the job identified by its job id. # Start the execution of the job identified by its job id.
# #
ok=component.start(jobid) ok=component.start(jobid)
if not ok:
msg = component.getLastErrorMessage()
print "ERR: %s"%msg
sys.exit(1)
print "job started: %s"%ok
# #
# This part illustrates how you can follow the execution of the job. # This part illustrates how you can follow the execution of the job.
@ -84,7 +174,6 @@ all_states = run_states+end_states;
ended = False ended = False
nbiter = 0 nbiter = 0
import time
while not ended: while not ended:
state = component.getState(jobid) state = component.getState(jobid)
print "MeshJobManager ["+str(nbiter)+"] : state = "+str(state) print "MeshJobManager ["+str(nbiter)+"] : state = "+str(state)
@ -95,6 +184,8 @@ while not ended:
if state not in end_states: if state not in end_states:
print "ERR: jobid = "+str(jobid)+" ended abnormally with state="+str(state) print "ERR: jobid = "+str(jobid)+" ended abnormally with state="+str(state)
msg = component.getLastErrorMessage()
print "ERR: %s"%msg
else: else:
print "OK: jobid = "+str(jobid)+" ended with state="+str(state) print "OK: jobid = "+str(jobid)+" ended with state="+str(state)
meshJobResults = component.finalize(jobid) meshJobResults = component.finalize(jobid)