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>
Thu, 24 Mar 2016 17:32:07 +0000 (18:32 +0100)
src/engine/ElementaryNode.cxx
src/runtime/PythonNode.cxx
src/yacsloader_swig/Test/StdAloneYacsLoaderTest1.py

index fb82250481f5dc94367b5da3feedefac2f88205a..129deaa1d701bbbc0466d8e007ea257854cb7697 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 1bb27a31d761ba20f5f05211b6d144a2dbdfbbae..b6b7bc47d39a80505bef12575e6cddd93be503ff 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 f5c4b110c93559721a8c4e6327d4a606edacffd7..ee7278e6affb76549965eb1bc1ab5b67a723667e 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