2 # Copyright (C) 2006-2022 CEA/DEN, EDF R&D
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 #fname=os.path.join(self.workdir, "BugInConcurrentLaunchDftCont.xml")
1257 p=self.r.createProc("pr")
1258 ti=p.createType("int","int")
1259 cont=p.createContainer("DefaultContainer","Salome")
1260 # enable WorkloadManager mode because containers are not registered right
1261 # in classical mode (4 containers with the same name are launched at the
1263 p.setProperty("executor", "WorkloadManager")
1264 cont.setProperty("type", "multi")
1265 cont.setProperty("container_name","FactoryServer")
1266 b=self.r.createBloc("Bloc") ; p.edAddChild(b)
1271 node=self.r.createScriptNode("Salome","node%d"%i)
1272 node.setExecutionMode("remote")
1273 node.setContainer(cont)
1274 outs.append(node.edAddOutputPort("i",ti))
1275 node.setScript("i=%d"%i)
1278 node=self.r.createScriptNode("Salome","nodeEnd")
1279 node.setExecutionMode("remote")
1280 node.setContainer(cont)
1281 res=node.edAddOutputPort("res",ti)
1286 inp=node.edAddInputPort(elt,ti) ; l.append(elt)
1288 p.edAddLink(outs[i],inp)
1289 node.setScript("res="+"+".join(l))
1290 p.edAddCFLink(b,node)
1294 ex = pilot.ExecutorSwig()
1295 self.assertEqual(p.getState(),pilot.READY)
1297 self.assertEqual(res.getPyObj(),6)
1298 self.assertEqual(p.getState(),pilot.DONE)
1302 """ Test to check that a list[pyobj] outputport linked to pyobj inputport is OK."""
1303 SALOMERuntime.RuntimeSALOME_setRuntime()
1304 self.r=pilot.getRuntime()
1305 n0=self.r.createProc("test16/zeRun")
1306 tp=n0.createInterfaceTc("python:obj:1.0","pyobj",[])
1307 tp2=n0.createSequenceTc("list[pyobj]","list[pyobj]",tp)
1309 n00=self.r.createScriptNode("Salome","n00") ; n0.edAddChild(n00)
1310 o0=n00.edAddOutputPort("o0",tp2)
1311 n00.setScript("o0=[[i+1] for i in range(8)]")
1312 n01=self.r.createScriptNode("Salome","n01") ; n0.edAddChild(n01)
1313 i1=n01.edAddInputPort("i1",tp)
1314 n01.setScript("assert(i1==[[1], [2], [3], [4], [5], [6], [7], [8]])")
1315 n0.edAddCFLink(n00,n01)
1318 ex=pilot.ExecutorSwig()
1319 self.assertEqual(n0.getState(),pilot.READY)
1321 self.assertEqual(n0.getState(),pilot.DONE)
1325 """ Same as test16 except that tp2 is not list of tp but a list of copy of tp"""
1326 SALOMERuntime.RuntimeSALOME_setRuntime()
1327 self.r=pilot.getRuntime()
1328 n0=self.r.createProc("test17/zeRun")
1329 tp=n0.createInterfaceTc("python:obj:1.0","pyobj",[])
1330 tpp=n0.createInterfaceTc("python:obj:1.0","pyobj",[]) # diff is here
1331 tp2=n0.createSequenceTc("list[pyobj]","list[pyobj]",tpp)
1333 n00=self.r.createScriptNode("Salome","n00") ; n0.edAddChild(n00)
1334 o0=n00.edAddOutputPort("o0",tp2)
1335 n00.setScript("o0=[[i+1] for i in range(8)]")
1336 n01=self.r.createScriptNode("Salome","n01") ; n0.edAddChild(n01)
1337 i1=n01.edAddInputPort("i1",tp)
1338 n01.setScript("assert(i1==[[1], [2], [3], [4], [5], [6], [7], [8]])")
1339 n0.edAddCFLink(n00,n01)
1342 ex=pilot.ExecutorSwig()
1343 self.assertEqual(n0.getState(),pilot.READY)
1345 self.assertEqual(n0.getState(),pilot.DONE)
1349 p=self.r.createProc("prTest18")
1350 n00=self.r.createScriptNode("Salome","n00")
1351 self.assertEqual(n00.getMaxLevelOfParallelism(),1)
1352 n00.setExecutionMode("remote")
1353 self.assertEqual(n00.getMaxLevelOfParallelism(),1)
1354 cont=p.createContainer("gg","Salome")
1355 n00.setContainer(cont)
1356 self.assertEqual(n00.getMaxLevelOfParallelism(),1)
1357 cont.setProperty("nb_proc_per_nod","6")
1358 self.assertEqual(n00.getMaxLevelOfParallelism(),1)
1359 cont.setProperty("nb_proc_per_node","7") # <- here
1360 self.assertEqual(n00.getMaxLevelOfParallelism(),7) # <- here
1364 """This test checks the mechanism of YACS that allow PythonNodes to know their DynParaLoop context."""
1365 fname=os.path.join(self.workdir, "test19.xml")
1366 l=loader.YACSLoader()
1368 p=self.r.createProc("PROC")
1369 p.setProperty("executor","workloadmanager")
1370 ti=p.createType("int","int")
1371 tdi=p.createSequenceTc("seqint","seqint",ti)
1373 fe0=self.r.createForEachLoop("FE0",ti) ; p.edAddChild(fe0)
1374 fe0.edGetNbOfBranchesPort().edInitInt(4)
1375 fe0_end=self.r.createScriptNode("Salome","fe0_end")
1376 fe0.edSetFinalizeNode(fe0_end)
1377 fe0_end.setScript("""assert([elt[0] for elt in my_dpl_localization]==["FE0"])
1378 assert(my_dpl_localization[0][1]>=0 and my_dpl_localization[0][1]<4)""")
1379 n0=self.r.createScriptNode("Salome","n0") ; p.edAddChild(n0)
1380 n0.setScript("o1=range(10)")
1381 a=n0.edAddOutputPort("o1",tdi)
1382 p.edAddLink(a,fe0.edGetSeqOfSamplesPort()) ; p.edAddCFLink(n0,fe0)
1384 b0=self.r.createBloc("b0") ; fe0.edAddChild(b0)
1385 n1=self.r.createScriptNode("Salome","n1") ; b0.edAddChild(n1)
1386 n1.setScript("""assert([elt[0] for elt in my_dpl_localization]==["FE0"])
1387 assert(my_dpl_localization[0][1]>=0 and my_dpl_localization[0][1]<4)
1389 b=n1.edAddOutputPort("o1",tdi)
1390 fe1=self.r.createForEachLoop("FE1",ti) ; b0.edAddChild(fe1)
1391 fe1.edGetNbOfBranchesPort().edInitInt(3)
1392 fe1_end=self.r.createScriptNode("Salome","fe1_end")
1393 fe1_end.setScript("""assert([elt[0] for elt in my_dpl_localization]==["FE0.b0.FE1","FE0"])
1394 assert(my_dpl_localization[1][1]>=0 and my_dpl_localization[1][1]<4)
1395 assert(my_dpl_localization[0][1]>=0 and my_dpl_localization[0][1]<3)
1397 fe1.edSetFinalizeNode(fe1_end)
1398 p.edAddLink(b,fe1.edGetSeqOfSamplesPort()) ; p.edAddCFLink(n1,fe1)
1400 n2=self.r.createScriptNode("Salome","n2") ; fe1.edAddChild(n2)
1401 n2.setScript("""assert([elt[0] for elt in my_dpl_localization]==["FE0.b0.FE1","FE0"])
1402 assert(my_dpl_localization[1][1]>=0 and my_dpl_localization[1][1]<4)
1403 assert(my_dpl_localization[0][1]>=0 and my_dpl_localization[0][1]<3)
1407 ex=pilot.ExecutorSwig()
1409 # local run of PythonNodes n1 and n2
1412 self.assertEqual(p.getState(),pilot.READY)
1413 ex.setDPLScopeSensitive(True) # <- this line is the aim of the test
1415 self.assertEqual(p.getState(),pilot.DONE)
1419 cont=p.createContainer("gg","Salome")
1420 cont.setProperty("name","localhost")
1421 cont.setProperty("hostname","localhost")
1422 # no limit for the number of containers launched
1423 cont.setProperty("nb_proc_per_node","0")
1424 cont.setProperty("type","multi")
1425 #cont.usePythonCache(True)
1426 cont.attachOnCloning()
1427 n1=p.getChildByName("FE0.b0.n1") ; n1.setExecutionMode("remote") ; n1.setContainer(cont)
1428 n2=p.getChildByName("FE0.b0.FE1.n2") ; n2.setExecutionMode("remote") ; n2.setContainer(cont)
1430 self.assertEqual(p.getState(),pilot.READY)
1432 self.assertEqual(p.getState(),pilot.DONE)
1436 """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"""
1437 def assignCont(n,cont):
1438 n.setExecutionMode("remote") ; n.setContainer(cont)
1440 xmlFileName="test20.xml"
1441 p=self.r.createProc("test26")
1442 p.setProperty("executor","workloadmanager")
1444 cont=p.createContainer("gg","Salome")
1445 cont.setProperty("name","localhost")
1446 cont.setProperty("hostname","localhost")
1447 # no limit for the number of containers launched
1448 cont.setProperty("nb_proc_per_node","0")
1449 cont.setProperty("type","multi")
1450 cont.usePythonCache(True)
1451 cont.attachOnCloning()
1453 po=p.createInterfaceTc("python:obj:1.0","pyobj",[])
1454 sop=p.createSequenceTc("list[pyobj]","list[pyobj]",po)
1456 b0=self.r.createBloc("test26/main") ; p.edAddChild(b0)
1457 n0=self.r.createScriptNode("Salome","test26/n0") ; assignCont(n0,cont) # 1
1458 n0.setScript("""import os
1460 dd=n0.edAddOutputPort("dd",sop) ; b0.edAddChild(n0)
1461 fe0=self.r.createForEachLoop("test26/FE0",po) ; b0.edAddChild(fe0)
1462 fe0.edGetNbOfBranchesPort().edInitInt(1) # very important for the test : 1 !
1463 fe0i=self.r.createBloc("test26/FE0_internal") ; fe0.edSetNode(fe0i)
1464 zeArgInitNode2=self.r.createScriptNode("Salome","zeArgInitNode") ; assignCont(zeArgInitNode2,cont) # 2
1465 fe0i.edAddChild(zeArgInitNode2)
1466 c1=zeArgInitNode2.edAddInputPort("c",po)
1467 c2=zeArgInitNode2.edAddOutputPort("c",po)
1468 zeRun=self.r.createBloc("test26/zeRun") ; fe0i.edAddChild(zeRun)
1469 zeArgInitNode=self.r.createScriptNode("Salome","zeArgInitNode") ; assignCont(zeArgInitNode,cont) # 3
1470 zeRun.edAddChild(zeArgInitNode)
1471 ff1=zeArgInitNode.edAddInputPort("ff",po)
1472 ff2=zeArgInitNode.edAddOutputPort("ff",po)
1473 line01=self.r.createScriptNode("Salome","line01") ; zeRun.edAddChild(line01) ; assignCont(line01,cont) # 4
1474 line01.setScript("ee=3")
1475 ee0=line01.edAddOutputPort("ee",po)
1476 initt=self.r.createScriptNode("Salome","test26/initt") ; assignCont(initt,cont) # 5
1477 initt.setScript("pass") ; zeRun.edAddChild(initt)
1478 end=self.r.createScriptNode("Salome","test26/end") ; assignCont(end,cont) # 6
1479 end.setScript("import os") ; zeRun.edAddChild(end)
1480 retu=self.r.createScriptNode("Salome","return") ; assignCont(retu,cont) # 7
1481 retu.setScript("ee=i0") ; zeRun.edAddChild(retu)
1482 i0=retu.edAddInputPort("i0",po)
1483 ee=retu.edAddOutputPort("ee",po)
1484 zeRun.edAddCFLink(zeArgInitNode,line01)
1485 zeRun.edAddCFLink(line01,initt)
1486 zeRun.edAddCFLink(initt,end)
1487 zeRun.edAddCFLink(end,retu)
1490 returnn=self.r.createScriptNode("Salome","return") ; assignCont(returnn,cont) # 8
1491 returnn.setScript("elt=i0")
1492 i00=returnn.edAddInputPort("i0",po)
1493 elt=returnn.edAddOutputPort("elt",po)
1494 fe0i.edAddChild(returnn)
1495 fe0i.edAddCFLink(zeArgInitNode2,zeRun)
1496 fe0i.edAddCFLink(zeRun,returnn)
1500 finalize=self.r.createScriptNode("Salome","test26/finalize") ; b0.edAddChild(finalize) ; assignCont(finalize,cont) # 9
1501 finalize.setScript("pass")
1502 b0.edAddCFLink(n0,fe0)
1503 b0.edAddCFLink(fe0,finalize)
1505 p.edAddLink(dd,fe0.edGetSeqOfSamplesPort())
1506 p.edAddLink(fe0.edGetSamplePort(),c1)
1508 #xmlFileName="test20.xml"
1509 #p.saveSchema(xmlFileName)
1510 p.getChildByName("test26/main.test26/FE0").edGetNbOfBranchesPort().edInitInt(1) # very important 1 !
1512 ex=pilot.ExecutorSwig()
1513 self.assertEqual(p.getState(),pilot.READY)
1515 self.assertEqual(p.getState(),pilot.DONE)
1521 "test if we restart from a saved state in a foreach loop"
1522 fname=os.path.join(self.workdir, "test21.xml")
1523 xmlStateFileName=os.path.join(self.workdir, "saveState21.xml")
1524 from datetime import datetime
1525 p=self.r.createProc("prTest21")
1526 cont=p.createContainer("gg","Salome")
1527 cont.setProperty("name","localhost")
1528 cont.setProperty("hostname","localhost")
1529 cont.setProperty("type","multi")
1530 td=p.createType("double","double")
1531 ti=p.createType("int","int")
1532 tsi=p.createSequenceTc("seqint","seqint",ti)
1533 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
1534 n0=self.r.createScriptNode("","n0")
1535 o0=n0.edAddOutputPort("o0",tsi)
1536 n0.setScript("o0=[ elt for elt in range(6) ]")
1538 n1=self.r.createForEachLoop("n1",ti)
1539 n10=self.r.createScriptNode("","n10")
1540 n10.setExecutionMode("remote")
1541 n10.setContainer(cont)
1548 i1=n10.edAddInputPort("i1",ti)
1549 o2=n10.edAddOutputPort("o2",ti)
1551 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
1552 p.edAddLink(n1.edGetSamplePort(),i1)
1553 p.edAddCFLink(n0,n1)
1554 n1.edGetNbOfBranchesPort().edInitPy(2)
1555 n2=self.r.createScriptNode("","n2")
1556 n2.setScript("o4=i3")
1557 i3=n2.edAddInputPort("i3",tsi)
1558 o4=n2.edAddOutputPort("o4",tsi)
1559 n2.setScript("o4=i3")
1561 p.edAddCFLink(n1,n2)
1565 l=loader.YACSLoader()
1567 n1=p.getChildByName("n1")
1568 ex=pilot.ExecutorSwig()
1569 ex.setKeepGoingProperty(True)
1571 startt=datetime.now()
1573 myRun=threading.Thread(None, ex.RunW, None, (p,0))
1577 SALOMERuntime.schemaSaveState(p, ex, xmlStateFileName)
1578 a,b,c=n1.getPassedResults(ex)
1580 t0=datetime.now()-startt
1582 self.assertEqual(p.getState(),pilot.DONE)
1583 self.assertEqual(n1.getState(),pilot.DONE)
1584 self.assertEqual(a,[0,1])
1585 self.assertEqual([elt.getPyObj() for elt in b],[[0,2]])
1587 p.getChildByName("n0").setScript("o0=[ 3*elt for elt in range(6) ]")
1588 p.getChildByName("n1").getChildByName("n10").setScript("""
1593 loader.loadState(p, xmlStateFileName)
1595 p.getChildByName("n1").assignPassedResults(a,b,c)
1600 self.assertEqual(n1.getState(),pilot.DONE)
1601 self.assertEqual(p.getState(),pilot.DONE)
1602 self.assertEqual(p.getChildByName("n2").getOutputPort("o4").getPyObj(),[0,2,10,15,20,25])
1604 # Restart from a saved state in a foreach loop without using assignPassedResults.
1605 # This test uses the files test21.xml and saveState21.xml produced by test21.
1607 ex=pilot.ExecutorSwig()
1608 l=loader.YACSLoader()
1610 q.getChildByName("n0").setScript("o0=[ 3*elt for elt in range(6) ]")
1611 q.getChildByName("n1").getChildByName("n10").setScript("""
1614 print("execution n10:", i1)
1617 q.getChildByName("n2").setScript("""
1618 print("execution n2:", i3)
1621 loader.loadState(q, xmlStateFileName)
1627 self.assertEqual(q.getChildByName("n1").getState(),pilot.DONE)
1628 self.assertEqual(q.getState(),pilot.DONE)
1629 self.assertEqual(q.getChildByName("n2").getOutputPort("o4").getPyObj(),[0,2,10,15,20,25])
1633 """ test focused on weight attribut after a dump and reload from a xml file
1635 fname=os.path.join(self.workdir, "test23.xml")
1636 p=self.r.createProc("prTest23")
1637 cont=p.createContainer("gg","Salome")
1638 cont.setProperty("name","localhost")
1639 cont.setProperty("hostname","localhost")
1640 cont.setProperty("type","multi")
1641 td=p.createType("double","double")
1642 ti=p.createType("int","int")
1643 tsi=p.createSequenceTc("seqint","seqint",ti)
1644 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
1645 n0=self.r.createScriptNode("","n0")
1646 o0=n0.edAddOutputPort("o0",tsi)
1647 n0.setScript("o0=[ elt for elt in range(6) ]")
1649 n1=self.r.createForEachLoop("n1",ti)
1651 n10=self.r.createScriptNode("","n10")
1652 n10.setExecutionMode("remote")
1653 n10.setContainer(cont)
1661 i1=n10.edAddInputPort("i1",ti)
1662 o2=n10.edAddOutputPort("o2",ti)
1664 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
1665 p.edAddLink(n1.edGetSamplePort(),i1)
1666 p.edAddCFLink(n0,n1)
1667 n1.edGetNbOfBranchesPort().edInitPy(2)
1668 n2=self.r.createScriptNode("","n2")
1669 n2.setScript("o4=i3")
1670 i3=n2.edAddInputPort("i3",tsi)
1671 o4=n2.edAddOutputPort("o4",tsi)
1672 n2.setScript("o4=i3")
1674 p.edAddCFLink(n1,n2)
1678 l=loader.YACSLoader()
1680 self.assertEqual(p.getChildByName("n1").getWeight().getSimpleLoopWeight(),3.0)
1681 self.assertEqual(p.getChildByName("n1").getChildByName("n10").getWeight().getElementaryWeight(),4.0)
1685 """ Non regression test EDF17470"""
1686 SALOMERuntime.RuntimeSALOME.setRuntime()
1687 r=SALOMERuntime.getSALOMERuntime()
1688 p=r.createProc("prTest2")
1690 cont1=p.createContainer("cont1","Salome")
1691 cont1.setProperty("name","localhost")
1692 cont1.setProperty("hostname","localhost")
1693 cont1.setProperty("type","multi")
1694 cont1.setProperty("container_name","container1")
1696 cont2=p.createContainer("cont2","Salome")
1697 cont2.setProperty("name","localhost")
1698 cont2.setProperty("hostname","localhost")
1699 cont2.setProperty("type","multi")
1700 cont2.setProperty("container_name","container2")
1702 td=p.createType("double","double")
1703 ti=p.createType("int","int")
1704 ts=p.createType("string","string")
1705 n0=r.createScriptNode("","n0")
1706 n0.setScript("""import SalomeSDSClt
1715 return pickle.dumps(obj,pickle.HIGHEST_PROTOCOL)
1717 return pickle.loads(strr)
1720 salome.salome_init()
1723 dsm=salome.naming_service.Resolve("/DataServerManager")
1724 dsm.cleanScopesInNS()
1725 if scopeName in dsm.listScopes():
1726 dsm.removeDataScope(scopeName)
1727 dss,isCreated=dsm.giveADataScopeTransactionCalled(scopeName)
1729 t0=dss.createRdExtVarTransac(varName,obj2Str({"ab":[4,5,6]}))
1730 dss.atomicApply([t0])
1732 n0_sn=n0.edAddOutputPort("scopeName",ts)
1733 n0_vn=n0.edAddOutputPort("varName",ts)
1735 n1=r.createScriptNode("","n1")
1736 n1_sn=n1.edAddInputPort("scopeName",ts)
1737 n1_vn=n1.edAddInputPort("varName",ts)
1738 n1.setScript("""import SalomeSDSClt
1748 return pickle.dumps(obj,pickle.HIGHEST_PROTOCOL)
1750 return pickle.loads(strr)
1752 salome.salome_init()
1753 dsm=salome.naming_service.Resolve("/DataServerManager")
1754 dss,isCreated=dsm.giveADataScopeTransactionCalled(scopeName)
1755 assert(not isCreated)
1757 t1=dss.addMultiKeyValueSession(varName)
1759 wk2=dss.waitForKeyInVar(varName,obj2Str("ef"))
1761 assert(str2Obj(dss.waitForMonoThrRev(wk2))==[11,12])""")
1762 n1.setContainer(cont1)
1763 n1.setExecutionMode("remote")
1765 n2=r.createScriptNode("","n2")
1766 n2_sn=n2.edAddInputPort("scopeName",ts)
1767 n2_vn=n2.edAddInputPort("varName",ts)
1768 n2.setScript("""import SalomeSDSClt
1778 return pickle.dumps(obj,pickle.HIGHEST_PROTOCOL)
1780 return pickle.loads(strr)
1782 salome.salome_init()
1783 dsm=salome.naming_service.Resolve("/DataServerManager")
1784 dss,isCreated=dsm.giveADataScopeTransactionCalled(scopeName)
1785 assert(not isCreated)
1787 t1=dss.addMultiKeyValueSession(varName)
1788 t1.addKeyValueInVarErrorIfAlreadyExistingNow(obj2Str("cd"),obj2Str([7,8,9,10]))
1789 t1.addKeyValueInVarErrorIfAlreadyExistingNow(obj2Str("ef"),obj2Str([11,12]))
1791 n2.setContainer(cont2)
1792 n2.setExecutionMode("remote")
1797 p.edAddCFLink(n0,n1)
1798 p.edAddCFLink(n0,n2)
1799 p.edAddLink(n0_sn,n1_sn)
1800 p.edAddLink(n0_vn,n1_vn)
1801 p.edAddLink(n0_sn,n2_sn)
1802 p.edAddLink(n0_vn,n2_vn)
1804 ex=pilot.ExecutorSwig()
1806 self.assertEqual(p.getState(),pilot.DONE)
1810 fname=os.path.join(self.workdir, "test25.xml")
1811 p=self.r.createProc("p0")
1812 tp=p.createInterfaceTc("python:obj:1.0","pyobj",[])
1813 n1_0_sc=self.r.createScriptNode("Salome","n1_0_sc")
1814 p.edAddChild(n1_0_sc)
1815 n1_0_sc.setExecutionMode("remote")
1816 n1_0_sc.setScript("""""")
1817 i1_0_sc=n1_0_sc.edAddInputPort("i1",tp)
1818 i1_0_sc.edInitPy(list(range(4)))
1820 cont=p.createContainer("gg","Salome")
1821 cont.setProperty("name","localhost")
1822 cont.setProperty("hostname","localhost")
1823 n1_0_sc.setContainer(cont)
1826 l=loader.YACSLoader()
1828 ex=pilot.ExecutorSwig()
1829 self.assertEqual(p.getState(),pilot.READY)
1831 self.assertEqual(p.getState(),pilot.DONE)
1836 This test is here to check that old (<=930) graphs are always loadable.
1837 So an xml file coming from test14 in 930 has been generated and converted into home made "base64" like format.
1838 This test puts unbased64 byte array into test_930.xml and load it to check that everything is OK.
1841 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'
1843 fname=os.path.join(self.workdir, "test_930.xml")
1844 with open(fname,"wb") as f:
1845 f.write( pilot.FromBase64Swig(content_of_file) )
1847 SALOMERuntime.RuntimeSALOME_setRuntime()
1848 l=loader.YACSLoader()
1850 self.assertTrue(p.getChildByName("test23/main").getChildByName("test23/run").getChildByName("test23/FE").getChildByName("test23/run_internal").getInputPort("i1").getPyObj() == 3)
1851 self.assertTrue(p.getChildByName("test23/main").getChildByName("test23/run").getChildByName("test23/FE").edGetSeqOfSamplesPort().getPyObj()==list(range(10)))
1855 if __name__ == '__main__':
1856 dir_test = tempfile.mkdtemp(suffix=".yacstest")
1857 file_test = os.path.join(dir_test,"UnitTestsResult")
1858 with open(file_test, 'a') as f:
1859 f.write(" --- TEST src/yacsloader: testSaveLoadRun.py\n")
1860 suite = unittest.makeSuite(TestSaveLoadRun)
1861 result=unittest.TextTestRunner(f, descriptions=1, verbosity=1).run(suite)
1862 sys.exit(not result.wasSuccessful())