]> SALOME platform Git repositories - modules/yacs.git/blob - src/yacsloader_swig/Test/testFEDyn.py
Salome HOME
Some factorization
[modules/yacs.git] / src / yacsloader_swig / Test / testFEDyn.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.setSizeOfPool(4)
16 cont.setProperty("name","localhost")
17 cont.setProperty("hostname","localhost")
18 ti=p.createType("int","int")
19 tsi=p.createSequenceTc("seqint","seqint",ti)
20 # Level0
21 n0=r.createScriptNode("","n0")
22 o0=n0.edAddOutputPort("o0",tsi)
23 n0.setScript("o0=[ elt for elt in range(8) ]")
24 p.edAddChild(n0)
25 n1=r.createForEachLoopDyn("n1",ti)#Dyn
26 #n1.getInputPort("nbBranches").edInitPy(2)
27 n10=r.createScriptNode("","n10")
28 n10.setExecutionMode("remote")
29 n10.setContainer(cont)
30 n1.edAddChild(n10)
31 n10.setScript("""
32 import time
33 time.sleep(1)
34 o2=2*i1
35 """)
36 i1=n10.edAddInputPort("i1",ti)
37 o2=n10.edAddOutputPort("o2",ti)
38 p.edAddChild(n1)
39 p.edAddLink(o0,n1.edGetSeqOfSamplesPort())
40 p.edAddLink(n1.edGetSamplePort(),i1)
41 p.edAddCFLink(n0,n1)
42 n2=r.createScriptNode("","n2")
43 n2.setScript("o4=i3")
44 i3=n2.edAddInputPort("i3",tsi)
45 i4=n2.edAddInputPort("i4",tsi)
46 o4=n2.edAddOutputPort("o4",tsi)
47 n2.setScript("o4=[a+b for a,b in zip(i3,i4)]")
48 p.edAddChild(n2)
49 p.edAddCFLink(n1,n2)
50 p.edAddLink(o2,i3)
51 # Second parallel foreach
52 n11=r.createForEachLoopDyn("n11",ti)
53 #n11.getInputPort("nbBranches").edInitPy(2)
54 n110=r.createScriptNode("","n110")
55 n110.setExecutionMode("remote")
56 n110.setContainer(cont)
57 n11.edAddChild(n110)
58 n110.setScript("""
59 import time
60 time.sleep(10)
61 o2=3*i1
62 """)
63 i1_1=n110.edAddInputPort("i1",ti)
64 o2_1=n110.edAddOutputPort("o2",ti)
65 p.edAddChild(n11)
66 p.edAddLink(o0,n11.edGetSeqOfSamplesPort())
67 p.edAddLink(n11.edGetSamplePort(),i1_1)
68 p.edAddCFLink(n0,n11)
69 p.edAddCFLink(n11,n2)
70 p.edAddLink(o2_1,i4)
71 #
72 p.saveSchema(fname)
73 p=l.load(fname)
74 p.saveSchema(fname2)
75 p.init()
76 ex=pilot.ExecutorSwig()
77 assert(p.getState()==pilot.READY)
78 stt = datetime.datetime.now()
79 ex.RunW(p,0)
80 print(str(datetime.datetime.now()-stt))
81 assert(p.getState()==pilot.DONE)
82 o4=p.getChildByName("n2").getOutputPort("o4")
83 assert(o4.getPyObj()==[0, 5, 10, 15, 20, 25, 30, 35])
84 # Ideal ForEachDyn time = 22 s
85 # ForEach time = 40 s"""