2 # Copyright (C) 2006-2024 CEA, EDF
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
32 class TestSaveLoadRun(unittest.TestCase):
34 SALOMERuntime.RuntimeSALOME.setRuntime()
35 self.r=SALOMERuntime.getSALOMERuntime()
36 self.workdir = tempfile.mkdtemp(suffix=".yacstest")
41 cm = salome.lcc.getContainerManager()
42 cm.ShutdownContainers()
43 salome.dsm.shutdownScopes()
47 """First test of HP Container no loop here only the 3 sorts of python nodes (the Distributed is it still used and useful ?) """
48 fname=os.path.join(self.workdir, "TestSaveLoadRun0.xml")
50 sqrtOfNumberOfTurn=1000 # 3000 -> 3.2s/Node, 1000 -> 0.1s/Node
52 p=self.r.createProc("prTest0")
53 td=p.createType("double","double")
54 ti=p.createType("int","int")
56 pg.setData([("localhost",4)])
57 cont=p.createContainer("gg","HPSalome")
58 cont.setProperty("name","localhost")
59 cont.setProperty("hostname","localhost")
60 cont.setProperty("nb_proc_per_node","1")
66 ref=datetime.datetime.now()
67 t=0. ; pas=1./float(nb)
71 t+=1.+cos(1.*(x*3.14159))
74 print("coucou from script0-%i -> %s"%(dbg,str(datetime.datetime.now()-ref)))
80 ref=datetime.datetime.now()
81 o2=0. ; pas=1./float(i1)
85 o2+=1.+cos(1.*(x*3.14159))
87 print("coucou from script1-%i -> %s"%(dbg,str(datetime.datetime.now()-ref)))
89 for i in range(nbOfNodes):
90 node0=self.r.createFuncNode("DistPython","node%i"%(i))
93 node0.setContainer(cont)
94 node0.setScript(script0)
95 nb=node0.edAddInputPort("nb",ti) ; nb.edInitInt(sqrtOfNumberOfTurn)
96 dbg=node0.edAddInputPort("dbg",ti) ; dbg.edInitInt(i+1)
97 out0=node0.edAddOutputPort("s",td)
99 nodeMiddle=self.r.createFuncNode("Salome","node%i_1"%(i))
100 p.edAddChild(nodeMiddle)
101 p.edAddCFLink(node0,nodeMiddle)
102 nodeMiddle.setFname("ff")
103 nodeMiddle.setContainer(cont)
104 nodeMiddle.setScript(script0)
105 nb=nodeMiddle.edAddInputPort("nb",ti) ; nb.edInitInt(sqrtOfNumberOfTurn)
106 dbg=nodeMiddle.edAddInputPort("dbg",ti) ; dbg.edInitInt(i+1)
107 out0=nodeMiddle.edAddOutputPort("s",td)
108 nodeMiddle.setExecutionMode("remote")
110 nodeEnd=self.r.createScriptNode("Salome","node%i_2"%(i+1))
111 p.edAddChild(nodeEnd)
112 p.edAddCFLink(nodeMiddle,nodeEnd)
113 nodeEnd.setContainer(cont)
114 nodeEnd.setScript(script1)
115 i1=nodeEnd.edAddInputPort("i1",ti) ; i1.edInitInt(sqrtOfNumberOfTurn)
116 dbg=nodeEnd.edAddInputPort("dbg",ti) ; dbg.edInitInt(i)
117 o2=nodeEnd.edAddOutputPort("o2",td)
118 nodeEnd.setExecutionMode("remote")
122 ex=pilot.ExecutorSwig()
123 self.assertEqual(p.getState(),pilot.READY)
124 st=datetime.datetime.now()
125 p.propagePlayGround(pg)
128 print("Time spend of test0 to run 1st %s"%(str(datetime.datetime.now()-st)))
129 self.assertEqual(p.getState(),pilot.DONE)
130 # 2nd exec using the same already launched remote python interpreters
131 st=datetime.datetime.now()
133 print("Time spend of test0 to run 2nd %s"%(str(datetime.datetime.now()-st)))
134 self.assertEqual(p.getState(),pilot.DONE)
135 # 3rd exec using the same already launched remote python interpreters
136 st=datetime.datetime.now()
138 print("Time spend of test0 to run 3rd %s"%(str(datetime.datetime.now()-st)))
139 self.assertEqual(p.getState(),pilot.DONE)
143 """ HP Container again like test0 but the initialization key of HPContainer is used here."""
144 fname=os.path.join(self.workdir, "TestSaveLoadRun1.xml")
146 sqrtOfNumberOfTurn=1000 # 3000 -> 3.2s/Node, 1000 -> 0.1s/Node
147 l=loader.YACSLoader()
148 p=self.r.createProc("prTest1")
149 td=p.createType("double","double")
150 ti=p.createType("int","int")
151 pg=pilot.PlayGround()
152 pg.setData([("localhost",4)])
153 cont=p.createContainer("gg","HPSalome")
154 cont.setProperty("InitializeScriptKey","aa=123.456")
155 cont.setProperty("name","localhost")
156 cont.setProperty("hostname","localhost")
157 cont.setProperty("nb_proc_per_node","1")
163 ref=datetime.datetime.now()
164 t=0. ; pas=1./float(nb)
168 t+=1.+cos(1.*(x*3.14159))
171 print("coucou from script0-%i -> %s"%(dbg,str(datetime.datetime.now()-ref)))
174 # here in script1 aa is refered ! aa will exist thanks to HPCont Init Script
178 ref=datetime.datetime.now()
179 o2=0. ; pas=1./float(i1)
183 o2+=1.+cos(1.*(x*3.14159))
185 print("coucou %lf from script1-%i -> %s"%(aa,dbg,str(datetime.datetime.now()-ref)))
189 for i in range(nbOfNodes):
190 nodeMiddle=self.r.createFuncNode("Salome","node%i_1"%(i)) # PyFuncNode remote
191 p.edAddChild(nodeMiddle)
192 nodeMiddle.setFname("ff")
193 nodeMiddle.setContainer(cont)
194 nodeMiddle.setScript(script0)
195 nb=nodeMiddle.edAddInputPort("nb",ti) ; nb.edInitInt(sqrtOfNumberOfTurn)
196 dbg=nodeMiddle.edAddInputPort("dbg",ti) ; dbg.edInitInt(i+1)
197 out0=nodeMiddle.edAddOutputPort("s",td)
198 nodeMiddle.setExecutionMode("remote")
200 nodeEnd=self.r.createScriptNode("Salome","node%i_2"%(i+1)) # PythonNode remote
201 p.edAddChild(nodeEnd)
202 p.edAddCFLink(nodeMiddle,nodeEnd)
203 nodeEnd.setContainer(cont)
204 nodeEnd.setScript(script1)
205 i1=nodeEnd.edAddInputPort("i1",ti) ; i1.edInitInt(sqrtOfNumberOfTurn)
206 dbg=nodeEnd.edAddInputPort("dbg",ti) ; dbg.edInitInt(i)
207 o2=nodeEnd.edAddOutputPort("o2",td)
208 nodeEnd.setExecutionMode("remote")
213 self.assertEqual(p.edGetDirectDescendants()[0].getContainer().getProperty("InitializeScriptKey"),"aa=123.456")
214 p.propagePlayGround(pg)
216 ex=pilot.ExecutorSwig()
217 self.assertEqual(p.getState(),pilot.READY)
218 st=datetime.datetime.now()
220 print("Time spend of test1 to 1st run %s"%(str(datetime.datetime.now()-st)))
221 self.assertEqual(p.getState(),pilot.DONE)
223 st=datetime.datetime.now()
225 print("Time spend of test1 to 2nd run %s"%(str(datetime.datetime.now()-st)))
226 self.assertEqual(p.getState(),pilot.DONE)
228 st=datetime.datetime.now()
230 print("Time spend of test1 to 3rd run %s"%(str(datetime.datetime.now()-st)))
231 self.assertEqual(p.getState(),pilot.DONE)
235 """ Test on HP Containers in foreach context."""
238 print("%%lf - %%s"%%(aa,str(my_container)))
241 script1="""from math import cos
243 ref=datetime.datetime.now()
244 o2=0. ; pas=1./float(i1)
248 o2+=1.+cos(1.*(x*3.14159))
250 print("coucou %lf from script -> %s"%(aa,str(datetime.datetime.now()-ref)))
254 script2="""o9=sum(i8)
256 fname=os.path.join(self.workdir, "TestSaveLoadRun2.xml")
258 sqrtOfNumberOfTurn=1000 # 3000 -> 3.2s/Node, 1000 -> 0.1s/Node
259 l=loader.YACSLoader()
260 p=self.r.createProc("prTest1")
261 td=p.createType("double","double")
262 ti=p.createType("int","int")
263 tdi=p.createSequenceTc("seqint","seqint",ti)
264 tdd=p.createSequenceTc("seqdouble","seqdouble",td)
265 pg=pilot.PlayGround()
266 pg.setData([("localhost",4)])
267 cont=p.createContainer("gg","HPSalome")
268 cont.setProperty("InitializeScriptKey","aa=123.456")
269 cont.setProperty("name","localhost")
270 cont.setProperty("hostname","localhost")
271 cont.setProperty("nb_proc_per_node","1")
273 node0=self.r.createFuncNode("Salome","PyFunction0") # PyFuncNode remote
276 node0.setContainer(cont)
277 node0.setScript(script0%(sqrtOfNumberOfTurn))
278 out0_0=node0.edAddOutputPort("o1",tdi)
279 out1_0=node0.edAddOutputPort("o2",ti)
280 node0.setExecutionMode("remote")
282 node1=self.r.createForEachLoop("node1",ti)
284 p.edAddCFLink(node0,node1)
285 p.edAddLink(out0_0,node1.edGetSeqOfSamplesPort())
286 node1.edGetNbOfBranchesPort().edInitInt(8)
288 node2=self.r.createScriptNode("Salome","PyScript3")
289 node1.edAddChild(node2)
290 node2.setContainer(cont)
291 node2.setScript(script1)
292 i1=node2.edAddInputPort("i1",ti)
293 p.edAddLink(node1.edGetSamplePort(),i1)
294 out0_2=node2.edAddOutputPort("o2",td)
295 out1_2=node2.edAddOutputPort("o3",ti)
296 node2.setExecutionMode("remote")
298 node3=self.r.createScriptNode("Salome","PyScript7")
300 node3.setScript(script2)
301 p.edAddCFLink(node1,node3)
302 i8=node3.edAddInputPort("i8",tdd)
303 o9=node3.edAddOutputPort("o9",td)
304 p.edAddLink(out0_2,i8)
308 o9=p.getChildByName("PyScript7").getOutputPort("o9")
309 self.assertTrue(len(p.edGetDirectDescendants()[1].getChildByName("PyScript3").getContainer().getProperty("InitializeScriptKey"))!=0)
311 refExpected=16016013.514623128
312 ex=pilot.ExecutorSwig()
313 p.propagePlayGround(pg)
314 self.assertEqual(p.getState(),pilot.READY)
315 st=datetime.datetime.now()
317 print("Time spend of test2 to 1st run %s"%(str(datetime.datetime.now()-st)))
318 self.assertEqual(p.getState(),pilot.DONE)
319 self.assertAlmostEqual(refExpected,o9.getPyObj(),5)
321 st=datetime.datetime.now()
323 print("Time spend of test2 to 2nd run %s"%(str(datetime.datetime.now()-st)))
324 self.assertEqual(p.getState(),pilot.DONE)
325 self.assertAlmostEqual(refExpected,o9.getPyObj(),5)
327 st=datetime.datetime.now()
329 print("Time spend of test2 to 3rd run %s"%(str(datetime.datetime.now()-st)))
330 self.assertEqual(p.getState(),pilot.DONE)
331 self.assertAlmostEqual(refExpected,o9.getPyObj(),5)
335 """ Test that focuses on parallel load of containers."""
337 if "aa" not in globals():
339 print("%%lf - %%s"%%(aa,str(my_container)))
343 script1="""from math import cos
345 ref=datetime.datetime.now()
346 if "aa" not in globals():
348 o2=0. ; pas=1./float(i1)
352 o2+=1.+cos(1.*(x*3.14159))
354 print("coucou %lf from script -> %s"%(aa,str(datetime.datetime.now()-ref)))
358 script2="""o9=sum(i8)
361 sqrtOfNumberOfTurn=10
362 l=loader.YACSLoader()
363 p=self.r.createProc("prTest1")
364 p.setProperty("executor","workloadmanager")
365 td=p.createType("double","double")
366 ti=p.createType("int","int")
367 tdi=p.createSequenceTc("seqint","seqint",ti)
368 tdd=p.createSequenceTc("seqdouble","seqdouble",td)
369 cont=p.createContainer("gg","Salome")
370 cont.setProperty("name","localhost")
371 cont.setProperty("hostname","localhost")
372 # no limit for the number of containers launched
373 cont.setProperty("nb_proc_per_node","0")
374 cont.setProperty("type","multi")
375 cont.usePythonCache(True)
376 cont.attachOnCloning()
378 node0=self.r.createScriptNode("Salome","Node0")
380 node0.setContainer(cont)
381 node0.setScript(script0%(sqrtOfNumberOfTurn))
382 out0_0=node0.edAddOutputPort("o1",tdi)
383 out1_0=node0.edAddOutputPort("o2",ti)
384 node0.setExecutionMode("remote")
386 node1=self.r.createForEachLoop("node1",ti)
388 p.edAddCFLink(node0,node1)
389 p.edAddLink(out0_0,node1.edGetSeqOfSamplesPort())
390 node1.edGetNbOfBranchesPort().edInitInt(16)
392 node2=self.r.createScriptNode("Salome","Node2")
393 node1.edAddChild(node2)
394 node2.setContainer(cont)
395 node2.setScript(script1)
396 i1=node2.edAddInputPort("i1",ti)
397 p.edAddLink(node1.edGetSamplePort(),i1)
398 out0_2=node2.edAddOutputPort("o2",td)
399 out1_2=node2.edAddOutputPort("o3",ti)
400 node2.setExecutionMode("remote")
402 node3=self.r.createScriptNode("Salome","Node3")
404 node3.setScript(script2)
405 p.edAddCFLink(node1,node3)
406 i8=node3.edAddInputPort("i8",tdd)
407 o9=node3.edAddOutputPort("o9",td)
408 p.edAddLink(out0_2,i8)
410 fname=os.path.join(self.workdir, "t3_new.xml")
413 o9=p.getChildByName("Node3").getOutputPort("o9")
415 refExpected=11000.008377058712
416 ex=pilot.ExecutorSwig()
417 self.assertEqual(p.getState(),pilot.READY)
418 st=datetime.datetime.now()
420 print("Time spend of test3 to 1st run %s"%(str(datetime.datetime.now()-st)))
421 self.assertEqual(p.getState(),pilot.DONE)
422 self.assertAlmostEqual(refExpected,o9.getPyObj(),5)
424 st=datetime.datetime.now()
426 print("Time spend of test3 to 2nd run %s"%(str(datetime.datetime.now()-st)))
427 self.assertEqual(p.getState(),pilot.DONE)
428 self.assertAlmostEqual(refExpected,o9.getPyObj(),5)
430 st=datetime.datetime.now()
432 print("Time spend of test3 to 3rd run %s"%(str(datetime.datetime.now()-st)))
433 self.assertEqual(p.getState(),pilot.DONE)
434 self.assertAlmostEqual(refExpected,o9.getPyObj(),5)
438 """Double foreach."""
439 fname=os.path.join(self.workdir, "TestSaveLoadRun4.xml")
445 for j in range(i+10):
452 l=loader.YACSLoader()
453 ex=pilot.ExecutorSwig()
454 p=self.r.createProc("pr")
455 p.setProperty("executor","workloadmanager")
456 cont=p.createContainer("gg","Salome")
457 cont.setProperty("name","localhost")
458 cont.setProperty("hostname","localhost")
459 # no limit for the number of containers launched
460 cont.setProperty("nb_proc_per_node","0")
461 cont.setProperty("type","multi")
462 cont.attachOnCloning()
463 td=p.createType("int","int")
464 td2=p.createSequenceTc("seqint","seqint",td)
465 td3=p.createSequenceTc("seqintvec","seqintvec",td2)
466 node1=self.r.createScriptNode("","node1")
467 node1.setScript(script1)
468 o1=node1.edAddOutputPort("o1",td3)
471 node2=self.r.createForEachLoop("node2",td2)
473 p.edAddCFLink(node1,node2)
474 p.edAddLink(o1,node2.edGetSeqOfSamplesPort())
475 node2.edGetNbOfBranchesPort().edInitInt(2)
476 node20=self.r.createBloc("node20")
477 node2.edAddChild(node20)
478 node200=self.r.createForEachLoop("node200",td)
479 node20.edAddChild(node200)
480 node200.edGetNbOfBranchesPort().edInitInt(10)
481 p.edAddLink(node2.edGetSamplePort(),node200.edGetSeqOfSamplesPort())
482 node2000=self.r.createScriptNode("","node2000")
483 node2000.setContainer(cont)
484 node2000.setExecutionMode("remote")
485 node200.edAddChild(node2000)
486 i5=node2000.edAddInputPort("i5",td)
487 o6=node2000.edAddOutputPort("o6",td)
488 node2000.setScript("o6=2+i5")
489 p.edAddLink(node200.edGetSamplePort(),i5)
491 node3=self.r.createForEachLoop("node3",td2)
493 p.edAddCFLink(node2,node3)
494 p.edAddLink(o6,node3.edGetSeqOfSamplesPort())
495 node3.edGetNbOfBranchesPort().edInitInt(2)
496 node30=self.r.createBloc("node30")
497 node3.edAddChild(node30)
498 node300=self.r.createForEachLoop("node300",td)
499 node30.edAddChild(node300)
500 node300.edGetNbOfBranchesPort().edInitInt(10)
501 p.edAddLink(node3.edGetSamplePort(),node300.edGetSeqOfSamplesPort())
502 node3000=self.r.createScriptNode("","node3000")
503 node3000.setContainer(cont)
504 node3000.setExecutionMode("remote")
505 node300.edAddChild(node3000)
506 i14=node3000.edAddInputPort("i14",td)
507 o15=node3000.edAddOutputPort("o15",td)
508 node3000.setScript("o15=3+i14")
509 p.edAddLink(node300.edGetSamplePort(),i14)
511 node4=self.r.createScriptNode("","node4")
512 node4.setScript("o9=i8")
514 i8=node4.edAddInputPort("i8",td3)
515 o9=node4.edAddOutputPort("o9",td3)
516 p.edAddCFLink(node3,node4)
520 ex = pilot.ExecutorSwig()
521 self.assertEqual(p.getState(),pilot.READY)
523 self.assertEqual(p.getState(),pilot.DONE)
524 zeResu=p.getChildByName("node4").getOutputPort("o9").get()
525 self.assertEqual(zeResu,[[5,6,7,8,9,10,11,12,13,14],[15,16,17,18,19,20,21,22,23,24,25],[26,27,28,29,30,31,32,33,34,35,36,37],[38,39,40,41,42,43,44,45,46,47,48,49,50],[51,52,53,54,55,56,57,58,59,60,61,62,63,64],[65,66,67,68,69,70,71,72,73,74,75,76,77,78,79], [80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95]])
529 """Non regression test 2 of multi pyNode, pyFuncNode sharing the same HPContainer instance."""
530 # TODO : This test is DEPRECATED. HPContainer will be removed.
531 self.skipTest("HPContainer deprecated.")
532 fname=os.path.join(self.workdir, "TestSaveLoadRun5.xml")
538 for j in range(i+10):
545 l=loader.YACSLoader()
546 ex=pilot.ExecutorSwig()
547 p=self.r.createProc("pr")
548 pg=pilot.PlayGround()
549 pg.setData([("localhost",10)])
550 cont=p.createContainer("gg","HPSalome")
551 cont.setProperty("nb_proc_per_node","1")
552 td=p.createType("int","int")
553 td2=p.createSequenceTc("seqint","seqint",td)
554 td3=p.createSequenceTc("seqintvec","seqintvec",td2)
555 node1=self.r.createScriptNode("","node1")
556 node1.setScript(script1)
557 o1=node1.edAddOutputPort("o1",td3)
560 node2=self.r.createForEachLoop("node2",td2)
562 p.edAddCFLink(node1,node2)
563 p.edAddLink(o1,node2.edGetSeqOfSamplesPort())
564 node2.edGetNbOfBranchesPort().edInitInt(2)
565 node20=self.r.createBloc("node20")
566 node2.edAddChild(node20)
567 node200=self.r.createForEachLoop("node200",td)
568 node20.edAddChild(node200)
569 node200.edGetNbOfBranchesPort().edInitInt(10)
570 p.edAddLink(node2.edGetSamplePort(),node200.edGetSeqOfSamplesPort())
571 node2000=self.r.createFuncNode("Salome","node2000")
572 node2000.setFname("ff")
573 node2000.setContainer(cont)
574 node2000.setExecutionMode("remote")
575 node200.edAddChild(node2000)
576 i5=node2000.edAddInputPort("i5",td)
577 o6=node2000.edAddOutputPort("o6",td)
578 node2000.setScript("def ff(x):\n return 2+x")
579 p.edAddLink(node200.edGetSamplePort(),i5)
581 node3=self.r.createForEachLoop("node3",td2)
583 p.edAddCFLink(node2,node3)
584 p.edAddLink(o6,node3.edGetSeqOfSamplesPort())
585 node3.edGetNbOfBranchesPort().edInitInt(2)
586 node30=self.r.createBloc("node30")
587 node3.edAddChild(node30)
588 node300=self.r.createForEachLoop("node300",td)
589 node30.edAddChild(node300)
590 node300.edGetNbOfBranchesPort().edInitInt(10)
591 p.edAddLink(node3.edGetSamplePort(),node300.edGetSeqOfSamplesPort())
592 node3000=self.r.createFuncNode("Salome","node3000")
593 node3000.setFname("ff")
594 node3000.setContainer(cont)
595 node3000.setExecutionMode("remote")
596 node300.edAddChild(node3000)
597 i14=node3000.edAddInputPort("i14",td)
598 o15=node3000.edAddOutputPort("o15",td)
599 node3000.setScript("def ff(x):\n return 3+x")
600 p.edAddLink(node300.edGetSamplePort(),i14)
602 node4=self.r.createScriptNode("","node4")
603 node4.setScript("o9=i8")
605 i8=node4.edAddInputPort("i8",td3)
606 o9=node4.edAddOutputPort("o9",td3)
607 p.edAddCFLink(node3,node4)
611 p.propagePlayGround(pg)
612 ex = pilot.ExecutorSwig()
613 self.assertEqual(p.getState(),pilot.READY)
615 self.assertEqual(p.getState(),pilot.DONE)
616 zeResu=p.getChildByName("node4").getOutputPort("o9").get()
617 self.assertEqual(zeResu,[[5,6,7,8,9,10,11,12,13,14],[15,16,17,18,19,20,21,22,23,24,25],[26,27,28,29,30,31,32,33,34,35,36,37],[38,39,40,41,42,43,44,45,46,47,48,49,50],[51,52,53,54,55,56,57,58,59,60,61,62,63,64],[65,66,67,68,69,70,71,72,73,74,75,76,77,78,79], [80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95]])
621 fname=os.path.join(self.workdir, "test6.xml")
622 p=self.r.createProc("prTest0")
623 td=p.createType("double","double")
624 ti=p.createType("int","int")
625 tsi=p.createSequenceTc("seqint","seqint",ti)
626 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
627 n0=self.r.createScriptNode("","n0")
628 o0=n0.edAddOutputPort("o0",tsi)
629 n0.setScript("o0=[3,6,8,9,-2,5]")
631 n1=self.r.createForEachLoop("n1",ti)
632 n10=self.r.createScriptNode("","n10")
634 n10.setScript("o2=2*i1")
635 i1=n10.edAddInputPort("i1",ti)
636 o2=n10.edAddOutputPort("o2",ti)
638 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
639 p.edAddLink(n1.edGetSamplePort(),i1)
641 n1.edGetNbOfBranchesPort().edInitPy(1)
642 n2=self.r.createScriptNode("","n2")
643 n2.setScript("o4=i3")
644 i3=n2.edAddInputPort("i3",tsi)
645 o4=n2.edAddOutputPort("o4",tsi)
646 n2.setScript("o4=i3")
652 l=loader.YACSLoader()
654 n1=p.getChildByName("n1")
655 ex=pilot.ExecutorSwig()
659 self.assertEqual(n1.getState(),pilot.DONE)
660 n1.edGetSeqOfSamplesPort().getPyObj()
661 a,b,c=n1.getPassedResults(ex)
662 self.assertEqual(a,list(range(6)))
663 self.assertEqual([elt.getPyObj() for elt in b],[[6, 12, 16, 18, -4, 10]])
664 self.assertEqual(c,['n10_o2_interceptor'])
668 fname=os.path.join(self.workdir, "test7.xml")
669 p=self.r.createProc("prTest1")
670 cont=p.createContainer("gg","Salome")
671 cont.setProperty("name","localhost")
672 cont.setProperty("hostname","localhost")
673 cont.setProperty("type","multi")
674 td=p.createType("double","double")
675 ti=p.createType("int","int")
676 tsi=p.createSequenceTc("seqint","seqint",ti)
677 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
678 n0=self.r.createScriptNode("","n0")
679 o0=n0.edAddOutputPort("o0",tsi)
680 n0.setScript("o0=[3,6,8,9,-2,5]")
682 n1=self.r.createForEachLoop("n1",ti)
683 n10=self.r.createScriptNode("","n10")
684 n10.setExecutionMode("remote")
685 n10.setContainer(cont)
691 raise Exception("Simulated error !")
695 i1=n10.edAddInputPort("i1",ti)
696 o2=n10.edAddOutputPort("o2",ti)
698 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
699 p.edAddLink(n1.edGetSamplePort(),i1)
701 n1.edGetNbOfBranchesPort().edInitPy(1)
702 n2=self.r.createScriptNode("","n2")
703 n2.setScript("o4=i3")
704 i3=n2.edAddInputPort("i3",tsi)
705 o4=n2.edAddOutputPort("o4",tsi)
706 n2.setScript("o4=i3")
712 l=loader.YACSLoader()
714 n1=p.getChildByName("n1")
715 ex=pilot.ExecutorSwig()
719 self.assertEqual(n1.getState(),pilot.FAILED)
720 n1.edGetSeqOfSamplesPort().getPyObj()
721 a,b,c=n1.getPassedResults(ex)
722 self.assertEqual(a,list(range(3)))
723 self.assertEqual([elt.getPyObj() for elt in b],[[6,12,16]])
724 self.assertEqual(c,['n10_o2_interceptor'])
728 from datetime import datetime
729 fname=os.path.join(self.workdir, "test8.xml")
730 p=self.r.createProc("prTest2")
731 cont=p.createContainer("gg","Salome")
732 cont.setProperty("name","localhost")
733 cont.setProperty("hostname","localhost")
734 cont.setProperty("type","multi")
735 td=p.createType("double","double")
736 ti=p.createType("int","int")
737 tsi=p.createSequenceTc("seqint","seqint",ti)
738 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
739 n0=self.r.createScriptNode("","n0")
740 o0=n0.edAddOutputPort("o0",tsi)
741 n0.setScript("o0=[3,6,8,9,-2,5]")
743 n1=self.r.createForEachLoop("n1",ti)
744 n10=self.r.createScriptNode("","n10")
745 n10.setExecutionMode("remote")
746 n10.setContainer(cont)
751 raise Exception("Simulated error !")
756 i1=n10.edAddInputPort("i1",ti)
757 o2=n10.edAddOutputPort("o2",ti)
759 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
760 p.edAddLink(n1.edGetSamplePort(),i1)
762 n1.edGetNbOfBranchesPort().edInitPy(2)
763 n2=self.r.createScriptNode("","n2")
764 n2.setScript("o4=i3")
765 i3=n2.edAddInputPort("i3",tsi)
766 o4=n2.edAddOutputPort("o4",tsi)
767 n2.setScript("o4=i3")
773 l=loader.YACSLoader()
775 n1=p.getChildByName("n1")
776 ex=pilot.ExecutorSwig()
777 ex.setKeepGoingProperty(True)
779 startt=datetime.now()
781 t0=datetime.now()-startt
783 self.assertEqual(n1.getState(),pilot.FAILED)
784 n1.edGetSeqOfSamplesPort().getPyObj()
785 a,b,c=n1.getPassedResults(ex)
786 self.assertEqual(a,[0,1,2,4,5])
787 self.assertEqual([elt.getPyObj() for elt in b],[[6,12,16,-4,10]])
788 self.assertEqual(c,['n10_o2_interceptor'])
790 p.getChildByName("n1").getChildByName("n10").setScript("""
794 raise Exception("Simulated error !")
798 ex=pilot.ExecutorSwig()
799 ex.setKeepGoingProperty(True)
801 startt=datetime.now()
803 t1=datetime.now()-startt
805 self.assertEqual(n1.getState(),pilot.FAILED)
806 n1.edGetSeqOfSamplesPort().getPyObj()
807 a,b,c=n1.getPassedResults(ex)
808 self.assertEqual(a,[1,2,3,4,5])
809 self.assertEqual([elt.getPyObj() for elt in b],[[12,16,18,-4,10]])
810 self.assertEqual(c,['n10_o2_interceptor'])
814 """ Test of assignation of already computed values for foreach node."""
815 fname=os.path.join(self.workdir, "test9.xml")
816 from datetime import datetime
817 p=self.r.createProc("prTest2")
818 cont=p.createContainer("gg","Salome")
819 cont.setProperty("name","localhost")
820 cont.setProperty("hostname","localhost")
821 cont.setProperty("type","multi")
822 td=p.createType("double","double")
823 ti=p.createType("int","int")
824 tsi=p.createSequenceTc("seqint","seqint",ti)
825 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
826 n0=self.r.createScriptNode("","n0")
827 o0=n0.edAddOutputPort("o0",tsi)
828 n0.setScript("o0=[3,6,8,9,-2,5]")
830 n1=self.r.createForEachLoop("n1",ti)
831 n10=self.r.createScriptNode("","n10")
832 n10.setExecutionMode("remote")
833 n10.setContainer(cont)
838 raise Exception("Simulated error !")
843 i1=n10.edAddInputPort("i1",ti)
844 o2=n10.edAddOutputPort("o2",ti)
846 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
847 p.edAddLink(n1.edGetSamplePort(),i1)
849 n1.edGetNbOfBranchesPort().edInitPy(2)
850 n2=self.r.createScriptNode("","n2")
851 n2.setScript("o4=i3")
852 i3=n2.edAddInputPort("i3",tsi)
853 o4=n2.edAddOutputPort("o4",tsi)
854 n2.setScript("o4=i3")
860 l=loader.YACSLoader()
862 n1=p.getChildByName("n1")
863 ex=pilot.ExecutorSwig()
864 ex.setKeepGoingProperty(True)
866 startt=datetime.now()
868 t0=datetime.now()-startt
870 self.assertEqual(p.getState(),pilot.FAILED)
871 self.assertEqual(n1.getState(),pilot.FAILED)
872 n1.edGetSeqOfSamplesPort().getPyObj()
873 a,b,c=n1.getPassedResults(ex)
874 self.assertEqual(a,[0,1,2,4,5])
875 self.assertEqual([elt.getPyObj() for elt in b],[[6,12,16,-4,10]])
876 self.assertEqual(c,['n10_o2_interceptor'])
878 p.getChildByName("n1").getChildByName("n10").setScript("""
883 ex=pilot.ExecutorSwig()
884 ex.setKeepGoingProperty(True)
885 p.getChildByName("n1").assignPassedResults(a,b,c)
887 startt=datetime.now()
889 t1=datetime.now()-startt
891 self.assertEqual(n1.getState(),pilot.DONE)
892 self.assertEqual(p.getState(),pilot.DONE)
893 self.assertEqual(p.getChildByName("n2").getOutputPort("o4").getPyObj(),[6,12,16,63,-4,10])
897 fname=os.path.join(self.workdir, "test10.xml")
898 from datetime import datetime
899 p=self.r.createProc("prTest2")
900 cont=p.createContainer("gg","Salome")
901 cont.setProperty("name","localhost")
902 cont.setProperty("hostname","localhost")
903 cont.setProperty("type","multi")
904 td=p.createType("double","double")
905 ti=p.createType("int","int")
906 tsi=p.createSequenceTc("seqint","seqint",ti)
907 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
908 n0=self.r.createScriptNode("","n0")
909 o0=n0.edAddOutputPort("o0",tsi)
910 n0.setScript("o0=[ 3*elt for elt in range(12) ]")
912 n1=self.r.createForEachLoop("n1",ti)
913 n10=self.r.createScriptNode("","n10")
914 n10.setExecutionMode("remote")
915 n10.setContainer(cont)
920 raise Exception("Simulated error !")
925 i1=n10.edAddInputPort("i1",ti)
926 o2=n10.edAddOutputPort("o2",ti)
928 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
929 p.edAddLink(n1.edGetSamplePort(),i1)
931 n1.edGetNbOfBranchesPort().edInitPy(2)
932 n2=self.r.createScriptNode("","n2")
933 n2.setScript("o4=i3")
934 i3=n2.edAddInputPort("i3",tsi)
935 o4=n2.edAddOutputPort("o4",tsi)
936 n2.setScript("o4=i3")
942 l=loader.YACSLoader()
944 n1=p.getChildByName("n1")
945 ex=pilot.ExecutorSwig()
946 ex.setKeepGoingProperty(True)
948 startt=datetime.now()
950 t0=datetime.now()-startt
952 self.assertEqual(p.getState(),pilot.FAILED)
953 self.assertEqual(n1.getState(),pilot.FAILED)
954 n1.edGetSeqOfSamplesPort().getPyObj()
955 a,b,c=n1.getPassedResults(ex)
956 self.assertEqual(a,[1,3,5,7,9,11])
957 self.assertEqual([elt.getPyObj() for elt in b],[[12,36,60,84,108,132]])
958 self.assertEqual(c,['n10_o2_interceptor'])
960 p.getChildByName("n1").getChildByName("n10").setScript("""
963 raise Exception("Simulated error !")
968 ex=pilot.ExecutorSwig()
969 ex.setKeepGoingProperty(True)
970 p.getChildByName("n1").assignPassedResults(a,b,c)
972 startt=datetime.now()
974 t1=datetime.now()-startt
975 #assert(t1.total_seconds()<6.+1.)# normally 6/2+1 s (6 remaining elts in 2 // branches + 1s to launch container)
977 self.assertEqual(n1.getState(),pilot.DONE)
978 self.assertEqual(p.getState(),pilot.DONE)
979 self.assertEqual(p.getChildByName("n2").getOutputPort("o4").getPyObj(),[0,12,30,36,60,60,90,84,120,108,150,132])
986 "test if we do not restart from the begining of the schema after an error in a foreach"
987 fname=os.path.join(self.workdir, "test11.xml")
988 from datetime import datetime
989 p=self.r.createProc("prTest2")
990 cont=p.createContainer("gg","Salome")
991 cont.setProperty("name","localhost")
992 cont.setProperty("hostname","localhost")
993 cont.setProperty("type","multi")
994 td=p.createType("double","double")
995 ti=p.createType("int","int")
996 tsi=p.createSequenceTc("seqint","seqint",ti)
997 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
998 n0=self.r.createScriptNode("","n0")
999 o0=n0.edAddOutputPort("o0",tsi)
1000 n0.setScript("o0=[ elt for elt in range(12) ]")
1002 n1=self.r.createForEachLoop("n1",ti)
1003 n10=self.r.createScriptNode("","n10")
1004 n10.setExecutionMode("remote")
1005 n10.setContainer(cont)
1010 raise Exception("Simulated error !")
1015 i1=n10.edAddInputPort("i1",ti)
1016 o2=n10.edAddOutputPort("o2",ti)
1018 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
1019 p.edAddLink(n1.edGetSamplePort(),i1)
1020 p.edAddCFLink(n0,n1)
1021 n1.edGetNbOfBranchesPort().edInitPy(2)
1022 n2=self.r.createScriptNode("","n2")
1023 n2.setScript("o4=i3")
1024 i3=n2.edAddInputPort("i3",tsi)
1025 o4=n2.edAddOutputPort("o4",tsi)
1026 n2.setScript("o4=i3")
1028 p.edAddCFLink(n1,n2)
1032 l=loader.YACSLoader()
1034 n1=p.getChildByName("n1")
1035 ex=pilot.ExecutorSwig()
1036 ex.setKeepGoingProperty(True)
1038 startt=datetime.now()
1040 t0=datetime.now()-startt
1042 self.assertEqual(p.getState(),pilot.FAILED)
1043 self.assertEqual(n1.getState(),pilot.FAILED)
1044 n1.edGetSeqOfSamplesPort().getPyObj()
1045 a,b,c=n1.getPassedResults(ex)
1047 self.assertEqual(a,[0,2,4,6,8,10])
1048 self.assertEqual([elt.getPyObj() for elt in b],[[0,4,8,12,16,20]])
1050 p.getChildByName("n0").setScript("o0=[ 3*elt for elt in range(12) ]")
1051 p.getChildByName("n1").getChildByName("n10").setScript("""
1054 raise Exception("Simulated error !")
1062 p.getChildByName("n1").assignPassedResults(a,b,c)
1065 startt=datetime.now()
1067 t1=datetime.now()-startt
1069 self.assertEqual(n1.getState(),pilot.DONE)
1070 self.assertEqual(p.getState(),pilot.DONE)
1071 self.assertEqual(p.getChildByName("n2").getOutputPort("o4").getPyObj(),[0,5,4,15,8,25,12,35,16,45,20,55])
1075 """ Test of nested ForEachLoop with a port connected inside and outside the loop."""
1076 schema = self.r.createProc("schema")
1077 ti = schema.getTypeCode("int")
1078 tiset = schema.createSequenceTc("", "seqint", ti)
1079 tisetseq = schema.createSequenceTc("", "seqintvec", tiset)
1081 n1 = self.r.createScriptNode("", "PyScript2")
1082 n1.edAddInputPort("i3", ti)
1083 n1.edAddInputPort("i4", ti)
1084 n1.edAddOutputPort("o5", ti)
1085 n1.setScript("o5=i3+i4")
1087 n2 = self.r.createScriptNode("", "PyScript1")
1088 n2.edAddInputPort("i2", ti)
1089 n2.edAddOutputPort("o3", ti)
1090 n2.setScript("o3=i2")
1092 b1 = self.r.createBloc("Bloc1")
1096 fe1 = self.r.createForEachLoop("ForEach1", ti)
1097 fe1.getInputPort("nbBranches").edInitPy(2)
1098 fe1.getInputPort("SmplsCollection").edInitPy([1, 2, 3, 4])
1101 n3 = self.r.createScriptNode("", "PostProcessing")
1102 n3.edAddInputPort("i7", tiset)
1103 n3.edAddInputPort("i5", tiset)
1104 n3.edAddOutputPort("o4", ti)
1114 b0 = self.r.createBloc("Bloc0")
1118 fe0 = self.r.createForEachLoop("ForEach1", ti)
1119 fe0.getInputPort("nbBranches").edInitPy(2)
1120 fe0.getInputPort("SmplsCollection").edInitPy([1, 2, 3, 4])
1123 schema.edAddChild(fe0)
1125 nx = self.r.createScriptNode("", "Result")
1126 nx.edAddInputPort("i8", tiset)
1127 nx.edAddOutputPort("o6", ti)
1133 schema.edAddChild(nx)
1135 schema.edAddLink(fe1.getOutputPort("evalSamples"), n1.getInputPort("i3"))
1136 schema.edAddLink(fe0.getOutputPort("evalSamples"), n1.getInputPort("i4"))
1138 schema.edAddDFLink(n1.getOutputPort("o5"), n3.getInputPort("i7"))
1139 schema.edAddDFLink(n2.getOutputPort("o3"), n3.getInputPort("i5"))
1141 po5 = fe1.getOutputPort("Bloc1.PyScript2.o5")
1142 schema.edAddDFLink(po5, n2.getInputPort("i2"))
1144 schema.edAddDFLink(n3.getOutputPort("o4"), nx.getInputPort("i8"))
1145 # schema.saveSchema("foreach12.xml")
1147 e = pilot.ExecutorSwig()
1149 self.assertEqual(schema.getState(),pilot.DONE)
1150 resVal = schema.getChildByName("Result").getOutputPort("o6").getPyObj()
1151 self.assertEqual(resVal, 160)
1155 """ Non regression test EDF11239. ForEach into ForEach. Problem on cloning linked to DeloymentTree.appendTask method that was too strong."""
1156 p=self.r.createProc("Bug11239")
1157 ti=p.createType("int","int")
1158 ti2=p.createSequenceTc("seqint","seqint",ti)
1160 cont=p.createContainer("DefaultContainer","Salome")
1162 node0=self.r.createForEachLoop("ForEachLoop_int0",ti)
1164 node0.edGetSeqOfSamplesPort().edInitPy(list(range(4)))
1165 node0.edGetNbOfBranchesPort().edInitInt(2)
1167 node00=self.r.createBloc("Bloc0")
1168 node0.edAddChild(node00)
1169 node000_0=self.r.createForEachLoop("ForEachLoop_int1",ti)
1170 node00.edAddChild(node000_0)
1171 node000_0.edGetSeqOfSamplesPort().edInitPy(list(range(4)))
1172 node000_0.edGetNbOfBranchesPort().edInitInt(3)
1174 node0000=self.r.createBloc("Bloc1")
1175 node000_0.edAddChild(node0000)
1177 node0000_0=self.r.createScriptNode("","PyScript2")
1178 node0000.edAddChild(node0000_0)
1179 i3=node0000_0.edAddInputPort("i3",ti)
1180 i4=node0000_0.edAddInputPort("i4",ti)
1181 o5=node0000_0.edAddOutputPort("o5",ti)
1182 node0000_0.setScript("o5 = i3 + i4")
1183 node0000_0.setContainer(cont)
1184 node0000_0.setExecutionMode("remote")
1185 p.edAddLink(node0.edGetSamplePort(),i3)
1186 p.edAddLink(node000_0.edGetSamplePort(),i4)
1188 node0000_1=self.r.createScriptNode("","PyScript1")
1189 node0000.edAddChild(node0000_1)
1190 o3=node0000_1.edAddOutputPort("o3",ti)
1191 node0000_1.setScript("o3 = 7")
1192 node0000_1.setExecutionMode("local")
1193 p.edAddCFLink(node0000_0,node0000_1)
1195 node000_1=self.r.createScriptNode("","PostTraitement")
1196 node00.edAddChild(node000_1)
1197 i7=node000_1.edAddInputPort("i7",ti2)
1198 i5=node000_1.edAddInputPort("i5",ti2)
1199 node000_1.setScript("for i in i7:\n print(i)\nprint(\"separation\")\nfor i in i5:\n print(i)")
1200 node000_1.setContainer(cont)
1201 node000_1.setExecutionMode("remote")
1204 p.edAddCFLink(node000_0,node000_1)
1206 #p.saveSchema("tmpp.xml")
1207 ex = pilot.ExecutorSwig()
1208 self.assertEqual(p.getState(),pilot.READY)
1210 self.assertEqual(p.getState(),pilot.DONE)
1214 """ Non regression EDF11027. Problem after Save/Load of a foreach node with type pyobj with input "SmplsCollection" manually set before. Correction in convertToYacsObjref from XML->Neutral. Objref can hide a string !"""
1215 xmlFileName=os.path.join(self.workdir, "test14.xml")
1216 SALOMERuntime.RuntimeSALOME_setRuntime()
1217 r=pilot.getRuntime()
1218 n0=r.createProc("test23/zeRun")
1219 tp=n0.createInterfaceTc("python:obj:1.0","pyobj",[])
1220 tp2=n0.createSequenceTc("list[pyobj]","list[pyobj]",tp)
1221 n0bis=r.createBloc("test23/main") ; n0.edAddChild(n0bis)
1222 n00=r.createBloc("test23/run") ; n0bis.edAddChild(n00)
1224 n000=r.createForEachLoop("test23/FE",tp) ; n00.edAddChild(n000)
1225 n0000=r.createScriptNode("Salome","test23/run_internal") ; n000.edSetNode(n0000)
1226 i0=n0000.edAddInputPort("i0",tp)
1227 i1=n0000.edAddInputPort("i1",tp) ; i1.edInitPy(3)
1228 o0=n0000.edAddOutputPort("o0",tp)
1229 n0000.setScript("o0=i0+i1")
1231 n00.edAddLink(n000.edGetSamplePort(),i0)
1233 n000.edGetSeqOfSamplesPort().edInitPy(list(range(10)))
1234 n000.edGetNbOfBranchesPort().edInitInt(2)
1236 n01=r.createScriptNode("Salome","test23/check") ; n0bis.edAddChild(n01)
1237 n0bis.edAddCFLink(n00,n01)
1238 i2=n01.edAddInputPort("i2",tp2)
1239 o1=n01.edAddOutputPort("o1",tp2)
1240 n01.setScript("o1=i2")
1241 n0bis.edAddLink(o0,i2)
1243 n0.saveSchema(xmlFileName)
1245 l=loader.YACSLoader()
1246 p=l.load(xmlFileName) # very import do not use n0 but use p instead !
1247 ex=pilot.ExecutorSwig()
1249 self.assertEqual(p.getState(),pilot.READY)
1251 self.assertEqual(p.getState(),pilot.DONE)
1252 self.assertEqual(p.getChildByName("test23/main.test23/check").getOutputPort("o1").getPyObj(),[3,4,5,6,7,8,9,10,11,12])
1256 from SALOME_PyNode import UnProxyObjectSimple
1257 #fname=os.path.join(self.workdir, "BugInConcurrentLaunchDftCont.xml")
1258 p=self.r.createProc("pr")
1259 ti=p.createType("int","int")
1260 cont=p.createContainer("DefaultContainer","Salome")
1261 # enable WorkloadManager mode because containers are not registered right
1262 # in classical mode (4 containers with the same name are launched at the
1264 p.setProperty("executor", "WorkloadManager")
1265 cont.setProperty("type", "multi")
1266 cont.setProperty("container_name","FactoryServer")
1267 b=self.r.createBloc("Bloc") ; p.edAddChild(b)
1272 node=self.r.createScriptNode("Salome","node%d"%i)
1273 node.setExecutionMode("remote")
1274 node.setContainer(cont)
1275 outs.append(node.edAddOutputPort("i",ti))
1276 node.setScript("i=%d"%i)
1279 node=self.r.createScriptNode("Salome","nodeEnd")
1280 node.setExecutionMode("remote")
1281 node.setContainer(cont)
1282 res=node.edAddOutputPort("res",ti)
1287 inp=node.edAddInputPort(elt,ti) ; l.append(elt)
1289 p.edAddLink(outs[i],inp)
1290 node.setScript("res="+"+".join(l))
1291 p.edAddCFLink(b,node)
1295 ex = pilot.ExecutorSwig()
1296 self.assertEqual(p.getState(),pilot.READY)
1298 self.assertEqual(UnProxyObjectSimple( res.getPyObj() ),6)
1299 self.assertEqual(p.getState(),pilot.DONE)
1303 """ Test to check that a list[pyobj] outputport linked to pyobj inputport is OK."""
1304 SALOMERuntime.RuntimeSALOME_setRuntime()
1305 self.r=pilot.getRuntime()
1306 n0=self.r.createProc("test16/zeRun")
1307 tp=n0.createInterfaceTc("python:obj:1.0","pyobj",[])
1308 tp2=n0.createSequenceTc("list[pyobj]","list[pyobj]",tp)
1310 n00=self.r.createScriptNode("Salome","n00") ; n0.edAddChild(n00)
1311 o0=n00.edAddOutputPort("o0",tp2)
1312 n00.setScript("o0=[[i+1] for i in range(8)]")
1313 n01=self.r.createScriptNode("Salome","n01") ; n0.edAddChild(n01)
1314 i1=n01.edAddInputPort("i1",tp)
1315 n01.setScript("assert(i1==[[1], [2], [3], [4], [5], [6], [7], [8]])")
1316 n0.edAddCFLink(n00,n01)
1319 ex=pilot.ExecutorSwig()
1320 self.assertEqual(n0.getState(),pilot.READY)
1322 self.assertEqual(n0.getState(),pilot.DONE)
1326 """ Same as test16 except that tp2 is not list of tp but a list of copy of tp"""
1327 SALOMERuntime.RuntimeSALOME_setRuntime()
1328 self.r=pilot.getRuntime()
1329 n0=self.r.createProc("test17/zeRun")
1330 tp=n0.createInterfaceTc("python:obj:1.0","pyobj",[])
1331 tpp=n0.createInterfaceTc("python:obj:1.0","pyobj",[]) # diff is here
1332 tp2=n0.createSequenceTc("list[pyobj]","list[pyobj]",tpp)
1334 n00=self.r.createScriptNode("Salome","n00") ; n0.edAddChild(n00)
1335 o0=n00.edAddOutputPort("o0",tp2)
1336 n00.setScript("o0=[[i+1] for i in range(8)]")
1337 n01=self.r.createScriptNode("Salome","n01") ; n0.edAddChild(n01)
1338 i1=n01.edAddInputPort("i1",tp)
1339 n01.setScript("assert(i1==[[1], [2], [3], [4], [5], [6], [7], [8]])")
1340 n0.edAddCFLink(n00,n01)
1343 ex=pilot.ExecutorSwig()
1344 self.assertEqual(n0.getState(),pilot.READY)
1346 self.assertEqual(n0.getState(),pilot.DONE)
1350 p=self.r.createProc("prTest18")
1351 n00=self.r.createScriptNode("Salome","n00")
1352 self.assertEqual(n00.getMaxLevelOfParallelism(),1)
1353 n00.setExecutionMode("remote")
1354 self.assertEqual(n00.getMaxLevelOfParallelism(),1)
1355 cont=p.createContainer("gg","Salome")
1356 n00.setContainer(cont)
1357 self.assertEqual(n00.getMaxLevelOfParallelism(),1)
1358 cont.setProperty("nb_proc_per_nod","6")
1359 self.assertEqual(n00.getMaxLevelOfParallelism(),1)
1360 cont.setProperty("nb_proc_per_node","7") # <- here
1361 self.assertEqual(n00.getMaxLevelOfParallelism(),7) # <- here
1365 """This test checks the mechanism of YACS that allow PythonNodes to know their DynParaLoop context."""
1366 fname=os.path.join(self.workdir, "test19.xml")
1367 l=loader.YACSLoader()
1369 p=self.r.createProc("PROC")
1370 p.setProperty("executor","workloadmanager")
1371 ti=p.createType("int","int")
1372 tdi=p.createSequenceTc("seqint","seqint",ti)
1374 fe0=self.r.createForEachLoop("FE0",ti) ; p.edAddChild(fe0)
1375 fe0.edGetNbOfBranchesPort().edInitInt(4)
1376 fe0_end=self.r.createScriptNode("Salome","fe0_end")
1377 fe0.edSetFinalizeNode(fe0_end)
1378 fe0_end.setScript("""assert([elt[0] for elt in my_dpl_localization]==["FE0"])
1379 assert(my_dpl_localization[0][1]>=0 and my_dpl_localization[0][1]<4)""")
1380 n0=self.r.createScriptNode("Salome","n0") ; p.edAddChild(n0)
1381 n0.setScript("o1=list(range(10))")
1382 a=n0.edAddOutputPort("o1",tdi)
1383 p.edAddLink(a,fe0.edGetSeqOfSamplesPort()) ; p.edAddCFLink(n0,fe0)
1385 b0=self.r.createBloc("b0") ; fe0.edAddChild(b0)
1386 n1=self.r.createScriptNode("Salome","n1") ; b0.edAddChild(n1)
1387 n1.setScript("""assert([elt[0] for elt in my_dpl_localization]==["FE0"])
1388 assert(my_dpl_localization[0][1]>=0 and my_dpl_localization[0][1]<4)
1389 o1=list(range(10))""")
1390 b=n1.edAddOutputPort("o1",tdi)
1391 fe1=self.r.createForEachLoop("FE1",ti) ; b0.edAddChild(fe1)
1392 fe1.edGetNbOfBranchesPort().edInitInt(3)
1393 fe1_end=self.r.createScriptNode("Salome","fe1_end")
1394 fe1_end.setScript("""assert([elt[0] for elt in my_dpl_localization]==["FE0.b0.FE1","FE0"])
1395 assert(my_dpl_localization[1][1]>=0 and my_dpl_localization[1][1]<4)
1396 assert(my_dpl_localization[0][1]>=0 and my_dpl_localization[0][1]<3)
1398 fe1.edSetFinalizeNode(fe1_end)
1399 p.edAddLink(b,fe1.edGetSeqOfSamplesPort()) ; p.edAddCFLink(n1,fe1)
1401 n2=self.r.createScriptNode("Salome","n2") ; fe1.edAddChild(n2)
1402 n2.setScript("""assert([elt[0] for elt in my_dpl_localization]==["FE0.b0.FE1","FE0"])
1403 assert(my_dpl_localization[1][1]>=0 and my_dpl_localization[1][1]<4)
1404 assert(my_dpl_localization[0][1]>=0 and my_dpl_localization[0][1]<3)
1408 ex=pilot.ExecutorSwig()
1410 # local run of PythonNodes n1 and n2
1413 self.assertEqual(p.getState(),pilot.READY)
1414 ex.setDPLScopeSensitive(True) # <- this line is the aim of the test
1416 self.assertEqual(p.getState(),pilot.DONE)
1420 cont=p.createContainer("gg","Salome")
1421 cont.setProperty("name","localhost")
1422 cont.setProperty("hostname","localhost")
1423 # no limit for the number of containers launched
1424 cont.setProperty("nb_proc_per_node","0")
1425 cont.setProperty("type","multi")
1426 #cont.usePythonCache(True)
1427 cont.attachOnCloning()
1428 n1=p.getChildByName("FE0.b0.n1") ; n1.setExecutionMode("remote") ; n1.setContainer(cont)
1429 n2=p.getChildByName("FE0.b0.FE1.n2") ; n2.setExecutionMode("remote") ; n2.setContainer(cont)
1431 self.assertEqual(p.getState(),pilot.READY)
1433 self.assertEqual(p.getState(),pilot.DONE)
1437 """This test revealed a huge bug in ElementaryNode contained in a loop or foreach. The RECONNECT state generated invalid dependancies that only HPContainer can reveal the problem"""
1438 def assignCont(n,cont):
1439 n.setExecutionMode("remote") ; n.setContainer(cont)
1441 xmlFileName="test20.xml"
1442 p=self.r.createProc("test26")
1443 p.setProperty("executor","workloadmanager")
1445 cont=p.createContainer("gg","Salome")
1446 cont.setProperty("name","localhost")
1447 cont.setProperty("hostname","localhost")
1448 # no limit for the number of containers launched
1449 cont.setProperty("nb_proc_per_node","0")
1450 cont.setProperty("type","multi")
1451 cont.usePythonCache(True)
1452 cont.attachOnCloning()
1454 po=p.createInterfaceTc("python:obj:1.0","pyobj",[])
1455 sop=p.createSequenceTc("list[pyobj]","list[pyobj]",po)
1457 b0=self.r.createBloc("test26/main") ; p.edAddChild(b0)
1458 n0=self.r.createScriptNode("Salome","test26/n0") ; assignCont(n0,cont) # 1
1459 n0.setScript("""import os
1460 dd=list( range(10) )""")
1461 dd=n0.edAddOutputPort("dd",sop) ; b0.edAddChild(n0)
1462 fe0=self.r.createForEachLoop("test26/FE0",po) ; b0.edAddChild(fe0)
1463 fe0.edGetNbOfBranchesPort().edInitInt(1) # very important for the test : 1 !
1464 fe0i=self.r.createBloc("test26/FE0_internal") ; fe0.edSetNode(fe0i)
1465 zeArgInitNode2=self.r.createScriptNode("Salome","zeArgInitNode") ; assignCont(zeArgInitNode2,cont) # 2
1466 fe0i.edAddChild(zeArgInitNode2)
1467 c1=zeArgInitNode2.edAddInputPort("c",po)
1468 c2=zeArgInitNode2.edAddOutputPort("c",po)
1469 zeRun=self.r.createBloc("test26/zeRun") ; fe0i.edAddChild(zeRun)
1470 zeArgInitNode=self.r.createScriptNode("Salome","zeArgInitNode") ; assignCont(zeArgInitNode,cont) # 3
1471 zeRun.edAddChild(zeArgInitNode)
1472 ff1=zeArgInitNode.edAddInputPort("ff",po)
1473 ff2=zeArgInitNode.edAddOutputPort("ff",po)
1474 line01=self.r.createScriptNode("Salome","line01") ; zeRun.edAddChild(line01) ; assignCont(line01,cont) # 4
1475 line01.setScript("ee=3")
1476 ee0=line01.edAddOutputPort("ee",po)
1477 initt=self.r.createScriptNode("Salome","test26/initt") ; assignCont(initt,cont) # 5
1478 initt.setScript("pass") ; zeRun.edAddChild(initt)
1479 end=self.r.createScriptNode("Salome","test26/end") ; assignCont(end,cont) # 6
1480 end.setScript("import os") ; zeRun.edAddChild(end)
1481 retu=self.r.createScriptNode("Salome","return") ; assignCont(retu,cont) # 7
1482 retu.setScript("ee=i0") ; zeRun.edAddChild(retu)
1483 i0=retu.edAddInputPort("i0",po)
1484 ee=retu.edAddOutputPort("ee",po)
1485 zeRun.edAddCFLink(zeArgInitNode,line01)
1486 zeRun.edAddCFLink(line01,initt)
1487 zeRun.edAddCFLink(initt,end)
1488 zeRun.edAddCFLink(end,retu)
1491 returnn=self.r.createScriptNode("Salome","return") ; assignCont(returnn,cont) # 8
1492 returnn.setScript("elt=i0")
1493 i00=returnn.edAddInputPort("i0",po)
1494 elt=returnn.edAddOutputPort("elt",po)
1495 fe0i.edAddChild(returnn)
1496 fe0i.edAddCFLink(zeArgInitNode2,zeRun)
1497 fe0i.edAddCFLink(zeRun,returnn)
1501 finalize=self.r.createScriptNode("Salome","test26/finalize") ; b0.edAddChild(finalize) ; assignCont(finalize,cont) # 9
1502 finalize.setScript("pass")
1503 b0.edAddCFLink(n0,fe0)
1504 b0.edAddCFLink(fe0,finalize)
1506 p.edAddLink(dd,fe0.edGetSeqOfSamplesPort())
1507 p.edAddLink(fe0.edGetSamplePort(),c1)
1509 #xmlFileName="test20.xml"
1510 #p.saveSchema(xmlFileName)
1511 p.getChildByName("test26/main.test26/FE0").edGetNbOfBranchesPort().edInitInt(1) # very important 1 !
1513 ex=pilot.ExecutorSwig()
1514 self.assertEqual(p.getState(),pilot.READY)
1516 self.assertEqual(p.getState(),pilot.DONE)
1522 "test if we restart from a saved state in a foreach loop"
1523 fname=os.path.join(self.workdir, "test21.xml")
1524 xmlStateFileName=os.path.join(self.workdir, "saveState21.xml")
1525 from datetime import datetime
1526 p=self.r.createProc("prTest21")
1527 cont=p.createContainer("gg","Salome")
1528 cont.setProperty("name","localhost")
1529 cont.setProperty("hostname","localhost")
1530 cont.setProperty("type","multi")
1531 td=p.createType("double","double")
1532 ti=p.createType("int","int")
1533 tsi=p.createSequenceTc("seqint","seqint",ti)
1534 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
1535 n0=self.r.createScriptNode("","n0")
1536 o0=n0.edAddOutputPort("o0",tsi)
1537 n0.setScript("o0=[ elt for elt in range(6) ]")
1539 n1=self.r.createForEachLoop("n1",ti)
1540 n10=self.r.createScriptNode("","n10")
1541 n10.setExecutionMode("remote")
1542 n10.setContainer(cont)
1549 i1=n10.edAddInputPort("i1",ti)
1550 o2=n10.edAddOutputPort("o2",ti)
1552 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
1553 p.edAddLink(n1.edGetSamplePort(),i1)
1554 p.edAddCFLink(n0,n1)
1555 n1.edGetNbOfBranchesPort().edInitPy(2)
1556 n2=self.r.createScriptNode("","n2")
1557 n2.setScript("o4=i3")
1558 i3=n2.edAddInputPort("i3",tsi)
1559 o4=n2.edAddOutputPort("o4",tsi)
1560 n2.setScript("o4=i3")
1562 p.edAddCFLink(n1,n2)
1566 l=loader.YACSLoader()
1568 n1=p.getChildByName("n1")
1569 ex=pilot.ExecutorSwig()
1570 ex.setKeepGoingProperty(True)
1572 startt=datetime.now()
1574 myRun=threading.Thread(None, ex.RunW, None, (p,0))
1578 SALOMERuntime.schemaSaveState(p, ex, xmlStateFileName)
1579 a,b,c=n1.getPassedResults(ex)
1581 t0=datetime.now()-startt
1583 self.assertEqual(p.getState(),pilot.DONE)
1584 self.assertEqual(n1.getState(),pilot.DONE)
1585 self.assertEqual(a,[0,1])
1586 self.assertEqual([elt.getPyObj() for elt in b],[[0,2]])
1588 p.getChildByName("n0").setScript("o0=[ 3*elt for elt in range(6) ]")
1589 p.getChildByName("n1").getChildByName("n10").setScript("""
1594 loader.loadState(p, xmlStateFileName)
1596 p.getChildByName("n1").assignPassedResults(a,b,c)
1601 self.assertEqual(n1.getState(),pilot.DONE)
1602 self.assertEqual(p.getState(),pilot.DONE)
1603 self.assertEqual(p.getChildByName("n2").getOutputPort("o4").getPyObj(),[0,2,10,15,20,25])
1605 # Restart from a saved state in a foreach loop without using assignPassedResults.
1606 # This test uses the files test21.xml and saveState21.xml produced by test21.
1608 ex=pilot.ExecutorSwig()
1609 l=loader.YACSLoader()
1611 q.getChildByName("n0").setScript("o0=[ 3*elt for elt in range(6) ]")
1612 q.getChildByName("n1").getChildByName("n10").setScript("""
1615 print("execution n10:", i1)
1618 q.getChildByName("n2").setScript("""
1619 print("execution n2:", i3)
1622 loader.loadState(q, xmlStateFileName)
1628 self.assertEqual(q.getChildByName("n1").getState(),pilot.DONE)
1629 self.assertEqual(q.getState(),pilot.DONE)
1630 self.assertEqual(q.getChildByName("n2").getOutputPort("o4").getPyObj(),[0,2,10,15,20,25])
1634 """ test focused on weight attribut after a dump and reload from a xml file
1636 fname=os.path.join(self.workdir, "test23.xml")
1637 p=self.r.createProc("prTest23")
1638 cont=p.createContainer("gg","Salome")
1639 cont.setProperty("name","localhost")
1640 cont.setProperty("hostname","localhost")
1641 cont.setProperty("type","multi")
1642 td=p.createType("double","double")
1643 ti=p.createType("int","int")
1644 tsi=p.createSequenceTc("seqint","seqint",ti)
1645 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
1646 n0=self.r.createScriptNode("","n0")
1647 o0=n0.edAddOutputPort("o0",tsi)
1648 n0.setScript("o0=[ elt for elt in range(6) ]")
1650 n1=self.r.createForEachLoop("n1",ti)
1652 n10=self.r.createScriptNode("","n10")
1653 n10.setExecutionMode("remote")
1654 n10.setContainer(cont)
1662 i1=n10.edAddInputPort("i1",ti)
1663 o2=n10.edAddOutputPort("o2",ti)
1665 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
1666 p.edAddLink(n1.edGetSamplePort(),i1)
1667 p.edAddCFLink(n0,n1)
1668 n1.edGetNbOfBranchesPort().edInitPy(2)
1669 n2=self.r.createScriptNode("","n2")
1670 n2.setScript("o4=i3")
1671 i3=n2.edAddInputPort("i3",tsi)
1672 o4=n2.edAddOutputPort("o4",tsi)
1673 n2.setScript("o4=i3")
1675 p.edAddCFLink(n1,n2)
1679 l=loader.YACSLoader()
1681 self.assertEqual(p.getChildByName("n1").getWeight().getSimpleLoopWeight(),3.0)
1682 self.assertEqual(p.getChildByName("n1").getChildByName("n10").getWeight().getElementaryWeight(),4.0)
1686 """ Non regression test EDF17470"""
1687 SALOMERuntime.RuntimeSALOME.setRuntime()
1688 r=SALOMERuntime.getSALOMERuntime()
1689 p=r.createProc("prTest2")
1691 cont1=p.createContainer("cont1","Salome")
1692 cont1.setProperty("name","localhost")
1693 cont1.setProperty("hostname","localhost")
1694 cont1.setProperty("type","multi")
1695 cont1.setProperty("container_name","container1")
1697 cont2=p.createContainer("cont2","Salome")
1698 cont2.setProperty("name","localhost")
1699 cont2.setProperty("hostname","localhost")
1700 cont2.setProperty("type","multi")
1701 cont2.setProperty("container_name","container2")
1703 td=p.createType("double","double")
1704 ti=p.createType("int","int")
1705 ts=p.createType("string","string")
1706 n0=r.createScriptNode("","n0")
1707 n0.setScript("""import SalomeSDSClt
1716 return pickle.dumps(obj,pickle.HIGHEST_PROTOCOL)
1718 return pickle.loads(strr)
1721 salome.salome_init()
1724 dsm=salome.naming_service.Resolve("/DataServerManager")
1725 dsm.cleanScopesInNS()
1726 if scopeName in dsm.listScopes():
1727 dsm.removeDataScope(scopeName)
1728 dss,isCreated=dsm.giveADataScopeTransactionCalled(scopeName)
1730 t0=dss.createRdExtVarTransac(varName,obj2Str({"ab":[4,5,6]}))
1731 dss.atomicApply([t0])
1733 n0_sn=n0.edAddOutputPort("scopeName",ts)
1734 n0_vn=n0.edAddOutputPort("varName",ts)
1736 n1=r.createScriptNode("","n1")
1737 n1_sn=n1.edAddInputPort("scopeName",ts)
1738 n1_vn=n1.edAddInputPort("varName",ts)
1739 n1.setScript("""import SalomeSDSClt
1749 return pickle.dumps(obj,pickle.HIGHEST_PROTOCOL)
1751 return pickle.loads(strr)
1753 salome.salome_init()
1754 dsm=salome.naming_service.Resolve("/DataServerManager")
1755 dss,isCreated=dsm.giveADataScopeTransactionCalled(scopeName)
1756 assert(not isCreated)
1758 t1=dss.addMultiKeyValueSession(varName)
1760 wk2=dss.waitForKeyInVar(varName,obj2Str("ef"))
1762 assert(str2Obj(dss.waitForMonoThrRev(wk2))==[11,12])""")
1763 n1.setContainer(cont1)
1764 n1.setExecutionMode("remote")
1766 n2=r.createScriptNode("","n2")
1767 n2_sn=n2.edAddInputPort("scopeName",ts)
1768 n2_vn=n2.edAddInputPort("varName",ts)
1769 n2.setScript("""import SalomeSDSClt
1779 return pickle.dumps(obj,pickle.HIGHEST_PROTOCOL)
1781 return pickle.loads(strr)
1783 salome.salome_init()
1784 dsm=salome.naming_service.Resolve("/DataServerManager")
1785 dss,isCreated=dsm.giveADataScopeTransactionCalled(scopeName)
1786 assert(not isCreated)
1788 t1=dss.addMultiKeyValueSession(varName)
1789 t1.addKeyValueInVarErrorIfAlreadyExistingNow(obj2Str("cd"),obj2Str([7,8,9,10]))
1790 t1.addKeyValueInVarErrorIfAlreadyExistingNow(obj2Str("ef"),obj2Str([11,12]))
1792 n2.setContainer(cont2)
1793 n2.setExecutionMode("remote")
1798 p.edAddCFLink(n0,n1)
1799 p.edAddCFLink(n0,n2)
1800 p.edAddLink(n0_sn,n1_sn)
1801 p.edAddLink(n0_vn,n1_vn)
1802 p.edAddLink(n0_sn,n2_sn)
1803 p.edAddLink(n0_vn,n2_vn)
1805 ex=pilot.ExecutorSwig()
1807 self.assertEqual(p.getState(),pilot.DONE)
1811 fname=os.path.join(self.workdir, "test25.xml")
1812 p=self.r.createProc("p0")
1813 tp=p.createInterfaceTc("python:obj:1.0","pyobj",[])
1814 n1_0_sc=self.r.createScriptNode("Salome","n1_0_sc")
1815 p.edAddChild(n1_0_sc)
1816 n1_0_sc.setExecutionMode("remote")
1817 n1_0_sc.setScript("""""")
1818 i1_0_sc=n1_0_sc.edAddInputPort("i1",tp)
1819 i1_0_sc.edInitPy(list(range(4)))
1821 cont=p.createContainer("gg","Salome")
1822 cont.setProperty("name","localhost")
1823 cont.setProperty("hostname","localhost")
1824 n1_0_sc.setContainer(cont)
1827 l=loader.YACSLoader()
1829 ex=pilot.ExecutorSwig()
1830 self.assertEqual(p.getState(),pilot.READY)
1832 self.assertEqual(p.getState(),pilot.DONE)
1837 This test is here to check that old (<=930) graphs are always loadable.
1838 So an xml file coming from test14 in 930 has been generated and converted into home made "base64" like format.
1839 This test puts unbased64 byte array into test_930.xml and load it to check that everything is OK.
1842 content_of_file = b'DDkShXM2PeNCndPqRfnYX5EAt.GaRgPq7dNqtfnYZgvqh=kQf7moXCE2z5lED.tCxgM2RcOqdfl29ePC9YnAx3uaGetqF5lE=.E2D0uS1eM2RcOqdfl2FjPqBYE2pdNq7fl2FjPqBYHoT3.2=.Ew9dsCdUFqVfOaj2Eaxet4BeN2=BOKRWOwF0PqfYMqdYHoT3.2=.EwxYNKHeNa=5O4heOwF4OKBeN2=7Maj2FaZXOaFDFwI.E2=1kibUua=5O4heOwF7Nq9YE2pdNq7fl2ZbMiFDFwI.E2=1nqFZNCdaM2RcOqdfl21dvqFZN2=7Maj2ECbWsKxbNQxYNKL6lo12HoT3.2=.EwneOCfeNqleM2RcOqdfl2BdPC9hcCbjN4Jfd2=APqRWuaRWuwF.uSxYNKFDFwI.E2=1kibUua=5O4heOwFAsiHdNqtYE2pdNq7fl2nWtCZbPaFDFwI.E2=1n4xbMiVdNqdYs2RcOqdfl26eNaVesq9g9qRWu4ZbOaHYFwI.E2=.E2=1kCHjMCdYsibUFqVfOaj2H4xbMiVdNqdYvupdNq7YE2PcMqfeOwFAe4BjOqdYHoT3.2=.E2=.Ew1Yvq1eNC9ds2RcOqdfl2VWsiVgMKdWPuxbPulXPqRdNqtYE2PcMqfeOwF.l2x5lE=.E2=.E2D.tCxUuaHWuS=5O4heOwFAPqRWu4ZbOaHjdqVfOaF.FiVXOidfl2McP49jNCbgeaHauaHYHoT3.2=.E2=.Ew1Yvq1eNC9ds2RcOqdfl2RcOqdYE2PcMqfeOwF1PqlcMq3jPC9YHoT3.2=.EwxAPqRWu4ZbOaHblE=.E2D2MqxgM2RcOqdfl29ePC9YnAx9O4ZbN2T3.2=.E2=.EwFXPqlUFqVfOaj2EidgsiHAnoHetqF5lE=.E2=.E2=.E2D4PqHeO4lVM2RcOqdfl29ePC9YnAx48WF.FqFYu4RgMKj2FAF.EqxjMCueOKtVMij2GoX2E29dsCdfl21dvqFZN2T3.2=.E2=.E2=.E2=.EwZbMqZbOa=5O4heOwF0uanWtAnDFCfbPuZbMidYtqVXN2T3.2=.E2=.E2=.E2=.E2=.EwngNCZUsiT1n4xWOaT1m2qg6WUWe0qjMAj7MAp7OAifdwDDH4xWOaT1nongNCZUsiT3.2=.E2=.E2=.E2=.E2=.EwZbMCxYsi=5O4heOwF7MAF.EibUuaj2ECbjN4JYHoT3.2=.E2=.E2=.E2=.E2=.EwZbMCxYsi=5O4heOwF7OAF.EibUuaj2ECbjN4JYHoT3.2=.E2=.E2=.E2=.E2=.Ewxesi1jNC9UFqVfOaj2Hq12E29dsCdfl21dvqFZN2x5lE=.E2=.E2=.E2=.E2DDGKRXOKReNwI.E2=.E2=.E2=1noNjNCdcP43blE=.E2=.E2=.E2D0O49cMqZbPK=APqRWtCxXOwF4O4BguaF5lE=.E2=.E2=.E2=.E2D4NCxfNqxWOaT0uanWtAnDFWcXnoNYvqhbPq7eNw=1laHjOq1jNC9bmaPcMqmcOq1XOanXnoNYvqhUvqHWtwI.E2=.E2=.E2=.E2=1kixbPq7eNw9ePC9YnAx48WR0uanWtAnDFCfbPuZbMidYtqVXMwx0vqRjMadbk2D0vq1jNC9bmK11no9jMCxYsiT3.2=.E2=.E2=.Ewx0O49cMqZbPKT3.2=.E2=.Ewx2MqxgNwI.E2=.E2=1mKRXOKReM2RcOqdfl29ePC9YnAxAMKdgPKF5lE=.E2=.E2=.E2DAv4HdMC9bkwljMadbkwVBf06c6eUhfqX9mKH9euT1noljMadbkwxAv4HdMC9blE=.E2=.E2=.E2D7Nq1jNC9UFqVfOaj2GKH2E29dsCdfl2BdPC9hcCbjN4Jfd2x5lE=.E2=.E2=.E2DDOi9UvqHWs2RcOqdfl2xcl2=0uS1eOwF1OKnWvO1dvqFZOuFDFwI.E2=.E2=1noZbMqZbOaT3.2=.E2=.EwljNq9YvqBbk2D4NCxfNqxWOaT0uanWtAnDFCfbMwx4NCxfNqxWOaT.Ew9jNqxWOaT0uanWtAnDH43eP4pXno9jNqxWOaT.EwxAPqRWtCxXNwI.E2=.E2=1kaVWu4BdNqpUH4xbMiHjMqj2FaVXPCdYFwI.E2=.E2=.E2=1laHjOqRjMadbkidgsiHAnoHetqR0uanWtAnDFWcbEidgsiHAnoHetqydNq9eNCRcMqDDFaHjOqRjMadbk2D4NCxfMCxYsiTDMADDFaHjOq1jNC9blE=.E2=.E2=.E2D0vqRjMadbkidgsiHAnolVOalhMwx0vqRjMadbk2D0vq1jNC9bmKH1no9jMCxYsiT3.2=.E2=.Ewx0O49cMqZbPKT3.2=.Ewx2MqxgNwI.E2=1kCVYu4heMidYtwI.E2=.E2=1kixbPq7eNw9ePC9YnAx9O4ZbNo9ePC9YnAx2uiRbEidgsiHAnoMe6wx0vqRjMadbkw9jMCxYsiT5N4EYu4RgMKdgswx0vq1jNC9blE=.E2=.E2D4u4BeuaT1mKRWtwH1noZbMiT1noPcMqfeNwI.E2=1no1cNCVfOa9eNCT3.2=.Ew1cNCVfOa9eNCT3.2=.E2=.Ew9jNqxWOaT0uanWtAnDGqVdNqR0uanWtAnDFCfbNo9ePC9YnAx48WDDEixbPq7eNwD0vq1jNC9bn8hUsqng9qBXOalWuKxbMwx0vq1jNC9blE=.E2=.E2D4u4BeuaT1m4HYu4bbkw7cMiVblED4u4BeuaT1nC9YuKRiNwAUkmI5EwxAsiHdNqtbkwx4u4BeuaT3.wPcMqfeNwDAsiHdNqtbkmX17ER1nonWtCZbPaT1noPcMqfeNwI1liVXOidbkwnWtCZbPaT17AAZ=oDDHC9YuKRiNwDDFiVXOidblED4u4BeuaT1nC9YuKRiNwAgkmI5EwxAsiHdNqtbkwx4u4BeuaT3.wPcMqfeNwDAsiHdNqtbkm917ER1nonWtCZbPaT1noPcMqfeNwI1liVXOidbkwnWtCZbPaT18gAZ=oDDHC9YuKRiNwDDFiVXOidblED4u4BeuaT1nC9YuKRiNwAakmI5EwxAsiHdNqtbkwx4u4BeuaT3.wPcMqfeNwDAsiHdNqtbkmv17ER1nonWtCZbPaT1noPcMqfeNwI1liVXOidbkwnWtCZbPaT16QAZ=oDDHC9YuKRiNwDDFiVXOidblED4u4BeuaT1nC9YuKRiNwAdkmI5EwxAsiHdNqtbkwx4u4BeuaT3.wx0O49cNwDDG4HYu4bbkwx4u4BeuaT3.2=.Ewx.u4HcOqdWuaHblE=.E2D.u4HcOqdWuaHblE=.E2=.E2D0vqRjMadbkidgsiHAnohcOKRbEidgsiHAnoHetqR0uanWtAnDFWcbEidgsiHAnoHetqydNq9eNCRcMqDDEixbPq7eNwD0vq1jNC9bmKX1no9jMCxYsiT3.2=.E2=.EwPcMqfeNwDDN4JYuaNbkwVBf06c6eUhcmn17ER9euT1noxYNKHeNaT1noPcMqfeNwI.E2=1no1cNCVfOa9eNCT3.wx.tCxgNwI3'
1844 fname=os.path.join(self.workdir, "test_930.xml")
1845 with open(fname,"wb") as f:
1846 f.write( pilot.FromBase64Swig(content_of_file) )
1848 SALOMERuntime.RuntimeSALOME_setRuntime()
1849 l=loader.YACSLoader()
1851 self.assertTrue(p.getChildByName("test23/main").getChildByName("test23/run").getChildByName("test23/FE").getChildByName("test23/run_internal").getInputPort("i1").getPyObj() == 3)
1852 self.assertTrue(p.getChildByName("test23/main").getChildByName("test23/run").getChildByName("test23/FE").edGetSeqOfSamplesPort().getPyObj()==list(range(10)))
1856 if __name__ == '__main__':
1857 dir_test = tempfile.mkdtemp(suffix=".yacstest")
1858 file_test = os.path.join(dir_test,"UnitTestsResult")
1859 with open(file_test, 'a') as f:
1860 f.write(" --- TEST src/yacsloader: testSaveLoadRun.py\n")
1861 suite = unittest.makeSuite(TestSaveLoadRun)
1862 result=unittest.TextTestRunner(f, descriptions=1, verbosity=1).run(suite)
1863 sys.exit(not result.wasSuccessful())