]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
- Separate batch test from CORBA method submitSalomeJob
authorribes <ribes>
Thu, 15 May 2008 14:26:47 +0000 (14:26 +0000)
committerribes <ribes>
Thu, 15 May 2008 14:26:47 +0000 (14:26 +0000)
- Add testBatch to Launcher

idl/SALOME_ContainerManager.idl
src/Launcher/SALOME_Launcher.cxx
src/Launcher/SALOME_Launcher.hxx

index 8d2258cf571a1da8a0c7ab0e158d9aaaf0a40bc9..d3b9fd6b5a91db29a4e4698f0ba10824697d5053 100644 (file)
@@ -99,6 +99,8 @@ struct BatchParameters
     void deleteSalomeJob( in long jobId, in MachineParameters params ) raises (SALOME::SALOME_Exception);
     void getResultSalomeJob( in string directory, in long jobId, in MachineParameters params ) raises (SALOME::SALOME_Exception);
 
+    boolean testBatch(in MachineParameters params) raises (SALOME::SALOME_Exception);
+
     void Shutdown();
 
     long getPID();
index c0ac5f2ace4d51c7a32b806e3cbf696f2d47702e..8120d73f04b233c01bce072e58ad7eaf6f58dca8 100644 (file)
@@ -139,15 +139,7 @@ CORBA::Long SALOME_Launcher::submitSalomeJob( const char * fileToExecute ,
     // search batch manager for that cluster in map or instanciate one
     std::map < string, BatchLight::BatchManager * >::const_iterator it = _batchmap.find(clustername);
     if(it == _batchmap.end())
-    {
-      BatchLight_BatchTest t(*p);
-      if (t.test())
-       _batchmap[clustername] = FactoryBatchManager(p);
-      else
-      {
-       throw SALOME_Exception("Test of the batch machine failed - see messages in the SALOME_Launcher log");
-      }
-    }
+      _batchmap[clustername] = FactoryBatchManager(p);
     
     // create and submit job on cluster
     BatchLight::Job* job = new BatchLight::Job(fileToExecute, filesToExport, filesToImport, batch_params);
@@ -165,6 +157,51 @@ CORBA::Long SALOME_Launcher::submitSalomeJob( const char * fileToExecute ,
   return jobId;
 }
 
+//=============================================================================
+/*! CORBA Method:
+ *  the test batch configuration 
+ *  \param params             : The batch cluster
+ */
+//=============================================================================
+CORBA::Boolean 
+SALOME_Launcher::testBatch(const Engines::MachineParameters& params)
+{
+  MESSAGE("BEGIN OF SALOME_Launcher::testBatch");
+  CORBA::Boolean rtn = false;
+  try
+  {
+    // find a cluster matching the structure params
+    Engines::CompoList aCompoList ;
+    Engines::MachineList *aMachineList = _ResManager->GetFittingResources(params, aCompoList);
+    if (aMachineList->length() == 0)
+      throw SALOME_Exception("No resources have been found with your parameters");
+
+    const Engines::MachineParameters* p = _ResManager->GetMachineParameters((*aMachineList)[0]);
+    string clustername(p->alias);
+    INFOS("Choose cluster" <<  clustername);
+    BatchLight_BatchTest t(*p);
+    if (t.test()) 
+    {
+      rtn = true;
+      // search batch manager for that cluster in map or instanciate one
+      std::map < string, BatchLight::BatchManager * >::const_iterator it = _batchmap.find(clustername);
+      if(it == _batchmap.end())
+      {
+         _batchmap[clustername] = FactoryBatchManager(p);
+      }
+    }
+    else
+    {
+      throw SALOME_Exception("Test of the batch machine failed - see messages in the SALOME_Launcher log");
+    }
+  }
+  catch(const SALOME_Exception &ex){
+    INFOS(ex.what());
+    THROW_SALOME_CORBA_EXCEPTION(ex.what(),SALOME::INTERNAL_ERROR);
+  }
+  return rtn;
+}
+
 //=============================================================================
 /*! CORBA Method:
  *  Query a batch job on a cluster and returns the status of job
index 25e65e25a379d76b00e33e5960824f1c0e79e1a8..281f6d8bf40ce11e69773c055a40b37e29e9eeb0 100644 (file)
@@ -63,6 +63,8 @@ public:
   void deleteSalomeJob( const CORBA::Long jobId, const Engines::MachineParameters& params);
   void getResultSalomeJob( const char * directory, const CORBA::Long jobId, const Engines::MachineParameters& params );
 
+  CORBA::Boolean testBatch(const Engines::MachineParameters& params);
+
   void Shutdown();
 
   CORBA::Long getPID();