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