]> SALOME platform Git repositories - tools/ydefx.git/commitdiff
Salome HOME
Add "resultAvailable" function.
authorOvidiu Mircescu <ovidiu.mircescu@edf.fr>
Tue, 12 Mar 2019 13:28:55 +0000 (14:28 +0100)
committerOvidiu Mircescu <ovidiu.mircescu@edf.fr>
Tue, 12 Mar 2019 13:47:58 +0000 (14:47 +0100)
resultAvailable works like getResult but it does not throw exception.
getResult throws an exception if the result file does not exist. It is not an error
if getResult is called soon after the launching of the job and there was not enough time
to create the file.
resultAvailable does not throw exceptions. It returns "False" if the result file does
not exist.

src/cpp/Test/StudyRestartTest.cxx
src/pydefx/pystudy.py

index b4bc4f98686c874acc74683594c0344ecd970b74..7636c6598874e23b234c0dba5e1b6a3a45b7465b 100644 (file)
@@ -74,6 +74,7 @@ void SampleTest::studyTest()
     CPPUNIT_ASSERT(l.lastError().empty());
     // This "wait" will end instantly because of the "ERROR" state.
     bool ok = restoredJob->wait();
+    // ok means that the wait command succeeded. It is not the state of the job.
     CPPUNIT_ASSERT(ok);
     double progress = restoredJob->progress();
     // We can check the progress in order to know if the job is done, but we
index 48d272cee1178004e2f52e0baeb0e3181fb60dca..ce6d15c85490bb53f800e8c6593201b03e50893b 100644 (file)
@@ -196,6 +196,11 @@ class PyStudy:
       f.write(job_string)
 
   def getResult(self):
+    """
+    Try to get the result file and if it was possible the results are loaded in
+    the sample.
+    An exception may be thrown if it was not possible to get the file.
+    """
     if self.job_id < 0 :
       raise Exception("Cannot get the results if the job is not created!")
     launcher = salome.naming_service.Resolve('/SalomeLauncher')
@@ -207,8 +212,23 @@ class PyStudy:
                                     self.sampleManager.getResultFileName(),
                                     tmp_workdir):
       self.sampleManager.loadResult(self.sample, tmp_workdir)
+    else:
+      raise Exception("Cannot get the result file!")
     return self.sample
 
+  def resultAvailable(self):
+    """
+    Try to get the result and return True in case of success with no exception.
+    In case of success the results are loaded in the sample.
+    """
+    resultFound = False
+    try:
+      self.getResult()
+      resultFound = True
+    except:
+      resultFound = False
+    return resultFound
+
   def getJobState(self):
     if self.job_id < 0:
       return "NOT_CREATED"
@@ -221,7 +241,8 @@ class PyStudy:
     state = self.getJobState()
     if state == "CREATED" or state == "QUEUED" :
       return 0.0
-    self.getResult();
+    if not self.resultAvailable():
+      return 0.0
     return self.sample.progressRate()
 
   def dump(self):