Salome HOME
add method NameChanged to update title name
[modules/kernel.git] / src / SALOMESDS / TestSalomeSDS.py
index c916d19c29c5f252603c178fde17e2e48cbbaa3e..ceef5e77d6140eabd71eb300c3c37fc515a1fafa 100644 (file)
@@ -1,5 +1,5 @@
 # -*- 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
@@ -213,8 +213,17 @@ class SalomeSDSTest(unittest.TestCase):
     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"))
@@ -239,6 +248,9 @@ class SalomeSDSTest(unittest.TestCase):
     # 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)
@@ -268,6 +280,30 @@ class SalomeSDSTest(unittest.TestCase):
       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