1 # Copyright (C) 2006-2021 CEA/DEN, EDF R&D
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 # Lesser General Public License for more details.
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
30 class TestSaveLoadRun(unittest.TestCase):
32 SALOMERuntime.RuntimeSALOME.setRuntime()
33 self.r=SALOMERuntime.getSALOMERuntime()
34 self.workdir = tempfile.mkdtemp(suffix=".yacstest")
38 """First test of HP Container no loop here only the 3 sorts of python nodes (the Distributed is it still used and useful ?) """
39 fname=os.path.join(self.workdir, "TestSaveLoadRun0.xml")
41 sqrtOfNumberOfTurn=1000 # 3000 -> 3.2s/Node, 1000 -> 0.1s/Node
43 p=self.r.createProc("prTest0")
44 td=p.createType("double","double")
45 ti=p.createType("int","int")
47 pg.setData([("localhost",4)])
48 cont=p.createContainer("gg","HPSalome")
49 cont.setProperty("name","localhost")
50 cont.setProperty("hostname","localhost")
51 cont.setProperty("nb_proc_per_node","1")
57 ref=datetime.datetime.now()
58 t=0. ; pas=1./float(nb)
62 t+=1.+cos(1.*(x*3.14159))
65 print("coucou from script0-%i -> %s"%(dbg,str(datetime.datetime.now()-ref)))
71 ref=datetime.datetime.now()
72 o2=0. ; pas=1./float(i1)
76 o2+=1.+cos(1.*(x*3.14159))
78 print("coucou from script1-%i -> %s"%(dbg,str(datetime.datetime.now()-ref)))
80 for i in range(nbOfNodes):
81 node0=self.r.createFuncNode("DistPython","node%i"%(i))
84 node0.setContainer(cont)
85 node0.setScript(script0)
86 nb=node0.edAddInputPort("nb",ti) ; nb.edInitInt(sqrtOfNumberOfTurn)
87 dbg=node0.edAddInputPort("dbg",ti) ; dbg.edInitInt(i+1)
88 out0=node0.edAddOutputPort("s",td)
90 nodeMiddle=self.r.createFuncNode("Salome","node%i_1"%(i))
91 p.edAddChild(nodeMiddle)
92 p.edAddCFLink(node0,nodeMiddle)
93 nodeMiddle.setFname("ff")
94 nodeMiddle.setContainer(cont)
95 nodeMiddle.setScript(script0)
96 nb=nodeMiddle.edAddInputPort("nb",ti) ; nb.edInitInt(sqrtOfNumberOfTurn)
97 dbg=nodeMiddle.edAddInputPort("dbg",ti) ; dbg.edInitInt(i+1)
98 out0=nodeMiddle.edAddOutputPort("s",td)
99 nodeMiddle.setExecutionMode("remote")
101 nodeEnd=self.r.createScriptNode("Salome","node%i_2"%(i+1))
102 p.edAddChild(nodeEnd)
103 p.edAddCFLink(nodeMiddle,nodeEnd)
104 nodeEnd.setContainer(cont)
105 nodeEnd.setScript(script1)
106 i1=nodeEnd.edAddInputPort("i1",ti) ; i1.edInitInt(sqrtOfNumberOfTurn)
107 dbg=nodeEnd.edAddInputPort("dbg",ti) ; dbg.edInitInt(i)
108 o2=nodeEnd.edAddOutputPort("o2",td)
109 nodeEnd.setExecutionMode("remote")
113 ex=pilot.ExecutorSwig()
114 self.assertEqual(p.getState(),pilot.READY)
115 st=datetime.datetime.now()
116 p.propagePlayGround(pg)
119 print("Time spend of test0 to run 1st %s"%(str(datetime.datetime.now()-st)))
120 self.assertEqual(p.getState(),pilot.DONE)
121 # 2nd exec using the same already launched remote python interpreters
122 st=datetime.datetime.now()
124 print("Time spend of test0 to run 2nd %s"%(str(datetime.datetime.now()-st)))
125 self.assertEqual(p.getState(),pilot.DONE)
126 # 3rd exec using the same already launched remote python interpreters
127 st=datetime.datetime.now()
129 print("Time spend of test0 to run 3rd %s"%(str(datetime.datetime.now()-st)))
130 self.assertEqual(p.getState(),pilot.DONE)
134 """ HP Container again like test0 but the initialization key of HPContainer is used here."""
135 fname=os.path.join(self.workdir, "TestSaveLoadRun1.xml")
137 sqrtOfNumberOfTurn=1000 # 3000 -> 3.2s/Node, 1000 -> 0.1s/Node
138 l=loader.YACSLoader()
139 p=self.r.createProc("prTest1")
140 td=p.createType("double","double")
141 ti=p.createType("int","int")
142 pg=pilot.PlayGround()
143 pg.setData([("localhost",4)])
144 cont=p.createContainer("gg","HPSalome")
145 cont.setProperty("InitializeScriptKey","aa=123.456")
146 cont.setProperty("name","localhost")
147 cont.setProperty("hostname","localhost")
148 cont.setProperty("nb_proc_per_node","1")
154 ref=datetime.datetime.now()
155 t=0. ; pas=1./float(nb)
159 t+=1.+cos(1.*(x*3.14159))
162 print("coucou from script0-%i -> %s"%(dbg,str(datetime.datetime.now()-ref)))
165 # here in script1 aa is refered ! aa will exist thanks to HPCont Init Script
169 ref=datetime.datetime.now()
170 o2=0. ; pas=1./float(i1)
174 o2+=1.+cos(1.*(x*3.14159))
176 print("coucou %lf from script1-%i -> %s"%(aa,dbg,str(datetime.datetime.now()-ref)))
180 for i in range(nbOfNodes):
181 nodeMiddle=self.r.createFuncNode("Salome","node%i_1"%(i)) # PyFuncNode remote
182 p.edAddChild(nodeMiddle)
183 nodeMiddle.setFname("ff")
184 nodeMiddle.setContainer(cont)
185 nodeMiddle.setScript(script0)
186 nb=nodeMiddle.edAddInputPort("nb",ti) ; nb.edInitInt(sqrtOfNumberOfTurn)
187 dbg=nodeMiddle.edAddInputPort("dbg",ti) ; dbg.edInitInt(i+1)
188 out0=nodeMiddle.edAddOutputPort("s",td)
189 nodeMiddle.setExecutionMode("remote")
191 nodeEnd=self.r.createScriptNode("Salome","node%i_2"%(i+1)) # PythonNode remote
192 p.edAddChild(nodeEnd)
193 p.edAddCFLink(nodeMiddle,nodeEnd)
194 nodeEnd.setContainer(cont)
195 nodeEnd.setScript(script1)
196 i1=nodeEnd.edAddInputPort("i1",ti) ; i1.edInitInt(sqrtOfNumberOfTurn)
197 dbg=nodeEnd.edAddInputPort("dbg",ti) ; dbg.edInitInt(i)
198 o2=nodeEnd.edAddOutputPort("o2",td)
199 nodeEnd.setExecutionMode("remote")
204 self.assertEqual(p.edGetDirectDescendants()[0].getContainer().getProperty("InitializeScriptKey"),"aa=123.456")
205 p.propagePlayGround(pg)
207 ex=pilot.ExecutorSwig()
208 self.assertEqual(p.getState(),pilot.READY)
209 st=datetime.datetime.now()
211 print("Time spend of test1 to 1st run %s"%(str(datetime.datetime.now()-st)))
212 self.assertEqual(p.getState(),pilot.DONE)
214 st=datetime.datetime.now()
216 print("Time spend of test1 to 2nd run %s"%(str(datetime.datetime.now()-st)))
217 self.assertEqual(p.getState(),pilot.DONE)
219 st=datetime.datetime.now()
221 print("Time spend of test1 to 3rd run %s"%(str(datetime.datetime.now()-st)))
222 self.assertEqual(p.getState(),pilot.DONE)
226 """ Test on HP Containers in foreach context."""
229 print("%%lf - %%s"%%(aa,str(my_container)))
232 script1="""from math import cos
234 ref=datetime.datetime.now()
235 o2=0. ; pas=1./float(i1)
239 o2+=1.+cos(1.*(x*3.14159))
241 print("coucou %lf from script -> %s"%(aa,str(datetime.datetime.now()-ref)))
245 script2="""o9=sum(i8)
247 fname=os.path.join(self.workdir, "TestSaveLoadRun2.xml")
249 sqrtOfNumberOfTurn=1000 # 3000 -> 3.2s/Node, 1000 -> 0.1s/Node
250 l=loader.YACSLoader()
251 p=self.r.createProc("prTest1")
252 td=p.createType("double","double")
253 ti=p.createType("int","int")
254 tdi=p.createSequenceTc("seqint","seqint",ti)
255 tdd=p.createSequenceTc("seqdouble","seqdouble",td)
256 pg=pilot.PlayGround()
257 pg.setData([("localhost",4)])
258 cont=p.createContainer("gg","HPSalome")
259 cont.setProperty("InitializeScriptKey","aa=123.456")
260 cont.setProperty("name","localhost")
261 cont.setProperty("hostname","localhost")
262 cont.setProperty("nb_proc_per_node","1")
264 node0=self.r.createFuncNode("Salome","PyFunction0") # PyFuncNode remote
267 node0.setContainer(cont)
268 node0.setScript(script0%(sqrtOfNumberOfTurn))
269 out0_0=node0.edAddOutputPort("o1",tdi)
270 out1_0=node0.edAddOutputPort("o2",ti)
271 node0.setExecutionMode("remote")
273 node1=self.r.createForEachLoop("node1",ti)
275 p.edAddCFLink(node0,node1)
276 p.edAddLink(out0_0,node1.edGetSeqOfSamplesPort())
277 node1.edGetNbOfBranchesPort().edInitInt(8)
279 node2=self.r.createScriptNode("Salome","PyScript3")
280 node1.edAddChild(node2)
281 node2.setContainer(cont)
282 node2.setScript(script1)
283 i1=node2.edAddInputPort("i1",ti)
284 p.edAddLink(node1.edGetSamplePort(),i1)
285 out0_2=node2.edAddOutputPort("o2",td)
286 out1_2=node2.edAddOutputPort("o3",ti)
287 node2.setExecutionMode("remote")
289 node3=self.r.createScriptNode("Salome","PyScript7")
291 node3.setScript(script2)
292 p.edAddCFLink(node1,node3)
293 i8=node3.edAddInputPort("i8",tdd)
294 o9=node3.edAddOutputPort("o9",td)
295 p.edAddLink(out0_2,i8)
299 o9=p.getChildByName("PyScript7").getOutputPort("o9")
300 self.assertTrue(len(p.edGetDirectDescendants()[1].getChildByName("PyScript3").getContainer().getProperty("InitializeScriptKey"))!=0)
302 refExpected=16016013.514623128
303 ex=pilot.ExecutorSwig()
304 p.propagePlayGround(pg)
305 self.assertEqual(p.getState(),pilot.READY)
306 st=datetime.datetime.now()
308 print("Time spend of test2 to 1st run %s"%(str(datetime.datetime.now()-st)))
309 self.assertEqual(p.getState(),pilot.DONE)
310 self.assertAlmostEqual(refExpected,o9.getPyObj(),5)
312 st=datetime.datetime.now()
314 print("Time spend of test2 to 2nd run %s"%(str(datetime.datetime.now()-st)))
315 self.assertEqual(p.getState(),pilot.DONE)
316 self.assertAlmostEqual(refExpected,o9.getPyObj(),5)
318 st=datetime.datetime.now()
320 print("Time spend of test2 to 3rd run %s"%(str(datetime.datetime.now()-st)))
321 self.assertEqual(p.getState(),pilot.DONE)
322 self.assertAlmostEqual(refExpected,o9.getPyObj(),5)
326 """ Test that focuses on parallel load of containers."""
328 if "aa" not in globals():
330 print("%%lf - %%s"%%(aa,str(my_container)))
334 script1="""from math import cos
336 ref=datetime.datetime.now()
337 if "aa" not in globals():
339 o2=0. ; pas=1./float(i1)
343 o2+=1.+cos(1.*(x*3.14159))
345 print("coucou %lf from script -> %s"%(aa,str(datetime.datetime.now()-ref)))
349 script2="""o9=sum(i8)
352 sqrtOfNumberOfTurn=10
353 l=loader.YACSLoader()
354 p=self.r.createProc("prTest1")
355 p.setProperty("executor","workloadmanager")
356 td=p.createType("double","double")
357 ti=p.createType("int","int")
358 tdi=p.createSequenceTc("seqint","seqint",ti)
359 tdd=p.createSequenceTc("seqdouble","seqdouble",td)
360 cont=p.createContainer("gg","Salome")
361 cont.setProperty("name","localhost")
362 cont.setProperty("hostname","localhost")
363 # no limit for the number of containers launched
364 cont.setProperty("nb_proc_per_node","0")
365 cont.setProperty("type","multi")
366 cont.usePythonCache(True)
367 cont.attachOnCloning()
369 node0=self.r.createScriptNode("Salome","Node0")
371 node0.setContainer(cont)
372 node0.setScript(script0%(sqrtOfNumberOfTurn))
373 out0_0=node0.edAddOutputPort("o1",tdi)
374 out1_0=node0.edAddOutputPort("o2",ti)
375 node0.setExecutionMode("remote")
377 node1=self.r.createForEachLoop("node1",ti)
379 p.edAddCFLink(node0,node1)
380 p.edAddLink(out0_0,node1.edGetSeqOfSamplesPort())
381 node1.edGetNbOfBranchesPort().edInitInt(16)
383 node2=self.r.createScriptNode("Salome","Node2")
384 node1.edAddChild(node2)
385 node2.setContainer(cont)
386 node2.setScript(script1)
387 i1=node2.edAddInputPort("i1",ti)
388 p.edAddLink(node1.edGetSamplePort(),i1)
389 out0_2=node2.edAddOutputPort("o2",td)
390 out1_2=node2.edAddOutputPort("o3",ti)
391 node2.setExecutionMode("remote")
393 node3=self.r.createScriptNode("Salome","Node3")
395 node3.setScript(script2)
396 p.edAddCFLink(node1,node3)
397 i8=node3.edAddInputPort("i8",tdd)
398 o9=node3.edAddOutputPort("o9",td)
399 p.edAddLink(out0_2,i8)
401 fname=os.path.join(self.workdir, "t3_new.xml")
404 o9=p.getChildByName("Node3").getOutputPort("o9")
406 refExpected=11000.008377058712
407 ex=pilot.ExecutorSwig()
408 self.assertEqual(p.getState(),pilot.READY)
409 st=datetime.datetime.now()
411 print("Time spend of test3 to 1st run %s"%(str(datetime.datetime.now()-st)))
412 self.assertEqual(p.getState(),pilot.DONE)
413 self.assertAlmostEqual(refExpected,o9.getPyObj(),5)
415 st=datetime.datetime.now()
417 print("Time spend of test3 to 2nd run %s"%(str(datetime.datetime.now()-st)))
418 self.assertEqual(p.getState(),pilot.DONE)
419 self.assertAlmostEqual(refExpected,o9.getPyObj(),5)
421 st=datetime.datetime.now()
423 print("Time spend of test3 to 3rd run %s"%(str(datetime.datetime.now()-st)))
424 self.assertEqual(p.getState(),pilot.DONE)
425 self.assertAlmostEqual(refExpected,o9.getPyObj(),5)
429 """Double foreach."""
430 fname=os.path.join(self.workdir, "TestSaveLoadRun4.xml")
436 for j in range(i+10):
443 l=loader.YACSLoader()
444 ex=pilot.ExecutorSwig()
445 p=self.r.createProc("pr")
446 p.setProperty("executor","workloadmanager")
447 cont=p.createContainer("gg","Salome")
448 cont.setProperty("name","localhost")
449 cont.setProperty("hostname","localhost")
450 # no limit for the number of containers launched
451 cont.setProperty("nb_proc_per_node","0")
452 cont.setProperty("type","multi")
453 cont.attachOnCloning()
454 td=p.createType("int","int")
455 td2=p.createSequenceTc("seqint","seqint",td)
456 td3=p.createSequenceTc("seqintvec","seqintvec",td2)
457 node1=self.r.createScriptNode("","node1")
458 node1.setScript(script1)
459 o1=node1.edAddOutputPort("o1",td3)
462 node2=self.r.createForEachLoop("node2",td2)
464 p.edAddCFLink(node1,node2)
465 p.edAddLink(o1,node2.edGetSeqOfSamplesPort())
466 node2.edGetNbOfBranchesPort().edInitInt(2)
467 node20=self.r.createBloc("node20")
468 node2.edAddChild(node20)
469 node200=self.r.createForEachLoop("node200",td)
470 node20.edAddChild(node200)
471 node200.edGetNbOfBranchesPort().edInitInt(10)
472 p.edAddLink(node2.edGetSamplePort(),node200.edGetSeqOfSamplesPort())
473 node2000=self.r.createScriptNode("","node2000")
474 node2000.setContainer(cont)
475 node2000.setExecutionMode("remote")
476 node200.edAddChild(node2000)
477 i5=node2000.edAddInputPort("i5",td)
478 o6=node2000.edAddOutputPort("o6",td)
479 node2000.setScript("o6=2+i5")
480 p.edAddLink(node200.edGetSamplePort(),i5)
482 node3=self.r.createForEachLoop("node3",td2)
484 p.edAddCFLink(node2,node3)
485 p.edAddLink(o6,node3.edGetSeqOfSamplesPort())
486 node3.edGetNbOfBranchesPort().edInitInt(2)
487 node30=self.r.createBloc("node30")
488 node3.edAddChild(node30)
489 node300=self.r.createForEachLoop("node300",td)
490 node30.edAddChild(node300)
491 node300.edGetNbOfBranchesPort().edInitInt(10)
492 p.edAddLink(node3.edGetSamplePort(),node300.edGetSeqOfSamplesPort())
493 node3000=self.r.createScriptNode("","node3000")
494 node3000.setContainer(cont)
495 node3000.setExecutionMode("remote")
496 node300.edAddChild(node3000)
497 i14=node3000.edAddInputPort("i14",td)
498 o15=node3000.edAddOutputPort("o15",td)
499 node3000.setScript("o15=3+i14")
500 p.edAddLink(node300.edGetSamplePort(),i14)
502 node4=self.r.createScriptNode("","node4")
503 node4.setScript("o9=i8")
505 i8=node4.edAddInputPort("i8",td3)
506 o9=node4.edAddOutputPort("o9",td3)
507 p.edAddCFLink(node3,node4)
511 ex = pilot.ExecutorSwig()
512 self.assertEqual(p.getState(),pilot.READY)
514 self.assertEqual(p.getState(),pilot.DONE)
515 zeResu=p.getChildByName("node4").getOutputPort("o9").get()
516 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]])
520 """Non regression test 2 of multi pyNode, pyFuncNode sharing the same HPContainer instance."""
521 # TODO : This test is DEPRECATED. HPContainer will be removed.
522 self.skipTest("HPContainer deprecated.")
523 fname=os.path.join(self.workdir, "TestSaveLoadRun5.xml")
529 for j in range(i+10):
536 l=loader.YACSLoader()
537 ex=pilot.ExecutorSwig()
538 p=self.r.createProc("pr")
539 pg=pilot.PlayGround()
540 pg.setData([("localhost",10)])
541 cont=p.createContainer("gg","HPSalome")
542 cont.setProperty("nb_proc_per_node","1")
543 td=p.createType("int","int")
544 td2=p.createSequenceTc("seqint","seqint",td)
545 td3=p.createSequenceTc("seqintvec","seqintvec",td2)
546 node1=self.r.createScriptNode("","node1")
547 node1.setScript(script1)
548 o1=node1.edAddOutputPort("o1",td3)
551 node2=self.r.createForEachLoop("node2",td2)
553 p.edAddCFLink(node1,node2)
554 p.edAddLink(o1,node2.edGetSeqOfSamplesPort())
555 node2.edGetNbOfBranchesPort().edInitInt(2)
556 node20=self.r.createBloc("node20")
557 node2.edAddChild(node20)
558 node200=self.r.createForEachLoop("node200",td)
559 node20.edAddChild(node200)
560 node200.edGetNbOfBranchesPort().edInitInt(10)
561 p.edAddLink(node2.edGetSamplePort(),node200.edGetSeqOfSamplesPort())
562 node2000=self.r.createFuncNode("Salome","node2000")
563 node2000.setFname("ff")
564 node2000.setContainer(cont)
565 node2000.setExecutionMode("remote")
566 node200.edAddChild(node2000)
567 i5=node2000.edAddInputPort("i5",td)
568 o6=node2000.edAddOutputPort("o6",td)
569 node2000.setScript("def ff(x):\n return 2+x")
570 p.edAddLink(node200.edGetSamplePort(),i5)
572 node3=self.r.createForEachLoop("node3",td2)
574 p.edAddCFLink(node2,node3)
575 p.edAddLink(o6,node3.edGetSeqOfSamplesPort())
576 node3.edGetNbOfBranchesPort().edInitInt(2)
577 node30=self.r.createBloc("node30")
578 node3.edAddChild(node30)
579 node300=self.r.createForEachLoop("node300",td)
580 node30.edAddChild(node300)
581 node300.edGetNbOfBranchesPort().edInitInt(10)
582 p.edAddLink(node3.edGetSamplePort(),node300.edGetSeqOfSamplesPort())
583 node3000=self.r.createFuncNode("Salome","node3000")
584 node3000.setFname("ff")
585 node3000.setContainer(cont)
586 node3000.setExecutionMode("remote")
587 node300.edAddChild(node3000)
588 i14=node3000.edAddInputPort("i14",td)
589 o15=node3000.edAddOutputPort("o15",td)
590 node3000.setScript("def ff(x):\n return 3+x")
591 p.edAddLink(node300.edGetSamplePort(),i14)
593 node4=self.r.createScriptNode("","node4")
594 node4.setScript("o9=i8")
596 i8=node4.edAddInputPort("i8",td3)
597 o9=node4.edAddOutputPort("o9",td3)
598 p.edAddCFLink(node3,node4)
602 p.propagePlayGround(pg)
603 ex = pilot.ExecutorSwig()
604 self.assertEqual(p.getState(),pilot.READY)
606 self.assertEqual(p.getState(),pilot.DONE)
607 zeResu=p.getChildByName("node4").getOutputPort("o9").get()
608 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]])
612 fname=os.path.join(self.workdir, "test6.xml")
613 p=self.r.createProc("prTest0")
614 td=p.createType("double","double")
615 ti=p.createType("int","int")
616 tsi=p.createSequenceTc("seqint","seqint",ti)
617 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
618 n0=self.r.createScriptNode("","n0")
619 o0=n0.edAddOutputPort("o0",tsi)
620 n0.setScript("o0=[3,6,8,9,-2,5]")
622 n1=self.r.createForEachLoop("n1",ti)
623 n10=self.r.createScriptNode("","n10")
625 n10.setScript("o2=2*i1")
626 i1=n10.edAddInputPort("i1",ti)
627 o2=n10.edAddOutputPort("o2",ti)
629 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
630 p.edAddLink(n1.edGetSamplePort(),i1)
632 n1.edGetNbOfBranchesPort().edInitPy(1)
633 n2=self.r.createScriptNode("","n2")
634 n2.setScript("o4=i3")
635 i3=n2.edAddInputPort("i3",tsi)
636 o4=n2.edAddOutputPort("o4",tsi)
637 n2.setScript("o4=i3")
643 l=loader.YACSLoader()
645 n1=p.getChildByName("n1")
646 ex=pilot.ExecutorSwig()
650 self.assertEqual(n1.getState(),pilot.DONE)
651 n1.edGetSeqOfSamplesPort().getPyObj()
652 a,b,c=n1.getPassedResults(ex)
653 self.assertEqual(a,list(range(6)))
654 self.assertEqual([elt.getPyObj() for elt in b],[[6, 12, 16, 18, -4, 10]])
655 self.assertEqual(c,['n10_o2_interceptor'])
659 fname=os.path.join(self.workdir, "test7.xml")
660 p=self.r.createProc("prTest1")
661 cont=p.createContainer("gg","Salome")
662 cont.setProperty("name","localhost")
663 cont.setProperty("hostname","localhost")
664 cont.setProperty("type","multi")
665 td=p.createType("double","double")
666 ti=p.createType("int","int")
667 tsi=p.createSequenceTc("seqint","seqint",ti)
668 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
669 n0=self.r.createScriptNode("","n0")
670 o0=n0.edAddOutputPort("o0",tsi)
671 n0.setScript("o0=[3,6,8,9,-2,5]")
673 n1=self.r.createForEachLoop("n1",ti)
674 n10=self.r.createScriptNode("","n10")
675 n10.setExecutionMode("remote")
676 n10.setContainer(cont)
682 raise Exception("Simulated error !")
686 i1=n10.edAddInputPort("i1",ti)
687 o2=n10.edAddOutputPort("o2",ti)
689 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
690 p.edAddLink(n1.edGetSamplePort(),i1)
692 n1.edGetNbOfBranchesPort().edInitPy(1)
693 n2=self.r.createScriptNode("","n2")
694 n2.setScript("o4=i3")
695 i3=n2.edAddInputPort("i3",tsi)
696 o4=n2.edAddOutputPort("o4",tsi)
697 n2.setScript("o4=i3")
703 l=loader.YACSLoader()
705 n1=p.getChildByName("n1")
706 ex=pilot.ExecutorSwig()
710 self.assertEqual(n1.getState(),pilot.FAILED)
711 n1.edGetSeqOfSamplesPort().getPyObj()
712 a,b,c=n1.getPassedResults(ex)
713 self.assertEqual(a,list(range(3)))
714 self.assertEqual([elt.getPyObj() for elt in b],[[6,12,16]])
715 self.assertEqual(c,['n10_o2_interceptor'])
719 from datetime import datetime
720 fname=os.path.join(self.workdir, "test8.xml")
721 p=self.r.createProc("prTest2")
722 cont=p.createContainer("gg","Salome")
723 cont.setProperty("name","localhost")
724 cont.setProperty("hostname","localhost")
725 cont.setProperty("type","multi")
726 td=p.createType("double","double")
727 ti=p.createType("int","int")
728 tsi=p.createSequenceTc("seqint","seqint",ti)
729 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
730 n0=self.r.createScriptNode("","n0")
731 o0=n0.edAddOutputPort("o0",tsi)
732 n0.setScript("o0=[3,6,8,9,-2,5]")
734 n1=self.r.createForEachLoop("n1",ti)
735 n10=self.r.createScriptNode("","n10")
736 n10.setExecutionMode("remote")
737 n10.setContainer(cont)
742 raise Exception("Simulated error !")
747 i1=n10.edAddInputPort("i1",ti)
748 o2=n10.edAddOutputPort("o2",ti)
750 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
751 p.edAddLink(n1.edGetSamplePort(),i1)
753 n1.edGetNbOfBranchesPort().edInitPy(2)
754 n2=self.r.createScriptNode("","n2")
755 n2.setScript("o4=i3")
756 i3=n2.edAddInputPort("i3",tsi)
757 o4=n2.edAddOutputPort("o4",tsi)
758 n2.setScript("o4=i3")
764 l=loader.YACSLoader()
766 n1=p.getChildByName("n1")
767 ex=pilot.ExecutorSwig()
768 ex.setKeepGoingProperty(True)
770 startt=datetime.now()
772 t0=datetime.now()-startt
774 self.assertEqual(n1.getState(),pilot.FAILED)
775 n1.edGetSeqOfSamplesPort().getPyObj()
776 a,b,c=n1.getPassedResults(ex)
777 self.assertEqual(a,[0,1,2,4,5])
778 self.assertEqual([elt.getPyObj() for elt in b],[[6,12,16,-4,10]])
779 self.assertEqual(c,['n10_o2_interceptor'])
781 p.getChildByName("n1").getChildByName("n10").setScript("""
785 raise Exception("Simulated error !")
789 ex=pilot.ExecutorSwig()
790 ex.setKeepGoingProperty(True)
792 startt=datetime.now()
794 t1=datetime.now()-startt
796 self.assertEqual(n1.getState(),pilot.FAILED)
797 n1.edGetSeqOfSamplesPort().getPyObj()
798 a,b,c=n1.getPassedResults(ex)
799 self.assertEqual(a,[1,2,3,4,5])
800 self.assertEqual([elt.getPyObj() for elt in b],[[12,16,18,-4,10]])
801 self.assertEqual(c,['n10_o2_interceptor'])
805 """ Test of assignation of already computed values for foreach node."""
806 fname=os.path.join(self.workdir, "test9.xml")
807 from datetime import datetime
808 p=self.r.createProc("prTest2")
809 cont=p.createContainer("gg","Salome")
810 cont.setProperty("name","localhost")
811 cont.setProperty("hostname","localhost")
812 cont.setProperty("type","multi")
813 td=p.createType("double","double")
814 ti=p.createType("int","int")
815 tsi=p.createSequenceTc("seqint","seqint",ti)
816 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
817 n0=self.r.createScriptNode("","n0")
818 o0=n0.edAddOutputPort("o0",tsi)
819 n0.setScript("o0=[3,6,8,9,-2,5]")
821 n1=self.r.createForEachLoop("n1",ti)
822 n10=self.r.createScriptNode("","n10")
823 n10.setExecutionMode("remote")
824 n10.setContainer(cont)
829 raise Exception("Simulated error !")
834 i1=n10.edAddInputPort("i1",ti)
835 o2=n10.edAddOutputPort("o2",ti)
837 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
838 p.edAddLink(n1.edGetSamplePort(),i1)
840 n1.edGetNbOfBranchesPort().edInitPy(2)
841 n2=self.r.createScriptNode("","n2")
842 n2.setScript("o4=i3")
843 i3=n2.edAddInputPort("i3",tsi)
844 o4=n2.edAddOutputPort("o4",tsi)
845 n2.setScript("o4=i3")
851 l=loader.YACSLoader()
853 n1=p.getChildByName("n1")
854 ex=pilot.ExecutorSwig()
855 ex.setKeepGoingProperty(True)
857 startt=datetime.now()
859 t0=datetime.now()-startt
861 self.assertEqual(p.getState(),pilot.FAILED)
862 self.assertEqual(n1.getState(),pilot.FAILED)
863 n1.edGetSeqOfSamplesPort().getPyObj()
864 a,b,c=n1.getPassedResults(ex)
865 self.assertEqual(a,[0,1,2,4,5])
866 self.assertEqual([elt.getPyObj() for elt in b],[[6,12,16,-4,10]])
867 self.assertEqual(c,['n10_o2_interceptor'])
869 p.getChildByName("n1").getChildByName("n10").setScript("""
874 ex=pilot.ExecutorSwig()
875 ex.setKeepGoingProperty(True)
876 p.getChildByName("n1").assignPassedResults(a,b,c)
878 startt=datetime.now()
880 t1=datetime.now()-startt
882 self.assertEqual(n1.getState(),pilot.DONE)
883 self.assertEqual(p.getState(),pilot.DONE)
884 self.assertEqual(p.getChildByName("n2").getOutputPort("o4").getPyObj(),[6,12,16,63,-4,10])
888 fname=os.path.join(self.workdir, "test10.xml")
889 from datetime import datetime
890 p=self.r.createProc("prTest2")
891 cont=p.createContainer("gg","Salome")
892 cont.setProperty("name","localhost")
893 cont.setProperty("hostname","localhost")
894 cont.setProperty("type","multi")
895 td=p.createType("double","double")
896 ti=p.createType("int","int")
897 tsi=p.createSequenceTc("seqint","seqint",ti)
898 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
899 n0=self.r.createScriptNode("","n0")
900 o0=n0.edAddOutputPort("o0",tsi)
901 n0.setScript("o0=[ 3*elt for elt in range(12) ]")
903 n1=self.r.createForEachLoop("n1",ti)
904 n10=self.r.createScriptNode("","n10")
905 n10.setExecutionMode("remote")
906 n10.setContainer(cont)
911 raise Exception("Simulated error !")
916 i1=n10.edAddInputPort("i1",ti)
917 o2=n10.edAddOutputPort("o2",ti)
919 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
920 p.edAddLink(n1.edGetSamplePort(),i1)
922 n1.edGetNbOfBranchesPort().edInitPy(2)
923 n2=self.r.createScriptNode("","n2")
924 n2.setScript("o4=i3")
925 i3=n2.edAddInputPort("i3",tsi)
926 o4=n2.edAddOutputPort("o4",tsi)
927 n2.setScript("o4=i3")
933 l=loader.YACSLoader()
935 n1=p.getChildByName("n1")
936 ex=pilot.ExecutorSwig()
937 ex.setKeepGoingProperty(True)
939 startt=datetime.now()
941 t0=datetime.now()-startt
943 self.assertEqual(p.getState(),pilot.FAILED)
944 self.assertEqual(n1.getState(),pilot.FAILED)
945 n1.edGetSeqOfSamplesPort().getPyObj()
946 a,b,c=n1.getPassedResults(ex)
947 self.assertEqual(a,[1,3,5,7,9,11])
948 self.assertEqual([elt.getPyObj() for elt in b],[[12,36,60,84,108,132]])
949 self.assertEqual(c,['n10_o2_interceptor'])
951 p.getChildByName("n1").getChildByName("n10").setScript("""
954 raise Exception("Simulated error !")
959 ex=pilot.ExecutorSwig()
960 ex.setKeepGoingProperty(True)
961 p.getChildByName("n1").assignPassedResults(a,b,c)
963 startt=datetime.now()
965 t1=datetime.now()-startt
966 #assert(t1.total_seconds()<6.+1.)# normally 6/2+1 s (6 remaining elts in 2 // branches + 1s to launch container)
968 self.assertEqual(n1.getState(),pilot.DONE)
969 self.assertEqual(p.getState(),pilot.DONE)
970 self.assertEqual(p.getChildByName("n2").getOutputPort("o4").getPyObj(),[0,12,30,36,60,60,90,84,120,108,150,132])
977 "test if we do not restart from the begining of the schema after an error in a foreach"
978 fname=os.path.join(self.workdir, "test11.xml")
979 from datetime import datetime
980 p=self.r.createProc("prTest2")
981 cont=p.createContainer("gg","Salome")
982 cont.setProperty("name","localhost")
983 cont.setProperty("hostname","localhost")
984 cont.setProperty("type","multi")
985 td=p.createType("double","double")
986 ti=p.createType("int","int")
987 tsi=p.createSequenceTc("seqint","seqint",ti)
988 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
989 n0=self.r.createScriptNode("","n0")
990 o0=n0.edAddOutputPort("o0",tsi)
991 n0.setScript("o0=[ elt for elt in range(12) ]")
993 n1=self.r.createForEachLoop("n1",ti)
994 n10=self.r.createScriptNode("","n10")
995 n10.setExecutionMode("remote")
996 n10.setContainer(cont)
1001 raise Exception("Simulated error !")
1006 i1=n10.edAddInputPort("i1",ti)
1007 o2=n10.edAddOutputPort("o2",ti)
1009 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
1010 p.edAddLink(n1.edGetSamplePort(),i1)
1011 p.edAddCFLink(n0,n1)
1012 n1.edGetNbOfBranchesPort().edInitPy(2)
1013 n2=self.r.createScriptNode("","n2")
1014 n2.setScript("o4=i3")
1015 i3=n2.edAddInputPort("i3",tsi)
1016 o4=n2.edAddOutputPort("o4",tsi)
1017 n2.setScript("o4=i3")
1019 p.edAddCFLink(n1,n2)
1023 l=loader.YACSLoader()
1025 n1=p.getChildByName("n1")
1026 ex=pilot.ExecutorSwig()
1027 ex.setKeepGoingProperty(True)
1029 startt=datetime.now()
1031 t0=datetime.now()-startt
1033 self.assertEqual(p.getState(),pilot.FAILED)
1034 self.assertEqual(n1.getState(),pilot.FAILED)
1035 n1.edGetSeqOfSamplesPort().getPyObj()
1036 a,b,c=n1.getPassedResults(ex)
1038 self.assertEqual(a,[0,2,4,6,8,10])
1039 self.assertEqual([elt.getPyObj() for elt in b],[[0,4,8,12,16,20]])
1041 p.getChildByName("n0").setScript("o0=[ 3*elt for elt in range(12) ]")
1042 p.getChildByName("n1").getChildByName("n10").setScript("""
1045 raise Exception("Simulated error !")
1053 p.getChildByName("n1").assignPassedResults(a,b,c)
1056 startt=datetime.now()
1058 t1=datetime.now()-startt
1060 self.assertEqual(n1.getState(),pilot.DONE)
1061 self.assertEqual(p.getState(),pilot.DONE)
1062 self.assertEqual(p.getChildByName("n2").getOutputPort("o4").getPyObj(),[0,5,4,15,8,25,12,35,16,45,20,55])
1066 """ Test of nested ForEachLoop with a port connected inside and outside the loop."""
1067 schema = self.r.createProc("schema")
1068 ti = schema.getTypeCode("int")
1069 tiset = schema.createSequenceTc("", "seqint", ti)
1070 tisetseq = schema.createSequenceTc("", "seqintvec", tiset)
1072 n1 = self.r.createScriptNode("", "PyScript2")
1073 n1.edAddInputPort("i3", ti)
1074 n1.edAddInputPort("i4", ti)
1075 n1.edAddOutputPort("o5", ti)
1076 n1.setScript("o5=i3+i4")
1078 n2 = self.r.createScriptNode("", "PyScript1")
1079 n2.edAddInputPort("i2", ti)
1080 n2.edAddOutputPort("o3", ti)
1081 n2.setScript("o3=i2")
1083 b1 = self.r.createBloc("Bloc1")
1087 fe1 = self.r.createForEachLoop("ForEach1", ti)
1088 fe1.getInputPort("nbBranches").edInitPy(2)
1089 fe1.getInputPort("SmplsCollection").edInitPy([1, 2, 3, 4])
1092 n3 = self.r.createScriptNode("", "PostProcessing")
1093 n3.edAddInputPort("i7", tiset)
1094 n3.edAddInputPort("i5", tiset)
1095 n3.edAddOutputPort("o4", ti)
1105 b0 = self.r.createBloc("Bloc0")
1109 fe0 = self.r.createForEachLoop("ForEach1", ti)
1110 fe0.getInputPort("nbBranches").edInitPy(2)
1111 fe0.getInputPort("SmplsCollection").edInitPy([1, 2, 3, 4])
1114 schema.edAddChild(fe0)
1116 nx = self.r.createScriptNode("", "Result")
1117 nx.edAddInputPort("i8", tiset)
1118 nx.edAddOutputPort("o6", ti)
1124 schema.edAddChild(nx)
1126 schema.edAddLink(fe1.getOutputPort("evalSamples"), n1.getInputPort("i3"))
1127 schema.edAddLink(fe0.getOutputPort("evalSamples"), n1.getInputPort("i4"))
1129 schema.edAddDFLink(n1.getOutputPort("o5"), n3.getInputPort("i7"))
1130 schema.edAddDFLink(n2.getOutputPort("o3"), n3.getInputPort("i5"))
1132 po5 = fe1.getOutputPort("Bloc1.PyScript2.o5")
1133 schema.edAddDFLink(po5, n2.getInputPort("i2"))
1135 schema.edAddDFLink(n3.getOutputPort("o4"), nx.getInputPort("i8"))
1136 # schema.saveSchema("foreach12.xml")
1138 e = pilot.ExecutorSwig()
1140 self.assertEqual(schema.getState(),pilot.DONE)
1141 resVal = schema.getChildByName("Result").getOutputPort("o6").getPyObj()
1142 self.assertEqual(resVal, 160)
1146 """ Non regression test EDF11239. ForEach into ForEach. Problem on cloning linked to DeloymentTree.appendTask method that was too strong."""
1147 p=self.r.createProc("Bug11239")
1148 ti=p.createType("int","int")
1149 ti2=p.createSequenceTc("seqint","seqint",ti)
1151 cont=p.createContainer("DefaultContainer","Salome")
1153 node0=self.r.createForEachLoop("ForEachLoop_int0",ti)
1155 node0.edGetSeqOfSamplesPort().edInitPy(list(range(4)))
1156 node0.edGetNbOfBranchesPort().edInitInt(2)
1158 node00=self.r.createBloc("Bloc0")
1159 node0.edAddChild(node00)
1160 node000_0=self.r.createForEachLoop("ForEachLoop_int1",ti)
1161 node00.edAddChild(node000_0)
1162 node000_0.edGetSeqOfSamplesPort().edInitPy(list(range(4)))
1163 node000_0.edGetNbOfBranchesPort().edInitInt(3)
1165 node0000=self.r.createBloc("Bloc1")
1166 node000_0.edAddChild(node0000)
1168 node0000_0=self.r.createScriptNode("","PyScript2")
1169 node0000.edAddChild(node0000_0)
1170 i3=node0000_0.edAddInputPort("i3",ti)
1171 i4=node0000_0.edAddInputPort("i4",ti)
1172 o5=node0000_0.edAddOutputPort("o5",ti)
1173 node0000_0.setScript("o5 = i3 + i4")
1174 node0000_0.setContainer(cont)
1175 node0000_0.setExecutionMode("remote")
1176 p.edAddLink(node0.edGetSamplePort(),i3)
1177 p.edAddLink(node000_0.edGetSamplePort(),i4)
1179 node0000_1=self.r.createScriptNode("","PyScript1")
1180 node0000.edAddChild(node0000_1)
1181 o3=node0000_1.edAddOutputPort("o3",ti)
1182 node0000_1.setScript("o3 = 7")
1183 node0000_1.setExecutionMode("local")
1184 p.edAddCFLink(node0000_0,node0000_1)
1186 node000_1=self.r.createScriptNode("","PostTraitement")
1187 node00.edAddChild(node000_1)
1188 i7=node000_1.edAddInputPort("i7",ti2)
1189 i5=node000_1.edAddInputPort("i5",ti2)
1190 node000_1.setScript("for i in i7:\n print(i)\nprint(\"separation\")\nfor i in i5:\n print(i)")
1191 node000_1.setContainer(cont)
1192 node000_1.setExecutionMode("remote")
1195 p.edAddCFLink(node000_0,node000_1)
1197 #p.saveSchema("tmpp.xml")
1198 ex = pilot.ExecutorSwig()
1199 self.assertEqual(p.getState(),pilot.READY)
1201 self.assertEqual(p.getState(),pilot.DONE)
1205 """ 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 !"""
1206 xmlFileName=os.path.join(self.workdir, "test14.xml")
1207 SALOMERuntime.RuntimeSALOME_setRuntime()
1208 r=pilot.getRuntime()
1209 n0=r.createProc("test23/zeRun")
1210 tp=n0.createInterfaceTc("python:obj:1.0","pyobj",[])
1211 tp2=n0.createSequenceTc("list[pyobj]","list[pyobj]",tp)
1212 n0bis=r.createBloc("test23/main") ; n0.edAddChild(n0bis)
1213 n00=r.createBloc("test23/run") ; n0bis.edAddChild(n00)
1215 n000=r.createForEachLoop("test23/FE",tp) ; n00.edAddChild(n000)
1216 n0000=r.createScriptNode("Salome","test23/run_internal") ; n000.edSetNode(n0000)
1217 i0=n0000.edAddInputPort("i0",tp)
1218 i1=n0000.edAddInputPort("i1",tp) ; i1.edInitPy(3)
1219 o0=n0000.edAddOutputPort("o0",tp)
1220 n0000.setScript("o0=i0+i1")
1222 n00.edAddLink(n000.edGetSamplePort(),i0)
1224 n000.edGetSeqOfSamplesPort().edInitPy(list(range(10)))
1225 n000.edGetNbOfBranchesPort().edInitInt(2)
1227 n01=r.createScriptNode("Salome","test23/check") ; n0bis.edAddChild(n01)
1228 n0bis.edAddCFLink(n00,n01)
1229 i2=n01.edAddInputPort("i2",tp2)
1230 o1=n01.edAddOutputPort("o1",tp2)
1231 n01.setScript("o1=i2")
1232 n0bis.edAddLink(o0,i2)
1234 n0.saveSchema(xmlFileName)
1236 l=loader.YACSLoader()
1237 p=l.load(xmlFileName) # very import do not use n0 but use p instead !
1238 ex=pilot.ExecutorSwig()
1240 self.assertEqual(p.getState(),pilot.READY)
1242 self.assertEqual(p.getState(),pilot.DONE)
1243 self.assertEqual(p.getChildByName("test23/main.test23/check").getOutputPort("o1").getPyObj(),[3,4,5,6,7,8,9,10,11,12])
1247 #fname=os.path.join(self.workdir, "BugInConcurrentLaunchDftCont.xml")
1248 p=self.r.createProc("pr")
1249 ti=p.createType("int","int")
1250 cont=p.createContainer("DefaultContainer","Salome")
1251 cont.setProperty("container_name","FactoryServer")
1252 b=self.r.createBloc("Bloc") ; p.edAddChild(b)
1257 node=self.r.createScriptNode("Salome","node%d"%i)
1258 node.setExecutionMode("remote")
1259 node.setContainer(cont)
1260 outs.append(node.edAddOutputPort("i",ti))
1261 node.setScript("i=%d"%i)
1264 node=self.r.createScriptNode("Salome","nodeEnd")
1265 node.setExecutionMode("remote")
1266 node.setContainer(cont)
1267 res=node.edAddOutputPort("res",ti)
1272 inp=node.edAddInputPort(elt,ti) ; l.append(elt)
1274 p.edAddLink(outs[i],inp)
1275 node.setScript("res="+"+".join(l))
1276 p.edAddCFLink(b,node)
1280 ex = pilot.ExecutorSwig()
1281 self.assertEqual(p.getState(),pilot.READY)
1283 self.assertEqual(res.getPyObj(),6)
1284 self.assertEqual(p.getState(),pilot.DONE)
1288 """ Test to check that a list[pyobj] outputport linked to pyobj inputport is OK."""
1289 SALOMERuntime.RuntimeSALOME_setRuntime()
1290 self.r=pilot.getRuntime()
1291 n0=self.r.createProc("test16/zeRun")
1292 tp=n0.createInterfaceTc("python:obj:1.0","pyobj",[])
1293 tp2=n0.createSequenceTc("list[pyobj]","list[pyobj]",tp)
1295 n00=self.r.createScriptNode("Salome","n00") ; n0.edAddChild(n00)
1296 o0=n00.edAddOutputPort("o0",tp2)
1297 n00.setScript("o0=[[i+1] for i in range(8)]")
1298 n01=self.r.createScriptNode("Salome","n01") ; n0.edAddChild(n01)
1299 i1=n01.edAddInputPort("i1",tp)
1300 n01.setScript("assert(i1==[[1], [2], [3], [4], [5], [6], [7], [8]])")
1301 n0.edAddCFLink(n00,n01)
1304 ex=pilot.ExecutorSwig()
1305 self.assertEqual(n0.getState(),pilot.READY)
1307 self.assertEqual(n0.getState(),pilot.DONE)
1311 """ Same as test16 except that tp2 is not list of tp but a list of copy of tp"""
1312 SALOMERuntime.RuntimeSALOME_setRuntime()
1313 self.r=pilot.getRuntime()
1314 n0=self.r.createProc("test17/zeRun")
1315 tp=n0.createInterfaceTc("python:obj:1.0","pyobj",[])
1316 tpp=n0.createInterfaceTc("python:obj:1.0","pyobj",[]) # diff is here
1317 tp2=n0.createSequenceTc("list[pyobj]","list[pyobj]",tpp)
1319 n00=self.r.createScriptNode("Salome","n00") ; n0.edAddChild(n00)
1320 o0=n00.edAddOutputPort("o0",tp2)
1321 n00.setScript("o0=[[i+1] for i in range(8)]")
1322 n01=self.r.createScriptNode("Salome","n01") ; n0.edAddChild(n01)
1323 i1=n01.edAddInputPort("i1",tp)
1324 n01.setScript("assert(i1==[[1], [2], [3], [4], [5], [6], [7], [8]])")
1325 n0.edAddCFLink(n00,n01)
1328 ex=pilot.ExecutorSwig()
1329 self.assertEqual(n0.getState(),pilot.READY)
1331 self.assertEqual(n0.getState(),pilot.DONE)
1335 p=self.r.createProc("prTest18")
1336 n00=self.r.createScriptNode("Salome","n00")
1337 self.assertEqual(n00.getMaxLevelOfParallelism(),1)
1338 n00.setExecutionMode("remote")
1339 self.assertEqual(n00.getMaxLevelOfParallelism(),1)
1340 cont=p.createContainer("gg","Salome")
1341 n00.setContainer(cont)
1342 self.assertEqual(n00.getMaxLevelOfParallelism(),1)
1343 cont.setProperty("nb_proc_per_nod","6")
1344 self.assertEqual(n00.getMaxLevelOfParallelism(),1)
1345 cont.setProperty("nb_proc_per_node","7") # <- here
1346 self.assertEqual(n00.getMaxLevelOfParallelism(),7) # <- here
1350 """This test checks the mechanism of YACS that allow PythonNodes to know their DynParaLoop context."""
1351 fname=os.path.join(self.workdir, "test19.xml")
1352 l=loader.YACSLoader()
1354 p=self.r.createProc("PROC")
1355 p.setProperty("executor","workloadmanager")
1356 ti=p.createType("int","int")
1357 tdi=p.createSequenceTc("seqint","seqint",ti)
1359 fe0=self.r.createForEachLoop("FE0",ti) ; p.edAddChild(fe0)
1360 fe0.edGetNbOfBranchesPort().edInitInt(4)
1361 fe0_end=self.r.createScriptNode("Salome","fe0_end")
1362 fe0.edSetFinalizeNode(fe0_end)
1363 fe0_end.setScript("""assert([elt[0] for elt in my_dpl_localization]==["FE0"])
1364 assert(my_dpl_localization[0][1]>=0 and my_dpl_localization[0][1]<4)""")
1365 n0=self.r.createScriptNode("Salome","n0") ; p.edAddChild(n0)
1366 n0.setScript("o1=range(10)")
1367 a=n0.edAddOutputPort("o1",tdi)
1368 p.edAddLink(a,fe0.edGetSeqOfSamplesPort()) ; p.edAddCFLink(n0,fe0)
1370 b0=self.r.createBloc("b0") ; fe0.edAddChild(b0)
1371 n1=self.r.createScriptNode("Salome","n1") ; b0.edAddChild(n1)
1372 n1.setScript("""assert([elt[0] for elt in my_dpl_localization]==["FE0"])
1373 assert(my_dpl_localization[0][1]>=0 and my_dpl_localization[0][1]<4)
1375 b=n1.edAddOutputPort("o1",tdi)
1376 fe1=self.r.createForEachLoop("FE1",ti) ; b0.edAddChild(fe1)
1377 fe1.edGetNbOfBranchesPort().edInitInt(3)
1378 fe1_end=self.r.createScriptNode("Salome","fe1_end")
1379 fe1_end.setScript("""assert([elt[0] for elt in my_dpl_localization]==["FE0.b0.FE1","FE0"])
1380 assert(my_dpl_localization[1][1]>=0 and my_dpl_localization[1][1]<4)
1381 assert(my_dpl_localization[0][1]>=0 and my_dpl_localization[0][1]<3)
1383 fe1.edSetFinalizeNode(fe1_end)
1384 p.edAddLink(b,fe1.edGetSeqOfSamplesPort()) ; p.edAddCFLink(n1,fe1)
1386 n2=self.r.createScriptNode("Salome","n2") ; fe1.edAddChild(n2)
1387 n2.setScript("""assert([elt[0] for elt in my_dpl_localization]==["FE0.b0.FE1","FE0"])
1388 assert(my_dpl_localization[1][1]>=0 and my_dpl_localization[1][1]<4)
1389 assert(my_dpl_localization[0][1]>=0 and my_dpl_localization[0][1]<3)
1393 ex=pilot.ExecutorSwig()
1395 # local run of PythonNodes n1 and n2
1398 self.assertEqual(p.getState(),pilot.READY)
1399 ex.setDPLScopeSensitive(True) # <- this line is the aim of the test
1401 self.assertEqual(p.getState(),pilot.DONE)
1405 cont=p.createContainer("gg","Salome")
1406 cont.setProperty("name","localhost")
1407 cont.setProperty("hostname","localhost")
1408 # no limit for the number of containers launched
1409 cont.setProperty("nb_proc_per_node","0")
1410 cont.setProperty("type","multi")
1411 #cont.usePythonCache(True)
1412 cont.attachOnCloning()
1413 n1=p.getChildByName("FE0.b0.n1") ; n1.setExecutionMode("remote") ; n1.setContainer(cont)
1414 n2=p.getChildByName("FE0.b0.FE1.n2") ; n2.setExecutionMode("remote") ; n2.setContainer(cont)
1416 self.assertEqual(p.getState(),pilot.READY)
1418 self.assertEqual(p.getState(),pilot.DONE)
1422 """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"""
1423 def assignCont(n,cont):
1424 n.setExecutionMode("remote") ; n.setContainer(cont)
1426 xmlFileName="test20.xml"
1427 p=self.r.createProc("test26")
1428 p.setProperty("executor","workloadmanager")
1430 cont=p.createContainer("gg","Salome")
1431 cont.setProperty("name","localhost")
1432 cont.setProperty("hostname","localhost")
1433 # no limit for the number of containers launched
1434 cont.setProperty("nb_proc_per_node","0")
1435 cont.setProperty("type","multi")
1436 cont.usePythonCache(True)
1437 cont.attachOnCloning()
1439 po=p.createInterfaceTc("python:obj:1.0","pyobj",[])
1440 sop=p.createSequenceTc("list[pyobj]","list[pyobj]",po)
1442 b0=self.r.createBloc("test26/main") ; p.edAddChild(b0)
1443 n0=self.r.createScriptNode("Salome","test26/n0") ; assignCont(n0,cont) # 1
1444 n0.setScript("""import os
1446 dd=n0.edAddOutputPort("dd",sop) ; b0.edAddChild(n0)
1447 fe0=self.r.createForEachLoop("test26/FE0",po) ; b0.edAddChild(fe0)
1448 fe0.edGetNbOfBranchesPort().edInitInt(1) # very important for the test : 1 !
1449 fe0i=self.r.createBloc("test26/FE0_internal") ; fe0.edSetNode(fe0i)
1450 zeArgInitNode2=self.r.createScriptNode("Salome","zeArgInitNode") ; assignCont(zeArgInitNode2,cont) # 2
1451 fe0i.edAddChild(zeArgInitNode2)
1452 c1=zeArgInitNode2.edAddInputPort("c",po)
1453 c2=zeArgInitNode2.edAddOutputPort("c",po)
1454 zeRun=self.r.createBloc("test26/zeRun") ; fe0i.edAddChild(zeRun)
1455 zeArgInitNode=self.r.createScriptNode("Salome","zeArgInitNode") ; assignCont(zeArgInitNode,cont) # 3
1456 zeRun.edAddChild(zeArgInitNode)
1457 ff1=zeArgInitNode.edAddInputPort("ff",po)
1458 ff2=zeArgInitNode.edAddOutputPort("ff",po)
1459 line01=self.r.createScriptNode("Salome","line01") ; zeRun.edAddChild(line01) ; assignCont(line01,cont) # 4
1460 line01.setScript("ee=3")
1461 ee0=line01.edAddOutputPort("ee",po)
1462 initt=self.r.createScriptNode("Salome","test26/initt") ; assignCont(initt,cont) # 5
1463 initt.setScript("pass") ; zeRun.edAddChild(initt)
1464 end=self.r.createScriptNode("Salome","test26/end") ; assignCont(end,cont) # 6
1465 end.setScript("import os") ; zeRun.edAddChild(end)
1466 retu=self.r.createScriptNode("Salome","return") ; assignCont(retu,cont) # 7
1467 retu.setScript("ee=i0") ; zeRun.edAddChild(retu)
1468 i0=retu.edAddInputPort("i0",po)
1469 ee=retu.edAddOutputPort("ee",po)
1470 zeRun.edAddCFLink(zeArgInitNode,line01)
1471 zeRun.edAddCFLink(line01,initt)
1472 zeRun.edAddCFLink(initt,end)
1473 zeRun.edAddCFLink(end,retu)
1476 returnn=self.r.createScriptNode("Salome","return") ; assignCont(returnn,cont) # 8
1477 returnn.setScript("elt=i0")
1478 i00=returnn.edAddInputPort("i0",po)
1479 elt=returnn.edAddOutputPort("elt",po)
1480 fe0i.edAddChild(returnn)
1481 fe0i.edAddCFLink(zeArgInitNode2,zeRun)
1482 fe0i.edAddCFLink(zeRun,returnn)
1486 finalize=self.r.createScriptNode("Salome","test26/finalize") ; b0.edAddChild(finalize) ; assignCont(finalize,cont) # 9
1487 finalize.setScript("pass")
1488 b0.edAddCFLink(n0,fe0)
1489 b0.edAddCFLink(fe0,finalize)
1491 p.edAddLink(dd,fe0.edGetSeqOfSamplesPort())
1492 p.edAddLink(fe0.edGetSamplePort(),c1)
1494 #xmlFileName="test20.xml"
1495 #p.saveSchema(xmlFileName)
1496 p.getChildByName("test26/main.test26/FE0").edGetNbOfBranchesPort().edInitInt(1) # very important 1 !
1498 ex=pilot.ExecutorSwig()
1499 self.assertEqual(p.getState(),pilot.READY)
1501 self.assertEqual(p.getState(),pilot.DONE)
1507 "test if we restart from a saved state in a foreach loop"
1508 fname=os.path.join(self.workdir, "test21.xml")
1509 xmlStateFileName=os.path.join(self.workdir, "saveState21.xml")
1510 from datetime import datetime
1511 p=self.r.createProc("prTest21")
1512 cont=p.createContainer("gg","Salome")
1513 cont.setProperty("name","localhost")
1514 cont.setProperty("hostname","localhost")
1515 cont.setProperty("type","multi")
1516 td=p.createType("double","double")
1517 ti=p.createType("int","int")
1518 tsi=p.createSequenceTc("seqint","seqint",ti)
1519 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
1520 n0=self.r.createScriptNode("","n0")
1521 o0=n0.edAddOutputPort("o0",tsi)
1522 n0.setScript("o0=[ elt for elt in range(6) ]")
1524 n1=self.r.createForEachLoop("n1",ti)
1525 n10=self.r.createScriptNode("","n10")
1526 n10.setExecutionMode("remote")
1527 n10.setContainer(cont)
1534 i1=n10.edAddInputPort("i1",ti)
1535 o2=n10.edAddOutputPort("o2",ti)
1537 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
1538 p.edAddLink(n1.edGetSamplePort(),i1)
1539 p.edAddCFLink(n0,n1)
1540 n1.edGetNbOfBranchesPort().edInitPy(2)
1541 n2=self.r.createScriptNode("","n2")
1542 n2.setScript("o4=i3")
1543 i3=n2.edAddInputPort("i3",tsi)
1544 o4=n2.edAddOutputPort("o4",tsi)
1545 n2.setScript("o4=i3")
1547 p.edAddCFLink(n1,n2)
1551 l=loader.YACSLoader()
1553 n1=p.getChildByName("n1")
1554 ex=pilot.ExecutorSwig()
1555 ex.setKeepGoingProperty(True)
1557 startt=datetime.now()
1559 myRun=threading.Thread(None, ex.RunW, None, (p,0))
1563 SALOMERuntime.schemaSaveState(p, ex, xmlStateFileName)
1564 a,b,c=n1.getPassedResults(ex)
1566 t0=datetime.now()-startt
1568 self.assertEqual(p.getState(),pilot.DONE)
1569 self.assertEqual(n1.getState(),pilot.DONE)
1570 self.assertEqual(a,[0,1])
1571 self.assertEqual([elt.getPyObj() for elt in b],[[0,2]])
1573 p.getChildByName("n0").setScript("o0=[ 3*elt for elt in range(6) ]")
1574 p.getChildByName("n1").getChildByName("n10").setScript("""
1579 loader.loadState(p, xmlStateFileName)
1581 p.getChildByName("n1").assignPassedResults(a,b,c)
1586 self.assertEqual(n1.getState(),pilot.DONE)
1587 self.assertEqual(p.getState(),pilot.DONE)
1588 self.assertEqual(p.getChildByName("n2").getOutputPort("o4").getPyObj(),[0,2,10,15,20,25])
1590 # Restart from a saved state in a foreach loop without using assignPassedResults.
1591 # This test uses the files test21.xml and saveState21.xml produced by test21.
1593 ex=pilot.ExecutorSwig()
1594 l=loader.YACSLoader()
1596 q.getChildByName("n0").setScript("o0=[ 3*elt for elt in range(6) ]")
1597 q.getChildByName("n1").getChildByName("n10").setScript("""
1600 print("execution n10:", i1)
1603 q.getChildByName("n2").setScript("""
1604 print("execution n2:", i3)
1607 loader.loadState(q, xmlStateFileName)
1613 self.assertEqual(q.getChildByName("n1").getState(),pilot.DONE)
1614 self.assertEqual(q.getState(),pilot.DONE)
1615 self.assertEqual(q.getChildByName("n2").getOutputPort("o4").getPyObj(),[0,2,10,15,20,25])
1619 """ test focused on weight attribut after a dump and reload from a xml file
1621 fname=os.path.join(self.workdir, "test23.xml")
1622 p=self.r.createProc("prTest23")
1623 cont=p.createContainer("gg","Salome")
1624 cont.setProperty("name","localhost")
1625 cont.setProperty("hostname","localhost")
1626 cont.setProperty("type","multi")
1627 td=p.createType("double","double")
1628 ti=p.createType("int","int")
1629 tsi=p.createSequenceTc("seqint","seqint",ti)
1630 tsd=p.createSequenceTc("seqdbl","seqdbl",td)
1631 n0=self.r.createScriptNode("","n0")
1632 o0=n0.edAddOutputPort("o0",tsi)
1633 n0.setScript("o0=[ elt for elt in range(6) ]")
1635 n1=self.r.createForEachLoop("n1",ti)
1637 n10=self.r.createScriptNode("","n10")
1638 n10.setExecutionMode("remote")
1639 n10.setContainer(cont)
1647 i1=n10.edAddInputPort("i1",ti)
1648 o2=n10.edAddOutputPort("o2",ti)
1650 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
1651 p.edAddLink(n1.edGetSamplePort(),i1)
1652 p.edAddCFLink(n0,n1)
1653 n1.edGetNbOfBranchesPort().edInitPy(2)
1654 n2=self.r.createScriptNode("","n2")
1655 n2.setScript("o4=i3")
1656 i3=n2.edAddInputPort("i3",tsi)
1657 o4=n2.edAddOutputPort("o4",tsi)
1658 n2.setScript("o4=i3")
1660 p.edAddCFLink(n1,n2)
1664 l=loader.YACSLoader()
1666 self.assertEqual(p.getChildByName("n1").getWeight().getSimpleLoopWeight(),3.0)
1667 self.assertEqual(p.getChildByName("n1").getChildByName("n10").getWeight().getElementaryWeight(),4.0)
1671 """ Non regression test EDF17470"""
1672 SALOMERuntime.RuntimeSALOME.setRuntime()
1673 r=SALOMERuntime.getSALOMERuntime()
1674 p=r.createProc("prTest2")
1676 cont1=p.createContainer("cont1","Salome")
1677 cont1.setProperty("name","localhost")
1678 cont1.setProperty("hostname","localhost")
1679 cont1.setProperty("type","multi")
1680 cont1.setProperty("container_name","container1@")
1682 cont2=p.createContainer("cont2","Salome")
1683 cont2.setProperty("name","localhost")
1684 cont2.setProperty("hostname","localhost")
1685 cont2.setProperty("type","multi")
1686 cont2.setProperty("container_name","container2@")
1688 td=p.createType("double","double")
1689 ti=p.createType("int","int")
1690 ts=p.createType("string","string")
1691 n0=r.createScriptNode("","n0")
1692 n0.setScript("""import SalomeSDSClt
1701 return pickle.dumps(obj,pickle.HIGHEST_PROTOCOL)
1703 return pickle.loads(strr)
1706 salome.salome_init()
1709 dsm=salome.naming_service.Resolve("/DataServerManager")
1710 dsm.cleanScopesInNS()
1711 if scopeName in dsm.listScopes():
1712 dsm.removeDataScope(scopeName)
1713 dss,isCreated=dsm.giveADataScopeTransactionCalled(scopeName)
1715 t0=dss.createRdExtVarTransac(varName,obj2Str({"ab":[4,5,6]}))
1716 dss.atomicApply([t0])
1718 n0_sn=n0.edAddOutputPort("scopeName",ts)
1719 n0_vn=n0.edAddOutputPort("varName",ts)
1721 n1=r.createScriptNode("","n1")
1722 n1_sn=n1.edAddInputPort("scopeName",ts)
1723 n1_vn=n1.edAddInputPort("varName",ts)
1724 n1.setScript("""import SalomeSDSClt
1734 return pickle.dumps(obj,pickle.HIGHEST_PROTOCOL)
1736 return pickle.loads(strr)
1738 salome.salome_init()
1739 dsm=salome.naming_service.Resolve("/DataServerManager")
1740 dss,isCreated=dsm.giveADataScopeTransactionCalled(scopeName)
1741 assert(not isCreated)
1743 t1=dss.addMultiKeyValueSession(varName)
1745 wk2=dss.waitForKeyInVar(varName,obj2Str("ef"))
1747 assert(str2Obj(dss.waitForMonoThrRev(wk2))==[11,12])""")
1748 n1.setContainer(cont1)
1750 n2=r.createScriptNode("","n2")
1751 n2_sn=n2.edAddInputPort("scopeName",ts)
1752 n2_vn=n2.edAddInputPort("varName",ts)
1753 n2.setScript("""import SalomeSDSClt
1763 return pickle.dumps(obj,pickle.HIGHEST_PROTOCOL)
1765 return pickle.loads(strr)
1767 salome.salome_init()
1768 dsm=salome.naming_service.Resolve("/DataServerManager")
1769 dss,isCreated=dsm.giveADataScopeTransactionCalled(scopeName)
1770 assert(not isCreated)
1772 t1=dss.addMultiKeyValueSession(varName)
1773 t1.addKeyValueInVarErrorIfAlreadyExistingNow(obj2Str("cd"),obj2Str([7,8,9,10]))
1774 t1.addKeyValueInVarErrorIfAlreadyExistingNow(obj2Str("ef"),obj2Str([11,12]))
1776 n2.setContainer(cont2)
1781 p.edAddCFLink(n0,n1)
1782 p.edAddCFLink(n0,n2)
1783 p.edAddLink(n0_sn,n1_sn)
1784 p.edAddLink(n0_vn,n1_vn)
1785 p.edAddLink(n0_sn,n2_sn)
1786 p.edAddLink(n0_vn,n2_vn)
1788 ex=pilot.ExecutorSwig()
1790 self.assertEqual(p.getState(),pilot.DONE)
1794 fname=os.path.join(self.workdir, "test25.xml")
1795 p=self.r.createProc("p0")
1796 tp=p.createInterfaceTc("python:obj:1.0","pyobj",[])
1797 n1_0_sc=self.r.createScriptNode("Salome","n1_0_sc")
1798 p.edAddChild(n1_0_sc)
1799 n1_0_sc.setExecutionMode("remote")
1800 n1_0_sc.setScript("""""")
1801 i1_0_sc=n1_0_sc.edAddInputPort("i1",tp)
1802 i1_0_sc.edInitPy(list(range(4)))
1804 cont=p.createContainer("gg","Salome")
1805 cont.setProperty("name","localhost")
1806 cont.setProperty("hostname","localhost")
1807 n1_0_sc.setContainer(cont)
1810 l=loader.YACSLoader()
1812 ex=pilot.ExecutorSwig()
1813 self.assertEqual(p.getState(),pilot.READY)
1815 self.assertEqual(p.getState(),pilot.DONE)
1820 This test is here to check that old (<=930) graphs are always loadable.
1821 So an xml file coming from test14 in 930 has been generated and converted into home made "base64" like format.
1822 This test puts unbased64 byte array into test_930.xml and load it to check that everything is OK.
1825 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'
1827 fname=os.path.join(self.workdir, "test_930.xml")
1828 with open(fname,"wb") as f:
1829 f.write( pilot.FromBase64Swig(content_of_file) )
1831 SALOMERuntime.RuntimeSALOME_setRuntime()
1832 l=loader.YACSLoader()
1834 self.assertTrue(p.getChildByName("test23/main").getChildByName("test23/run").getChildByName("test23/FE").getChildByName("test23/run_internal").getInputPort("i1").getPyObj() == 3)
1835 self.assertTrue(p.getChildByName("test23/main").getChildByName("test23/run").getChildByName("test23/FE").edGetSeqOfSamplesPort().getPyObj()==list(range(10)))
1839 if __name__ == '__main__':
1841 U = os.getenv('USER')
1842 with open("/tmp/" + U + "/UnitTestsResult", 'a') as f:
1843 f.write(" --- TEST src/yacsloader: testSaveLoadRun.py\n")
1844 suite = unittest.makeSuite(TestSaveLoadRun)
1845 result=unittest.TextTestRunner(f, descriptions=1, verbosity=1).run(suite)
1846 sys.exit(not result.wasSuccessful())