Salome HOME
Remaining instabilities on tests[3,4,5] and current Node to be located is not marked...
[modules/yacs.git] / src / yacsloader_swig / Test / testFEDyn2.py
1 import pilot
2 import SALOMERuntime
3 import loader
4 import datetime
5
6 fname="testFEDyn.xml"
7 fname2="REtestFEDyn.xml"
8 SALOMERuntime.RuntimeSALOME.setRuntime()
9 l=loader.YACSLoader()
10 r=SALOMERuntime.getSALOMERuntime()
11 p=r.createProc("prTest1")
12 td=p.createType("double","double")
13 ti=p.createType("int","int")
14 cont=p.createContainer("gg","HPSalome")
15 cont.setProperty("nb_proc_per_node","1")
16 cont2=p.createContainer("gg2","HPSalome")
17 cont2.setProperty("nb_proc_per_node","4")
18 #
19 pg=pilot.PlayGround()
20 #pg.loadFromKernelCatalog()
21 pg.setData([("localhost",4)])
22 #
23 #cont.setSizeOfPool(4)
24 cont.setProperty("name","localhost")
25 cont.setProperty("hostname","localhost")
26 ti=p.createType("int","int")
27 tsi=p.createSequenceTc("seqint","seqint",ti)
28 # Level0
29 n0=r.createScriptNode("","n0")
30 o0=n0.edAddOutputPort("o0",tsi)
31 n0.setScript("o0=[ elt for elt in range(8) ]")
32 p.edAddChild(n0)
33 n1=r.createForEachLoopDyn("n1",ti)#Dyn
34 #n1.getInputPort("nbBranches").edInitPy(2)
35 n10=r.createScriptNode("","n10")
36 n10.setExecutionMode("remote")
37 n10.setContainer(cont2)
38 n1.edAddChild(n10)
39 n10.setScript("""
40 import time
41 time.sleep(1)
42 o2=2*i1
43 """)
44 i1=n10.edAddInputPort("i1",ti)
45 o2=n10.edAddOutputPort("o2",ti)
46 p.edAddChild(n1)
47 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
48 p.edAddLink(n1.edGetSamplePort(),i1)
49 p.edAddCFLink(n0,n1)
50 n2=r.createScriptNode("","n2")
51 n2.setScript("o4=i3")
52 i3=n2.edAddInputPort("i3",tsi)
53 i4=n2.edAddInputPort("i4",tsi)
54 o4=n2.edAddOutputPort("o4",tsi)
55 n2.setScript("o4=[a+b for a,b in zip(i3,i4)]")
56 p.edAddChild(n2)
57 p.edAddCFLink(n1,n2)
58 p.edAddLink(o2,i3)
59 # Second parallel foreach
60 n11=r.createForEachLoopDyn("n11",ti)
61 #n11.getInputPort("nbBranches").edInitPy(2)
62 n110=r.createScriptNode("","n110")
63 n110.setExecutionMode("remote")
64 n110.setContainer(cont)
65 n11.edAddChild(n110)
66 n110.setScript("""
67 import time
68 time.sleep(10)
69 o2=3*i1
70 """)
71 i1_1=n110.edAddInputPort("i1",ti)
72 o2_1=n110.edAddOutputPort("o2",ti)
73 p.edAddChild(n11)
74 p.edAddLink(o0,n11.edGetSeqOfSamplesPort())
75 p.edAddLink(n11.edGetSamplePort(),i1_1)
76 p.edAddCFLink(n0,n11)
77 p.edAddCFLink(n11,n2)
78 p.edAddLink(o2_1,i4)
79 #
80 p.saveSchema(fname)
81 p=l.load(fname)
82 p.saveSchema(fname2)
83 p.init()
84 p.propagePlayGround(pg)
85 ex=pilot.ExecutorSwig()
86 assert(p.getState()==pilot.READY)
87 stt = datetime.datetime.now()
88 ex.RunW(p,0)
89 print(str(datetime.datetime.now()-stt))
90 assert(p.getState()==pilot.DONE)
91 o4=p.getChildByName("n2").getOutputPort("o4")
92 assert(o4.getPyObj()==[0, 5, 10, 15, 20, 25, 30, 35])
93 # Ideal ForEachDyn time = 28 s