Salome HOME
Manage correctly DISBLED state for ElementaryNode.
authorAnthony Geay <anthony.geay@edf.fr>
Tue, 8 Mar 2016 10:18:14 +0000 (11:18 +0100)
committerAnthony Geay <anthony.geay@edf.fr>
Tue, 8 Mar 2016 10:18:14 +0000 (11:18 +0100)
src/engine/ElementaryNode.cxx
src/runtime/PythonNode.cxx
src/yacsloader_swig/Test/StdAloneYacsLoaderTest1.py

index c92608532737687451e29f7c29a21699adb380c7..76841e73633e477d0f4a97be280d49c9bd40deba 100644 (file)
@@ -92,17 +92,17 @@ void ElementaryNode::initCommonPartWithoutStateManagement(bool start)
   for(list<InputPort *>::iterator iter2=_setOfInputPort.begin();iter2!=_setOfInputPort.end();iter2++)
     (*iter2)->exInit(start);
   _inGate.exReset();
-  if(_state == YACS::DISABLED)
-    {
-      exDisabledState(); // to refresh propagation of DISABLED state
-      return;
-    }
 }
 
 void ElementaryNode::init(bool start)
 {
   DEBTRACE("ElementaryNode::init " << getName() << " " << start << " " << _state);
   initCommonPartWithoutStateManagement(start);
+  if(_state == YACS::DISABLED)
+    {
+      exDisabledState(); // to refresh propagation of DISABLED state
+      return ;
+    }
   setState(YACS::READY);
 }
 
index ddf37d0cb39ebaaebc18708616e2b9b6a1f77da9..9160133f3568f57478af1d665d89f769056d3cce 100644 (file)
@@ -815,6 +815,11 @@ PyFuncNode::~PyFuncNode()
 void PyFuncNode::init(bool start)
 {
   initCommonPartWithoutStateManagement(start);
+  if(_state == YACS::DISABLED)
+    {
+      exDisabledState(); // to refresh propagation of DISABLED state
+      return ;
+    }
   if(start) //complete initialization
     setState(YACS::READY);
   else if(_state > YACS::LOADED)// WARNING FuncNode has internal vars (CEA usecase) ! Partial initialization (inside a loop). Exclusivity of funcNode.
index 962f579d840b84fde31b1cacbcbd2ef3e7988e24..6a52e6a286487eef8c1c81476e7d290b30f90647 100644 (file)
@@ -176,6 +176,22 @@ def sum(i):
     self.assertEqual(endNode_error.getPyObj(),0)
     pass
 
+  def test4(self):
+    """ test linked to TestSaveLoadRun.test20. This is a smaller test coming from EDF autotest"""
+    xmlFileName="test4.xml"
+    p=self.r.createProc("test26")
+    n=self.r.createScriptNode("","node1")
+    n.setScript("import os")
+    p.edAddChild(n)
+    n.setState(pilot.DISABLED)
+    #
+    ex=pilot.ExecutorSwig()
+    self.assertEqual(p.getState(),pilot.READY)
+    ex.RunW(p,0)
+    self.assertEqual(p.getState(),pilot.ACTIVATED)
+    self.assertEqual(n.getState(),pilot.DISABLED) # <- test is here.
+    pass
+
   def tearDown(self):
     del self.r
     del self.l