Salome HOME
Update copyrights
[modules/kernel.git] / src / SALOMESDS / TestSalomeSDS1.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2019  CEA/DEN, EDF R&D, OPEN CASCADE
3 #
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.
8 #
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.
13 #
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
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20 # Author : Anthony Geay
21
22 import salome
23 import SALOME
24 import pickle
25 import gc
26 import SalomeSDSClt
27
28 salome.salome_init()
29 st="jjj"
30 dsm=salome.naming_service.Resolve("/DataServerManager")
31 assert(dsm.isAliveAndKicking("Default"))
32 assert(isinstance(dsm,SALOME._objref_DataServerManager))
33 assert(isinstance(dsm.getDefaultScope(),SALOME._objref_DataScopeServer))
34 d2s=dsm.createDataScope("tonyy")
35 assert(isinstance(d2s,SALOME._objref_DataScopeServer))
36 a=d2s.createRdWrVar("str","c")
37 assert(a.getVarName()=="c")
38 #
39 a.setSerializedContent(pickle.dumps(st,pickle.HIGHEST_PROTOCOL))
40 assert(pickle.loads(a.fetchSerializedContent())==st)
41 assert(pickle.loads(a.fetchSerializedContent())==st)
42 assert(pickle.loads(d2s.retrieveVar("c").fetchSerializedContent())==st)
43 assert(isinstance(d2s.retrieveVar("c"),SALOME._objref_PickelizedPyObjRdWrServer))
44 assert(dsm.listScopes()==['Default','tonyy'])
45 dsm.createDataScope("S2")
46 assert(dsm.retriveDataScope("S2").getScopeName()=="S2")
47 assert(dsm.listScopes()==['Default','tonyy','S2'])
48 dsm.removeDataScope("Default")
49 assert(dsm.listScopes()==['tonyy','S2'])
50 dsm.removeDataScope("tonyy")
51 assert(dsm.listScopes()==['S2'])
52 a=dsm.retriveDataScope("S2").createRdWrVar("int","a")
53 #
54 sname="S7"
55 dsm=salome.naming_service.Resolve("/DataServerManager")
56 st=pickle.dumps([],pickle.HIGHEST_PROTOCOL)
57 a=dsm.giveADataScopeCalled(sname)[0].createRdWrVar("list","a")
58 dsm.giveADataScopeCalled(sname)
59 a.setSerializedContent(pickle.dumps([0,],pickle.HIGHEST_PROTOCOL))
60 assert(pickle.loads(a.fetchSerializedContent())==[0,])
61 a.setSerializedContent(st)
62 assert(pickle.loads(a.fetchSerializedContent())==[])
63 tmp=a.invokePythonMethodOn("append",pickle.dumps((0,),pickle.HIGHEST_PROTOCOL))
64 assert(pickle.loads(a.fetchSerializedContent())==[0])
65 for i in range(0,1000):
66     tmp=a.invokePythonMethodOn("append",pickle.dumps((i,),pickle.HIGHEST_PROTOCOL))
67     pass
68 dsm.removeDataScope(sname)
69 #
70 sname="S4"
71 d2s,_=dsm.giveADataScopeCalled(sname)
72 d2s.createRdWrVar("list","a")
73 a=SalomeSDSClt.GetHandlerFromRef(dsm.retriveDataScope(sname).retrieveVar("a"))
74 a.append(1)
75 for i in range(1000):
76     a.append(i)
77     pass
78 assert(sum(a.local_copy())==499501)
79 assert(dsm.isAliveAndKicking(sname))
80 #
81 dsm=salome.naming_service.Resolve("/DataServerManager")
82 sname="S11"
83 d2s,_=dsm.giveADataScopeCalled(sname)
84 d2s.createRdWrVar("dict","a")
85 a=SalomeSDSClt.GetHandlerFromName(sname,"a")
86 assert(isinstance(a,SalomeSDSClt.Dict))
87 a.assign({})
88 a["ab"]=45 ; gc.collect(0)
89 a["cd"]=[4,5] ; gc.collect(0)
90 a["cd"].append(77) ; gc.collect(0)
91 a["cd"].append([4,7,8]) ; gc.collect(0)
92 a["cd"][3].append(3) ; gc.collect(0)
93 a["ab"]+=2
94 assert(a.local_copy()=={'ab':47,'cd':[4,5,77,[4,7,8,3]]})
95 a["ab"]-=1
96 assert(a.local_copy()=={'ab':46,'cd':[4,5,77,[4,7,8,3]]})
97 assert(len(a)==2)
98 c=a["cd"] ; gc.collect(0)
99 assert(isinstance(c,SalomeSDSClt.List))
100 a["cd"]=26 ; gc.collect(0)
101 assert(a.local_copy()=={'ab':46,'cd':26})
102 a["cd"]=c
103 assert(a.local_copy()=={'ab':46,'cd':[4,5,77,[4,7,8,3]]})