Salome HOME
Apply modifications according to changes in KERNEL API.
authorAnthony Geay <anthony.geay@edf.fr>
Fri, 25 Sep 2015 07:00:57 +0000 (09:00 +0200)
committervsr <vsr@opencascade.com>
Fri, 25 Sep 2015 16:19:26 +0000 (19:19 +0300)
src/runtime/DistributedPythonNode.cxx
src/runtime/PythonNode.cxx
src/yacsloader_swig/Test/StdAloneYacsLoaderTest1.py

index 96263202dfbcca120a0edb42e08005ee5a39d035..7e5a60788aeada5e615a46f0a151f9026d940ea2 100644 (file)
@@ -134,7 +134,7 @@ void DistributedPythonNode::load()
           }
         else
           {
-            Engines::PyNode_var dftPyScript(objContainer->getDefaultPyNode());
+            Engines::PyNode_var dftPyScript(objContainer->getDefaultPyNode(getName().c_str()));
             if(CORBA::is_nil(dftPyScript))
               _pynode = objContainer->createPyNode(getName().c_str(),getScript().c_str());
             else
index 7c23295e377db7cc64919710c670289f689a5189..3a448d3f6f74e27f4b1f5fd11b4a5abe20c608bc 100644 (file)
@@ -649,7 +649,7 @@ void PythonNode::createRemoteAdaptedPyInterpretor(Engines::Container_ptr objCont
 
 Engines::PyNodeBase_var PythonNode::retrieveDftRemotePyInterpretorIfAny(Engines::Container_ptr objContainer) const
 {
-  Engines::PyScriptNode_var ret(objContainer->getDefaultPyScriptNode());
+  Engines::PyScriptNode_var ret(objContainer->getDefaultPyScriptNode(getName().c_str()));
   if(!CORBA::is_nil(ret))
     {
       ret->Register();
@@ -1117,7 +1117,7 @@ void PyFuncNode::createRemoteAdaptedPyInterpretor(Engines::Container_ptr objCont
 
 Engines::PyNodeBase_var PyFuncNode::retrieveDftRemotePyInterpretorIfAny(Engines::Container_ptr objContainer) const
 {
-  Engines::PyNode_var ret(objContainer->getDefaultPyNode());
+  Engines::PyNode_var ret(objContainer->getDefaultPyNode(getName().c_str()));
   if(!CORBA::is_nil(ret))
     {
       ret->Register();
index 776905907b0062f84865162a7244ba5786c76599..05af101181435eb312f6bbd1c0f3861c66da334a 100644 (file)
@@ -129,6 +129,47 @@ class StdAloneYacsLoaderTest1(unittest.TestCase):
     self.assertEqual(p.getChildByName("node2").getOutputPort("o1").get(),['aaa','bcbcbc'])
     pass
 
+  def test3(self):
+    fname="BugInConcurrentLaunchDftCont.xml"
+    p=self.r.createProc("pr")
+    ti=p.createType("int","int")
+    cont=p.createContainer("DefaultContainer","Salome")
+    cont.setProperty("container_name","FactoryServer")
+    b=self.r.createBloc("Bloc") ; p.edAddChild(b)
+    #
+    nb=4
+    outs=[]
+    for i in xrange(nb):
+      node=self.r.createScriptNode("Salome","node%d"%i)
+      node.setExecutionMode("remote")
+      node.setContainer(cont)
+      outs.append(node.edAddOutputPort("i",ti))
+      node.setScript("i=%d"%i)
+      b.edAddChild(node)
+    #
+    node=self.r.createScriptNode("Salome","nodeEnd")
+    node.setExecutionMode("remote")
+    node.setContainer(cont)
+    res=node.edAddOutputPort("res",ti)
+    p.edAddChild(node)
+    l=[]
+    for i in xrange(nb):
+      elt="i%d"%i
+      inp=node.edAddInputPort(elt,ti) ; l.append(elt)
+      p.edAddChild(node)
+      p.edAddLink(outs[i],inp)
+    node.setScript("res="+"+".join(l))
+    p.edAddCFLink(b,node)
+    #
+    for i in xrange(10):
+      p.init()
+      ex = pilot.ExecutorSwig()
+      self.assertEqual(p.getState(),pilot.READY)
+      ex.RunW(p,0)
+      self.assertEqual(res.get(),6)
+      self.assertEqual(p.getState(),pilot.DONE)
+    pass
+
   def tearDown(self):
     del self.r
     del self.l