# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
t0=dss.createRdExtVarTransac(varName,obj2Str({"ab":[4,5,6]}))
dss.atomicApply([t0])
#
- self.assertRaises(SALOME.SALOME_Exception,dss.addKeyValueInVarErrorIfAlreadyExistingNow,varName,obj2Str("ab"),obj2Str([7,8,9,10]))#raises because ab is already a key !
- dss.addKeyValueInVarErrorIfAlreadyExistingNow(varName,obj2Str("cd"),obj2Str([7,8,9,10]))
+ self.assertEqual(dss.getAccessOfVar(varName),"RdExt")
+ t1=dss.addMultiKeyValueSession(varName)
+ self.assertEqual(dss.getAccessOfVar(varName),"RdExtInit")
+ self.assertRaises(SALOME.SALOME_Exception,t1.addKeyValueInVarErrorIfAlreadyExistingNow,obj2Str("ab"),obj2Str([7,8,9,10]))#raises because ab is already a key !
+ self.assertEqual(str2Obj(dss.fetchSerializedContent(varName)),{'ab':[4,5,6]})
+ wk=dss.waitForKeyInVar(varName,obj2Str("cd"))
+ t1.addKeyValueInVarErrorIfAlreadyExistingNow(obj2Str("cd"),obj2Str([7,8,9,10]))
+ self.assertEqual(str2Obj(wk.waitFor()),[7,8,9,10])
+ self.assertEqual(str2Obj(dss.fetchSerializedContent(varName)),{'ab':[4,5,6]})# it is not a bug ! commit of t1 not done !
+ dss.atomicApply([t1])
+ self.assertEqual(dss.getAccessOfVar(varName),"RdExt")
#
self.assertEqual(str2Obj(dss.fetchSerializedContent(varName)),{'ab':[4,5,6],'cd':[7,8,9,10]})
wk=dss.waitForKeyInVar(varName,obj2Str("cd"))
# play
a["ab"]=4
self.assertEqual(a.local_copy(),{"ab":4})
+ a.assign({"ab":5})
+ self.assertEqual(a.local_copy(),{"ab":5})
+ a.assign({"ab":4})
a["cd"]=[5]
self.assertEqual(a.local_copy(),{"ab":4,"cd":[5]})
a["cd"].append(77)
dsm.removeDataScope(scopeName)
pass
+ def testTransaction7(self):
+ """Like testTransaction5 but after a recovery."""
+ scopeName="Scope1"
+ varName="a"
+ dsm=salome.naming_service.Resolve("/DataServerManager")
+ dsm.cleanScopesInNS()
+ if scopeName in dsm.listScopes():
+ dsm.removeDataScope(scopeName)
+ dss,isCreated=dsm.giveADataScopeTransactionCalled(scopeName)
+ self.assertTrue(isCreated)
+ #
+ t0=dss.createRdExtInitVarTransac(varName,obj2Str({"ab":[4,5,6]}))
+ dss.atomicApply([t0])
+ #
+ self.assertEqual(dss.getAccessOfVar(varName),"RdExtInit")
+ t1=dss.addMultiKeyValueSession(varName)
+ self.assertEqual(dss.getAccessOfVar(varName),"RdExtInit")
+ t1.addKeyValueInVarErrorIfAlreadyExistingNow(obj2Str("cd"),obj2Str([7,8,9,10]))
+ self.assertEqual(str2Obj(dss.fetchSerializedContent(varName)),{'ab':[4,5,6]})# it is not a bug ! commit of t1 not done !
+ dss.atomicApply([t1])
+ self.assertEqual(dss.getAccessOfVar(varName),"RdExt")
+ self.assertEqual(str2Obj(dss.fetchSerializedContent(varName)),{'ab':[4,5,6],'cd':[7,8,9,10]})
+ pass
+
def setUp(self):
salome.salome_init()
pass